papilot 0.8.5 → 0.8.6

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.
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/math-DHvVou9A.js","assets/math-DEcVZfaU.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/math-C7ENJr-a.js","assets/math-DEcVZfaU.css"])))=>i.map(i=>d[i]);
2
2
  var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=[`yellow`,`green`,`purple`,`orange`,`red`],d=e=>e===`blue`?`yellow`:e,f=e=>e===`blue`||u.includes(e);function p(e){if(e===void 0)return{};if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Use valid instructions for each color group.`);let t={};for(let[n,r]of Object.entries(e)){if(!f(n)||typeof r!=`string`||r.length>4e3)throw Error(`Use valid instructions for each color group (up to 4000 characters).`);let e=d(n);if(t[e]&&t[e]!==r.trim())throw Error(`Use one instruction for each color group.`);r.trim()&&(t[e]=r.trim())}return t}var m=(e,t)=>u.filter(n=>!t[n]?.trim()&&e.some(e=>e.group&&d(e.group)===n&&!e.comment.trim())),h={yellow:`#eab308`,blue:`#eab308`,green:`#16a34a`,purple:`#a855f7`,orange:`#ea860c`,red:`#e05260`},g={yellow:`Yellow`,blue:`Yellow`,green:`Green`,purple:`Purple`,orange:`Orange`,red:`Red`};function _(e){return u.flatMap(t=>{let n=e.flatMap((e,n)=>e.group&&d(e.group)===t?[{note:e,index:n}]:[]);return n.length?[{group:t,entries:n}]:[]})}var v=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var j=/\/+/g;function M(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function N(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function P(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,P(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+M(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(j,`$&/`)+`/`),P(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(j,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+M(a,u),c+=P(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+M(a,u++),c+=P(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return P(N(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function F(e,t,n){if(e==null)return e;var r=[],i=0;return P(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function I(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var L=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function R(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,L)}catch(e){L(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function ee(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else R(ee.bind(null,e))}var z={map:F,forEach:function(e,t,n){F(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return F(e,function(){t++}),t},toArray:function(e){return F(e,function(e){return e})||[]},only:function(e){if(!k(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=z,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=ee,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=k,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:I}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=R,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.1`})),y=o(((e,t)=>{t.exports=v()})),b=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),x=o(((e,t)=>{t.exports=b()})),S=y(),C=x(),w={info:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,C.jsx)(`path`,{d:`M12 11v6m0-10h.01`})]}),code:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`m8 7-5 5 5 5m8-10 5 5-5 5M14 4l-4 16`})}),github:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`M9 19c-4.3 1.3-4.3-2.1-6-2.5m12 5v-3.9a3.4 3.4 0 0 0-.9-2.7c3-.3 6.2-1.5 6.2-6.8a5.3 5.3 0 0 0-1.4-3.7 4.9 4.9 0 0 0-.1-3.6s-1.1-.3-3.8 1.4a13.2 13.2 0 0 0-7 0C5.3.5 4.2.8 4.2.8A4.9 4.9 0 0 0 4.1 4.4a5.3 5.3 0 0 0-1.4 3.7c0 5.3 3.2 6.5 6.2 6.8a3.4 3.4 0 0 0-.9 2.7v3.9`})}),keyboard:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`2`,y:`5`,width:`20`,height:`14`,rx:`2`}),(0,C.jsx)(`path`,{d:`M6 9h.01M10 9h.01M14 9h.01M18 9h.01M6 12h.01M10 12h.01M14 12h.01M18 12h.01M7 16h10`})]}),sun:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`4`}),(0,C.jsx)(`path`,{d:`M12 2v2m0 16v2M2 12h2m16 0h2M5 5l1.5 1.5m11 11L19 19M5 19l1.5-1.5m11-11L19 5`})]}),moon:(0,C.jsx)(`path`,{d:`M20.9 13A9 9 0 0 1 11 3.1 9 9 0 1 0 20.9 13Z`}),plus:(0,C.jsx)(`path`,{d:`M12 5v14M5 12h14`}),attachment:(0,C.jsx)(`path`,{d:`m21 11-8 8a6 6 0 0 1-8.5-8.5l9-9a4 4 0 0 1 5.7 5.7l-9 9a2 2 0 0 1-2.8-2.8l8-8`}),archive:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`4`,rx:`1`}),(0,C.jsx)(`path`,{d:`M5 7v13h14V7M10 11h4`})]}),folder:(0,C.jsx)(`path`,{d:`M3 7V5a2 2 0 0 1 2-2h5l2 3h7a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Z`}),restore:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`M3 10a9 9 0 1 1 2 9M3 4v6h6M12 7v5l3 2`})}),bolt:(0,C.jsx)(`path`,{d:`m13 2-9 12h7l-1 8 10-12h-7Z`}),compose:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,C.jsx)(`path`,{d:`M18.4 2.6a2.1 2.1 0 0 1 3 3L12 15l-4 1 1-4Z`})]}),sidebar:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2.5`}),(0,C.jsx)(`path`,{d:`M9 3v18`})]}),panelCollapse:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2.5`}),(0,C.jsx)(`path`,{d:`M15 3v18m-8-12 3 3-3 3`})]}),panelExpand:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2.5`}),(0,C.jsx)(`path`,{d:`M15 3v18m-5-12-3 3 3 3`})]}),menu:(0,C.jsx)(`path`,{d:`M4 7h16M4 12h16M4 17h16`}),arrowUp:(0,C.jsx)(`path`,{d:`M12 19V5m-7 7 7-7 7 7`}),arrowDown:(0,C.jsx)(`path`,{d:`M12 5v14m7-7-7 7-7-7`}),arrowRight:(0,C.jsx)(`path`,{d:`M5 12h14m-6-6 6 6-6 6`}),arrowRightSolid:(0,C.jsx)(`path`,{d:`M13 5.5a.75.75 0 0 1 1.28-.53l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5A.75.75 0 0 1 13 18.5V14H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h9Z`,fill:`currentColor`,stroke:`none`}),stop:(0,C.jsx)(`rect`,{x:`7`,y:`7`,width:`10`,height:`10`,rx:`2`,fill:`currentColor`,stroke:`none`}),updown:(0,C.jsx)(`path`,{d:`m7 15 5 5 5-5M7 9l5-5 5 5`}),check:(0,C.jsx)(`path`,{d:`M20 6 9 17l-5-5`}),close:(0,C.jsx)(`path`,{d:`M18 6 6 18M6 6l12 12`}),more:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`5`,cy:`12`,r:`1.4`,fill:`currentColor`,stroke:`none`}),(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`1.4`,fill:`currentColor`,stroke:`none`}),(0,C.jsx)(`circle`,{cx:`19`,cy:`12`,r:`1.4`,fill:`currentColor`,stroke:`none`})]}),external:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M15 3h6v6M10 14 21 3`}),(0,C.jsx)(`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`})]}),paper:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`}),(0,C.jsx)(`path`,{d:`M14 2v5h5M16 13H8M16 17H8M10 9H8`})]}),compile:(0,C.jsx)(`path`,{d:`M6 3.5 21 12 6 20.5Z`,fill:`currentColor`,stroke:`none`}),pdf:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M4 9V4a2 2 0 0 1 2-2h9l5 5v2M14 2v5h6M4 20a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2`}),(0,C.jsx)(`path`,{strokeWidth:`1.5`,d:`M2.5 18v-6h2a2 2 0 0 1 0 4h-2M9.5 12v6h1.5a3 3 0 0 0 0-6ZM17 18v-6h4m-4 3h3`})]}),chat:(0,C.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2Z`}),split:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2.5`}),(0,C.jsx)(`path`,{d:`M14 3v18`})]}),terminal:(0,C.jsx)(`path`,{d:`m4 17 6-6-6-6m8 14h8`}),diff:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`}),(0,C.jsx)(`path`,{d:`M9 10h6m-3-3v6m-3 4h6`})]}),tool:(0,C.jsx)(`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.8-3.8a6 6 0 0 1-7.9 7.9l-6.9 6.9a2.1 2.1 0 0 1-3-3l6.9-6.9a6 6 0 0 1 7.9-7.9Z`}),log:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8Z`}),(0,C.jsx)(`path`,{d:`M14 3v5h5M9 13h6m-6 4h4`})]}),alert:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,C.jsx)(`path`,{d:`M12 8v4m0 4h.01`})]}),refresh:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M21 12a9 9 0 1 1-3-6.7L21 8`}),(0,C.jsx)(`path`,{d:`M21 3v5h-5`})]}),trash:(0,C.jsx)(`path`,{d:`M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2m3 0-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6m5 5v6m4-6v6`}),pause:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`6`,y:`5`,width:`4`,height:`14`,rx:`1`}),(0,C.jsx)(`rect`,{x:`14`,y:`5`,width:`4`,height:`14`,rx:`1`})]}),search:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`11`,cy:`11`,r:`7`}),(0,C.jsx)(`path`,{d:`m20 20-3.5-3.5`})]}),region:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M5 3a2 2 0 0 0-2 2m16-2a2 2 0 0 1 2 2M5 21a2 2 0 0 1-2-2M9 3h1m4 0h1M9 21h2M3 9v1m18-1v2M3 14v1`}),(0,C.jsx)(`path`,{d:`M12.5 12.5 21 15.8l-3.6 1.3-1.3 3.6Z`})]}),list:(0,C.jsx)(`path`,{d:`M8 6h13M8 12h13M8 18h13M3.5 6h.01M3.5 12h.01M3.5 18h.01`}),chevronDown:(0,C.jsx)(`path`,{d:`m6 9 6 6 6-6`}),chevronUp:(0,C.jsx)(`path`,{d:`m18 15-6-6-6 6`}),chevronLeft:(0,C.jsx)(`path`,{d:`m15 18-6-6 6-6`}),chevronRight:(0,C.jsx)(`path`,{d:`m9 18 6-6-6-6`}),minus:(0,C.jsx)(`path`,{d:`M5 12h14`}),branch:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M6 3v12`}),(0,C.jsx)(`circle`,{cx:`18`,cy:`6`,r:`3`}),(0,C.jsx)(`circle`,{cx:`6`,cy:`18`,r:`3`}),(0,C.jsx)(`path`,{d:`M18 9a9 9 0 0 1-9 9`})]}),commit:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,C.jsx)(`path`,{d:`M3 12h6m6 0h6`})]}),undo:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M9 14 4 9l5-5`}),(0,C.jsx)(`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 0 11H11`})]}),cloud:(0,C.jsx)(`path`,{d:`M17.5 19H7a5 5 0 1 1 1.1-9.9A6 6 0 0 1 19.5 11a4 4 0 0 1-2 8Z`}),fetch:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`19`,r:`2.5`}),(0,C.jsx)(`path`,{d:`M12 3v1.5m0 3V9m0 3v1.5M8.5 10.5 12 14l3.5-3.5`})]}),pull:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`19`,r:`2.5`}),(0,C.jsx)(`path`,{d:`M12 3v11m-3.5-3.5L12 14l3.5-3.5`})]}),push:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`19`,r:`2.5`}),(0,C.jsx)(`path`,{d:`M12 16.5V3M8.5 6.5 12 3l3.5 3.5`})]}),notes:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2Z`}),(0,C.jsx)(`path`,{d:`M8 8h8M8 12h5`})]}),pencil:(0,C.jsx)(`path`,{d:`M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z`}),pen:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M16.8 3.8a2.4 2.4 0 0 1 3.4 3.4L7 20.4 3 21l.6-4Z`}),(0,C.jsx)(`path`,{d:`m15.2 5.4 3.4 3.4M3.6 17 7 20.4`})]}),copy:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`9`,y:`9`,width:`12`,height:`12`,rx:`2`}),(0,C.jsx)(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})]}),bookmark:(0,C.jsx)(`path`,{d:`M19 21l-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z`}),bookmarkFilled:(0,C.jsx)(`path`,{d:`M19 21l-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2Z`,fill:`currentColor`}),plane:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`m22 2-7 20-4-9-9-4Z`}),(0,C.jsx)(`path`,{d:`M22 2 11 13`})]}),spark:(0,C.jsx)(`path`,{d:`M12 3c.4 3.9 2.1 5.6 6 6-3.9.4-5.6 2.1-6 6-.4-3.9-2.1-5.6-6-6 3.9-.4 5.6-2.1 6-6ZM19 15c.2 1.5.8 2.1 2.3 2.3-1.5.2-2.1.8-2.3 2.3-.2-1.5-.8-2.1-2.3-2.3 1.5-.2 2.1-.8 2.3-2.3Z`}),spellcheck:(0,C.jsx)(`path`,{d:`m3 14 4-10 4 10M4.5 10h5m3.5 7 3 3 6-7`}),compress:(0,C.jsx)(`path`,{d:`M4 5h16M4 19h16M2 12h7m-3-3 3 3-3 3m16-3h-7m3-3-3 3 3 3`}),sigma:(0,C.jsx)(`path`,{d:`M19 5V3H5l7 9-7 9h14v-2`}),checklist:(0,C.jsx)(`path`,{d:`M10 6h11M10 12h11M10 18h11M2 5l2 2 3-3M2 11l2 2 3-3M2 17l2 2 3-3`}),book:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`M12 5v16M3 3h4a5 5 0 0 1 5 2 5 5 0 0 1 5-2h4v16h-4a5 5 0 0 0-5 2 5 5 0 0 0-5-2H3Z`})}),chart:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`M3 3v18h18M7 16v-5m5 5V7m5 9V4`})}),globe:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,C.jsx)(`ellipse`,{cx:`12`,cy:`12`,rx:`4`,ry:`9`}),(0,C.jsx)(`path`,{d:`M3 12h18`})]}),lightbulb:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`M9 18v-1a7 7 0 1 1 6 0v1M9 18h6m-6 3h6`})}),link:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`path`,{d:`m10 13 4-4M8 16l-1 1a4.2 4.2 0 0 1-6-6l4-4a4.2 4.2 0 0 1 6 0m2 10a4.2 4.2 0 0 0 6 0l4-4a4.2 4.2 0 0 0-6-6l-1 1`,transform:`translate(1 0) scale(.92)`})}),monitor:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`}),(0,C.jsx)(`path`,{d:`M8 21h8m-4-4v4`})]}),bell:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9`}),(0,C.jsx)(`path`,{d:`M10.3 21a1.94 1.94 0 0 0 3.4 0`})]}),key:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`7.5`,cy:`15.5`,r:`4.5`}),(0,C.jsx)(`path`,{d:`m10.7 12.3 9.8-9.8M17 6l3 3M14.5 8.5l2 2`})]}),people:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`circle`,{cx:`9`,cy:`8`,r:`3.5`}),(0,C.jsx)(`path`,{d:`M2.5 20a6.5 6.5 0 0 1 13 0`}),(0,C.jsx)(`path`,{d:`M16 4.6a3.5 3.5 0 0 1 0 6.8M18.5 14.2A6.5 6.5 0 0 1 21.5 20`})]}),signOut:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`}),(0,C.jsx)(`path`,{d:`m16 17 5-5-5-5M21 12H9`})]}),settings:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,C.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})};function T({name:e,size:t=18}){return(0,C.jsx)(`svg`,{width:t,height:t,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:w[e]||w.paper})}var E=new Map,D={getItem(e){if(E.has(e))return E.get(e);try{return localStorage.getItem(e)}catch{return null}},setItem(e,t){E.set(e,t);try{localStorage.setItem(e,t),E.delete(e)}catch{}},removeItem(e){E.set(e,``);try{localStorage.removeItem(e),E.delete(e)}catch{}}},O=[{id:`en`,name:`English`},{id:`zh-Hans`,name:`简体中文`},{id:`zh-Hant`,name:`繁體中文`},{id:`ja`,name:`日本語`},{id:`ko`,name:`한국어`},{id:`de`,name:`Deutsch`},{id:`fr`,name:`Français`},{id:`es`,name:`Español`},{id:`pt`,name:`Português`},{id:`it`,name:`Italiano`},{id:`sv`,name:`Svenska`}];function k(e){if(!e)return null;try{let t=new Intl.Locale(e);return t.language===`zh`?t.maximize().script===`Hant`?`zh-Hant`:`zh-Hans`:O.find(e=>e.id===t.language)?.id||null}catch{return null}}var A=new Map;function j(e,t){let n=A.get(e);return n||(n=new Intl.PluralRules(e),A.set(e,n)),n.select(t)===`one`}var M=new Map;function N(e,t,n){return n?e.replace(/\{(\w+)\}/g,(e,r)=>{if(!Object.hasOwn(n,r))return e;let i=n[r];if(typeof i!=`number`)return i;let a=M.get(t);return a||(a=new Intl.NumberFormat(t,{maximumFractionDigits:20}),M.set(t,a)),a.format(i)}):e}var P={"AI is resolving conflicts…":`AI 正在解决冲突…`,"Open chat":`打开聊天`,"AI needs your input":`AI 需要你补充信息`,"Conflict resolution paused":`冲突处理已暂停`,"Review the merged result":`审核合并结果`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`这段内容包含之前尚未提交的修改。可以把审核后的最终结果一起提交,也可以直接应用而不提交。`,"View changes included in this commit":`查看本次提交包含的改动`,"Apply without committing":`应用,不提交`,"Commit together":`一起提交`,"Committed {hash} and pushed.":`已提交 {hash} 并推送。`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`保留冲突段落的最新原文,并保存其他已接受的改动。`,Apply:`应用`,"Apply to workspace":`应用到工作区`,"Commit to manuscript":`提交到论文`,"Confirm and commit":`确认并提交`,"Keep latest wording and commit":`保留最新原文并提交`,"Open a branch to commit":`切换到分支后可提交`,"Committed {hash} to {branch}":`已提交 {hash} 到 {branch}`,"Keep latest wording and apply":`保留最新原文并应用`,"Applied to manuscript":`已应用到论文`,"Confirm and apply":`确认并应用`,"Close window":`关闭窗口`,"Minimize window":`最小化窗口`,"Maximize or restore window":`最大化或还原窗口`,"Download desktop updates":`下载桌面版更新`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`从 GitHub Releases 下载适合当前系统的最新桌面版。论文和设置会保留。`,"Review copy":`审阅副本`,"Suggestions stay in this task until you copy them to the manuscript":`建议保留在当前任务中,只有选中复制后才会出现在主论文上`,"Keep on manuscript":`保留到主论文`,"Kept on manuscript":`已保留到主论文`,"Ask for another review of this PDF version…":`对这个 PDF 版本补充审阅要求…`,"AI review":`AI 审阅`,"Read the paper and leave PDF comments without editing the manuscript":`只读论文并留下 PDF 批注,不修改原稿`,"AI suggestion":`AI 审阅建议`,"AI suggestion {n}":`AI 审阅建议 {n}`,"Close suggestion":`关闭建议`,"Previous suggestion":`上一条建议`,"Next suggestion":`下一条建议`,"Previous suggestion (←)":`上一条建议 (←)`,"Next suggestion (→)":`下一条建议 (→)`,"Unplaced suggestions":`位置待确认的建议`,"Remove suggestion {n} from task":`从任务中移除建议 {n}`,"PDF note {n}":`PDF 批注 {n}`,"Close note":`关闭批注`,"Note deleted.":`已删除批注。`,"Highlighted in {group}":`{group}高亮`,"Notes in this task":`已加入任务的批注`,"Remove note {n} from task":`从任务中移除批注 {n}`,"PDF note library":`PDF 批注列表`,"Close notes":`关闭批注列表`,"My notes":`我的批注`,"AI suggestions":`AI 审阅建议`,"Write a note…":`写下你的想法…`,"Quote in chat":`引用到对话`,"Remove from draft":`从草稿移除`,"Added to task: {n}":`已加入任务:{n} 条`,"Add all to task":`全部加入任务`,"Notes stay here unless you add them to a task.":`批注默认仅保存,加入任务后才会发给 agent。`,"Include suggestion {n} in this task":`将建议 {n} 加入任务`,"Show suggestion {n} on the page":`在页面上显示建议 {n}`,"Ignore suggestion {n}":`忽略建议 {n}`,Ignore:`忽略`,"Suggestion ignored.":`已忽略建议。`,"Suggestion {n}: {comment}":`建议 {n}:{comment}`,"View {n} review suggestion":`查看 {n} 条审阅建议`,"View {n} review suggestions":`查看 {n} 条审阅建议`,"Cursor SDK credentials were not detected.":`未检测到 Cursor SDK 凭据。`,"No GLM API key was found.":`未找到 GLM API key。`,"Claude Code or API credentials were not detected.":`未检测到 Claude Code 或 API 凭据。`,"{command} was not found by Papilot.":`Papilot 未找到 {command}。`,"Sign in on the Papilot host to continue.":`请先在运行 Papilot 的主机上登录。`,"The agent could not connect. Check its setup and try again.":`连接失败,请检查配置后重试。`,"Usage not reported":`未提供额度信息`,"Connect to view account, models, and usage.":`连接后可查看账号、模型和额度。`,"Sign in as the user running Papilot, then restart Papilot.":`请使用运行 Papilot 的用户登录,然后重启 Papilot。`,"Support more":`支持更多`,"Suggest an agent":`推荐一个智能体`,"Contribute an integration":`贡献适配`,Updates:`版本更新`,"Current version":`当前版本`,"Latest version":`最新版本`,"Update channel":`更新通道`,"Update available":`有可用更新`,"Up to date":`已是最新版本`,"Update now":`立即更新`,Stable:`稳定版`,"Dev (GitHub main)":`Dev(GitHub main)`,"Early updates from GitHub main. May be less stable.":`提前体验 GitHub main 的最新改动,稳定性可能较低。`,"Published releases, recommended for everyday use.":`正式发布的稳定版本,推荐日常使用。`,"This version needs the latest desktop app. Download it from GitHub Releases.":`这个版本需要最新的桌面版,请从 GitHub Releases 下载。`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`更新后的版本未能启动,Papilot 已改用安装包自带的版本。请重试更新,或下载最新的桌面版。`,"Could not check for updates":`暂时无法检查更新`,"Check your connection and try again.":`请检查网络连接后重试。`,"Ready to check for updates":`随时获取最新版本`,"Reading update status…":`正在读取更新状态…`,"Check for updates":`检查更新`,"Checking for updates…":`正在检查更新…`,"Downloading and building the selected GitHub commit…":`正在下载并构建选定的 GitHub 提交…`,"You are using the latest version on this channel.":`你已在使用此通道的最新版本。`,"Check for updates to see the latest version.":`检查更新以查看最新版本。`,"Could not check for updates. Try again when connected.":`无法检查更新,请连接网络后重试。`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`构建 Dev 版本至少需要 2 GB 可用磁盘空间,请释放空间后重试。`,"Save accepted changes":`保存已接受的改动`,"Commit to task branch":`提交到 task 分支`,"Built-in":`内置`,Global:`全局`,"Search skills":`搜索技能`,"Refresh skills":`刷新技能`,"Skill scope":`技能范围`,"All skills":`全部技能`,"New skill":`新建技能`,Overridden:`已被覆盖`,All:`全部`,"Loading skills…":`正在加载技能…`,"Copy and edit":`复制并编辑`,"Skill ID":`技能 ID`,"Save to":`保存到`,"Choose an icon":`选择图标`,"Skill icon":`技能图标`,"Skill name":`技能名称`,Description:`简介`,Instructions:`指令`,Source:`源码`,Comments:`批注`,Branch:`分支`,Search:`搜索`,"Give your skill a name":`给技能起个名字`,"What does this skill help with?":`这个技能可以帮你做什么?`,"Describe what the agent should do, what to preserve, and how to present the result.":`说明智能体要做什么、需要保留哪些内容,以及如何呈现结果。`,Sparkles:`星光`,Pen:`笔`,Spelling:`拼写`,Math:`公式`,Checklist:`清单`,Book:`书籍`,Code:`代码`,Chart:`图表`,Globe:`地球`,Idea:`灵感`,Link:`链接`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`使用小写字母、数字和连字符,也作为 / 指令的名称。`,"Copy this built-in skill to customize it for all papers or this paper.":`复制这个内置技能,即可为所有论文或当前论文自定义。`,"Skill content (Markdown)":`技能内容(Markdown)`,"Skill content view":`技能内容视图`,Edit:`编辑`,Preview:`预览`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`此处有同 ID 的技能优先生效:当前论文优先于全局,全局优先于内置。`,"Delete skill":`删除技能`,Saved:`已保存`,"Unsaved changes":`尚未保存`,"Select a skill or create your own.":`选择一个技能,或创建自己的技能。`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`将常用的修改要求保存为技能,开始任务时从 / 菜单中选择。`,"Discard unsaved skill changes?":`放弃尚未保存的技能修改?`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`删除这个技能?只删除其 Markdown 文件,附属文件会保留。`,"Keep editing":`继续编辑`,"Discard changes":`放弃修改`,"This skill changed on disk. Reload it before saving.":`这个技能已在磁盘上被修改,请先复制保留当前编辑,再刷新后保存。`,"This skill changed on disk. Reload it before deleting.":`这个技能已在磁盘上被修改,请刷新后再删除。`,"A skill with this ID already exists in this location.":`此范围内已有相同 ID 的技能,请使用另一个 ID。`,"This skill no longer exists. Refresh the list.":`这个技能已不存在,请刷新列表。`,"This skill was removed on disk. Reload the list before saving.":`这个技能已从磁盘上删除,请先刷新列表。`,"The skill must contain instructions.":`请填写技能的指令正文。`,"Skill content must contain 1–20,000 characters.":`技能内容需为 1 至 20,000 个字符。`,"Apply to working directory":`应用到工作目录`,"Applying…":`正在应用…`,Attachments:`附件`,"Choose attachments":`选择附件`,"Add files or skills":`添加文件或技能`,"Add files…":`添加文件…`,"Drop files to attach":`松开以添加附件`,"Uploading…":`正在上传…`,"Upload failed. Please retry.":`上传失败,请重试。`,"Retry uploading {name}":`重新上传 {name}`,"Remove attachment {name}":`移除附件 {name}`,"Open attachment {name}":`打开附件 {name}`,"Attach up to 10 files per message.":`每条消息最多添加 10 个附件。`,"The file “{name}” is empty.":`文件“{name}”为空。`,"Files must be 25 MB or smaller.":`单个文件不能超过 25 MB。`,"Images must be 5 MB or smaller.":`单张图片不能超过 5 MB。`,"Attachments must total 100 MB or less.":`附件总大小不能超过 100 MB。`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity 通过文件工具读取图片。需要直接传入图片时,请选择 Codex 或 Claude。`,"LaTeX engine":`LaTeX 编译引擎`,"Could not read the selected file.":`无法读取所选文件。`,"Choose up to 5,000 files, totaling less than 64 MB.":`最多选择 5,000 个文件,总大小需小于 64 MB。`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`请在运行 Papilot 的电脑上安装包含 latexmk 的 TeX Live 或 MacTeX,然后重试。`,"This paper may need XeLaTeX. Change the engine below and retry.":`这篇论文可能需要 XeLaTeX。请修改下方编译引擎后重试。`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`可能缺少宏包、字体或源文件。请查看下方详情,补齐文件或请求协助。`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`请检查主文件和编译引擎,或请助手协助修复。也可以修改已保存的文件后重试。`,"Choose folder":`选择文件夹`,"Choose ZIP":`选择 ZIP`,"Open a folder":`打开文件夹`,"Import a ZIP":`导入 ZIP`,"Choose a folder or ZIP, or drag it here.":`选择文件夹或 ZIP,也可以直接拖到这里。`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`选择文件夹并上传副本。使用桌面版可直接打开原始文件。`,"Import a separate copy from Overleaf or a ZIP archive.":`从 Overleaf 或 ZIP 压缩包导入一份副本。`,"Or drop a folder or ZIP here":`也可以把文件夹或 ZIP 拖到这里`,"Enter a folder path":`手动输入文件夹路径`,"Drop one folder or LaTeX ZIP file.":`请拖入一个文件夹或 LaTeX ZIP 文件。`,"No files found in this folder.":`这个文件夹中没有可导入的文件。`,"Could not detect a main file. Enter its path relative to the paper folder.":`未能识别主文件,请输入它相对于论文文件夹的路径。`,"Folder path":`文件夹路径`,"Read folder":`读取文件夹`,"Reading paper files…":`正在读取论文文件…`,"Import progress":`导入进度`,"Files received":`已接收文件`,"Version history":`版本历史`,"PDF compilation":`编译 PDF`,"Saved folder":`保存位置`,"Main TeX file":`TeX 主文件`,"Several TeX files were found. Check the selected main document before continuing.":`找到多个 TeX 文件,请确认主文件后继续。`,"The assistant is fixing compilation…":`助手正在修复编译问题…`,"Preparing version history and compiling the PDF…":`正在准备版本历史并编译 PDF…`,"Typesetting with LaTeX, pass {n}…":`正在用 LaTeX 排版(第 {n} 遍)…`,"Processing the bibliography…":`正在处理参考文献…`,"Writing the PDF…":`正在生成 PDF…`,"Pages typeset":`已排版页数`,"Page {pages} of {total}":`第 {pages} / {total} 页`,"Page {pages}":`第 {pages} 页`,"Your paper compiled successfully. It is ready for editing.":`论文已成功编译,可以开始修改。`,"The paper needs a little help":`论文需要一些修复`,"Could not prepare the paper":`未能准备论文文件`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot 在准备编译文件时出错。这是应用内部错误,不是 LaTeX 错误。`,"Compilation details":`编译详情`,"Repair summary":`修复说明`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`修复会保留为未提交的修改,可在论文的文件变更中查看。`,"Help fix compilation":`协助修复编译`,"Prepare and compile":`准备并编译`,"Retry compilation":`重新编译`,"Open paper":`打开论文`,"Add and fix later":`先添加,稍后修复`,"Connect an assistant in Settings to help repair this paper.":`请在设置中连接助手,以协助修复这篇论文。`,"Choose different files":`重新选择文件`,"Continue later":`稍后继续`,"Open reviews on":`审阅默认显示`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`「改动」只显示改动所在的部分,打开最快;「PDF」在全文中原位显示每处改动,篇幅较长时会慢一些。审阅工具栏里的切换只对当前审阅有效。`,"Edit {name}":`编辑 {name}`,"Edit paper":`编辑论文`,"Remove paper":`移除论文`,Location:`位置`,"Change…":`更改…`,"Remove paper?":`移除论文?`,"Remove from Papilot":`从 Papilot 移除`,"Paper name":`论文名称`,"Removing…":`正在移除…`,"Remove this paper and its tasks, conversations and notes from Papilot?":`从 Papilot 移除这篇论文及其任务、对话和批注记录?`,"Files on disk, Git history and task worktrees will stay in place.":`硬盘上的文件、Git 历史和任务工作树都会保留。`,"Updating…":`正在更新…`,"Update ready":`更新已就绪`,"Restarting…":`正在重启…`,"Update failed":`更新失败`,"New version":`有新版本`,"Papilot {version}":`Papilot {version}`,"Update Papilot":`更新 Papilot`,Later:`稍后`,"Retry update":`重试更新`,"Update to {version}":`更新到 {version}`,"Could not start the update. Please retry.":`未能启动更新,请重试。`,"Downloading and checking the new version…":`正在下载并检查新版本…`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`更新已就绪,将在任务和 PDF 编译完成后重启。`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`正在重启 Papilot,页面将自动重连,草稿会保留。`,"The update did not finish. Your current version is still available. You can retry here.":`更新未完成,当前版本仍然可用。你可以在这里重试。`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`安装新版本,并在任务空闲时自动重启。论文、任务和设置都会保留。`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot 未能在这台电脑上找到 npm,安装 npm 后即可更新。`,"Generate task title":`生成任务标题`,"Generating task title…":`正在生成任务标题…`,"Retry title generation":`重新生成任务标题`,"PDF annotations":`PDF 标注`,Yellow:`黄色`,Green:`绿色`,Purple:`紫色`,Orange:`橙色`,Red:`红色`,"Annotation groups":`批注组`,"Annotation group color":`批注组颜色`,"Individual notes":`单条批注`,Color:`颜色`,"Add to group":`加入批注组`,"Quoted text":`引用原文`,"Your note":`批注内容`,"{n} location":`{n} 处`,"{n} locations":`{n} 处`,"Add to {group}":`加入{group}组`,"Instructions for color groups":`各颜色组的修改要求`,"Send annotations":`发送标注`,"Send annotations to the agent":`发送标注给代理`,"What should change in this group?":`这组内容希望怎么处理?`,"What should change in each color group?":`各颜色组需要怎样修改?`,"Instructions for {group} notes":`{group}批注的处理要求`,"Add instructions to the selected color groups above.":`请在上方为选中的颜色组填写处理要求。`,"Reasoning effort":`推理强度`,"Model default":`模型默认`,"Request failed. Please try again.":`请求失败,请重试。`,"The connection is taking too long. Check your network and try again.":`连接时间过长。请检查网络后重试。`,"The request timed out and may still be processing. Check the task status before retrying.":`请求超时,可能仍在处理中。重试前请先检查任务状态。`,Ready:`就绪`,Queued:`排队中`,"Needs your reply":`等待你的回复`,"Preparing task results":`正在整理任务结果`,"Ready for review":`待审阅`,Paused:`已暂停`,"Needs attention":`需要处理`,"Check task status":`请检查任务状态`,"Deleting task":`正在删除任务`,"Review complete":`审阅完成`,Completed:`已完成`,Committed:`已提交`,"Committed and pushed":`已提交并推送`,"{agent} is working":`{agent} 正在处理`,now:`刚刚`,"{n}m":`{n} 分钟`,"{n}h":`{n} 小时`,"{n}d":`{n} 天`,"just now":`刚刚`,"{time} ago":`{time}前`,"Details (optional)":`补充说明(选填)`,"{agent} needs your input":`{agent} 需要你的回答`,"Approve this action":`批准此操作`,"Or type your own answer":`或输入你自己的回答`,"{agent} is requesting permission for this action.":`{agent} 请求执行此操作的权限。`,"Apply file changes":`应用文件修改`,Decline:`拒绝`,"Submitting…":`正在提交…`,"Reply to {agent}":`回复 {agent}`,"Allow this action":`允许此操作`,Copied:`已复制`,"Copy message":`复制消息`,Copy:`复制`,"You, {time}":`你,{time}`,"Note on the PDF":`PDF 上的批注`,"{n} notes on the PDF":`PDF 上的 {n} 条批注`,"Marked region":`标记的区域`,"{n} accepted":`{n} 处已接受`,"{n} rejected":`{n} 处已拒绝`,"{n} comment":`{n} 条评论`,"{n} comments":`{n} 条评论`,"{n} undone":`{n} 处已撤销`,"build error":`编译错误`,"You sent review feedback, {time}":`你发送了审阅反馈,{time}`,"Review feedback":`审阅反馈`,"Viewed the PDF: {places}":`查看了 PDF:{places}`,"Viewed the PDF":`查看了 PDF`,"viewed the PDF":`查看了 PDF`,"Build failed · sent to {agent}":`编译失败 · 已发给 {agent}`,"Papilot sent the build error to {agent}, {time}":`Papilot 已将编译错误发给 {agent},{time}`,"With review feedback":`附带审阅反馈`,"Run command":`运行命令`,"Edited {file}":`编辑了 {file}`,"Edited {n} files":`编辑了 {n} 个文件`,"Run tool":`使用工具`,Running:`运行中`,Declined:`已拒绝`,Failed:`失败`,"ran {n} command":`运行了 {n} 条命令`,"ran {n} commands":`运行了 {n} 条命令`,"edited {file}":`编辑了 {file}`,"edited {n} files":`编辑了 {n} 个文件`,"used {n} tool":`使用了 {n} 个工具`,"used {n} tools":`使用了 {n} 个工具`,", ":`,`,"{n} failed":`{n} 个失败`,"This task is being deleted":`此任务正在删除`,"Check task status before sending":`发送前请先检查任务状态`,"Sending feedback…":`正在发送反馈…`,"Sending…":`正在发送…`,"{n} review update will be sent with this message":`{n} 项审阅更新将随此消息发送`,"{n} review updates will be sent with this message":`{n} 项审阅更新将随此消息发送`,"{agent} is working · new instructions run next":`{agent} 正在工作 · 新指令会在本轮结束后执行`,"Default model":`默认模型`,"{agent} conversation":`{agent} 对话`,Chat:`对话`,"Loading conversation…":`正在加载对话…`,"Retry conversation":`重新加载对话`,"{agent} is working on this task":`{agent} 正在处理此任务`,"Task saved. Waiting for an available {agent} session.":`任务已保存。正在等待可用的 {agent} 会话。`,"{n} change to review":`{n} 处修改待审阅`,"{n} changes to review":`{n} 处修改待审阅`,"Open review":`打开审阅`,"This step needs attention":`此步骤需要处理`,"Latest messages":`最新消息`,"Instructions for {agent}":`给 {agent} 的指令`,"Queue instructions for the next turn…":`添加后续指令…`,"Ask a question or request changes…":`继续提问,或提出修改要求…`,"Pause task":`暂停任务`,"Pause {agent}":`暂停 {agent}`,"Send instructions":`发送指令`,"Send (Enter) · New line (Shift+Enter)":`发送(Enter)· 换行(Shift+Enter)`,"{n} review update not sent yet":`{n} 项审阅更新尚未发送`,"{n} review updates not sent yet":`{n} 项审阅更新尚未发送`,"Send your review decisions and comments to the agent":`把你的审阅决定和评论发送给智能体`,"Send feedback":`发送反馈`,"Open task: {title}":`打开任务:{title}`,"Archived task":`已归档任务`,"No linked task":`未关联任务`,Retry:`重试`,Worktrees:`工作树`,Current:`当前`,"Commit graph":`提交关系图`,"{n} conflicts":`{n} 个冲突`,"{n} staged":`{n} 个已暂存`,"{n} unstaged":`{n} 个未暂存`,"{n} untracked":`{n} 个未跟踪`,"Refresh worktrees and history":`刷新工作树和提交历史`,"Reading worktrees and history…":`正在读取工作树和提交历史…`,"Could not refresh the repository.":`无法刷新仓库状态。`,"Showing the last update.":`正在显示最近一次更新。`,"Bare repository":`裸仓库`,"Status unavailable":`状态不可用`,Locked:`已锁定`,"Missing worktree":`工作树路径已失效`,"No upstream branch":`未设置上游分支`,"{ahead} ahead · {behind} behind":`领先 {ahead} · 落后 {behind}`,"Changed files in {branch}":`{branch} 中改动的文件`,"Could not read this worktree.":`无法读取此工作树。`,"No other worktrees in this repository.":`此仓库没有其他工作树。`,"No commits yet":`尚无提交`,"This worktree’s HEAD is outside the displayed history.":`此工作树的 HEAD 不在当前显示的历史范围内。`,"Showing the latest {n} commits. Older history is not shown.":`显示最近 {n} 次提交,更早的历史未展示。`,detached:`游离`,"{n} changed":`{n} 处改动`,clean:`无改动`,Modified:`已修改`,Added:`已添加`,Deleted:`已删除`,Renamed:`已重命名`,Conflict:`冲突`,Untracked:`未跟踪`,"Type changed":`类型已改变`,"No textual changes.":`没有文本改动。`,"The diff is too long to show in full.":`差异太长,无法完整显示。`,"Git status":`Git 状态`,"Reading Git status…":`正在读取 Git 状态…`,"Committed {hash}.":`已提交 {hash}。`,"{n} new commit on {upstream}.":`{upstream} 上有 {n} 个新提交。`,"{n} new commits on {upstream}.":`{upstream} 上有 {n} 个新提交。`,"Up to date with the remote.":`已与远程保持同步。`,"Pulled the latest commits.":`已拉取最新提交。`,"Pushed to {upstream}.":`已推送到 {upstream}。`,"Pushed to the remote.":`已推送到远程。`,"detached HEAD":`游离 HEAD`,"Compared with {upstream}":`与 {upstream} 比较`,Pull:`拉取`,Push:`推送`,"Publish branch":`发布分支`,"Fetch from the remote":`从远程获取`,Tracking:`跟踪`,"Stage all changes":`暂存全部改动`,"Commit message":`提交信息`,"Committing…":`正在提交…`,"Commit 1 file":`提交 1 个文件`,"Commit staged changes in 1 file":`提交 1 个文件中暂存的改动`,"Commit staged changes in {n} files":`提交 {n} 个文件中暂存的改动`,"Commit all {n} files":`提交全部 {n} 个文件`,"Commit {chosen} of {n} files":`提交 {n} 个文件中的 {chosen} 个`,"Generate commit message":`生成提交信息`,"Write a commit message for the chosen files with {agent}":`让 {agent} 为选中的文件写提交信息`,"{agent} is writing a commit message…":`{agent} 正在写提交信息…`,"{n} build file":`{n} 个构建文件`,"{n} build files":`{n} 个构建文件`,"Untracked build output. Add to .gitignore adds:":`未跟踪的构建产物。加入 .gitignore 会添加:`,"Add to .gitignore":`加入 .gitignore`,"{n} file staged":`已暂存 {n} 个文件`,"{n} files staged":`已暂存 {n} 个文件`,"Commit what is staged":`提交已暂存的改动`,Show:`显示`,Changes:`改动`,"What changed since the last commit, to stage, revert and commit change by change":`上次提交以来的改动,可逐处暂存、还原并提交`,"Uncommitted changes in the PDF":`PDF 中未提交的改动`,"Commit…":`提交…`,"Commit to {branch}":`提交到 {branch}`,Commit:`提交`,"What this task accepted, in {n} file:":`此任务接受的改动,共 {n} 个文件:`,"What is staged, in {n} file:":`已暂存的改动,共 {n} 个文件:`,"What is staged, in {n} files:":`已暂存的改动,共 {n} 个文件:`,"What this task accepted, in {n} files:":`此任务接受的改动,共 {n} 个文件:`,"Staged changes":`暂存的改动`,"Stage changes":`暂存改动`,"Unstage changes":`取消暂存`,"Unstage {path}":`取消暂存 {path}`,"Unstage all changes":`全部取消暂存`,"Discard all changes":`放弃所有改动`,"Discard changes in {path}":`放弃 {path} 中的改动`,"Refresh changes":`刷新改动`,"More Git actions":`更多 Git 操作`,"More commit actions":`更多提交操作`,"Message ({key} to commit on “{branch}”)":`提交信息(按 {key} 提交到“{branch}”)`,"Delete {name}?":`删除 {name}?`,"Discard changes in {name}?":`放弃 {name} 中的改动?`,"Discard changes in {n} file?":`放弃 {n} 个文件中的改动?`,"Discard changes in {n} files?":`放弃 {n} 个文件中的改动?`,"Delete file":`删除文件`,"This file is not tracked by Git, so it cannot be recovered.":`这个文件没有被 Git 跟踪,删除后无法恢复。`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`未暂存的改动会被永久丢弃,未跟踪的文件会被删除。已暂存的改动会保留。`,"Unstaged changes are lost for good. Staged changes stay.":`未暂存的改动会被永久丢弃。已暂存的改动会保留。`,"Discarded changes in {n} file.":`已放弃 {n} 个文件中的改动。`,"Discarded changes in {n} files.":`已放弃 {n} 个文件中的改动。`,"Commit and push":`提交并推送`,"Committing and pushing…":`正在提交并推送…`,Merge:`合并`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} 和 {upstream} 都有新提交。合并会引入远端的提交。`,"Merged {upstream}.":`已合并 {upstream}。`,"The merge stopped at conflicts.":`合并遇到了冲突。`,"Merge in progress":`合并进行中`,"Merging: {n} file has conflicts":`合并中:{n} 个文件有冲突`,"Merging: {n} files have conflicts":`合并中:{n} 个文件有冲突`,"Merging: no conflicts left":`合并中:冲突已全部解决`,"Resolve with {agent}":`让 {agent} 解决`,"{agent} is resolving…":`{agent} 正在解决…`,"{agent} on the merge":`{agent} 对这次合并的说明`,"{n} file still has conflicts.":`还有 {n} 个文件有冲突。`,"{n} files still have conflicts.":`还有 {n} 个文件有冲突。`,"Conflicts resolved. Read the diffs, then commit the merge.":`冲突已解决。看过各文件的改动后,提交这次合并。`,"Commit merge":`提交合并`,"Abort merge":`放弃合并`,"Aborting…":`正在放弃…`,"The merge was abandoned.":`已放弃这次合并。`,"Added {n} pattern to .gitignore.":`已向 .gitignore 添加 {n} 条规则。`,"Added {n} patterns to .gitignore.":`已向 .gitignore 添加 {n} 条规则。`,"Stage {path}":`暂存 {path}`,Staged:`已暂存`,"Changes in {path}":`{path} 的改动`,"Loading the diff…":`正在加载差异…`,"No uncommitted changes":`没有未提交的改动`,"Select all notes for this task":`全选本轮批注`,"{selected} / {total} locations selected":`已选 {selected} / {total} 处`,"Collapse {group} notes":`收起{group}批注`,"Expand {group} notes":`展开{group}批注`,"Select all {group} notes for this task":`本轮选中全部{group}批注`,"Include note {n} in this task":`本轮发送批注 {n}`,"Clear selection":`取消全选`,"Add overall instructions (optional)":`补充整体修改要求(选填)`,"Address {n} PDF notes":`处理 {n} 条 PDF 批注`,"Page {n}":`第 {n} 页`,"PDF notes":`PDF 批注`,"Show note {n} on the page":`在页面上显示批注 {n}`,"Delete note {n}":`删除批注 {n}`,"Delete note":`删除批注`,"Position needs confirmation":`位置待确认`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`无法确认这条批注在新 PDF 中的位置,原文和备注已保留。`,"Some note positions need confirmation. Their original text and comments are kept.":`部分批注的位置需要确认,原文和备注均已保留。`,"Send {n} note to the agent":`把 {n} 条批注发送给智能体`,"Send {n} notes to the agent":`把 {n} 条批注发送给智能体`,"PDF preview":`PDF 预览`,"The manuscript did not compile.":`稿件编译失败。`,"Opening the PDF…":`正在打开 PDF…`,"Compiling the PDF…":`正在编译 PDF…`,"Manuscript panels":`稿件面板`,Contents:`目录`,"PDF contents":`PDF 目录`,"This PDF has no bookmarks.":`此 PDF 没有书签。`,"Contents will appear when the PDF is ready.":`PDF 就绪后会显示目录。`,"You are offline. Your draft is kept in this browser.":`你已离线。草稿保存在此浏览器中。`,"Agent settings":`智能体设置`,"Add skill":`添加技能`,Fast:`快速`,"Fast mode":`快速模式`,"No notes yet":`暂无批注`,"Region note":`区域批注`,"Send {n} note":`发送 {n} 条批注`,"Send {n} notes":`发送 {n} 条批注`,"or select text to annotate":`或选中文字批注`,"Edit note":`编辑批注`,"Edit note {n}":`编辑批注 {n}`,"Edit note {n}: {comment}":`编辑批注 {n}:{comment}`,"Changes apply to the next turn.":`更改从下一轮对话生效。`,Save:`保存`,"Saving…":`正在保存…`,"Pending review":`待审阅`,Accepted:`已接受`,Rejected:`已拒绝`,"Revision requested":`需再修改`,"Partly reviewed":`部分已审阅`,"Retry linking changes":`重试关联修改`,"View changes for this note":`查看这条批注对应的修改`,"Change {n}":`修改 {n}`,"Awaiting changes":`等待修改`,"No linked change":`暂无对应修改`,"Show note {n}: {comment}":`查看批注 {n}:{comment}`,"Note {n}":`批注 {n}`,"No tasks yet":`暂无任务`,"No matching skills":`没有匹配的技能`,"LaTeX Git repository · Requires a commit and latexmk":`LaTeX Git 仓库 · 需有提交记录并安装 latexmk`,"{agent} is unavailable":`{agent} 不可用`,"Connection details":`连接详情`,"Faster responses; may use more of your limit.":`响应更快,可能消耗更多额度。`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`本机未找到 {agent}。安装或配置后点“重新连接”。`,"Search models":`搜索模型`,Models:`模型`,Recent:`最近使用`,Default:`默认`,"No models match “{query}”":`没有匹配“{query}”的模型`,"Wait for the PDF to compile.":`请等待 PDF 编译完成。`,"Fit width":`适合宽度`,"Fit page":`适合页面`,"Note for the agent":`给智能体的批注`,"What should change here?":`这里应该怎么改?`,"Add note":`添加批注`,"PDF controls":`PDF 控件`,"Previous page":`上一页`,"Page number":`页码`,"Next page":`下一页`,"Zoom out":`缩小`,"Zoom out (⌘−)":`缩小(⌘−)`,Zoom:`缩放`,"Zoom in":`放大`,"Zoom in (⌘+)":`放大(⌘+)`,"Find in PDF":`在 PDF 中查找`,"Find (⌘F)":`查找(⌘F)`,"Mark region":`标记区域`,"Mark a figure or region":`标记图表或区域`,"Search the PDF":`搜索 PDF`,"No matches":`无匹配`,"{current} of {total}":`{current}/{total}`,"Previous match":`上一个匹配`,"Next match":`下一个匹配`,"Close search":`关闭搜索`,"PDF pages":`PDF 页面`,"The PDF could not be opened: {error}":`无法打开 PDF:{error}`,"Note {n}: {comment}":`批注 {n}:{comment}`,"{title} PDF change review":`{title} 的 PDF 修改审阅`,"The PDF review could not be loaded.":`无法加载 PDF 审阅。`,"The PDF review is taking longer than expected.":`PDF 审阅加载时间比预期长。`,"Loading PDF review…":`正在加载 PDF 审阅…`,"Reload review":`重新加载审阅`,"Review notes":`审阅批注`,"Review note: {comment}":`审阅批注:{comment}`,"Review PDF notes":`审阅 PDF 批注`,"Review notes ({n})":`审阅批注({n})`,"Close review notes":`关闭审阅批注`,"Delete review note {n}":`删除审阅批注 {n}`,"Marked on earlier changes.":`标记于之前的修改。`,"Check the task status before sending notes.":`发送批注前请先检查任务状态。`,"Full PDF":`完整 PDF`,"Open the full PDF":`打开完整 PDF`,"Generate PDF comparison":`生成 PDF 对比`,"Regenerate PDF comparison":`重新生成 PDF 对比`,"Open review in new tab":`在新标签页中打开审阅`,"Rename {name}":`重命名 {name}`,"Papers and tasks":`论文和任务`,"Hide task list":`隐藏任务列表`,"Paper: {name}":`论文:{name}`,"Add paper…":`添加论文…`,"Add paper":`添加论文`,Manuscript:`稿件`,"Git status of the manuscript":`稿件的 Git 状态`,"New task":`新任务`,Tasks:`任务`,"Task list":`任务列表`,"{n} change to decide":`{n} 处修改待定`,"{n} changes to decide":`{n} 处修改待定`,"Task actions for {title}":`{title} 的任务操作`,"Rename…":`重命名…`,"Check status":`检查状态`,"Retry deletion…":`重试删除…`,"Delete task…":`删除任务…`,Settings:`设置`,Connected:`已连接`,Reconnecting:`正在重新连接`,"{n} active task":`{n} 个活动任务`,"{n} active tasks":`{n} 个活动任务`,"Close task list":`关闭任务列表`,"Show task list":`显示任务列表`,"Recompile PDF":`重新编译 PDF`,"Open PDF":`打开 PDF`,"PDF compiled successfully.":`PDF 编译成功。`,"Compilation failed. Click to retry.":`编译失败,点击重试。`,"Compilation status unavailable.":`暂时无法确认编译状态。`,"Manuscript view":`稿件视图`,"Git, {n} changed":`Git,{n} 处改动`,"Retry deletion":`重试删除`,Pause:`暂停`,"View details":`查看详情`,"Workspace view":`工作区视图`,"Review, {n} to decide":`审阅,{n} 处待定`,Review:`审阅`,"Chat (reply needed)":`对话(需要回复)`,"PDF review only":`只看 PDF 审阅`,Split:`分栏`,"Review and chat side by side":`审阅和对话并排`,"Chat only":`只看对话`,"This conversation has no manuscript changes.":`本次对话没有稿件修改。`,"Connection lost. Showing the last update; your draft is kept.":`连接已断开。正在显示最近一次更新,你的草稿仍然保留。`,"Retry connection":`重新连接`,"Connecting to {agent}…":`正在连接 {agent}…`,"Connecting…":`正在连接…`,Reconnect:`重新连接`,"Resize chat panel":`调整对话面板宽度`,"Drag to resize · Double-click to reset":`拖动调整宽度 · 双击还原`,"PDF review":`PDF 审阅`,"Could not generate the PDF comparison.":`PDF 对比生成失败。`,"Retry build":`重新生成`,"Deletion is in progress":`正在删除`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`在确认工作树清理完成之前,此任务会保留。如果连接中断,请使用“重试删除”。`,"Preparing task results…":`正在整理任务结果…`,"PDF comparison":`PDF 修改对比`,"No manuscript changes":`本次没有修改论文`,"This task did not change the manuscript. Read the answer in the chat.":`本次任务没有改动论文,请在对话中查看回复。`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`只有论文改动需要对比,问答内容直接在对话中查看。`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`正在检查论文是否有改动,有改动时才会生成 PDF 对比。`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`如果任务修改了论文,这里会显示 PDF 对比;问答回复在对话中查看。`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`请先在对话中回复,让任务继续。只有论文改动才需要 PDF 对比。`,"Confirm whether the task is still running before generating a PDF comparison.":`请先确认任务是否仍在运行,再生成 PDF 对比。`,"Opening your workspace":`正在打开工作区`,"Connecting to your papers and tasks…":`正在连接你的论文和任务…`,"What are we revising next?":`接下来要修改什么?`,"Describe the revision":`描述修改`,"Start task":`开始任务`,"Start task (Enter)":`开始任务(Enter)`,"Task added: {title}":`已添加任务:{title}`,"Add your first paper":`添加你的第一篇论文`,"Dismiss error":`关闭错误提示`,Close:`关闭`,"Add a paper":`添加论文`,"Repository path":`仓库路径`,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,Cancel:`取消`,"Copied path":`已复制路径`,"Copy path: {path}":`复制路径:{path}`,"{agent} is waiting for your approval":`{agent} 正在等待你的批准`,"Review ready · {n} change to decide":`审阅已就绪 · {n} 处修改待定`,"Review ready · {n} changes to decide":`审阅已就绪 · {n} 处修改待定`,"{agent} finished":`{agent} 已完成`,"A task needs attention":`有任务需要处理`,"Notifications are on":`通知已开启`,"Papilot will tell you here when a task needs you.":`任务需要你时,Papilot 会在这里通知你。`,"LaTeX installation":`LaTeX 安装信息`,Distribution:`发行版`,Version:`版本`,"Installation location":`安装位置`,"Detect again":`重新识别`,"Detecting LaTeX installation…":`正在识别 LaTeX 安装…`,"Could not read the LaTeX installation. Try again.":`无法读取 LaTeX 安装信息,请重试。`,"No LaTeX installation was detected on this host.":`未在此主机上检测到 LaTeX 安装。`,Runtime:`运行环境`,Agents:`智能体`,"Set up this agent":`配置此智能体`,"Already set up?":`已经配置过了?`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`上次连接时,Papilot 未在运行服务的用户环境中找到 CURSOR_API_KEY 或 Cursor SDK 登录记录。Cursor 桌面应用或 CLI 的登录不适用于此 SDK。`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`在 Cursor 控制台创建 API key,或在此主机上配置 Cursor SDK 登录。`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`为启动 Papilot 的进程或服务设置 CURSOR_API_KEY,然后重启 Papilot。SDK 会在使用时自动安装。`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`在新终端中设置的环境变量不会传给已运行的服务。需要携带凭据重启 Papilot;仅重新连接无法改变服务的环境。`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`上次连接时,Papilot 服务环境中没有 ZHIPU_API_KEY 或 ZAI_API_KEY。Claude 登录或 GLM 网站登录不会提供这两个密钥。`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`在智谱或 Z.ai 创建 GLM Coding Plan 或 API key。`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`在启动 Papilot 的环境中设置 ZHIPU_API_KEY(open.bigmodel.cn)或 ZAI_API_KEY(api.z.ai),然后重启 Papilot。`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`上次连接时,Papilot 服务环境中既未找到 Claude Code,也未找到支持的 API 凭据。`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`上次连接时,Papilot 服务环境中未找到可运行的 {command} CLI。它可能已安装在其他位置或另一个用户下。`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`在主机上运行 papilot codex login。需要时,它会安装支持的 Codex CLI。`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`在运行 Papilot 的主机上安装 {command},然后按下方说明完成登录或模型服务商配置。`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`如果已经安装,请在启动 Papilot 的环境中将 {variable} 设置为其可执行文件路径,然后重启 Papilot。`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`若使用 SDK,请配置 ANTHROPIC_API_KEY 或支持的云服务商后启动 Papilot。更改环境后需要重启 Papilot。`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`浏览器与 Papilot 服务可能在不同的电脑上运行。后台服务的 PATH 和用户账号也可能与你的终端不同。`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`最新的配置检查已找到此智能体。请重新连接以刷新实时状态。`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot 已连接到此智能体,但无法确认此主机上有已登录的账号。`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot 未能与此智能体建立可用的连接。下方是最近的连接错误。`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`如果实时状态仍与检查结果不一致,请用配置此智能体时的同一用户和环境重启 Papilot。`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`请根据上方连接错误检查此主机上的登录、模型服务商和网络配置。更改凭据或可执行文件路径后,请重启 Papilot。`,"Could not reconnect. Check the server connection and try again.":`重新连接失败,请检查服务连接后重试。`,"Connect and sign in to load the model list.":`连接并登录后可加载模型列表。`,"This agent has not reported a model list. Its configured default can still be used.":`此智能体尚未返回模型列表,仍可使用其配置的默认模型。`,"Show fewer models":`收起模型`,"Show {n} more models":`展开其余 {n} 个模型`,"{agent} details":`{agent} 详情`,"View installation, account, and usage":`查看安装方式、账号和额度`,"Close agent details":`关闭智能体详情`,Account:`账号`,"Signed in":`已登录`,"Available models":`可用模型`,"Installation & setup":`安装与配置`,"Usage & limits":`用量与额度`,"Installation check":`安装检测`,"Environment variable":`环境变量`,"Set up on the host":`在主机上配置`,"Setup guide":`配置指南`,"No installation details were returned. Run the checks again to refresh.":`尚无安装检测结果,可重新检查以刷新。`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`使用本机兼容的 Codex CLI;需要时,Papilot 会自动安装。`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`优先使用已安装的 Claude Code,也可通过 API 凭据使用 Claude Agent SDK。`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`通过 CURSOR_API_KEY 使用 Cursor SDK,首次使用时由 Papilot 安装 SDK。`,"Uses the local Antigravity CLI and its saved Google login.":`使用本机 Antigravity CLI 及其保存的 Google 登录。`,"Uses Kimi Code CLI and its saved login through ACP.":`通过 ACP 连接 Kimi Code CLI,沿用其登录。`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`通过 ACP 连接 Grok Build CLI,沿用其登录或已配置的 API 凭据。`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`通过 ACP 连接 GitHub Copilot CLI,沿用其登录或已配置的模型服务商。`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`通过 ZHIPU_API_KEY 或 ZAI_API_KEY,使用 Claude Code 或 Claude Agent SDK。`,"Uses DeepSeek Harness and the providers configured in dsh.":`使用 DeepSeek Harness,以及在 dsh 中配置的模型服务商。`,"Uses Qwen Code and its saved login through ACP.":`通过 ACP 连接 Qwen Code,沿用其登录。`,"Uses OpenCode with the providers and models you have connected.":`使用 OpenCode 中已连接的模型服务商与模型。`,Changelog:`更新日志`,"See what changed in each release.":`了解每个版本的改进与修复。`,Contribute:`参与贡献`,"Help improve Papilot with code, docs, and ideas.":`通过代码、文档和建议,一起完善 Papilot。`,"Not found":`未找到`,"Not detected":`未检测到`,"Agent configuration":`智能体配置`,Unknown:`未知`,"Sign-in required":`需要登录`,Unavailable:`不可用`,"Checking…":`正在检查…`,"Check again":`重新检查`,"Could not complete the environment checks. Check the connection and try again.":`未能完成环境检查,请检查连接后重试。`,Passed:`通过`,Warning:`提醒`,"Suggested fix":`处理建议`,"Used for new tasks. Saved in this browser.":`用于新任务,保存在当前浏览器中。`,"Default reasoning effort":`默认推理强度`,"Available levels depend on the selected model.":`可选档位取决于所选模型。`,"This model uses its own reasoning settings.":`此模型使用自身的推理设置。`,"Review decisions":`审阅操作`,"Review navigation":`审阅导航`,"View & help":`视图与帮助`,"Enable shortcut: {action}":`启用快捷键:{action}`,General:`通用`,Personal:`个人偏好`,"Review preferences":`审阅偏好`,Workspace:`工作区`,Application:`应用`,"About Papilot":`关于 Papilot`,"Search settings":`搜索设置`,"Settings categories":`设置分类`,"No matching settings":`没有匹配的设置`,"Language for the Papilot interface.":`Papilot 界面的显示语言。`,"Opens in a new tab":`在新标签页中打开`,"A workspace for your papers.":`为论文而生的工作空间。`,"Read, annotate, and revise your papers with AI, all in one place.":`阅读、批注,与 AI 一起修改论文,在同一处完成。`,"GitHub repository":`GitHub 仓库`,"Feedback & issues":`问题与建议`,"Report a bug or suggest an improvement.":`反馈问题,或分享你的改进建议。`,"User guide":`使用指南`,"Get started and make Papilot your own.":`了解如何开始使用和配置 Papilot。`,"Licenses & acknowledgments":`许可证与致谢`,"Papilot license":`Papilot 许可证`,"Third-party licenses":`第三方许可证`,"Libraries, fonts, and the people behind them.":`使用的开源库、字体,以及背后的贡献者。`,"Made by Cui Chen and the Papilot contributors.":`由 Cui Chen 与 Papilot 贡献者共同构建。`,"Could not load the license notices.":`无法加载许可证信息。`,"Loading license notices…":`正在加载许可证…`,"{shown} of {total} components":`显示 {shown} / {total} 个组件`,"See license notice":`参见许可声明`,"Component source":`组件源码`,"License text is not included in this package. See the component source for its terms.":`此软件包未附带许可证正文,请前往组件源码查看许可条款。`,"No components match your search.":`没有找到匹配的组件。`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Papilot 及其审阅引擎使用的开源库和字体。各组件分别遵循其自身的许可证。`,"Search components or licenses…":`搜索组件或许可证…`,"Search components or licenses":`搜索组件或许可证`,"This browser cannot show notifications.":`此浏览器无法显示通知。`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`浏览器只在 HTTPS 或 localhost 上显示通知。请通过安全地址打开 Papilot 后再使用。`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`此网站的通知已被屏蔽。请先在浏览器的网站设置中允许通知,再回到这里开启。`,"Visual style":`视觉风格`,Mode:`模式`,Theme:`主题`,Accent:`强调色`,Background:`背景色`,Foreground:`文字色`,Paper:`纸张`,Slate:`岩灰`,Customized:`已自定义`,"Slate blue":`灰蓝`,Graphite:`墨灰`,Stone:`暖灰`,"Choose {color} color":`选择{color}`,"Use a hex color, like #2563EB.":`请输入十六进制颜色,例如 #2563EB。`,"Editing light mode colors. Changes are saved automatically.":`正在编辑浅色模式配色,修改会自动保存。`,"Editing dark mode colors. Changes are saved automatically.":`正在编辑深色模式配色,修改会自动保存。`,Advanced:`高级`,"PDF appearance":`PDF 外观`,"Choose how paper pages look in dark mode.":`选择深色模式下论文页面的显示方式。`,"Follow mode":`跟随模式`,"Always light":`始终浅色`,"Reset appearance":`重置外观`,Appearance:`外观`,Light:`浅色`,Dark:`深色`,System:`跟随系统`,Language:`语言`,"Browser default ({language})":`浏览器默认({language})`,Notifications:`通知`,"Show desktop notifications while Papilot is in the background.":`Papilot 在后台时,显示桌面通知。`,"Notify me about":`通知场景`,Off:`关闭`,"Input needed":`需要回复`,"Notify me when an agent asks me a question.":`智能体向我提问时通知我。`,"Approval requests":`等待批准`,"Notify me when an agent needs my approval to continue.":`智能体需要我的批准才能继续时通知我。`,"Review ready":`审阅就绪`,"Notify me when changes are ready for review.":`修改已准备好,可以开始审阅时通知我。`,"Task finished":`任务完成`,"Notify me when an agent finishes without changes to review.":`智能体已完成,且没有待审阅的修改时通知我。`,"Task errors":`任务出错`,"Notify me when a task fails or stops unexpectedly.":`任务失败或意外停止时通知我。`,"This browser could not enable notifications.":`此浏览器无法开启通知。`,"Check references online":`联网核对参考文献`,"Expand indirect changes":`默认展开间接影响`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`展开目录、引用编号等其他位置的连带变化。默认关闭;宏定义等在源码位置没有可见变化的修改,仍会显示其影响。`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`改动新增或修改参考文献条目时,用它的标题、作者、年份和 DOI 在 Crossref、DBLP 和 arXiv 中核对。论文的其他内容不会发出去。`,"Send a test notification":`发送测试通知`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`已发送。如果没有看到通知,请在系统设置中允许此浏览器发送通知。`,"This browser could not show the notification.":`此浏览器无法显示这条通知。`,Polish:`润色`,Proofread:`校对`,Shorten:`精简`,"Check math":`检查数学`,Consistency:`统一表述`,"Fix LaTeX warnings":`修复 LaTeX 警告`,"Address reviewers":`回应审稿意见`,"Improve clarity and flow, keeping the meaning":`保留原意,让表达更清晰、行文更流畅`,"Fix typos, grammar and punctuation without rewording":`修正错别字、语法和标点,不改写原文`,"Cut length without losing content":`保留内容,精简篇幅`,"Find errors in notation, equations and proofs":`检查符号、公式和证明中的错误`,"Unify terms, notation, spelling and references":`统一术语、符号、拼写和引用`,"Resolve undefined references, overfull boxes and other build warnings":`修复未定义的引用、内容溢出等编译警告`,"Revise for reviewer comments and draft a point-by-point reply":`根据审稿意见修改论文,并起草逐条回复`,Skills:`技能`,"This paper":`本论文`,Yours:`你的`,"Skill: {name}":`技能:{name}`,"Remove the {name} skill":`移除技能 {name}`,"Pause this task before deleting it.":`删除前请先暂停此任务。`,"Wait for the PDF build to finish before deleting this task.":`请等 PDF 编译完成后再删除此任务。`,"Check task status before deleting this task.":`删除前请先检查任务状态。`,"Delete task?":`删除任务?`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`这会从 Papilot 中永久删除此任务,包括它的对话、工作树和 PDF 审阅文件。未接受的修改和已保存的评论将被丢弃,审阅决定也无法再撤销。`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`稿件中已接受的修改会保留,其他任务不受影响。`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`删除已经开始。重试以确认清理并移除任务。`,"Deleting…":`正在删除…`,"Delete task":`删除任务`,"Weekly limit":`每周额度`,"Daily limit":`每日额度`,"{n}-day limit":`{n} 天额度`,"{n}-hour limit":`{n} 小时额度`,"{n}-minute limit":`{n} 分钟额度`,"Usage limit":`用量额度`,"resets now":`即将重置`,"resets in {hours} h {minutes} min":`{hours} 小时 {minutes} 分钟后重置`,"resets in {minutes} min":`{minutes} 分钟后重置`,"resets {time}":`{time} 重置`,"{name} used":`{name}已用`,"{used}% used":`已用 {used}%`,"Limit reached":`已达上限`,"{agent} usage":`{agent} 用量`,"{agent} usage details":`{agent} 用量详情`,"Unlimited credits":`无限额度`,"{n} credits":`{n} 点额度`,"Credits available":`有可用额度`,"Sign in to continue.":`请先登录。`,"{name}, {time}":`{name},{time}`,"{name} sent review feedback, {time}":`{name} 发送了审阅反馈,{time}`,"from {name}":`来自 {name}`,Sharing:`共享`,"Sign out":`退出登录`,"No papers yet":`还没有论文`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`还没有论文共享给你。{name} 共享后,论文会立即显示在这里。`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`受邀成员在公开地址上用通行密钥登录。在你共享给他们的论文里,他们能做你能做的一切,包括批准 agent 在此主机上运行的命令,以及用此主机的 Git 凭据推送。`,"Sharing is not sandboxed":`共享没有沙箱隔离`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`受邀成员可访问 Papilot 有权限读取的所有文件,包括凭据和未共享论文。`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`请将 Papilot 及其 agent 运行在正确隔离的 Docker 等容器中以限制访问范围;挂载文件仍可访问。`,"Share your papers and manage the people you work with.":`共享论文,管理与你一起协作的成员。`,"Setup required":`待设置`,"Bring your collaborators in":`邀请伙伴,一起完善论文`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`配置公开的 HTTPS 地址,即可邀请伙伴协作。他们可以使用通行密钥安全登录。`,"Set up sharing":`设置共享`,"Choose the papers to share, then send a personal invite link.":`选择要共享的论文,然后发送专属邀请链接。`,Name:`姓名`,Members:`成员列表`,"Access to all papers":`可访问所有论文`,"What can invited people do?":`受邀成员拥有哪些权限?`,"Invite someone":`邀请成员`,"Their name, as others will see it":`对方的名字,其他人会看到`,"Papers they can open":`可以打开的论文`,"Creating…":`正在创建…`,"Create invite link":`创建邀请链接`,"Loading people…":`正在加载成员…`,"{name} (you)":`{name}(你)`,Owner:`所有者`,"Invited, not joined yet":`已邀请,尚未加入`,"Last active {time}":`最近活动:{time}`,Joined:`已加入`,"Papers {name} can open":`{name} 可以打开的论文`,"Invite link for {name}":`{name} 的邀请链接`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`在要登录的设备上打开。链接只能使用一次,15 分钟内有效。`,"Send it to {name} yourself. It works once, within 7 days.":`请自行发给 {name}。链接只能使用一次,7 天内有效。`,"Passkey · {label}":`通行密钥 · {label}`,"Signed in · {label}":`已登录 · {label}`,"used {time}":`{time}使用过`,"added {time}":`{time}添加`,"Remove {device}":`移除 {device}`,Remove:`移除`,"Sign in from anywhere":`从任何地方登录`,"Invite link for a new device":`新设备的邀请链接`,"New invite link":`新的邀请链接`,"Sign out everywhere":`在所有设备上退出`,"Remove {name}":`移除 {name}`,"Remove…":`移除…`,"Signing in was cancelled. Try again when you are ready.":`登录已取消。准备好后再试一次。`,"Sign in to Papilot":`登录 Papilot`,"Use the passkey you created from your invite link.":`使用你通过邀请链接创建的通行密钥。`,"Waiting for your passkey…":`正在等待通行密钥…`,"Sign in with a passkey":`用通行密钥登录`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`此浏览器不支持通行密钥。请用最新版的 Safari、Chrome、Edge 或 Firefox 打开此页。`,"No passkey on this device? Ask the person who invited you for a new invite link.":`这台设备上没有通行密钥?请邀请你的人发一个新的邀请链接。`,"This invite link is incomplete. Copy the whole link and open it again.":`邀请链接不完整。请复制完整链接后重新打开。`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`创建通行密钥已取消。链接仍然有效,准备好后再试一次。`,"Add a passkey":`添加通行密钥`,"Join Papilot":`加入 Papilot`,"Create a passkey to sign in to your Papilot from anywhere.":`创建通行密钥,以便从任何地方登录你的 Papilot。`,"Create a passkey on this device to sign in as {name}.":`在这台设备上创建通行密钥,以 {name} 的身份登录。`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} 邀请你参与 {papers}。你将显示为 {name}。`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} 邀请你加入 Papilot。你将显示为 {name}。`,"Create a passkey":`创建通行密钥`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`通行密钥用面容 ID、触控 ID、Windows Hello 或手机为你登录,Papilot 不会接触任何密码。`,"Resize manuscript panel":`调整稿件右栏宽度`,"Collapse manuscript panel":`收起稿件右栏`,"Expand manuscript panel":`展开稿件右栏`,"Archived tasks":`已归档任务`,"Show current tasks":`显示未归档任务`,"Show archived tasks":`显示已归档任务`,"Search tasks":`搜索任务`,"Search tasks…":`搜索任务…`,"Search task titles and instructions":`搜索任务标题和初始指令`,"Clear task search":`清除任务搜索`,"Search archived tasks…":`搜索已归档任务…`,"Restore task":`恢复任务`,"Archive task":`归档任务`,Archive:`归档`,"No matching tasks":`没有匹配的任务`,"No archived tasks":`暂无归档任务`,Undo:`撤销`,"Keyboard shortcuts":`键盘快捷键`,"Your review keyboard":`审阅快捷键一览`,"Click a highlighted key to customize it.":`点击高亮按键,即可修改快捷键。`,"Review shortcut keyboard":`审阅快捷键键盘示意图`,"Keyboard key {key}: {actions}":`键盘按键 {key}:{actions}`,"Hover over a highlighted key to see what it does.":`将鼠标移到高亮按键上,查看它的用途。`,"Choose a shortcut to edit:":`选择要修改的快捷键:`,"Customize shortcuts":`自定义快捷键`,"Accept change":`接受改动`,"Accept the current proposal. In Changes, stage or unstage it.":`接受当前建议;在“改动”视图中,暂存或取消暂存。`,"Reject change":`拒绝改动`,"Reject the current proposal. In Changes, revert it.":`拒绝当前建议;在“改动”视图中,还原这处改动。`,"Request a revision":`要求修改`,"Write feedback on the current proposed change.":`为当前建议填写修改意见。`,"Next change":`下一处改动`,"Move to the next visible change.":`跳到下一处可见的改动。`,"Previous change":`上一处改动`,"Move to the previous visible change.":`跳到上一处可见的改动。`,"Next undecided change":`下一处待审阅改动`,"Jump to the next change that still needs a decision.":`跳到下一处尚未处理的改动。`,"Show LaTeX source":`显示 LaTeX 源码`,"Show or hide the source for the current change.":`展开或收起当前改动的源码。`,"Undo review decision":`撤销审阅操作`,"Undo the last review decision or revert.":`撤销上一次审阅决定或还原操作。`,"Open these shortcut settings.":`打开此快捷键设置页。`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`快捷键在 PDF 审阅区域聚焦时生效,输入或选中文字时暂停。设置保存在当前浏览器中。`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`点击按键后按下新的快捷键。Esc 取消,退格键清除。`,"Change shortcut: {action}":`修改快捷键:{action}`,"This key is reserved for the browser or text editing. Choose another shortcut.":`这个按键用于浏览器或文本编辑,请换一个快捷键。`,"Already used for {action}. Choose another shortcut.":`已用于“{action}”,请换一个快捷键。`,"Press a key…":`请按下按键…`,"Not assigned":`未设置`,"Restore default shortcuts":`恢复默认快捷键`,"Standard shortcuts":`常用快捷键`,"These keep the usual browser and text-editing behavior.":`这些按键保留浏览器和文本编辑的常规行为。`,"Copy selected PDF text":`复制选中的 PDF 文字`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`根据焦点位置,撤销输入、恢复删除的批注或撤销上一次审阅操作。`,"Send the review comment being written.":`发送正在填写的审阅意见。`,"Close the current editor or cancel region selection.":`关闭当前编辑器或取消画框。`,"{differences} (record: {url}).":`{differences}(记录:{url})。`,"{field} is {bib} but {source} has {record}":`{field}写的是 {bib},{source} 里是 {record}`,"{field}: {bib} here, {record} in {source}":`{field}:这里是 {bib},{source} 里是 {record}`,"{key} ({place}): {problems}":`{key}({place}):{problems}`,"{n} checked by you":`{n} 个已人工确认`,"{n} could not be checked":`{n} 个未能核对`,"{n} differ":`{n} 个有出入`,"{n} entries":`{n} 个条目`,"{n} entry":`{n} 个条目`,"{n} not found":`{n} 个未找到`,"{n} verified":`{n} 个已核实`,"{cite} ({places}) has no entry with this key.":`{cite}({places})没有对应的条目。`,"{sources} could not be reached.":`无法访问 {sources}。`,"All entries":`全部条目`,"another entry has the same key.":`另一个条目用了同一个 key。`,"Another entry has the same key.":`另一个条目用了同一个 key。`,Authors:`作者`,"BibTeX cannot read it ({error}).":`BibTeX 读不了这个条目({error})。`,"BibTeX cannot read it: {error}":`BibTeX 读不了:{error}`,"Check {n} more online":`再联网核对 {n} 个`,"Check online":`联网核对`,"Checked by you":`已人工确认`,"Checking {n}…":`核对中,还剩 {n} 个…`,"Cited {n} time: {places}":`正文引用 {n} 处:{places}`,"Cited {n} times: {places}":`正文引用 {n} 处:{places}`,"Closest record":`最接近的记录`,"Could not check":`未能核对`,Differs:`有出入`,"I checked it myself":`我已人工确认`,"Include {key} in the task":`把 {key} 放进任务`,"it is not cited.":`正文没有引用它。`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`在 Crossref、DBLP 和 arXiv 中查找这些条目。只发送标题、作者、年份和编号。`,"Missing: {files}":`缺少文件:{files}`,"No entry has this key.":`没有条目用这个 key。`,"No problems found.":`没有发现问题。`,"No problems in the files. Check online to compare the entries with their records.":`文件里没有发现问题。联网核对可以把条目和正式记录逐项对照。`,"No record in Crossref, DBLP or arXiv matches it.":`Crossref、DBLP 和 arXiv 中都没有对应记录。`,"Not checked":`未核对`,"Not cited in the paper.":`正文没有引用。`,"Nothing to check":`无从核对`,nothing:`没有`,"Online checks are off in Settings, so only problems found in the files are shown.":`设置里关闭了联网核对,这里只显示从文件中查出的问题。`,"Online checks are off in Settings.":`设置里关闭了联网核对。`,"possibly the same work as {keys} (same title).":`可能和 {keys} 是同一篇文献(标题相同)。`,Problems:`问题`,"Reading the bibliography…":`正在读取参考文献…`,Record:`记录`,"Same DOI as {keys}.":`和 {keys} 的 DOI 相同。`,"Same title as {keys}.":`和 {keys} 的标题相同。`,small:`小差别`,"the same work as {keys} (same DOI).":`和 {keys} 是同一篇文献(DOI 相同)。`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`论文里没有用 {bibliography} 或 {addbibresource} 指定 .bib 文件。`,Title:`标题`,Verified:`已核实`,Year:`年份`,"You checked this entry yourself.":`你已人工确认过这个条目。`,"Paper tools":`论文工具`,Tools:`工具`,"Reference check":`引用检查`,"Citations, entries and their records":`引用、条目及其正式记录`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`查清楚参考文献里这些问题是怎么回事,然后告诉我。不要修改任何文件。逐条确认:这篇文献是否存在,它的正式记录是什么(作者、标题、年份、出处、DOI);在 .bib 和 .tex 文件的 Git 历史里找出这个条目或引用是怎么来的;再说说你建议怎么处理。注明哪些结论在来源中核实过,哪些只是推测。`,"no record in Crossref, DBLP or arXiv matches it.":`Crossref、DBLP 和 arXiv 中都没有对应记录。`,"Ask an agent to look into {n} problem":`让 agent 调查 {n} 个问题`,"Ask an agent to look into {n} problems":`让 agent 调查 {n} 个问题`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`会打开一个新任务,发送前可以修改。agent 只汇报查到的情况,不改动文件。`,"Undefined reference":`未定义的引用`,"Undefined citation":`未定义的文献`,"Label defined more than once":`标签重复定义`,"Missing file":`缺少文件`,"Missing character":`缺少字符`,"Line too wide by {amount}pt":`行宽超出 {amount}pt`,Errors:`错误`,Warnings:`警告`,"{n} compilation error":`{n} 个编译错误`,"{n} compilation errors":`{n} 个编译错误`,"{n} compilation warning":`{n} 个编译警告`,"{n} compilation warnings":`{n} 个编译警告`,"Compilation log":`编译日志`,"p. {page}":`第 {page} 页`,"Compilation problems":`编译问题`,"Recompiling; this list will update.":`正在重新编译,列表稍后更新。`,"Loading…":`正在加载…`,"The first build is still running.":`首次编译仍在进行。`,"No problems in the last build.":`上次编译没有发现问题。`,"Typesetting and other remarks":`排版及其他提示`,"Raw log":`原始日志`,"Fix with an agent…":`交给代理修复…`,"The latest changes did not compile. This is the last PDF that did.":`最新的修改未能编译,当前显示的是上一次编译成功的 PDF。`,"Show problems":`查看问题`,"Reported {n} times":`出现 {n} 次`},F={},I={", ":`、`,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`可能缺少套件、字型或原始檔。請查看下方詳細資訊、還原缺少的檔案或尋求協助。`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`通行密鑰可讓你透過 Face ID、Touch ID、Windows Hello 或手機登入。Papilot 絕不會看到密碼。`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`具有相同 ID 的技能優先順序為:本論文、全域,最後為內建。`,"A skill with this ID already exists in this location.":`此位置已存在具有相同 ID 的技能。`,"A task needs attention":`有任務需要處理`,"A workspace for your papers.":`專屬於您的論文工作空間。`,"AI is resolving conflicts…":`AI 正在解決衝突…`,"AI needs your input":`AI 需要您的輸入`,"AI review":`AI 審閱`,"AI suggestion":`AI 建議`,"AI suggestion {n}":`AI 建議 {n}`,"AI suggestions":`AI 建議`,"Abort merge":`中止合併`,"Aborting…":`正在中止…`,"About Papilot":`關於 Papilot`,Accent:`強調色`,"Accept change":`接受變更`,"Accept the current proposal. In Changes, stage or unstage it.":`接受目前的建議。在「變更」中,可將其暫存或取消暫存。`,Accepted:`已接受`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`論文原稿中已接受的變更會保留。其他任務不受影響。`,"Access to all papers":`可存取所有論文`,Account:`帳號`,"Add a paper":`新增論文`,"Add a passkey":`新增通行密鑰`,"Add all to task":`全部加入任務`,"Add and fix later":`先新增,稍後再修正`,"Add files or skills":`新增檔案或技能`,"Add files…":`新增檔案…`,"Add instructions to the selected color groups above.":`為上方選取的顏色群組新增指示。`,"Add note":`新增註解`,"Add overall instructions (optional)":`新增整體指示(選填)`,"Add paper":`新增論文`,"Add paper…":`新增論文…`,"Add skill":`新增技能`,"Add to .gitignore":`加入 .gitignore`,"Add to group":`加入群組`,"Add to {group}":`加入 {group}`,"Add your first paper":`新增您的第一篇論文`,Added:`已新增`,"Added to task: {n}":`已加入任務:{n}`,"Added {n} pattern to .gitignore.":`已將 {n} 個樣式加入 .gitignore。`,"Added {n} patterns to .gitignore.":`已將 {n} 個樣式加入 .gitignore。`,"Address reviewers":`回覆審閱者`,"Address {n} PDF notes":`處理 {n} 則 PDF 註解`,Advanced:`進階`,"Agent configuration":`智慧代理設定`,"Agent settings":`智慧代理設定`,Agents:`智慧代理`,All:`全部`,"All entries":`所有項目`,"All skills":`所有技能`,"Allow this action":`允許此操作`,"Already set up?":`已經設定好了嗎?`,"Already used for {action}. Choose another shortcut.":`已用於「{action}」。請選擇其他快捷鍵。`,"Always light":`永遠使用淺色模式`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`在新終端機中設定的環境變數不會傳遞給已在執行中的伺服器。請攜帶憑證重新啟動 Papilot;僅重新連線無法變更其環境。`,"Annotation group color":`註解群組顏色`,"Annotation groups":`註解群組`,"Another entry has the same key.":`另一個項目使用了相同的鍵值。`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity 會透過其檔案工具開啟圖片。若要直接輸入圖片,請選擇 Codex 或 Claude。`,Appearance:`外觀`,Application:`應用程式`,"Applied to manuscript":`已套用至論文原稿`,Apply:`套用`,"Apply file changes":`套用檔案變更`,"Apply to working directory":`套用至工作目錄`,"Apply to workspace":`套用至工作區`,"Apply without committing":`套用但不提交`,"Applying…":`套用中…`,"Approval requests":`核准請求`,"Approve this action":`核准此操作`,Archive:`封存`,"Archive task":`封存任務`,"Archived task":`已封存的任務`,"Archived tasks":`已封存的任務`,"Ask a question or request changes…":`提問或要求變更…`,"Ask an agent to look into {n} problem":`請智慧代理檢查 {n} 個問題`,"Ask an agent to look into {n} problems":`請智慧代理檢查 {n} 個問題`,"Ask for another review of this PDF version…":`要求再次審閱此 PDF 版本…`,"Attach up to 10 files per message.":`每則訊息最多可附加 10 個檔案。`,Attachments:`附件`,"Attachments must total 100 MB or less.":`附件總大小不得超過 100 MB。`,Authors:`作者`,"Available levels depend on the selected model.":`可用等級取決於所選的模型。`,"Available models":`可用模型`,"Awaiting changes":`等待變更中`,Background:`背景`,"Bare repository":`裸儲存庫`,"BibTeX cannot read it ({error}).":`BibTeX 無法讀取({error})。`,"BibTeX cannot read it: {error}":`BibTeX 無法讀取:{error}`,Book:`書籍`,Branch:`分支`,"Bring your collaborators in":`邀請合作者加入`,"Browser default ({language})":`瀏覽器預設({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`瀏覽器僅在 HTTPS 或 localhost 下顯示通知。請在安全網址開啟 Papilot 以使用通知功能。`,"Build failed · sent to {agent}":`建置失敗 · 已傳送至 {agent}`,"Built-in":`內建`,Cancel:`取消`,"Change shortcut: {action}":`變更快捷鍵:{action}`,"Change {n}":`變更 {n}`,"Changed files in {branch}":`{branch} 中已變更的檔案`,Changelog:`更新日誌`,Changes:`變更`,"Changes apply to the next turn.":`變更將套用至下一輪對話。`,"Changes in {path}":`{path} 中的變更`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`「變更」僅顯示已變更的章節,開啟速度最快。「PDF」則會在整篇論文的對應位置顯示每項變更,對於篇幅較長的論文需要較多時間。審閱中的切換開關僅會變更該次審閱。`,"Change…":`變更…`,Chart:`圖表`,Chat:`對話`,"Chat (reply needed)":`對話(需要回覆)`,"Chat only":`僅限對話`,"Check again":`再次檢查`,"Check for updates":`檢查更新`,"Check for updates to see the latest version.":`檢查更新以查看最新版本。`,"Check math":`檢查數學式`,"Check online":`線上檢查`,"Check references online":`線上檢查參考文獻`,"Check status":`檢查狀態`,"Check task status":`檢查任務狀態`,"Check task status before deleting this task.":`刪除此任務前請先檢查任務狀態。`,"Check task status before sending":`傳送前請先檢查任務狀態`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`請檢查上方的連線錯誤,以及此主機上智慧代理的登入、供應商與網路設定。變更憑證或執行檔路徑後,請重新啟動 Papilot。`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`請檢查主檔案與編譯引擎,或請助理修正編譯問題。您也可以編輯已儲存的檔案並重試。`,"Check the task status before sending notes.":`傳送註解前請先檢查任務狀態。`,"Check your connection and try again.":`請檢查您的網路連線並重試。`,"Check {n} more online":`線上檢查另外 {n} 筆`,"Checked by you":`已由您檢查`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`正在檢查論文原稿變更。僅在需要時才會產生 PDF 比對結果。`,"Checking for updates…":`正在檢查更新…`,"Checking {n}…":`正在檢查 {n}…`,"Checking…":`正在檢查…`,Checklist:`檢查清單`,"Choose ZIP":`選擇 ZIP`,"Choose a folder or ZIP, or drag it here.":`選擇資料夾或 ZIP,或將其拖曳至此處。`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`選擇資料夾以上傳副本。若要使用原始檔案,請在桌面版應用程式中開啟。`,"Choose a shortcut to edit:":`選擇要編輯的快捷鍵:`,"Choose an icon":`選擇圖示`,"Choose attachments":`選擇附件`,"Choose different files":`選擇其他檔案`,"Choose folder":`選擇資料夾`,"Choose how paper pages look in dark mode.":`選擇論文頁面在深色模式下的顯示方式。`,"Choose the papers to share, then send a personal invite link.":`選擇要分享的論文,然後傳送個人邀請連結。`,"Choose up to 5,000 files, totaling less than 64 MB.":`最多可選擇 5,000 個檔案,總大小需小於 64 MB。`,"Choose {color} color":`選擇 {color} 顏色`,"Citations, entries and their records":`引用、書目項目及其紀錄`,"Cited {n} time: {places}":`引用 {n} 次:{places}`,"Cited {n} times: {places}":`引用 {n} 次:{places}`,"Claude Code or API credentials were not detected.":`未偵測到 Claude Code 或 API 憑證。`,"Clear selection":`清除選取`,"Clear task search":`清除任務搜尋`,"Click a highlighted key to customize it.":`點擊醒目提示的按鍵以進行自訂。`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`點擊按鍵以進行變更,然後按下新的快捷鍵。按 Escape 取消;按 Backspace 清除。`,Close:`關閉`,"Close agent details":`關閉智慧代理詳細資訊`,"Close note":`關閉註解`,"Close notes":`關閉註解`,"Close review notes":`關閉審閱註解`,"Close search":`關閉搜尋`,"Close suggestion":`關閉建議`,"Close task list":`關閉任務清單`,"Close the current editor or cancel region selection.":`關閉目前的編輯器或取消區域選取。`,"Close window":`關閉視窗`,"Closest record":`最相近的紀錄`,Code:`程式碼`,"Collapse manuscript panel":`收合論文原稿面板`,"Collapse {group} notes":`收合 {group} 註解`,Color:`顏色`,Comments:`評論`,Commit:`提交`,"Commit 1 file":`提交 1 個檔案`,"Commit all {n} files":`提交全部 {n} 個檔案`,"Commit and push":`提交並推送`,"Commit graph":`提交關係圖`,"Commit merge":`提交合併`,"Commit message":`提交訊息`,"Commit staged changes in 1 file":`提交 1 個檔案中已暫存的變更`,"Commit staged changes in {n} files":`提交 {n} 個檔案中已暫存的變更`,"Commit to manuscript":`提交至論文原稿`,"Commit to task branch":`提交至任務分支`,"Commit to {branch}":`提交至 {branch}`,"Commit together":`一併提交`,"Commit what is staged":`提交已暫存的變更`,"Commit {chosen} of {n} files":`提交 {n} 個檔案中的 {chosen} 個`,Committed:`已提交`,"Committed and pushed":`已提交並推送`,"Committed {hash} and pushed.":`已提交 {hash} 並推送。`,"Committed {hash} to {branch}":`已將 {hash} 提交至 {branch}`,"Committed {hash}.":`已提交 {hash}。`,"Committing and pushing…":`正在提交並推送…`,"Committing…":`提交中…`,"Commit…":`提交…`,"Compared with {upstream}":`與 {upstream} 比較`,"Compilation details":`編譯詳情`,"Compilation failed. Click to retry.":`編譯失敗。點擊以重試。`,"Compilation log":`編譯紀錄`,"Compilation problems":`編譯問題`,"Compilation status unavailable.":`無法取得編譯狀態。`,"Compiling the PDF…":`正在編譯 PDF…`,Completed:`已完成`,"Component source":`元件原始碼`,"Confirm and apply":`確認並套用`,"Confirm and commit":`確認並提交`,"Confirm whether the task is still running before generating a PDF comparison.":`產生 PDF 比較前,請先確認任務是否仍在執行。`,Conflict:`衝突`,"Conflict resolution paused":`衝突解決已暫停`,"Conflicts resolved. Read the diffs, then commit the merge.":`衝突已解決。請檢視差異內容,然後提交合併。`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`連結公開的 HTTPS 位址以邀請他人協作您的論文。受邀者可使用通行金鑰安全登入。`,"Connect an assistant in Settings to help repair this paper.":`在「設定」中連結助理以協助修復此論文。`,"Connect and sign in to load the model list.":`連線並登入以載入模型清單。`,"Connect to view account, models, and usage.":`連線以檢視帳號、模型與使用量。`,Connected:`已連線`,"Connecting to your papers and tasks…":`正在連線至您的論文與任務…`,"Connecting to {agent}…":`正在連線至 {agent}…`,"Connecting…":`正在連線…`,"Connection details":`連線詳情`,"Connection lost. Showing the last update; your draft is kept.":`連線中斷。目前顯示最後更新內容,您的草稿已保留。`,Consistency:`一致性`,Contents:`目錄`,"Contents will appear when the PDF is ready.":`PDF 準備就緒後將顯示目錄。`,"Continue later":`稍後繼續`,Contribute:`參與貢獻`,"Contribute an integration":`貢獻整合項目`,Copied:`已複製`,"Copied path":`已複製路徑`,Copy:`複製`,"Copy and edit":`複製並編輯`,"Copy message":`複製訊息`,"Copy path: {path}":`複製路徑:{path}`,"Copy selected PDF text":`複製選取的 PDF 文字`,"Copy this built-in skill to customize it for all papers or this paper.":`複製此內建技能,以為所有論文或此論文進行自訂。`,"Could not check":`無法檢查`,"Could not check for updates":`無法檢查更新`,"Could not check for updates. Try again when connected.":`無法檢查更新。請在連線後再試一次。`,"Could not complete the environment checks. Check the connection and try again.":`無法完成環境檢查。請檢查連線後再試一次。`,"Could not detect a main file. Enter its path relative to the paper folder.":`無法偵測到主檔案。請輸入其相對於論文資料夾的路徑。`,"Could not generate the PDF comparison.":`無法產生 PDF 比較。`,"Could not load the license notices.":`無法載入授權聲明。`,"Could not prepare the paper":`無法準備論文`,"Could not read the LaTeX installation. Try again.":`無法讀取 LaTeX 安裝。請再試一次。`,"Could not read the selected file.":`無法讀取選取的檔案。`,"Could not read this worktree.":`無法讀取此工作樹。`,"Could not reconnect. Check the server connection and try again.":`無法重新連線。請檢查伺服器連線後再試一次。`,"Could not refresh the repository.":`無法重新整理儲存庫。`,"Could not start the update. Please retry.":`無法啟動更新。請重試。`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`請在 Cursor 控制台中建立 Cursor API 金鑰,或在此主機上設定 Cursor SDK 登入。`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`請透過 Zhipu 或 Z.ai 建立 GLM Coding Plan 或 API 金鑰。`,"Create a passkey":`建立通行金鑰`,"Create a passkey on this device to sign in as {name}.":`在此裝置上建立通行金鑰,以 {name} 的身分登入。`,"Create a passkey to sign in to your Papilot from anywhere.":`建立通行金鑰,以便從任何地方登入您的 Papilot。`,"Create invite link":`建立邀請連結`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`已取消建立通行金鑰。連結仍然有效,請在準備好時再試一次。`,"Creating…":`正在建立…`,"Credits available":`可用額度`,Current:`目前`,"Current version":`目前版本`,"Cursor SDK credentials were not detected.":`未偵測到 Cursor SDK 憑證。`,"Customize shortcuts":`自訂快捷鍵`,Customized:`已自訂`,"Cut length without losing content":`精簡篇幅並保留完整內容`,"Daily limit":`每日上限`,Dark:`深色`,Decline:`拒絕`,Declined:`已拒絕`,Default:`預設`,"Default model":`預設模型`,"Default reasoning effort":`預設推理強度`,"Delete file":`刪除檔案`,"Delete note":`刪除註解`,"Delete note {n}":`刪除註解 {n}`,"Delete review note {n}":`刪除審閱註解 {n}`,"Delete skill":`刪除技能`,"Delete task":`刪除任務`,"Delete task?":`刪除任務?`,"Delete task…":`刪除任務…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`要刪除此技能嗎?僅會移除其 Markdown 檔案,相關支援檔案將保留在原處。`,"Delete {name}?":`刪除 {name}?`,Deleted:`已刪除`,"Deleting task":`正在刪除任務`,"Deleting…":`正在刪除…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`刪除作業已開始。請重試以確認清理並移除該任務。`,"Deletion is in progress":`正在進行刪除`,"Describe the revision":`描述修訂內容`,"Describe what the agent should do, what to preserve, and how to present the result.":`描述智慧代理應執行的操作、應保留的內容,以及如何呈現結果。`,Description:`說明`,"Details (optional)":`詳細資訊(選填)`,"Detect again":`重新偵測`,"Detecting LaTeX installation…":`正在偵測 LaTeX 安裝…`,"Dev (GitHub main)":`開發版 (GitHub main)`,Differs:`有差異`,"Discard all changes":`捨棄所有變更`,"Discard changes":`捨棄變更`,"Discard changes in {name}?":`捨棄 {name} 中的變更?`,"Discard changes in {n} file?":`捨棄 {n} 個檔案中的變更?`,"Discard changes in {n} files?":`捨棄 {n} 個檔案中的變更?`,"Discard changes in {path}":`捨棄 {path} 中的變更`,"Discard unsaved skill changes?":`要捨棄未儲存的技能變更嗎?`,"Discarded changes in {n} file.":`已捨棄 {n} 個檔案中的變更。`,"Discarded changes in {n} files.":`已捨棄 {n} 個檔案中的變更。`,"Dismiss error":`關閉錯誤訊息`,Distribution:`發行版`,"Download desktop updates":`下載桌面版更新`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`從 GitHub Releases 下載適用於您系統的最新桌面版應用程式。您的論文與設定將維持不變。`,"Downloading and building the selected GitHub commit…":`正在下載並建置所選的 GitHub 提交…`,"Downloading and checking the new version…":`正在下載並檢查新版本…`,"Drag to resize · Double-click to reset":`拖曳以調整大小 · 連按兩下以重設`,"Drop files to attach":`拖放檔案以附加`,"Drop one folder or LaTeX ZIP file.":`請拖放一個資料夾或 LaTeX ZIP 檔案。`,"Early updates from GitHub main. May be less stable.":`來自 GitHub main 的搶先更新,可能較不穩定。`,Edit:`編輯`,"Edit note":`編輯註解`,"Edit note {n}":`編輯註解 {n}`,"Edit note {n}: {comment}":`編輯註解 {n}:{comment}`,"Edit paper":`編輯論文`,"Edit {name}":`編輯 {name}`,"Edited {file}":`已編輯 {file}`,"Edited {n} files":`已編輯 {n} 個檔案`,"Editing dark mode colors. Changes are saved automatically.":`正在編輯深色模式色彩。變更會自動儲存。`,"Editing light mode colors. Changes are saved automatically.":`正在編輯淺色模式色彩。變更會自動儲存。`,"Enable shortcut: {action}":`啟用捷徑:{action}`,"Enter a folder path":`輸入資料夾路徑`,"Environment variable":`環境變數`,Errors:`錯誤`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`展開其他位置的變更,例如目錄與參考文獻編號。預設為關閉;在原始碼處無可見變更的編輯(例如巨集定義)仍會顯示其影響。`,"Expand indirect changes":`展開間接變更`,"Expand manuscript panel":`展開論文原稿面板`,"Expand {group} notes":`展開 {group} 註解`,Failed:`失敗`,Fast:`快速`,"Fast mode":`快速模式`,"Faster responses; may use more of your limit.":`回應速度更快,但可能會消耗較多額度。`,"Feedback & issues":`意見反應與問題回報`,"Fetch from the remote":`從遠端擷取`,"Files must be 25 MB or smaller.":`檔案大小不得超過 25 MB。`,"Files on disk, Git history and task worktrees will stay in place.":`磁碟上的檔案、Git 歷史紀錄與任務工作樹將保留在原處。`,"Files received":`已接收檔案`,"Find (⌘F)":`尋找 (⌘F)`,"Find errors in notation, equations and proofs":`找出符號、方程式與證明中的錯誤`,"Find in PDF":`在 PDF 中尋找`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`查明這些參考文獻問題的成因並回報。請勿編輯任何檔案。針對每個問題,請檢查該著作是否存在及其出版紀錄內容(作者、標題、年份、發表場所、DOI),在 .bib 與 .tex 檔案的 Git 歷史紀錄中找出該條目或引用的來源,並提出你的建議。請標明哪些發現已在來源中確認,哪些屬於推測。`,"Fit page":`符合頁面大小`,"Fit width":`符合頁面寬度`,"Fix LaTeX warnings":`修正 LaTeX 警告`,"Fix typos, grammar and punctuation without rewording":`修正錯字、文法與標點符號而不改寫文句`,"Fix with an agent…":`使用智慧代理修正…`,"Folder path":`資料夾路徑`,"Follow mode":`跟隨模式`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`若要改用 SDK,請在設定好 ANTHROPIC_API_KEY 或支援的雲端供應商後啟動 Papilot。變更環境設定後請重新啟動 Papilot。`,Foreground:`前景`,"Full PDF":`完整 PDF`,General:`一般`,"Generate PDF comparison":`產生 PDF 比對`,"Generate commit message":`產生提交訊息`,"Generate task title":`產生任務標題`,"Generating task title…":`正在產生任務標題…`,"Get started and make Papilot your own.":`開始使用,打造專屬的 Papilot。`,"Git status":`Git 狀態`,"Git status of the manuscript":`論文原稿的 Git 狀態`,"Git, {n} changed":`Git,{n} 項變更`,"GitHub repository":`GitHub 儲存庫`,"Give your skill a name":`為您的技能命名`,Global:`全域`,Globe:`地球`,Graphite:`石墨色`,Green:`綠色`,"Help fix compilation":`協助修復編譯問題`,"Help improve Papilot with code, docs, and ideas.":`透過程式碼、文件與構想協助改進 Papilot。`,"Hide task list":`隱藏任務清單`,"Highlighted in {group}":`於 {group} 中標示醒目提示`,"Hover over a highlighted key to see what it does.":`將游標停留在醒目提示的按鍵上,即可查看其功能。`,"I checked it myself":`我已自行確認`,Idea:`點子`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`若已安裝,請在啟動 Papilot 的環境中將 {variable} 設為其執行檔路徑,然後重新啟動 Papilot。`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`若即時狀態仍與檢查結果不符,請在設定智慧代理的相同使用者與環境下重新啟動 Papilot。`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`若任務修改了論文原稿,此處會顯示 PDF 比對結果;否則請在對話中查看回答。`,Ignore:`忽略`,"Ignore suggestion {n}":`忽略建議 {n}`,"Images must be 5 MB or smaller.":`圖片大小不得超過 5 MB。`,"Import a ZIP":`匯入 ZIP`,"Import a separate copy from Overleaf or a ZIP archive.":`從 Overleaf 或 ZIP 壓縮檔匯入獨立副本。`,"Import progress":`匯入進度`,"Improve clarity and flow, keeping the meaning":`在不改變原意的前提下,提升清晰度與流暢度`,"Include note {n} in this task":`將註解 {n} 納入此任務`,"Include suggestion {n} in this task":`將建議 {n} 納入此任務`,"Include {key} in the task":`將 {key} 納入任務`,"Individual notes":`個別註解`,"Input needed":`需要輸入`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`請在執行 Papilot 的電腦上安裝包含 latexmk 的 TeX Live 或 MacTeX,然後重試。`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`在任務閒置時自動安裝新版本並重新啟動。您的論文、任務與設定皆會保留。`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`請在執行 Papilot 的主機上安裝 {command},接著在下方完成登入或供應商設定。`,"Installation & setup":`安裝與設定`,"Installation check":`安裝檢查`,"Installation location":`安裝位置`,Instructions:`指示`,"Instructions for color groups":`顏色群組指示`,"Instructions for {agent}":`給 {agent} 的指示`,"Instructions for {group} notes":`{group} 註解的指示`,"Invite link for a new device":`新裝置的邀請連結`,"Invite link for {name}":`給 {name} 的邀請連結`,"Invite someone":`邀請他人`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`受邀者可存取 Papilot 可讀取的所有檔案,包括憑證與未共享的論文。`,"Invited, not joined yet":`已邀請,尚未加入`,"Join Papilot":`加入 Papilot`,Joined:`已加入`,"Jump to the next change that still needs a decision.":`跳至下一個仍需決定的變更。`,"Keep editing":`繼續編輯`,"Keep latest wording and apply":`保留最新措辭並套用`,"Keep latest wording and commit":`保留最新措辭並提交`,"Keep on manuscript":`保留於論文原稿`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`在重疊段落中保留最新措辭,並儲存其他已接受的變更。`,"Kept on manuscript":`已保留於論文原稿`,"Keyboard key {key}: {actions}":`鍵盤按鍵 {key}:{actions}`,"Keyboard shortcuts":`鍵盤快速鍵`,"LaTeX Git repository · Requires a commit and latexmk":`LaTeX Git 儲存庫 · 需要一次提交記錄與 latexmk`,"LaTeX engine":`LaTeX 引擎`,"LaTeX installation":`LaTeX 安裝項目`,"Label defined more than once":`重複定義的標籤`,Language:`語言`,"Language for the Papilot interface.":`Papilot 介面的顯示語言。`,"Last active {time}":`上次活動時間:{time}`,Later:`稍後`,"Latest messages":`最新訊息`,"Latest version":`最新版本`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Papilot 及其審閱引擎所使用的函式庫與字型。各元件均受其各自的授權條款保護。`,"Libraries, fonts, and the people behind them.":`函式庫、字型及其背後的開發者。`,"License text is not included in this package. See the component source for its terms.":`此套件未包含授權條款全文。請參閱該元件的原始碼以了解其條款。`,"Licenses & acknowledgments":`授權條款與致謝`,Light:`淺色`,"Limit reached":`已達上限`,"Line too wide by {amount}pt":`行寬超出 {amount}pt`,Link:`連結`,"Loading PDF review…":`正在載入 PDF 審閱…`,"Loading conversation…":`正在載入對話…`,"Loading license notices…":`正在載入授權聲明…`,"Loading people…":`正在載入成員…`,"Loading skills…":`正在載入技能…`,"Loading the diff…":`正在載入差異比對…`,"Loading…":`正在載入…`,Location:`位置`,Locked:`已鎖定`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`在 Crossref、DBLP 與 arXiv 中查詢條目。僅會傳送標題、作者、年份與識別碼。`,"Made by Cui Chen and the Papilot contributors.":`由 Cui Chen 與 Papilot 貢獻者共同製作。`,"Main TeX file":`主要 TeX 檔案`,Manuscript:`論文原稿`,"Manuscript panels":`論文原稿面板`,"Manuscript view":`論文原稿檢視`,"Mark a figure or region":`標記圖表或區域`,"Mark region":`標記區域`,"Marked on earlier changes.":`標記於先前的變更。`,"Marked region":`已標記區域`,Math:`數學`,"Maximize or restore window":`最大化或還原視窗`,Members:`成員`,Merge:`合併`,"Merge in progress":`合併進行中`,"Merged {upstream}.":`已合併 {upstream}。`,"Merging: no conflicts left":`合併中:已無衝突`,"Merging: {n} file has conflicts":`合併中:{n} 個檔案有衝突`,"Merging: {n} files have conflicts":`合併中:{n} 個檔案有衝突`,"Message ({key} to commit on “{branch}”)":`訊息(按 {key} 提交至「{branch}」)`,"Minimize window":`最小化視窗`,"Missing character":`缺少字元`,"Missing file":`缺少檔案`,"Missing worktree":`缺少工作樹`,"Missing: {files}":`缺少:{files}`,Mode:`模式`,"Model default":`模型預設值`,Models:`模型`,Modified:`已修改`,"More Git actions":`更多 Git 操作`,"More commit actions":`更多提交操作`,"Move to the next visible change.":`移至下一個可見變更。`,"Move to the previous visible change.":`移至上一個可見變更。`,"My notes":`我的註解`,Name:`名稱`,"Needs attention":`需要處理`,"Needs your reply":`需要您的回覆`,"New invite link":`新增邀請連結`,"New skill":`新增技能`,"New task":`新增任務`,"New version":`新版本`,"Next change":`下一個變更`,"Next match":`下一個相符項目`,"Next page":`下一頁`,"Next suggestion":`下一個建議`,"Next suggestion (→)":`下一個建議 (→)`,"Next undecided change":`下一個未決定的變更`,"No GLM API key was found.":`找不到 GLM API 金鑰。`,"No LaTeX installation was detected on this host.":`在此主機上未偵測到 LaTeX 安裝。`,"No archived tasks":`沒有已封存的任務`,"No commits yet":`尚無提交紀錄`,"No components match your search.":`沒有符合搜尋條件的元件。`,"No entry has this key.":`沒有具備此索引鍵的條目。`,"No files found in this folder.":`在此資料夾中找不到檔案。`,"No installation details were returned. Run the checks again to refresh.":`未傳回安裝詳細資訊。請重新執行檢查以重新整理。`,"No linked change":`無連結的變更`,"No linked task":`無連結的任務`,"No manuscript changes":`論文原稿無變更`,"No matches":`無相符項目`,"No matching settings":`沒有相符的設定`,"No matching skills":`沒有相符的技能`,"No matching tasks":`沒有相符的任務`,"No models match “{query}”":`沒有符合「{query}」的模型`,"No notes yet":`尚無註解`,"No other worktrees in this repository.":`此儲存庫中沒有其他工作樹。`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`目前還沒有與您分享的論文。當 {name} 分享論文時,將會顯示於此處。`,"No papers yet":`尚無論文`,"No passkey on this device? Ask the person who invited you for a new invite link.":`此裝置上沒有通行金鑰嗎?請向邀請您的人索取新的邀請連結。`,"No problems found.":`未發現問題。`,"No problems in the files. Check online to compare the entries with their records.":`檔案中沒有問題。請執行線上檢查以將條目與其紀錄進行比對。`,"No problems in the last build.":`上次建置沒有問題。`,"No record in Crossref, DBLP or arXiv matches it.":`在 Crossref、DBLP 或 arXiv 中找不到相符的紀錄。`,"No tasks yet":`尚無任務`,"No textual changes.":`無文字變更。`,"No uncommitted changes":`沒有未提交的變更`,"No upstream branch":`無上游分支`,"Not assigned":`未指派`,"Not checked":`未檢查`,"Not cited in the paper.":`未在論文中引用。`,"Not detected":`未偵測到`,"Not found":`找不到`,"Note deleted.":`已刪除註解。`,"Note for the agent":`給智慧代理的註解`,"Note on the PDF":`在 PDF 上新增註解`,"Note {n}":`註解 {n}`,"Note {n}: {comment}":`註解 {n}:{comment}`,"Notes in this task":`此任務中的註解`,"Notes stay here unless you add them to a task.":`除非加入任務,否則註解會保留在此處。`,"Nothing to check":`沒有需要檢查的項目`,Notifications:`通知`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`此網站的通知已被封鎖。請先在瀏覽器的網站設定中允許通知,再於此處開啟。`,"Notifications are on":`通知已開啟`,"Notify me about":`通知項目`,"Notify me when a task fails or stops unexpectedly.":`當任務失敗或意外停止時通知我。`,"Notify me when an agent asks me a question.":`當智慧代理向我提問時通知我。`,"Notify me when an agent finishes without changes to review.":`當智慧代理完成且沒有需要審閱的變更時通知我。`,"Notify me when an agent needs my approval to continue.":`當智慧代理需要我核准才能繼續時通知我。`,"Notify me when changes are ready for review.":`當變更可供審閱時通知我。`,Off:`關閉`,"Online checks are off in Settings, so only problems found in the files are shown.":`「設定」中的線上檢查已關閉,因此僅顯示檔案中發現的問題。`,"Online checks are off in Settings.":`「設定」中的線上檢查已關閉。`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`只有論文原稿變更才需要進行 PDF 比對。問題的回答會顯示在對話中。`,"Open PDF":`開啟 PDF`,"Open a branch to commit":`開啟分支以提交`,"Open a folder":`開啟資料夾`,"Open attachment {name}":`開啟附件 {name}`,"Open chat":`開啟對話`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`請在您要登入的裝置上開啟此連結。連結僅限使用一次,有效期限為 15 分鐘。`,"Open paper":`開啟論文`,"Open review":`開啟審閱`,"Open review in new tab":`在新分頁中開啟審閱`,"Open reviews on":`開啟審閱時顯示`,"Open task: {title}":`開啟任務:{title}`,"Open the full PDF":`開啟完整 PDF`,"Open these shortcut settings.":`開啟此快捷鍵設定。`,"Opening the PDF…":`正在開啟 PDF…`,"Opening your workspace":`正在開啟您的工作區`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`這會開啟一個可在傳送前編輯的新任務。智慧代理僅會回報檢查結果,不會修改任何內容。`,"Opens in a new tab":`在新分頁中開啟`,"Or drop a folder or ZIP here":`或將資料夾或 ZIP 拖放至此處`,"Or type your own answer":`或自行輸入回答`,Orange:`橘色`,Overridden:`已覆寫`,Owner:`擁有者`,"PDF annotations":`PDF 註解`,"PDF appearance":`PDF 外觀`,"PDF comparison":`PDF 比對`,"PDF compilation":`PDF 編譯`,"PDF compiled successfully.":`PDF 編譯成功。`,"PDF contents":`PDF 目錄`,"PDF controls":`PDF 控制項`,"PDF note library":`PDF 註解庫`,"PDF note {n}":`PDF 註解 {n}`,"PDF notes":`PDF 註解`,"PDF pages":`PDF 頁面`,"PDF preview":`PDF 預覽`,"PDF review":`PDF 審閱`,"PDF review only":`僅限 PDF 審閱`,"Page number":`頁碼`,"Page {n}":`第 {n} 頁`,"Page {pages}":`第 {pages} 頁`,"Page {pages} of {total}":`第 {pages} 頁,共 {total} 頁`,"Pages typeset":`已排版頁數`,Paper:`論文`,"Paper name":`論文名稱`,"Paper tools":`論文工具`,"Paper: {name}":`論文:{name}`,"Papers and tasks":`論文與任務`,"Papers they can open":`可開啟的論文`,"Papers {name} can open":`{name} 可開啟的論文`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot 在此電腦上找不到 npm。安裝 npm 前無法使用更新功能。`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot 無法與此智慧代理建立有效連線。下方顯示最近的連線錯誤。`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot 無法準備編譯所需的檔案。這是應用程式錯誤,而非 LaTeX 錯誤。`,"Papilot license":`Papilot 授權條款`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot 已連上此智慧代理,但無法確認此主機上有已登入的帳號。`,"Papilot sent the build error to {agent}, {time}":`Papilot 已於 {time} 將建置錯誤傳送給 {agent}`,"Papilot will tell you here when a task needs you.":`當任務需要您處理時,Papilot 會在此處通知您。`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`部分已審閱`,Passed:`通過`,"Passkey · {label}":`通行密鑰 · {label}`,Pause:`暫停`,"Pause task":`暫停任務`,"Pause this task before deleting it.":`刪除前請先暫停此任務。`,"Pause {agent}":`暫停 {agent}`,Paused:`已暫停`,Pen:`鋼筆`,"Pending review":`待審閱`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`受邀者可在公開網址使用通行密鑰登入,並在您分享的論文中執行所有您能進行的操作,包括核准智慧代理在此主機上執行的指令,以及使用此主機的 Git 憑證進行推送。`,Personal:`個人`,Polish:`潤飾`,"Position needs confirmation":`位置需確認`,"Prepare and compile":`準備並編譯`,"Preparing task results":`正在準備任務結果`,"Preparing task results…":`正在準備任務結果…`,"Preparing version history and compiling the PDF…":`正在準備版本歷史記錄並編譯 PDF…`,"Press a key…":`請按任意鍵…`,Preview:`預覽`,"Previous change":`上一處變更`,"Previous match":`上一筆符合項目`,"Previous page":`上一頁`,"Previous suggestion":`上一則建議`,"Previous suggestion (←)":`上一則建議 (←)`,Problems:`問題`,"Processing the bibliography…":`正在處理參考文獻…`,Proofread:`校對`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`請將 CURSOR_API_KEY 提供給啟動 Papilot 的程序或服務,然後重新啟動 Papilot。SDK 會在首次使用時自動安裝。`,"Publish branch":`發佈分支`,"Published releases, recommended for everyday use.":`已發佈的正式版,建議日常使用。`,Pull:`拉取`,"Pulled the latest commits.":`已拉取最新提交。`,Purple:`紫色`,Push:`推送`,"Pushed to the remote.":`已推送至遠端。`,"Pushed to {upstream}.":`已推送至 {upstream}。`,"Queue instructions for the next turn…":`將下一輪的指示加入佇列…`,Queued:`已排入佇列`,"Quote in chat":`在對話中引用`,"Quoted text":`引用文字`,"Raw log":`原始日誌`,"Read folder":`讀取資料夾`,"Read the paper and leave PDF comments without editing the manuscript":`閱讀論文並留下 PDF 註解,而不編輯論文原稿`,"Read, annotate, and revise your papers with AI, all in one place.":`在同一個地方透過 AI 閱讀、標註並修訂您的論文。`,"Reading Git status…":`正在讀取 Git 狀態…`,"Reading paper files…":`正在讀取論文檔案…`,"Reading the bibliography…":`正在讀取參考文獻…`,"Reading update status…":`正在讀取更新狀態…`,"Reading worktrees and history…":`正在讀取工作樹與歷史記錄…`,Ready:`就緒`,"Ready for review":`可供審閱`,"Ready to check for updates":`準備好檢查更新`,"Reasoning effort":`推理強度`,Recent:`最近使用`,"Recompile PDF":`重新編譯 PDF`,"Recompiling; this list will update.":`正在重新編譯,此清單將會更新。`,Reconnect:`重新連線`,Reconnecting:`正在重新連線`,Record:`記錄`,Red:`紅色`,"Reference check":`參考文獻檢查`,"Refresh changes":`重新整理變更`,"Refresh skills":`重新整理技能`,"Refresh worktrees and history":`重新整理工作樹與歷史記錄`,"Regenerate PDF comparison":`重新產生 PDF 比對結果`,"Region note":`區域註解`,"Reject change":`拒絕變更`,"Reject the current proposal. In Changes, revert it.":`拒絕目前的建議。在「變更」中則會還原該變更。`,Rejected:`已拒絕`,"Reload review":`重新載入審閱內容`,Remove:`移除`,"Remove attachment {name}":`移除附件 {name}`,"Remove from Papilot":`從 Papilot 移除`,"Remove from draft":`從草稿移除`,"Remove note {n} from task":`從任務移除註解 {n}`,"Remove paper":`移除論文`,"Remove paper?":`要移除論文嗎?`,"Remove suggestion {n} from task":`從任務移除建議 {n}`,"Remove the {name} skill":`移除「{name}」技能`,"Remove this paper and its tasks, conversations and notes from Papilot?":`要從 Papilot 移除此論文及其任務、對話與註解嗎?`,"Remove {device}":`移除 {device}`,"Remove {name}":`移除 {name}`,"Remove…":`移除…`,"Removing…":`正在移除…`,"Rename {name}":`重新命名 {name}`,Renamed:`已重新命名`,"Rename…":`重新命名…`,"Repair summary":`修復摘要`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`修復內容已儲存為未提交的變更。請在論文的檔案變更中審閱這些內容。`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`在對話中回覆以繼續。僅在論文原稿變更時才需要進行 PDF 比對。`,"Reply to {agent}":`回覆 {agent}`,"Report a bug or suggest an improvement.":`回報錯誤或提出改善建議。`,"Reported {n} times":`已回報 {n} 次`,"Repository path":`儲存庫路徑`,"Request a revision":`要求修訂`,"Request failed. Please try again.":`請求失敗,請再試一次。`,"Reset appearance":`重設外觀`,"Resize chat panel":`調整對話面板大小`,"Resize manuscript panel":`調整論文原稿面板大小`,"Resolve undefined references, overfull boxes and other build warnings":`解決未定義的引用、版面溢出及其他建置警告`,"Resolve with {agent}":`使用 {agent} 解決`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`正在重新啟動 Papilot。此頁面將自動重新連線;您的草稿已保留。`,"Restarting…":`正在重新啟動…`,"Restore default shortcuts":`還原預設快捷鍵`,"Restore task":`還原任務`,Retry:`重試`,"Retry build":`重試建置`,"Retry compilation":`重試編譯`,"Retry connection":`重試連線`,"Retry conversation":`重試對話`,"Retry deletion":`重試刪除`,"Retry deletion…":`正在重試刪除…`,"Retry linking changes":`重試連結變更`,"Retry title generation":`重試產生標題`,"Retry update":`重試更新`,"Retry uploading {name}":`重試上傳 {name}`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`可重複用於修訂的指示。開始任務時,可從 / 選單中選擇一項技能。`,Review:`審閱`,"Review PDF notes":`審閱 PDF 註解`,"Review and chat side by side":`並排審閱與對話`,"Review complete":`審閱完成`,"Review copy":`審閱副本`,"Review decisions":`審閱決定`,"Review feedback":`審閱意見回饋`,"Review navigation":`審閱導覽`,"Review note: {comment}":`審閱註解:{comment}`,"Review notes":`審閱註解`,"Review notes ({n})":`審閱註解 ({n})`,"Review preferences":`審閱偏好設定`,"Review ready":`審閱已就緒`,"Review ready · {n} change to decide":`審閱已就緒 · {n} 項變更待決定`,"Review ready · {n} changes to decide":`審閱已就緒 · {n} 項變更待決定`,"Review shortcut keyboard":`審閱快捷鍵盤`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`審閱快捷鍵會在聚焦於 PDF 審閱時生效,並在您輸入或選取文字時暫停。變更會儲存在此瀏覽器中。`,"Review the merged result":`審閱合併結果`,"Review, {n} to decide":`審閱,{n} 項待決定`,"Revise for reviewer comments and draft a point-by-point reply":`根據審稿人意見進行修訂並起草逐點回覆`,"Revision requested":`已要求修訂`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`在 Docker 等隔離容器中執行 Papilot 及其智慧代理以限制存取權限;掛載的檔案仍可存取。`,"Run command":`執行指令`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`在主機上執行 papilot codex login。它會在需要時安裝受支援的 Codex CLI。`,"Run tool":`執行工具`,Running:`執行中`,Runtime:`執行環境`,"Same DOI as {keys}.":`與 {keys} 的 DOI 相同。`,"Same title as {keys}.":`與 {keys} 的標題相同。`,Save:`儲存`,"Save accepted changes":`儲存已接受的變更`,"Save to":`儲存至`,Saved:`已儲存`,"Saved folder":`已儲存的資料夾`,"Saving…":`儲存中…`,Search:`搜尋`,"Search archived tasks…":`搜尋已封存的任務…`,"Search components or licenses":`搜尋元件或授權條款`,"Search components or licenses…":`搜尋元件或授權條款…`,"Search models":`搜尋模型`,"Search settings":`搜尋設定`,"Search skills":`搜尋技能`,"Search task titles and instructions":`搜尋任務標題與指示`,"Search tasks":`搜尋任務`,"Search tasks…":`搜尋任務…`,"Search the PDF":`搜尋 PDF`,"See license notice":`查看授權聲明`,"See what changed in each release.":`查看各個版本的變更內容。`,"Select a skill or create your own.":`選擇一項技能或建立您自己的技能。`,"Select all notes for this task":`選取此任務的所有註解`,"Select all {group} notes for this task":`選取此任務的所有 {group} 註解`,"Send (Enter) · New line (Shift+Enter)":`傳送 (Enter) · 換行 (Shift+Enter)`,"Send a test notification":`傳送測試通知`,"Send annotations":`傳送註解`,"Send annotations to the agent":`將註解傳送給智慧代理`,"Send feedback":`傳送意見回饋`,"Send instructions":`傳送指示`,"Send it to {name} yourself. It works once, within 7 days.":`請自行傳送給 {name}。此連結僅限使用一次,7 天內有效。`,"Send the review comment being written.":`傳送正在撰寫的審閱評論。`,"Send your review decisions and comments to the agent":`將審閱決定與評論傳送給智慧代理`,"Send {n} note":`傳送 {n} 則註解`,"Send {n} note to the agent":`將 {n} 則註解傳送給智慧代理`,"Send {n} notes":`傳送 {n} 則註解`,"Send {n} notes to the agent":`將 {n} 則註解傳送給智慧代理`,"Sending feedback…":`正在傳送意見回饋…`,"Sending…":`傳送中…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`已傳送。若未顯示任何內容,請在系統設定中允許此瀏覽器的通知。`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`請在啟動 Papilot 的環境中,為 open.bigmodel.cn 設定 ZHIPU_API_KEY,或為 api.z.ai 設定 ZAI_API_KEY,然後重新啟動 Papilot。`,"Set up on the host":`在主機上設定`,"Set up sharing":`設定共用`,"Set up this agent":`設定此智慧代理`,Settings:`設定`,"Settings categories":`設定類別`,"Setup guide":`設定指南`,"Setup required":`需要設定`,"Several TeX files were found. Check the selected main document before continuing.":`找到多個 TeX 檔案。請在繼續前確認所選的主要文件。`,"Share your papers and manage the people you work with.":`共用您的論文並管理協作對象。`,Sharing:`共用`,"Sharing is not sandboxed":`共用功能未受沙盒隔離`,Shorten:`精簡`,Show:`顯示`,"Show LaTeX source":`顯示 LaTeX 原始碼`,"Show archived tasks":`顯示已封存任務`,"Show current tasks":`顯示目前任務`,"Show desktop notifications while Papilot is in the background.":`當 Papilot 在背景執行時顯示桌面通知。`,"Show fewer models":`顯示較少模型`,"Show note {n} on the page":`在頁面上顯示註解 {n}`,"Show note {n}: {comment}":`顯示註解 {n}:{comment}`,"Show or hide the source for the current change.":`顯示或隱藏目前變更的原始碼。`,"Show problems":`顯示問題`,"Show suggestion {n} on the page":`在頁面上顯示建議 {n}`,"Show task list":`顯示任務清單`,"Show {n} more models":`顯示另外 {n} 個模型`,"Showing the last update.":`正在顯示最後一次更新。`,"Showing the latest {n} commits. Older history is not shown.":`正在顯示最新的 {n} 次提交。不顯示較舊的歷史紀錄。`,"Sign in as the user running Papilot, then restart Papilot.":`請以執行 Papilot 的使用者身分登入,然後重新啟動 Papilot。`,"Sign in from anywhere":`從任何位置登入`,"Sign in on the Papilot host to continue.":`請在 Papilot 主機上登入以繼續。`,"Sign in to Papilot":`登入 Papilot`,"Sign in to continue.":`請登入以繼續。`,"Sign in with a passkey":`使用通行密鑰登入`,"Sign out":`登出`,"Sign out everywhere":`從所有裝置登出`,"Sign-in required":`需要登入`,"Signed in":`已登入`,"Signed in · {label}":`已登入 · {label}`,"Signing in was cancelled. Try again when you are ready.":`登入已取消。準備好後請再試一次。`,"Skill ID":`技能 ID`,"Skill content (Markdown)":`技能內容(Markdown)`,"Skill content must contain 1–20,000 characters.":`技能內容必須包含 1–20,000 個字元。`,"Skill content view":`技能內容檢視`,"Skill icon":`技能圖示`,"Skill name":`技能名稱`,"Skill scope":`技能範圍`,"Skill: {name}":`技能:{name}`,Skills:`技能`,Slate:`岩灰`,"Slate blue":`岩藍`,"Some note positions need confirmation. Their original text and comments are kept.":`部分註解位置需要確認。其原始文字與評論已保留。`,Source:`原始碼`,Sparkles:`星光`,Spelling:`拼字檢查`,Split:`分割`,Stable:`穩定版`,"Stage all changes":`暫存所有變更`,"Stage changes":`暫存變更`,"Stage {path}":`暫存 {path}`,Staged:`已暫存`,"Staged changes":`已暫存的變更`,"Standard shortcuts":`標準快捷鍵`,"Start task":`開始任務`,"Start task (Enter)":`開始任務(Enter)`,"Status unavailable":`無法取得狀態`,Stone:`石灰`,"Submitting…":`提交中…`,"Suggest an agent":`建議智慧代理`,"Suggested fix":`建議修正`,"Suggestion ignored.":`已忽略建議。`,"Suggestion {n}: {comment}":`建議 {n}:{comment}`,"Suggestions stay in this task until you copy them to the manuscript":`建議在複製到論文原稿之前會保留在此任務中`,"Support more":`支援更多`,System:`系統`,"Task actions for {title}":`{title} 的任務操作`,"Task added: {title}":`已新增任務:{title}`,"Task errors":`任務錯誤`,"Task finished":`任務已完成`,"Task list":`任務清單`,"Task saved. Waiting for an available {agent} session.":`任務已儲存。正在等待可用的 {agent} 工作階段。`,Tasks:`任務`,"The PDF could not be opened: {error}":`無法開啟 PDF:{error}`,"The PDF review could not be loaded.":`無法載入 PDF 審閱。`,"The PDF review is taking longer than expected.":`載入 PDF 審閱的時間比預期長。`,"The agent could not connect. Check its setup and try again.":`智慧代理無法連線。請檢查其設定並再試一次。`,"The assistant is fixing compilation…":`助理正在修正編譯問題…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`瀏覽器與 Papilot 伺服器可能在不同電腦上執行。背景服務也可能使用與終端機不同的 PATH 或使用者帳號。`,"The connection is taking too long. Check your network and try again.":`連線時間過長。請檢查網路並再試一次。`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`開發建置需要至少 2 GB 的可用磁碟空間。請釋出空間後重試。`,"The diff is too long to show in full.":`差異內容過長,無法完整顯示。`,"The file “{name}” is empty.":`檔案「{name}」是空的。`,"The first build is still running.":`首次建置仍在執行中。`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`上次連線嘗試在 Papilot 伺服器環境中找不到可執行的 {command} CLI。它可能安裝在其他位置或供其他使用者使用。`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`上次連線嘗試未在執行 Papilot 的使用者環境中找到 CURSOR_API_KEY 或已儲存的 Cursor SDK 登入資訊。登入 Cursor 桌面應用程式或 CLI 並不會設定此 SDK。`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`上次連線嘗試在 Papilot 伺服器環境中找不到 Claude Code 或受支援的 API 憑證。`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`上次連線嘗試在 Papilot 伺服器環境中找不到 ZHIPU_API_KEY 或 ZAI_API_KEY。Claude 登入或 GLM 網站登入不會提供這些金鑰。`,"The latest changes did not compile. This is the last PDF that did.":`最新變更無法編譯。這是最後一份成功編譯的 PDF。`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`最新的設定檢查已找到此智慧代理。請重新連線以重新整理其即時狀態。`,"The manuscript did not compile.":`論文原稿無法編譯。`,"The merge stopped at conflicts.":`合併因衝突而中止。`,"The merge was abandoned.":`已放棄合併。`,"The paper needs a little help":`這篇論文需要一點協助`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`無法確認在新 PDF 中的位置。已保留原始文字與註解。`,"The request timed out and may still be processing. Check the task status before retrying.":`請求逾時,可能仍在處理中。重試前請先檢查任務狀態。`,"The skill must contain instructions.":`技能必須包含指示內容。`,"The update did not finish. Your current version is still available. You can retry here.":`更新未完成。您目前的版本仍可使用。您可以在此重試。`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`更新已就緒。正在等待任務與 PDF 建置完成後重新啟動。`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`更新後的版本無法啟動,因此 Papilot 目前使用應用程式內建的版本。請重試更新或下載最新的桌面應用程式。`,"Their name, as others will see it":`其他人看到的名稱`,Theme:`主題`,"These keep the usual browser and text-editing behavior.":`這些項目會保留瀏覽器與文字編輯的一般行為。`,"Third-party licenses":`第三方授權條款`,"This PDF has no bookmarks.":`此 PDF 沒有書籤。`,"This agent has not reported a model list. Its configured default can still be used.":`此智慧代理未回報模型清單。仍可使用其設定的預設值。`,"This browser cannot show notifications.":`此瀏覽器無法顯示通知。`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`此瀏覽器無法使用通行密鑰。請在最新版本的 Safari、Chrome、Edge 或 Firefox 中開啟此頁面。`,"This browser could not enable notifications.":`此瀏覽器無法啟用通知。`,"This browser could not show the notification.":`此瀏覽器無法顯示該通知。`,"This conversation has no manuscript changes.":`此對話沒有論文原稿變更。`,"This file is not tracked by Git, so it cannot be recovered.":`此檔案未受 Git 追蹤,因此無法復原。`,"This invite link is incomplete. Copy the whole link and open it again.":`此邀請連結不完整。請複製完整連結並重新開啟。`,"This key is reserved for the browser or text editing. Choose another shortcut.":`此按鍵已保留給瀏覽器或文字編輯使用。請選擇其他快捷鍵。`,"This model uses its own reasoning settings.":`此模型使用其自身的推理設定。`,"This paper":`此論文`,"This paper may need XeLaTeX. Change the engine below and retry.":`此論文可能需要 XeLaTeX。請在下方變更引擎後重試。`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`此論文未透過 {bibliography} 或 {addbibresource} 指定 .bib 檔案。`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`此段落包含先前尚未提交的編輯。您可以將審閱後的結果一併提交,或直接套用而不提交。`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`這會將此任務從 Papilot 永久移除,包括其對話、工作樹與 PDF 審閱檔案。未接受的編輯與已儲存的評論將會捨棄,且審閱決定將無法復原。`,"This skill changed on disk. Reload it before deleting.":`此技能在磁碟上已變更。請先重新載入再刪除。`,"This skill changed on disk. Reload it before saving.":`此技能在磁碟上已變更。請先重新載入再儲存。`,"This skill no longer exists. Refresh the list.":`此技能已不存在。請重新整理清單。`,"This skill was removed on disk. Reload the list before saving.":`此技能已從磁碟上移除。請先重新載入清單再儲存。`,"This step needs attention":`此步驟需要處理`,"This task did not change the manuscript. Read the answer in the chat.":`此任務未變更論文原稿。請在聊天室中閱讀回覆。`,"This task is being deleted":`正在刪除此任務`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`此任務在確認工作樹清理完成前會保持保留狀態。若連線中斷,請使用「重試刪除」。`,"This version needs the latest desktop app. Download it from GitHub Releases.":`此版本需要最新的桌面應用程式。請從 GitHub Releases 下載。`,"This worktree’s HEAD is outside the displayed history.":`此工作樹的 HEAD 不在顯示的歷史紀錄範圍內。`,Title:`標題`,Tools:`工具`,Tracking:`追蹤`,"Type changed":`類型已變更`,"Typesetting and other remarks":`排版與其他備註`,"Typesetting with LaTeX, pass {n}…":`正在使用 LaTeX 排版,第 {n} 輪…`,Unavailable:`無法使用`,"Uncommitted changes in the PDF":`PDF 中有未提交的變更`,"Undefined citation":`未定義的引用`,"Undefined reference":`未定義的參照`,Undo:`復原`,"Undo review decision":`復原審閱決定`,"Undo the last review decision or revert.":`復原上一個審閱決定或還原變更。`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`根據焦點所在位置,復原輸入內容、已刪除的註解或上一個審閱決定。`,"Unify terms, notation, spelling and references":`統一術語、符號、拼字與參考文獻`,Unknown:`未知`,"Unlimited credits":`無限額度`,"Unplaced suggestions":`未定位的建議`,"Unsaved changes":`未儲存的變更`,"Unstage all changes":`取消暫存所有變更`,"Unstage changes":`取消暫存變更`,"Unstage {path}":`取消暫存 {path}`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`未暫存的變更將永久遺失,且未追蹤的檔案將被刪除。已暫存的變更將保留。`,"Unstaged changes are lost for good. Staged changes stay.":`未暫存的變更將永久遺失。已暫存的變更將保留。`,Untracked:`未追蹤`,"Untracked build output. Add to .gitignore adds:":`未追蹤的建置輸出。加入 .gitignore 會新增:`,"Up to date":`已是最新狀態`,"Up to date with the remote.":`已與遠端同步為最新狀態。`,"Update Papilot":`更新 Papilot`,"Update available":`有可用更新`,"Update channel":`更新通道`,"Update failed":`更新失敗`,"Update now":`立即更新`,"Update ready":`更新已就緒`,"Update to {version}":`更新至 {version}`,Updates:`更新`,"Updating…":`正在更新…`,"Upload failed. Please retry.":`上傳失敗,請重試。`,"Uploading…":`正在上傳…`,"Usage & limits":`用量與限制`,"Usage limit":`用量上限`,"Usage not reported":`未回報用量`,"Use a hex color, like #2563EB.":`請使用十六進位色碼,例如 #2563EB。`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`請使用小寫英文字母、數字與連字號。這也會作為 / 指令名稱。`,"Use the passkey you created from your invite link.":`請使用您透過邀請連結建立的通行密鑰。`,"Used for new tasks. Saved in this browser.":`用於新任務。儲存於此瀏覽器中。`,"User guide":`使用指南`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`搭配 ZHIPU_API_KEY 或 ZAI_API_KEY 使用 Claude Code 或 Claude Agent SDK。`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`已安裝時使用 Claude Code,或搭配 API 憑證使用 Claude Agent SDK。`,"Uses DeepSeek Harness and the providers configured in dsh.":`使用 DeepSeek Harness 以及在 dsh 中設定的供應商。`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`透過 ACP 使用 GitHub Copilot CLI 及其已儲存的登入資訊或已設定的供應商。`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`透過 ACP 使用 Grok Build CLI 及其已儲存的登入資訊或已設定的 API 憑證。`,"Uses Kimi Code CLI and its saved login through ACP.":`透過 ACP 使用 Kimi Code CLI 及其儲存的登入資訊。`,"Uses OpenCode with the providers and models you have connected.":`使用 OpenCode 以及您已連結的供應商與模型。`,"Uses Qwen Code and its saved login through ACP.":`透過 ACP 使用 Qwen Code 及其儲存的登入資訊。`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`使用相容的本機 Codex CLI。Papilot 會在需要時自行安裝副本。`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`搭配 CURSOR_API_KEY 使用 Cursor SDK。Papilot 會在首次使用時安裝 SDK。`,"Uses the local Antigravity CLI and its saved Google login.":`使用本機 Antigravity CLI 及其儲存的 Google 登入資訊。`,Verified:`已驗證`,Version:`版本`,"Version history":`版本紀錄`,"View & help":`檢視與說明`,"View changes for this note":`檢視此註解的變更`,"View changes included in this commit":`檢視此提交中包含的變更`,"View details":`檢視詳細資訊`,"View installation, account, and usage":`檢視安裝狀態、帳號與用量`,"View {n} review suggestion":`檢視 {n} 則審閱建議`,"View {n} review suggestions":`檢視 {n} 則審閱建議`,"Viewed the PDF":`已檢視 PDF`,"Viewed the PDF: {places}":`已檢視 PDF:{places}`,"Visual style":`視覺風格`,"Wait for the PDF build to finish before deleting this task.":`請先等待 PDF 建置完成,再刪除此任務。`,"Wait for the PDF to compile.":`請等待 PDF 編譯完成。`,"Waiting for your passkey…":`正在等待您的通行密鑰…`,Warning:`警告`,Warnings:`警告`,"Weekly limit":`每週上限`,"What are we revising next?":`接下來要修改什麼?`,"What can invited people do?":`受邀人員可以做什麼?`,"What changed since the last commit, to stage, revert and commit change by change":`查看自上次提交以來的變更,並逐一暫存、還原及提交`,"What does this skill help with?":`這項技能可以協助什麼?`,"What is staged, in {n} file:":`已暫存的變更(共 {n} 個檔案):`,"What is staged, in {n} files:":`已暫存的變更(共 {n} 個檔案):`,"What should change here?":`這裡應該如何修改?`,"What should change in each color group?":`各顏色群組應該如何修改?`,"What should change in this group?":`此群組應該如何修改?`,"What this task accepted, in {n} file:":`此任務已接受的變更(共 {n} 個檔案):`,"What this task accepted, in {n} files:":`此任務已接受的變更(共 {n} 個檔案):`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`當變更涉及新增或編輯書目項目時,會在 Crossref、DBLP 與 arXiv 中查詢其標題、作者、年份與 DOI。不會傳送您論文中的任何其他內容。`,"With review feedback":`附帶審閱意見反應`,Workspace:`工作區`,"Workspace view":`工作區檢視`,Worktrees:`工作樹`,"Write a commit message for the chosen files with {agent}":`使用 {agent} 為所選檔案撰寫提交訊息`,"Write a note…":`撰寫註解…`,"Write feedback on the current proposed change.":`針對目前提議的變更撰寫意見反應。`,"Writing the PDF…":`正在寫入 PDF…`,Year:`年份`,Yellow:`黃色`,"You are offline. Your draft is kept in this browser.":`您目前處於離線狀態。草稿已保留在此瀏覽器中。`,"You are using the latest version on this channel.":`您正在使用此通道的最新版本。`,"You checked this entry yourself.":`你已親自檢查過此項目。`,"You sent review feedback, {time}":`你已傳送審閱意見回饋,{time}`,"You, {time}":`你,{time}`,"Your note":`你的註解`,"Your paper compiled successfully. It is ready for editing.":`你的論文已成功編譯,可以開始編輯。`,"Your review keyboard":`你的審閱快速鍵`,Yours:`你的`,Zoom:`縮放`,"Zoom in":`放大`,"Zoom in (⌘+)":`放大 (⌘+)`,"Zoom out":`縮小`,"Zoom out (⌘−)":`縮小 (⌘−)`,"added {time}":`新增於 {time}`,"another entry has the same key.":`另一個項目具有相同的鍵值。`,"build error":`建置錯誤`,clean:`無變更`,detached:`已分離`,"detached HEAD":`分離的 HEAD`,"edited {file}":`已編輯 {file}`,"edited {n} files":`已編輯 {n} 個檔案`,"from {name}":`來自 {name}`,"it is not cited.":`未被引用。`,"just now":`剛剛`,"no record in Crossref, DBLP or arXiv matches it.":`在 Crossref、DBLP 或 arXiv 中找不到相符的記錄。`,nothing:`無內容`,now:`現在`,"or select text to annotate":`或選取文字以加上註解`,"p. {page}":`第 {page} 頁`,"possibly the same work as {keys} (same title).":`可能與 {keys} 是同一份著作(標題相同)。`,"ran {n} command":`已執行 {n} 個指令`,"ran {n} commands":`已執行 {n} 個指令`,"resets in {hours} h {minutes} min":`將於 {hours} 小時 {minutes} 分鐘後重設`,"resets in {minutes} min":`將於 {minutes} 分鐘後重設`,"resets now":`即將重設`,"resets {time}":`重設時間:{time}`,small:`小`,"the same work as {keys} (same DOI).":`與 {keys} 是同一份著作(DOI 相同)。`,"used {n} tool":`已使用 {n} 個工具`,"used {n} tools":`已使用 {n} 個工具`,"used {time}":`使用於 {time}`,"viewed the PDF":`已檢視 PDF`,"{agent} conversation":`{agent} 對話`,"{agent} details":`{agent} 詳細資訊`,"{agent} finished":`{agent} 已完成`,"{agent} is requesting permission for this action.":`{agent} 正在要求執行此動作的權限。`,"{agent} is resolving…":`{agent} 正在解決…`,"{agent} is unavailable":`{agent} 無法使用`,"{agent} is waiting for your approval":`{agent} 正在等待你的核准`,"{agent} is working":`{agent} 正在處理中`,"{agent} is working on this task":`{agent} 正在處理此任務`,"{agent} is working · new instructions run next":`{agent} 正在處理中 · 新指令將在隨後執行`,"{agent} is writing a commit message…":`{agent} 正在撰寫提交訊息…`,"{agent} needs your input":`{agent} 需要你的輸入`,"{agent} on the merge":`{agent} 處理合併中`,"{agent} usage":`{agent} 用量`,"{agent} usage details":`{agent} 用量詳細資訊`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`在此電腦上找不到 {agent}。請先安裝或設定,然後選取「重新連線」。`,"{ahead} ahead · {behind} behind":`領先 {ahead} 個 · 落後 {behind} 個`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} 與 {upstream} 皆已變更。合併將會引入遠端提交。`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) 沒有具此鍵值的項目。`,"{command} was not found by Papilot.":`Papilot 找不到 {command}。`,"{current} of {total}":`{current} / {total}`,"{differences} (record: {url}).":`{differences}(記錄:{url})。`,"{field} is {bib} but {source} has {record}":`{field} 為 {bib},但 {source} 中為 {record}`,"{field}: {bib} here, {record} in {source}":`{field}:此處為 {bib},{source} 中為 {record}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} 邀請你使用 Papilot。你將顯示為 {name}。`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} 邀請你共同編輯 {papers}。你將顯示為 {name}。`,"{key} ({place}): {problems}":`{key} ({place}):{problems}`,"{name} (you)":`{name}(你)`,"{name} sent review feedback, {time}":`{name} 已傳送審閱意見回饋,{time}`,"{name} used":`{name} 已使用`,"{name}, {time}":`{name},{time}`,"{n} accepted":`已接受 {n} 項`,"{n} active task":`{n} 項進行中的任務`,"{n} active tasks":`{n} 項進行中的任務`,"{n} build file":`{n} 個建置檔案`,"{n} build files":`{n} 個建置檔案`,"{n} change to decide":`{n} 項變更待決定`,"{n} change to review":`{n} 項變更待審閱`,"{n} changed":`{n} 項已變更`,"{n} changes to decide":`{n} 項變更待決定`,"{n} changes to review":`{n} 項變更待審閱`,"{n} checked by you":`{n} 筆已由您檢查`,"{n} comment":`{n} 則評論`,"{n} comments":`{n} 則評論`,"{n} compilation error":`{n} 個編譯錯誤`,"{n} compilation errors":`{n} 個編譯錯誤`,"{n} compilation warning":`{n} 個編譯警告`,"{n} compilation warnings":`{n} 個編譯警告`,"{n} conflicts":`{n} 個衝突`,"{n} could not be checked":`{n} 筆無法檢查`,"{n} credits":`{n} 點額度`,"{n} differ":`{n} 筆有差異`,"{n} entries":`{n} 筆條目`,"{n} entry":`{n} 筆條目`,"{n} failed":`{n} 項失敗`,"{n} file staged":`{n} 個檔案已暫存`,"{n} file still has conflicts.":`仍有 {n} 個檔案存在衝突。`,"{n} files staged":`{n} 個檔案已暫存`,"{n} files still have conflicts.":`仍有 {n} 個檔案存在衝突。`,"{n} location":`{n} 個位置`,"{n} locations":`{n} 個位置`,"{n} new commit on {upstream}.":`{upstream} 上有 {n} 次新提交。`,"{n} new commits on {upstream}.":`{upstream} 上有 {n} 次新提交。`,"{n} not found":`{n} 筆找不到`,"{n} notes on the PDF":`PDF 上有 {n} 則註解`,"{n} rejected":`{n} 項已拒絕`,"{n} review update not sent yet":`{n} 項審閱更新尚未傳送`,"{n} review update will be sent with this message":`{n} 項審閱更新將隨此訊息一併傳送`,"{n} review updates not sent yet":`{n} 項審閱更新尚未傳送`,"{n} review updates will be sent with this message":`{n} 項審閱更新將隨此訊息一併傳送`,"{n} staged":`{n} 個已暫存`,"{n} undone":`{n} 項已復原`,"{n} unstaged":`{n} 個未暫存`,"{n} untracked":`{n} 個未追蹤`,"{n} verified":`{n} 筆已驗證`,"{n}-day limit":`{n} 天上限`,"{n}-hour limit":`{n} 小時上限`,"{n}-minute limit":`{n} 分鐘上限`,"{n}d":`{n} 天`,"{n}h":`{n} 小時`,"{n}m":`{n} 分鐘`,"{selected} / {total} locations selected":`已選取 {selected} / {total} 個位置`,"{shown} of {total} components":`顯示 {shown} / {total} 個元件`,"{sources} could not be reached.":`無法連線至 {sources}。`,"{time} ago":`{time}前`,"{title} PDF change review":`{title} PDF 變更審閱`,"{used}% used":`已使用 {used}%`},L={"A commit is already in progress. Wait for it to finish.":`已有提交正在进行,请等待其完成。`,"A commit is in progress. Try again when it finishes.":`正在进行提交,请完成后重试。`,"A review action is already in progress. Wait for it to finish.":`已有审阅操作正在进行,请等待其完成。`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`所选的 PDF 批注正在发送中,请等待该任务创建完成。`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`所选的 PDF 批注已不可用。请刷新论文原稿后重试。`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`AI 审阅仅接受审阅指令。若需发送批注、技能或附件,请发起编辑任务。`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`AI 审阅仅创建 PDF 批注,无法发布论文原稿修改。`,"AI review has no manuscript changes to apply.":`AI 审阅没有可应用的论文原稿更改。`,"AI review has no manuscript changes to deliver.":`AI 审阅没有可供交付的论文原稿修改。`,"AI review uses manuscript PDF notes, not change decisions.":`AI 审阅使用论文原稿 PDF 批注,而非修改决定。`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`AI 审阅使用论文原稿 PDF。若需发送批注或附件,请另行发起编辑任务。`,"Accepted changes are already in the manuscript.":`已接受的更改已在论文原稿中。`,"An AI review comment is invalid. Ask the reviewer to retry.":`AI 审阅意见无效,请让审阅器重试。`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`AI 审阅意见的 PDF 行号顺序颠倒,请让审阅器将起始行置于结束行之前。`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`AI 审阅意见引用了未知的 PDF 位置,请让审阅器使用提供的行 ID 重试。`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`AI 审阅意见跨越了多个 PDF 页面,请让审阅器将其锚定在单个页面上。`,"Another Papilot instance is already updating.":`另一个 Papilot 实例正在更新。`,"Answer every question before submitting.":`请回答所有问题后再提交。`,"Attachment not found.":`未找到附件。`,"Attachments must total 100 MB or less.":`附件总大小不得超过 100 MB。`,"Check for a newer release before updating.":`更新前请先检查是否有新版本。`,"Check out a branch before pushing.":`推送前请先检出分支。`,"Check the task status before pausing this turn.":`暂停本轮操作前,请先检查任务状态。`,"Check the task status before sending more instructions.":`发送更多指令前,请先检查任务状态。`,"Choose Codex, Claude or GLM for AI review.":`请选择 Codex、Claude 或 GLM 进行 AI 审阅。`,"Choose a ZIP smaller than 64 MB.":`请选择小于 64 MB 的 ZIP 文件。`,"Choose a file with a valid name.":`请选择文件名有效的文件。`,"Choose a folder smaller than 64 MB.":`请选择小于 64 MB 的文件夹。`,"Choose a supported LaTeX engine.":`请选择受支持的 LaTeX 引擎。`,"Choose a valid update channel.":`请选择有效的更新通道。`,"Choose an available model for this agent.":`请为此智能体选择可用的模型。`,"Choose an entry to confirm.":`请选择要确认的条目。`,"Choose an existing TeX main file.":`请选择现有的 TeX 主文件。`,"Choose between 1 and 5,000 files.":`请选择 1 到 5,000 个文件。`,"Choose one folder or ZIP.":`请选择一个文件夹或 ZIP 文件。`,"Choose one of the offered answers.":`请从提供的选项中选择一个答案。`,"Choose stage, unstage or revert.":`请选择暂存、取消暂存或还原。`,"Choose whether to archive or restore the task.":`请选择要归档还是恢复该任务。`,"Claude Code did not list its models.":`Claude Code 未列出其模型。`,"Claude Code exited before listing its models.":`Claude Code 在列出模型前已退出。`,"Claude has not reported usage yet.":`Claude 尚未报告用量。`,"Codex disconnected. Resume the task before retrying.":`Codex 已断开连接。请先恢复任务,然后再重试。`,"Codex is not connected.":`Codex 未连接。`,"Commit the task first, then push from Git.":`请先提交任务,再从 Git 推送。`,"Confirm permanent task deletion before continuing.":`继续操作前,请确认永久删除任务。`,"Could not check for updates.":`无法检查更新。`,"Could not check for updates. Try again when connected.":`无法检查更新。请在连接网络后重试。`,"Could not complete the environment checks. Please try again.":`无法完成环境检查,请重试。`,"Could not read the LaTeX installation.":`无法读取 LaTeX 安装信息。`,"Could not restart the background service.":`无法重启后台服务。`,"Deletion is already in progress. Wait for it to finish.":`删除正在进行中,请等待其完成。`,"Describe the revision, choose a skill, or add a PDF note.":`请描述修改内容、选择一项技能或添加一条 PDF 批注。`,"Describe what to do with each selected color group.":`请描述对每个所选颜色分组的处理方式。`,"Download desktop updates from GitHub Releases.":`请从 GitHub Releases 下载桌面版更新。`,"Enter a folder path.":`请输入文件夹路径。`,"Enter a paper name under 120 characters.":`请输入少于 120 个字符的论文名称。`,"Fast mode is not available for this model.":`此模型不支持快速模式。`,"Files must be 25 MB or smaller.":`文件大小不得超过 25 MB。`,"Finish or abort the merge before committing other changes.":`请先完成或中止合并,然后再提交其他更改。`,"Finish or abort the merge before discarding changes.":`请先完成或中止合并,再放弃更改。`,"Finish or abort the merge before staging other changes.":`请先完成或中止合并,然后再暂存其他更改。`,"Finish or abort the merge first.":`请先完成或中止合并。`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`接受、拒绝或撤销修改前,请先在 Git 面板中完成或中止合并。`,"GLM does not report usage to Papilot.":`GLM 不向 Papilot 报告用量。`,"Group instructions must refer to selected PDF notes.":`分组指令必须关联所选的 PDF 批注。`,"Images must be 5 MB or smaller.":`图片大小不得超过 5 MB。`,"Import not found.":`未找到导入项。`,"Invalid annotation group.":`无效的批注组。`,"Invalid approval decision.":`无效的审批决定。`,"Invalid development revision.":`开发修订版本无效。`,"Invalid development version.":`开发版本无效。`,"Invalid diagnostic report.":`诊断报告无效。`,"Invalid file path in upload.":`上传内容中的文件路径无效。`,"Invalid file path.":`无效的文件路径。`,"Invalid model.":`无效的模型。`,"Invalid note location.":`无效的批注位置。`,"Invalid reasoning effort.":`无效的推理强度。`,"Invalid release information.":`发布信息无效。`,"Invalid release version.":`发布版本无效。`,"Invalid save action.":`无效的保存操作。`,"Invalid task ID.":`无效的任务 ID。`,"Invalid update activation.":`更新激活无效。`,"Invalid upload data.":`上传数据无效。`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`请在其 AI 审阅任务中管理此建议,或先将其复制到论文原稿。`,"Missing update restart job.":`缺少更新重启作业。`,"No file has conflict markers left. Commit the merge.":`所有文件均已无冲突标记,请提交合并。`,"No merge is in progress.":`当前没有正在进行的合并。`,"No such file.":`无此文件。`,"None of the chosen files is build output that can be ignored.":`所选文件中没有可忽略的构建输出。`,"Not found":`未找到`,"Note not found.":`未找到批注。`,"Only the model and its settings can be changed.":`仅可更改模型及其设置。`,"Only the owner of this Papilot can do this.":`仅此 Papilot 的所有者可执行此操作。`,"Open Papilot at its public address.":`请通过公共地址打开 Papilot。`,"Paper name is too long.":`论文名称过长。`,"Paper project not found.":`未找到论文项目。`,"Papilot did not finish shutting down.":`Papilot 未完成关闭。`,"Papilot is restarting after an update. Please wait a moment.":`Papilot 更新后正在重启,请稍候。`,"Papilot restarted. Retry compilation to continue this import.":`Papilot 已重启。请重试编译以继续此次导入。`,"Pause Codex before building a review.":`构建审阅前,请先暂停 Codex。`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`删除任务前,请先暂停该任务并等待其当前工作或审阅操作完成。请先处理所有待确认的操作。`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`接受、拒绝或撤销修改前,请先暂停任务,并等待所有 PDF 构建完成。`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`更改此论文的路径或将其移除前,请先暂停其活动任务并等待当前工作完成。请先处理所有待确认的操作。`,"Resolve the merge conflicts in the selected files before committing.":`提交前请先解决所选文件中的合并冲突。`,"Restore this suggestion before copying it.":`请先恢复此建议,再进行复制。`,"Retry deletion to confirm this task was removed.":`请重试删除,以确认此任务已移除。`,"Retry the pending delivery before sending more instructions.":`发送更多指令前,请先重试待处理的发送请求。`,"Review resource not found.":`未找到审阅资源。`,"Select a folder containing the paper.":`请选择包含论文的文件夹。`,"Select a valid paper to check.":`请选择要检查的有效论文。`,"Select a valid paper.":`请选择有效的论文。`,"Select an existing review round and either the before or after PDF.":`请选择已有的审阅轮次,以及修改前或修改后的 PDF。`,"Select at least one change.":`请至少选择一项更改。`,"Select at least one changed file to commit.":`请至少选择一个要提交的已更改文件。`,"Select at least one changed file.":`请至少选择一个已更改的文件。`,"Select text or mark a region on the page first.":`请先在页面上选择文本或标记区域。`,"Select the root directory of the Git repository.":`请选择 Git 仓库的根目录。`,"Select unsent PDF notes for this task.":`请为此任务选择未发送的 PDF 批注。`,"Select up to 10 valid attachments.":`最多可选择 10 个有效附件。`,"Select valid PDF notes for this task.":`请为此任务选择有效的 PDF 批注。`,"Select valid review notes.":`请选择有效的审阅批注。`,"Send attachments with a message, separately from review feedback.":`请随消息单独发送附件,勿与审阅反馈一同发送。`,"Service tiers are only available for Codex.":`服务等级仅适用于 Codex。`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`邀请成员前,请先将 PAPILOT_ACCOUNT_ORIGIN 设为公共 URL。`,"Sign in to continue.":`请登录以继续。`,"Sign-in is not set up on this Papilot.":`此 Papilot 尚未设置登录功能。`,"Stage at least one change to commit.":`请至少暂存一项要提交的更改。`,"Stage at least one change.":`请至少暂存一项更改。`,"Start a new task to run the AI review skill on the current PDF.":`请新建一个任务,以对当前 PDF 运行 AI 审阅技能。`,"Start or resume the thread before starting a turn.":`开始新一轮对话前,请先启动或恢复会话。`,"Task not found.":`未找到任务。`,"That file has no uncommitted changes.":`该文件没有未提交的更改。`,"That page is not part of the manuscript.":`该页面不属于论文原稿。`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`AI 审阅未返回有效的批注。请让其按要求的 JSON 格式重试。`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`AI 审阅响应不完整或过长,请让审阅器重试。`,"The PDF copy for this review is unavailable. Start a new AI review.":`此审阅的 PDF 副本不可用,请重新发起 AI 审阅。`,"The PDF is building. Wait for this build to finish.":`正在构建 PDF,请等待此次构建完成。`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`此审阅的 PDF 快照不可用。请开始新的 AI 审阅。`,"The ZIP expands beyond 64 MB or 5,000 files.":`ZIP 文件解压后超过 64 MB 或 5,000 个文件。`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`开发构建需要至少 2 GB 的可用磁盘空间。请释放一些空间后重试。`,"The development checkout does not match the requested commit.":`检出的开发代码与请求的提交不匹配。`,"The development checkout does not match the requested version.":`检出的开发代码与请求的版本不匹配。`,"The downloaded package does not match the requested release.":`下载的安装包与请求的发布版本不匹配。`,"The downloaded release is incomplete.":`下载的发布版本不完整。`,"The manuscript changed while copying this suggestion. Try again.":`复制此建议时论文原稿已发生更改,请重试。`,"The new version could not be installed. Check the connection and available disk space, then retry.":`无法安装新版本。请检查网络连接和可用磁盘空间,然后重试。`,"The new version did not pass its startup check. Your current version is still running.":`新版本未通过启动检查。当前版本仍在运行。`,"The new version did not restart successfully.":`新版本未能成功重启。`,"The owner cannot be removed.":`无法移除所有者。`,"The owner sees every paper.":`所有者可查看所有论文。`,"The paper configuration must contain a JSON object.":`论文配置必须包含 JSON 对象。`,"The paper configuration must not be a symbolic link.":`论文配置不能是符号链接。`,"The passkey could not be created. Try again.":`无法创建通行密钥,请重试。`,"The request origin does not match.":`请求来源不匹配。`,"The review action is still being checked. Wait for it to finish.":`正在检查该审阅操作,请等待其完成。`,"The review could not be loaded. Try again.":`无法加载审阅,请重试。`,"The review engine could not confirm this action. Check again when it is available.":`审阅引擎无法确认此操作,请在其可用时重试。`,"The review engine could not confirm this action. Select Check status before continuing.":`审阅引擎无法确认此操作。请先选择“检查状态”再继续。`,"The review engine could not confirm this task’s cleanup status.":`审阅引擎无法确认此任务的清理状态。`,"The review engine did not confirm task deletion.":`审阅引擎未确认任务删除。`,"The review engine returned an unexpected response. Select Check status before continuing.":`审阅引擎返回了意外响应。请先选择“检查状态”再继续。`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`所选仓库不包含此论文的任务工作树。请选择包含其现有任务的仓库,或将其作为单独的论文添加。`,"The server is shutting down.":`服务器正在关闭。`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`服务器已重启并中断了上一轮对话。请在同一对话中继续。`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`服务器在确认审阅操作前重启。继续操作前请选择“检查状态”。`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`服务器在删除期间重启。请重试删除以确认清理完成。`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`服务器在构建 PDF 期间重启。请检查审阅并在需要时重新构建。`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`暂时无法连接 PDF 对比服务。修改已保存,请选择“检查状态”恢复原来的构建。`,"The task was paused before these instructions were queued. Your draft has been kept.":`在这些指令加入队列前,任务已暂停。您的草稿已保留。`,"The update download timed out.":`更新下载超时。`,"The update restart helper did not start.":`更新重启助手未能启动。`,"The update was interrupted. Your current installation is still available; retry the update.":`更新已中断。当前安装仍可使用,请重试更新。`,"There is no compilation log yet.":`暂无编译日志。`,"There is no new review feedback to send.":`没有新的审阅反馈可供发送。`,"This PDF has no selectable text to review.":`此 PDF 没有可供审阅的可选文本。`,"This PDF is too long for one AI review (180,000 characters maximum).":`此 PDF 过长,无法进行单次 AI 审阅(最多 180,000 个字符)。`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`此地址仅供你的 tailnet 使用。外部成员请通过 PAPILOT_ACCOUNT_ORIGIN 登录。`,"This agent does not report usage.":`此智能体不报告用量。`,"This attachment is already being sent to another task.":`此附件正在发送至另一个任务。`,"This attachment is not available for this task.":`此附件不可用于该任务。`,"This branch does not track a remote branch yet.":`此分支尚未跟踪远程分支。`,"This comparison is out of date. Refresh the page.":`此对比已过期,请刷新页面。`,"This device is no longer signed in.":`此设备已退出登录。`,"This entry is no longer among the changes. Refresh the page.":`此条目已不在更改列表中,请刷新页面。`,"This entry is no longer in the bibliography. Refresh the panel.":`此条目已不在参考文献中。请刷新面板。`,"This file is empty.":`此文件为空。`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`此文件夹属于父级 Git 仓库。请选择其根文件夹,或上传副本。`,"This image format is not supported.":`不支持此图片格式。`,"This invite link has expired or was already used. Ask for a new one.":`此邀请链接已过期或已被使用,请索取新链接。`,"This manuscript preview is out of date. Refresh it and try again.":`此论文原稿预览已过期。请刷新后重试。`,"This model does not support that reasoning effort.":`此模型不支持该推理强度。`,"This note has already been sent.":`此批注已发送。`,"This note has been deleted. Undo the deletion first.":`此批注已被删除,请先撤销删除。`,"This note is being sent. Wait for the task to finish creating.":`正在发送此批注,请等待任务创建完成。`,"This page has expired. Refresh it and try again.":`此页面已过期,请刷新后重试。`,"This paper is already added. Open it from the paper list.":`此论文已添加。请从论文列表中打开。`,"This paper is being updated. Please retry in a moment.":`此论文正在更新,请稍后重试。`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`无法在当前论文原稿中可靠定位该段落。该建议仍保留在审阅任务中。`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`此通行密钥无法用于登录。如果已被移除,请向所有者索取新邀请。`,"This person is no longer in Papilot.":`此成员已不在 Papilot 中。`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`此仓库尚无提交记录。请先提交一次,以便后续在 PDF 中对比更改。`,"This repository has no remote.":`此仓库没有远程仓库。`,"This repository is already added as another paper.":`此仓库已作为另一篇论文添加。`,"This request ID is already in use by another task.":`此请求 ID 已被其他任务占用。`,"This request has ended or the connection has restarted.":`此请求已结束或连接已重启。`,"This request has ended.":`此请求已结束。`,"This review page has expired. Refresh it and try again.":`此审阅页面已过期,请刷新后重试。`,"This review task does not belong to this workspace.":`此审阅任务不属于该工作区。`,"This suggestion does not belong to this review task.":`此建议不属于该审阅任务。`,"This suggestion was ignored while copying. Restore it first.":`复制时此建议已被忽略,请先将其恢复。`,"This task already applies accepted changes to the working directory.":`此任务已将接受的修改应用到工作目录。`,"This task already has queued instructions. Wait or pause it first.":`此任务已有排队中的指令,请先等待或暂停任务。`,"This task has no accepted changes left to commit.":`此任务已没有可供提交的已接受修改。`,"This task is being created. Refresh in a moment.":`正在创建此任务,请稍后刷新。`,"This task is being deleted.":`正在删除此任务。`,"This task is being deleted. Retry deletion to finish cleanup.":`正在删除此任务。请重试删除以完成清理。`,"This task is being deleted. Your instructions were not queued.":`正在删除此任务,您的指令未加入队列。`,"This task is busy. Wait for it to finish or pause it first.":`此任务正忙,请等待其完成或先将其暂停。`,"This task is not an AI review.":`此任务不是 AI 审阅。`,"This task was deleted. Create a new task instead.":`此任务已被删除,请新建一个任务。`,"Too many attempts. Wait a minute and try again.":`尝试次数过多,请等待一分钟后重试。`,"Too many open Papilot tabs. Close one and try again.":`打开的 Papilot 标签页过多,请关闭一个后重试。`,"Unknown Git action.":`未知的 Git 操作。`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`未使用的附件已达 500 MB。请先从草稿中移除附件,再继续上传。`,"Upload a file as binary data.":`请以二进制数据形式上传文件。`,"Wait for repository preparation to finish.":`请等待仓库准备完成。`,"Wait for task creation to finish before deleting it.":`删除任务前,请先等待任务创建完成。`,"Wait for the current Git operation before sending more instructions.":`发送更多指令前,请先等待当前 Git 操作完成。`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`请等待当前 PDF 编译完成后,再运行 AI 审阅技能。`,"Wait for the current delivery before sending more instructions.":`发送更多指令前,请先等待当前发送完成。`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`请等待当前论文原稿 PDF 编译完成,然后再次复制该建议。`,"Wait for the current review action before building a review.":`构建审阅前,请先等待当前审阅操作完成。`,"Wait for the current review action before committing.":`提交前请先等待当前审阅操作完成。`,"Wait for the current update to finish before changing channels.":`请等待当前更新完成后再切换通道。`,"Wait for the task and review actions to finish before applying changes.":`请等待任务和审阅操作完成后再应用更改。`,"Wait for the task and review actions to finish before choosing a destination.":`选择目标位置前,请先等待任务和审阅操作完成。`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`请等待此论文的 PDF 构建完成后,再更改其路径或将其移除。`,"ZIP links and special files are not supported.":`不支持 ZIP 链接和特殊文件。`,"npm is unavailable to Papilot.":`Papilot 无法使用 npm。`},R={"A commit is already in progress. Wait for it to finish.":`已有提交作業正在進行中,請等待其完成。`,"A commit is in progress. Try again when it finishes.":`正在進行提交作業,請在完成後再試一次。`,"A review action is already in progress. Wait for it to finish.":`已有審閱動作正在進行中,請等待其完成。`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`所選的 PDF 註解已在傳送中。請等待該任務建立完成。`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`所選的 PDF 註解已無法使用。請重新整理論文原稿後再試一次。`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`AI 審閱僅接受審閱指示。若要傳送註解、技能或附件,請啟動編輯任務。`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`AI 審閱僅會建立 PDF 註解,無法發布論文原稿變更。`,"AI review has no manuscript changes to apply.":`AI 審閱沒有可套用的論文原稿變更。`,"AI review has no manuscript changes to deliver.":`AI 審閱沒有可交付的論文原稿變更。`,"AI review uses manuscript PDF notes, not change decisions.":`AI 審閱使用的是論文原稿 PDF 註解,而非變更決定。`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`AI 審閱會使用論文原稿 PDF。若要傳送註解或附件,請啟動獨立的編輯任務。`,"Accepted changes are already in the manuscript.":`已接受的變更已在論文原稿中。`,"An AI review comment is invalid. Ask the reviewer to retry.":`AI 審閱意見無效。請要求審閱者重試。`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`AI 審閱意見的 PDF 行號順序顛倒。請要求審閱者將起始位置放在結束位置之前。`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`AI 審閱意見指向未知的 PDF 位置。請要求審閱者使用提供的行號 ID 重試。`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`AI 審閱意見跨越了多個 PDF 頁面。請要求審閱者將其固定在單一頁面上。`,"Another Papilot instance is already updating.":`另一個 Papilot 執行個體正在更新中。`,"Answer every question before submitting.":`送出前請回答所有問題。`,"Attachment not found.":`找不到附件。`,"Attachments must total 100 MB or less.":`附件總大小不得超過 100 MB。`,"Check for a newer release before updating.":`更新前請先檢查是否有較新的版本。`,"Check out a branch before pushing.":`推送前請先檢出分支。`,"Check the task status before pausing this turn.":`暫停此回合前,請先檢查任務狀態。`,"Check the task status before sending more instructions.":`傳送更多指示前,請先檢查任務狀態。`,"Choose Codex, Claude or GLM for AI review.":`請選擇 Codex、Claude 或 GLM 進行 AI 審閱。`,"Choose a ZIP smaller than 64 MB.":`請選擇小於 64 MB 的 ZIP 檔案。`,"Choose a file with a valid name.":`請選擇名稱有效的檔案。`,"Choose a folder smaller than 64 MB.":`請選擇小於 64 MB 的資料夾。`,"Choose a supported LaTeX engine.":`請選擇支援的 LaTeX 引擎。`,"Choose a valid update channel.":`請選擇有效的更新頻道。`,"Choose an available model for this agent.":`請為此智慧代理選擇可用的模型。`,"Choose an entry to confirm.":`請選擇要確認的項目。`,"Choose an existing TeX main file.":`請選擇現有的 TeX 主檔案。`,"Choose between 1 and 5,000 files.":`請選擇 1 到 5,000 個檔案。`,"Choose one folder or ZIP.":`請選擇一個資料夾或 ZIP 檔案。`,"Choose one of the offered answers.":`請從提供的選項中選擇一個答案。`,"Choose stage, unstage or revert.":`請選擇暫存、取消暫存或還原。`,"Choose whether to archive or restore the task.":`請選擇要封存或還原任務。`,"Claude Code did not list its models.":`Claude Code 未列出其模型。`,"Claude Code exited before listing its models.":`Claude Code 在列出模型前已結束。`,"Claude has not reported usage yet.":`Claude 尚未回報使用量。`,"Codex disconnected. Resume the task before retrying.":`Codex 已中斷連線。請先恢復任務再重試。`,"Codex is not connected.":`Codex 未連線。`,"Commit the task first, then push from Git.":`請先提交任務,再從 Git 推送。`,"Confirm permanent task deletion before continuing.":`繼續前請確認永久刪除任務。`,"Could not check for updates.":`無法檢查更新。`,"Could not check for updates. Try again when connected.":`無法檢查更新。請在連線後再試一次。`,"Could not complete the environment checks. Please try again.":`無法完成環境檢查,請再試一次。`,"Could not read the LaTeX installation.":`無法讀取 LaTeX 安裝環境。`,"Could not restart the background service.":`無法重新啟動背景服務。`,"Deletion is already in progress. Wait for it to finish.":`刪除作業已在進行中,請等待其完成。`,"Describe the revision, choose a skill, or add a PDF note.":`請說明修訂內容、選擇技能,或新增 PDF 註解。`,"Describe what to do with each selected color group.":`請說明如何處理每個所選的顏色群組。`,"Download desktop updates from GitHub Releases.":`請從 GitHub Releases 下載桌面版更新。`,"Enter a folder path.":`請輸入資料夾路徑。`,"Enter a paper name under 120 characters.":`請輸入 120 個字元以內的論文名稱。`,"Fast mode is not available for this model.":`此模型不支援快速模式。`,"Files must be 25 MB or smaller.":`檔案大小不得超過 25 MB。`,"Finish or abort the merge before committing other changes.":`請先完成或中止合併,再提交其他變更。`,"Finish or abort the merge before discarding changes.":`捨棄變更前,請先完成或中止合併。`,"Finish or abort the merge before staging other changes.":`請先完成或中止合併,再暫存其他變更。`,"Finish or abort the merge first.":`請先完成或中止合併。`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`接受、拒絕或復原變更前,請先在 Git 面板中完成或中止合併。`,"GLM does not report usage to Papilot.":`GLM 不會向 Papilot 回報使用量。`,"Group instructions must refer to selected PDF notes.":`群組指示必須參照所選的 PDF 註解。`,"Images must be 5 MB or smaller.":`圖片大小不得超過 5 MB。`,"Import not found.":`找不到匯入項目。`,"Invalid annotation group.":`無效的註解群組。`,"Invalid approval decision.":`核准決定無效。`,"Invalid development revision.":`無效的開發修訂版本。`,"Invalid development version.":`無效的開發版本。`,"Invalid diagnostic report.":`無效的診斷報告。`,"Invalid file path in upload.":`上傳內容中的檔案路徑無效。`,"Invalid file path.":`無效的檔案路徑。`,"Invalid model.":`無效的模型。`,"Invalid note location.":`無效的註解位置。`,"Invalid reasoning effort.":`無效的推理強度。`,"Invalid release information.":`無效的發行資訊。`,"Invalid release version.":`無效的發行版本。`,"Invalid save action.":`無效的儲存操作。`,"Invalid task ID.":`無效的任務 ID。`,"Invalid update activation.":`無效的更新啟用。`,"Invalid upload data.":`上傳資料無效。`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`請在其 AI 審閱任務中管理此建議,或先將其複製到論文原稿。`,"Missing update restart job.":`缺少更新重新啟動工作。`,"No file has conflict markers left. Commit the merge.":`所有檔案皆已無衝突標記,請提交合併。`,"No merge is in progress.":`目前沒有進行中的合併。`,"No such file.":`找不到此檔案。`,"None of the chosen files is build output that can be ignored.":`所選檔案皆非可忽略的建置輸出。`,"Not found":`找不到內容`,"Note not found.":`找不到註解。`,"Only the model and its settings can be changed.":`僅可變更模型及其設定。`,"Only the owner of this Papilot can do this.":`只有此 Papilot 的擁有者才能執行此操作。`,"Open Papilot at its public address.":`請透過公開位址開啟 Papilot。`,"Paper name is too long.":`論文名稱過長。`,"Paper project not found.":`找不到論文專案。`,"Papilot did not finish shutting down.":`Papilot 未完成關閉程序。`,"Papilot is restarting after an update. Please wait a moment.":`Papilot 更新後正在重新啟動,請稍候。`,"Papilot restarted. Retry compilation to continue this import.":`Papilot 已重新啟動。請重試編譯以繼續此匯入作業。`,"Pause Codex before building a review.":`建置審閱前請先暫停 Codex。`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`刪除任務前,請先暫停任務並等待其目前的工作或審閱動作完成。請先解決任何狀態未明的動作。`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`接受、拒絕或復原變更前,請先暫停任務,並等待所有 PDF 建置完成。`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`變更此論文的路徑或將其移除前,請先暫停其進行中的任務並等待目前的工作完成。請先解決任何狀態未明的動作。`,"Resolve the merge conflicts in the selected files before committing.":`提交前請先解決所選檔案中的合併衝突。`,"Restore this suggestion before copying it.":`複製此建議前請先將其還原。`,"Retry deletion to confirm this task was removed.":`請重試刪除以確認此任務已移除。`,"Retry the pending delivery before sending more instructions.":`傳送更多指示前,請先重試待處理的傳送作業。`,"Review resource not found.":`找不到審閱資源。`,"Select a folder containing the paper.":`請選擇包含論文的資料夾。`,"Select a valid paper to check.":`請選擇有效的論文以進行檢查。`,"Select a valid paper.":`請選擇有效的論文。`,"Select an existing review round and either the before or after PDF.":`請選擇現有的審閱輪次,以及修改前或修改後的 PDF。`,"Select at least one change.":`請至少選擇一項變更。`,"Select at least one changed file to commit.":`請至少選擇一個已變更的檔案以進行提交。`,"Select at least one changed file.":`請至少選擇一個已變更的檔案。`,"Select text or mark a region on the page first.":`請先在頁面上選取文字或標記區域。`,"Select the root directory of the Git repository.":`請選擇 Git 儲存庫的根目錄。`,"Select unsent PDF notes for this task.":`請為此任務選擇尚未傳送的 PDF 註解。`,"Select up to 10 valid attachments.":`請選擇最多 10 個有效的附件。`,"Select valid PDF notes for this task.":`請為此任務選擇有效的 PDF 註解。`,"Select valid review notes.":`請選擇有效的審閱註解。`,"Send attachments with a message, separately from review feedback.":`請隨訊息傳送附件,並與審閱意見分開傳送。`,"Service tiers are only available for Codex.":`服務等級僅適用於 Codex。`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`邀請他人前,請先將 PAPILOT_ACCOUNT_ORIGIN 設為公開網址。`,"Sign in to continue.":`請登入以繼續。`,"Sign-in is not set up on this Papilot.":`此 Papilot 尚未設定登入功能。`,"Stage at least one change to commit.":`請至少暫存一項變更以進行提交。`,"Stage at least one change.":`請至少暫存一項變更。`,"Start a new task to run the AI review skill on the current PDF.":`請啟動新任務,對目前的 PDF 執行 AI 審閱技能。`,"Start or resume the thread before starting a turn.":`開始新回合前,請先啟動或恢復討論串。`,"Task not found.":`找不到任務。`,"That file has no uncommitted changes.":`該檔案沒有未提交的變更。`,"That page is not part of the manuscript.":`該頁面不屬於論文原稿的一部分。`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`AI 審閱未回傳有效的註解。請要求它以所需的 JSON 格式重試。`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`AI 審閱回應不完整或過長。請要求審閱者重試。`,"The PDF copy for this review is unavailable. Start a new AI review.":`無法取得此審閱的 PDF 副本。請開始新的 AI 審閱。`,"The PDF is building. Wait for this build to finish.":`正在建置 PDF,請等待此次建置完成。`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`無法取得此審閱的 PDF 快照。請開始新的 AI 審閱。`,"The ZIP expands beyond 64 MB or 5,000 files.":`ZIP 檔案解壓縮後超過 64 MB 或 5,000 個檔案。`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`開發建置需要至少 2 GB 的可用磁碟空間。請釋放空間後重試。`,"The development checkout does not match the requested commit.":`開發檢出內容與要求的提交不符。`,"The development checkout does not match the requested version.":`開發檢出內容與要求的版本不符。`,"The downloaded package does not match the requested release.":`下載的套件與要求的發行版本不符。`,"The downloaded release is incomplete.":`下載的發行版本不完整。`,"The manuscript changed while copying this suggestion. Try again.":`複製此建議時論文原稿已發生變更。請再試一次。`,"The new version could not be installed. Check the connection and available disk space, then retry.":`無法安裝新版本。請檢查連線與可用磁碟空間,然後再試一次。`,"The new version did not pass its startup check. Your current version is still running.":`新版本未通過啟動檢查。目前版本仍在執行中。`,"The new version did not restart successfully.":`新版本未能成功重新啟動。`,"The owner cannot be removed.":`無法移除擁有者。`,"The owner sees every paper.":`擁有者可查看所有論文。`,"The paper configuration must contain a JSON object.":`論文設定必須包含 JSON 物件。`,"The paper configuration must not be a symbolic link.":`論文設定不得為符號連結。`,"The passkey could not be created. Try again.":`無法建立通行密鑰。請再試一次。`,"The request origin does not match.":`請求來源不相符。`,"The review action is still being checked. Wait for it to finish.":`正在檢查審閱動作,請等待檢查完成。`,"The review could not be loaded. Try again.":`無法載入審閱。請再試一次。`,"The review engine could not confirm this action. Check again when it is available.":`審閱引擎無法確認此動作。請在引擎可用時再次檢查。`,"The review engine could not confirm this action. Select Check status before continuing.":`審閱引擎無法確認此操作。繼續前請先選取「檢查狀態」。`,"The review engine could not confirm this task’s cleanup status.":`審閱引擎無法確認此任務的清理狀態。`,"The review engine did not confirm task deletion.":`審閱引擎未確認任務刪除。`,"The review engine returned an unexpected response. Select Check status before continuing.":`審閱引擎回傳非預期的回應。繼續前請先選取「檢查狀態」。`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`所選儲存庫不包含此論文的任務工作樹。請選擇包含現有任務的儲存庫,或將其作為獨立論文加入。`,"The server is shutting down.":`伺服器正在關閉。`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`伺服器重新啟動並中斷了上一輪對話。請在同一對話中繼續。`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`伺服器在審閱操作確認前重新啟動。繼續前請先選擇「檢查狀態」。`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`伺服器在刪除期間重新啟動。請重試刪除以確認清理完成。`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`伺服器在建置 PDF 期間重新啟動。請檢查審閱,並視需要重新建置。`,"The task was paused before these instructions were queued. Your draft has been kept.":`系統在這些指示加入佇列前已暫停任務。您的草稿已保留。`,"The update download timed out.":`更新下載逾時。`,"The update restart helper did not start.":`更新重啟輔助程式未能啟動。`,"The update was interrupted. Your current installation is still available; retry the update.":`更新已中斷。您目前的安裝仍可使用;請重試更新。`,"There is no compilation log yet.":`目前尚無編譯紀錄。`,"There is no new review feedback to send.":`沒有新的審閱回饋可傳送。`,"This PDF has no selectable text to review.":`此 PDF 沒有可供審閱的選取文字。`,"This PDF is too long for one AI review (180,000 characters maximum).":`此 PDF 過長,無法在單次 AI 審閱中處理(上限為 180,000 個字元)。`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`此位址僅供您的 tailnet 使用。外部人員請於 PAPILOT_ACCOUNT_ORIGIN 登入。`,"This agent does not report usage.":`此智慧代理不會回報使用量。`,"This attachment is already being sent to another task.":`此附件正傳送至另一個任務。`,"This attachment is not available for this task.":`此附件無法用於此任務。`,"This branch does not track a remote branch yet.":`此分支尚未追蹤遠端分支。`,"This comparison is out of date. Refresh the page.":`此比較內容已過時。請重新整理頁面。`,"This device is no longer signed in.":`此裝置已登出。`,"This entry is no longer among the changes. Refresh the page.":`此項目已不在變更列表中。請重新整理頁面。`,"This entry is no longer in the bibliography. Refresh the panel.":`此條目已不在參考文獻中。請重新整理面板。`,"This file is empty.":`此檔案為空。`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`此資料夾屬於上層 Git 儲存庫。請選擇其根資料夾,或上傳副本。`,"This image format is not supported.":`不支援此圖片格式。`,"This invite link has expired or was already used. Ask for a new one.":`此邀請連結已過期或已使用。請索取新的連結。`,"This manuscript preview is out of date. Refresh it and try again.":`此論文原稿預覽已過期。請重新整理後再試一次。`,"This model does not support that reasoning effort.":`此模型不支援該推理強度。`,"This note has already been sent.":`此註解已傳送。`,"This note has been deleted. Undo the deletion first.":`此註解已刪除。請先復原刪除操作。`,"This note is being sent. Wait for the task to finish creating.":`正在傳送此註解。請等待任務建立完成。`,"This page has expired. Refresh it and try again.":`此頁面已過期。請重新整理後再試一次。`,"This paper is already added. Open it from the paper list.":`此論文已新增。請從論文清單中開啟。`,"This paper is being updated. Please retry in a moment.":`此論文正在更新中,請稍後再試。`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`無法在目前的論文原稿中可靠地找到此段落。該建議仍保留在審閱任務中。`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`無法使用此通行密鑰登入。如果密鑰已遭移除,請向擁有者索取新的邀請。`,"This person is no longer in Papilot.":`此人員已不在 Papilot 中。`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`此儲存庫尚無提交記錄。請先提交一次,以便日後在 PDF 中比較變更。`,"This repository has no remote.":`此儲存庫沒有遠端儲存庫。`,"This repository is already added as another paper.":`此儲存庫已作為另一篇論文加入。`,"This request ID is already in use by another task.":`此請求 ID 已由另一個任務使用。`,"This request has ended or the connection has restarted.":`此請求已結束或連線已重新啟動。`,"This request has ended.":`此請求已結束。`,"This review page has expired. Refresh it and try again.":`此審閱頁面已過期。請重新整理後再試一次。`,"This review task does not belong to this workspace.":`此審閱任務不屬於此工作區。`,"This suggestion does not belong to this review task.":`此建議不屬於此審閱任務。`,"This suggestion was ignored while copying. Restore it first.":`此建議在複製時已被略過。請先將其還原。`,"This task already applies accepted changes to the working directory.":`此任務已將接受的變更套用至工作目錄。`,"This task already has queued instructions. Wait or pause it first.":`此任務已有排隊中的指示。請先等待或暫停任務。`,"This task has no accepted changes left to commit.":`此任務已無剩餘的已接受變更可供提交。`,"This task is being created. Refresh in a moment.":`正在建立此任務,請稍後重新整理。`,"This task is being deleted.":`正在刪除此任務。`,"This task is being deleted. Retry deletion to finish cleanup.":`正在刪除此任務。請重試刪除以完成清理。`,"This task is being deleted. Your instructions were not queued.":`正在刪除此任務,您的指示未加入佇列。`,"This task is busy. Wait for it to finish or pause it first.":`此任務忙碌中。請等待任務完成或先將其暫停。`,"This task is not an AI review.":`此任務不是 AI 審閱。`,"This task was deleted. Create a new task instead.":`此任務已刪除,請改為建立新任務。`,"Too many attempts. Wait a minute and try again.":`嘗試次數過多。請稍候一分鐘再試。`,"Too many open Papilot tabs. Close one and try again.":`開啟的 Papilot 分頁過多。請關閉其中一個後再試一次。`,"Unknown Git action.":`未知的 Git 操作。`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`未使用的附件已達 500 MB。上傳更多檔案前,請先從草稿中移除附件。`,"Upload a file as binary data.":`請以二進位資料格式上傳檔案。`,"Wait for repository preparation to finish.":`請等待儲存庫準備完成。`,"Wait for task creation to finish before deleting it.":`刪除任務前,請先等待任務建立完成。`,"Wait for the current Git operation before sending more instructions.":`傳送更多指示前,請先等待目前的 Git 作業完成。`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`請等待目前的 PDF 編譯完成後,再執行 AI 審閱技能。`,"Wait for the current delivery before sending more instructions.":`傳送更多指示前,請先等待目前的傳送作業完成。`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`請等待目前的論文原稿 PDF 編譯完成,然後再重新複製建議。`,"Wait for the current review action before building a review.":`建置審閱前請先等待目前的審閱動作完成。`,"Wait for the current review action before committing.":`提交前請先等待目前的審閱動作完成。`,"Wait for the current update to finish before changing channels.":`請等待目前的更新完成後再切換頻道。`,"Wait for the task and review actions to finish before applying changes.":`請等待任務與審閱操作完成後再套用變更。`,"Wait for the task and review actions to finish before choosing a destination.":`選擇目標位置前,請先等待任務與審閱動作完成。`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`請等待此論文的 PDF 建置完成後,再變更其路徑或將其移除。`,"ZIP links and special files are not supported.":`不支援 ZIP 連結與特殊檔案。`,"npm is unavailable to Papilot.":`Papilot 無法使用 npm。`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`暫時無法連線至 PDF 比較服務。修改已儲存,請選擇「檢查狀態」恢復原來的建置。`},ee={", ":`、`,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`パッケージ、フォント、またはソースファイルが不足している可能性があります。以下の詳細を確認し、不足しているファイルを復元するか、サポートを依頼してください。`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`パスキーを使用すると、Face ID、Touch ID、Windows Hello、またはスマートフォンでサインインできます。Papilotがパスワードを取得することはありません。`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`同じIDのスキルがある場合、この論文、グローバル、組み込みの順で優先されます。`,"A skill with this ID already exists in this location.":`この場所には同じIDのスキルがすでに存在します。`,"A task needs attention":`確認が必要なタスクがあります`,"A workspace for your papers.":`論文執筆のためのワークスペース。`,"AI is resolving conflicts…":`AIが競合を解決しています…`,"AI needs your input":`AIが入力を求めています`,"AI review":`AIレビュー`,"AI suggestion":`AIの提案`,"AI suggestion {n}":`AIの提案 {n}`,"AI suggestions":`AIの提案`,"Abort merge":`マージを中止`,"Aborting…":`中止しています…`,"About Papilot":`Papilotについて`,Accent:`アクセント`,"Accept change":`変更を承認`,"Accept the current proposal. In Changes, stage or unstage it.":`現在の提案を承認します。「変更」では、ステージングまたはステージング解除を行います。`,Accepted:`承認済み`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`原稿内の承認済みの変更はそのまま残ります。他のタスクには影響しません。`,"Access to all papers":`すべての論文へのアクセス`,Account:`アカウント`,"Add a paper":`論文を追加`,"Add a passkey":`パスキーを追加`,"Add all to task":`すべてタスクに追加`,"Add and fix later":`追加して後で修正`,"Add files or skills":`ファイルまたはスキルを追加`,"Add files…":`ファイルを追加…`,"Add instructions to the selected color groups above.":`上で選択したカラーグループに指示を追加してください。`,"Add note":`注釈を追加`,"Add overall instructions (optional)":`全体の指示を追加(任意)`,"Add paper":`論文を追加`,"Add paper…":`論文を追加…`,"Add skill":`スキルを追加`,"Add to .gitignore":`.gitignore に追加`,"Add to group":`グループに追加`,"Add to {group}":`{group} に追加`,"Add your first paper":`最初の論文を追加`,Added:`追加済み`,"Added to task: {n}":`タスクに追加済み: {n}`,"Added {n} pattern to .gitignore.":`{n} 件のパターンを .gitignore に追加しました。`,"Added {n} patterns to .gitignore.":`{n} 件のパターンを .gitignore に追加しました。`,"Address reviewers":`査読者への対応`,"Address {n} PDF notes":`{n} 件のPDF注釈に対応`,Advanced:`詳細設定`,"Agent configuration":`エージェントの構成`,"Agent settings":`エージェント設定`,Agents:`エージェント`,All:`すべて`,"All entries":`すべてのエントリ`,"All skills":`すべてのスキル`,"Allow this action":`この操作を許可`,"Already set up?":`設定済みですか?`,"Already used for {action}. Choose another shortcut.":`すでに「{action}」で使用されています。別のショートカットを選択してください。`,"Always light":`常にライト`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`新しいターミナルで設定した環境変数は、すでに実行中のサーバーには反映されません。認証情報を設定した状態でPapilotを再起動してください。再接続だけでは環境変数は変更されません。`,"Annotation group color":`注釈グループの色`,"Annotation groups":`注釈グループ`,"Another entry has the same key.":`別のエントリに同じキーが存在します。`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravityはファイルツール経由で画像を開きます。画像を直接入力するには、CodexまたはClaudeを選択してください。`,Appearance:`外観`,Application:`アプリケーション`,"Applied to manuscript":`原稿に適用済み`,Apply:`適用`,"Apply file changes":`ファイルの変更を適用`,"Apply to working directory":`作業ディレクトリに適用`,"Apply to workspace":`ワークスペースに適用`,"Apply without committing":`コミットせずに適用`,"Applying…":`適用中…`,"Approval requests":`承認リクエスト`,"Approve this action":`この操作を承認`,Archive:`アーカイブ`,"Archive task":`タスクをアーカイブ`,"Archived task":`アーカイブ済みのタスク`,"Archived tasks":`アーカイブ済みのタスク`,"Ask a question or request changes…":`質問や変更のリクエストを入力…`,"Ask an agent to look into {n} problem":`{n} 件の問題の調査をエージェントに依頼`,"Ask an agent to look into {n} problems":`{n} 件の問題の調査をエージェントに依頼`,"Ask for another review of this PDF version…":`このPDFバージョンの再レビューを依頼…`,"Attach up to 10 files per message.":`1つのメッセージにつき最大10個のファイルを添付できます。`,Attachments:`添付ファイル`,"Attachments must total 100 MB or less.":`添付ファイルの合計サイズは100 MB以下にしてください。`,Authors:`著者`,"Available levels depend on the selected model.":`利用可能なレベルは選択したモデルによって異なります。`,"Available models":`利用可能なモデル`,"Awaiting changes":`変更を待機中`,Background:`背景`,"Bare repository":`ベアリポジトリ`,"BibTeX cannot read it ({error}).":`BibTeX で読み込めません ({error})。`,"BibTeX cannot read it: {error}":`BibTeX で読み込めません: {error}`,Book:`本`,Branch:`ブランチ`,"Bring your collaborators in":`共同執筆者を招待`,"Browser default ({language})":`ブラウザーのデフォルト ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`ブラウザーの通知は HTTPS または localhost でのみ表示されます。通知を使用するには、安全なアドレスで Papilot を開いてください。`,"Build failed · sent to {agent}":`ビルド失敗 · {agent} に送信済み`,"Built-in":`組み込み`,Cancel:`キャンセル`,"Change shortcut: {action}":`ショートカットを変更: {action}`,"Change {n}":`変更 {n}`,"Changed files in {branch}":`{branch} の変更されたファイル`,Changelog:`変更履歴`,Changes:`変更`,"Changes apply to the next turn.":`変更は次のターンから適用されます。`,"Changes in {path}":`{path} の変更`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`「変更箇所」は変更されたセクションのみを表示し、最も速く開きます。「PDF」は論文全体の該当箇所に各変更を表示するため、長い論文では時間がかかります。レビュー内の切り替えは、そのレビューにのみ適用されます。`,"Change…":`変更…`,Chart:`グラフ`,Chat:`チャット`,"Chat (reply needed)":`チャット (返信が必要)`,"Chat only":`チャットのみ`,"Check again":`再確認`,"Check for updates":`アップデートを確認`,"Check for updates to see the latest version.":`アップデートを確認して最新バージョンをチェックします。`,"Check math":`数式をチェック`,"Check online":`オンラインで確認`,"Check references online":`参考文献をオンラインで確認`,"Check status":`ステータスを確認`,"Check task status":`タスクのステータスを確認`,"Check task status before deleting this task.":`このタスクを削除する前に、タスクのステータスを確認してください。`,"Check task status before sending":`送信前にタスクのステータスを確認してください`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`上記の接続エラーと、このホストでのエージェントのログイン、プロバイダー、ネットワーク設定を確認してください。認証情報や実行ファイルのパスを変更した後は、Papilot を再起動してください。`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`メインファイルとエンジンを確認するか、アシスタントにコンパイルの修正を依頼してください。保存されたファイルを編集して再試行することもできます。`,"Check the task status before sending notes.":`注釈を送信する前に、タスクのステータスを確認してください。`,"Check your connection and try again.":`接続を確認して、もう一度お試しください。`,"Check {n} more online":`さらに {n} 件をオンラインで確認`,"Checked by you":`確認済み`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`原稿の変更を確認しています。PDF の比較は必要な場合にのみ生成されます。`,"Checking for updates…":`アップデートを確認中…`,"Checking {n}…":`{n} 件を確認中…`,"Checking…":`確認中…`,Checklist:`チェックリスト`,"Choose ZIP":`ZIP を選択`,"Choose a folder or ZIP, or drag it here.":`フォルダまたはZIPを選択するか、ここにドラッグしてください。`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`フォルダを選択してコピーをアップロードします。元のファイルをそのまま使用するには、デスクトップアプリで開いてください。`,"Choose a shortcut to edit:":`編集するショートカットを選択:`,"Choose an icon":`アイコンを選択`,"Choose attachments":`添付ファイルを選択`,"Choose different files":`別のファイルを選択`,"Choose folder":`フォルダを選択`,"Choose how paper pages look in dark mode.":`ダークモードでの論文ページの表示方法を選択します。`,"Choose the papers to share, then send a personal invite link.":`共有する論文を選択し、個別の招待リンクを送信します。`,"Choose up to 5,000 files, totaling less than 64 MB.":`合計64 MB未満、最大5,000個のファイルを選択してください。`,"Choose {color} color":`{color}の色を選択`,"Citations, entries and their records":`引用、エントリー、およびそのレコード`,"Cited {n} time: {places}":`1 回引用 ({n}): {places}`,"Cited {n} times: {places}":`{n} 回引用: {places}`,"Claude Code or API credentials were not detected.":`Claude Code または API の認証情報が検出されませんでした。`,"Clear selection":`選択を解除`,"Clear task search":`タスク検索をクリア`,"Click a highlighted key to customize it.":`強調表示されたキーをクリックしてカスタマイズします。`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`変更するキーをクリックし、新しいショートカットを押してください。Escape でキャンセル、Backspace でクリアします。`,Close:`閉じる`,"Close agent details":`エージェントの詳細を閉じる`,"Close note":`注釈を閉じる`,"Close notes":`複数の注釈を閉じる`,"Close review notes":`レビューの注釈を閉じる`,"Close search":`検索を閉じる`,"Close suggestion":`提案を閉じる`,"Close task list":`タスクリストを閉じる`,"Close the current editor or cancel region selection.":`現在のエディターを閉じるか、範囲選択をキャンセルします。`,"Close window":`ウィンドウを閉じる`,"Closest record":`最も近いレコード`,Code:`コード`,"Collapse manuscript panel":`原稿パネルを折りたたむ`,"Collapse {group} notes":`{group} の注釈を折りたたむ`,Color:`色`,Comments:`コメント`,Commit:`コミット`,"Commit 1 file":`1 個のファイルをコミット`,"Commit all {n} files":`全 {n} 個のファイルをコミット`,"Commit and push":`コミットしてプッシュ`,"Commit graph":`コミットグラフ`,"Commit merge":`マージをコミット`,"Commit message":`コミットメッセージ`,"Commit staged changes in 1 file":`1 個のファイルのステージ済み変更をコミット`,"Commit staged changes in {n} files":`{n} 個のファイルのステージ済み変更をコミット`,"Commit to manuscript":`原稿にコミット`,"Commit to task branch":`タスクブランチにコミット`,"Commit to {branch}":`{branch}にコミット`,"Commit together":`まとめてコミット`,"Commit what is staged":`ステージ済みの変更をコミット`,"Commit {chosen} of {n} files":`{n} 個中 {chosen} 個のファイルをコミット`,Committed:`コミット済み`,"Committed and pushed":`コミット・プッシュ済み`,"Committed {hash} and pushed.":`{hash} をコミットしてプッシュしました。`,"Committed {hash} to {branch}":`{hash} を {branch} にコミットしました`,"Committed {hash}.":`{hash} をコミットしました。`,"Committing and pushing…":`コミットしてプッシュ中…`,"Committing…":`コミット中…`,"Commit…":`コミット…`,"Compared with {upstream}":`{upstream} との比較`,"Compilation details":`コンパイルの詳細`,"Compilation failed. Click to retry.":`コンパイルに失敗しました。クリックして再試行します。`,"Compilation log":`コンパイルログ`,"Compilation problems":`コンパイルの問題`,"Compilation status unavailable.":`コンパイル状態を取得できません。`,"Compiling the PDF…":`PDF をコンパイル中…`,Completed:`完了`,"Component source":`コンポーネントのソース`,"Confirm and apply":`確認して適用`,"Confirm and commit":`確認してコミット`,"Confirm whether the task is still running before generating a PDF comparison.":`PDF の比較を生成する前に、タスクがまだ実行中かどうかを確認してください。`,Conflict:`競合`,"Conflict resolution paused":`競合の解決を一時停止中`,"Conflicts resolved. Read the diffs, then commit the merge.":`競合を解決しました。差分を確認してからマージをコミットしてください。`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`公開 HTTPS アドレスを接続して、論文にメンバーを招待できます。招待された人はパスキーで安全にサインインできます。`,"Connect an assistant in Settings to help repair this paper.":`この論文の修復を支援するため、設定でアシスタントを接続してください。`,"Connect and sign in to load the model list.":`接続してサインインするとモデル一覧を読み込めます。`,"Connect to view account, models, and usage.":`接続してアカウント、モデル、使用量を表示します。`,Connected:`接続済み`,"Connecting to your papers and tasks…":`論文とタスクに接続中…`,"Connecting to {agent}…":`{agent} に接続中…`,"Connecting…":`接続中…`,"Connection details":`接続の詳細`,"Connection lost. Showing the last update; your draft is kept.":`接続が切断されました。最新の更新を表示しています。下書きは保持されます。`,Consistency:`表記統一`,Contents:`目次`,"Contents will appear when the PDF is ready.":`PDF の準備ができると目次が表示されます。`,"Continue later":`後で続ける`,Contribute:`コントリビュート`,"Contribute an integration":`連携機能をコントリビュート`,Copied:`コピーしました`,"Copied path":`パスをコピーしました`,Copy:`コピー`,"Copy and edit":`コピーして編集`,"Copy message":`メッセージをコピー`,"Copy path: {path}":`パスをコピー: {path}`,"Copy selected PDF text":`選択した PDF テキストをコピー`,"Copy this built-in skill to customize it for all papers or this paper.":`この組み込みスキルをコピーして、すべての論文またはこの論文向けにカスタマイズします。`,"Could not check":`確認できませんでした`,"Could not check for updates":`アップデートを確認できませんでした`,"Could not check for updates. Try again when connected.":`アップデートを確認できませんでした。接続時に再試行してください。`,"Could not complete the environment checks. Check the connection and try again.":`環境チェックを完了できませんでした。接続を確認して再試行してください。`,"Could not detect a main file. Enter its path relative to the paper folder.":`メインファイルを検出できませんでした。論文フォルダからの相対パスを入力してください。`,"Could not generate the PDF comparison.":`PDF の比較を生成できませんでした。`,"Could not load the license notices.":`ライセンス表記を読み込めませんでした。`,"Could not prepare the paper":`論文を準備できませんでした`,"Could not read the LaTeX installation. Try again.":`LaTeX のインストール環境を読み取れませんでした。再試行してください。`,"Could not read the selected file.":`選択したファイルを読み取れませんでした。`,"Could not read this worktree.":`この作業ツリーを読み取れませんでした。`,"Could not reconnect. Check the server connection and try again.":`再接続できませんでした。サーバー接続を確認して再試行してください。`,"Could not refresh the repository.":`リポジトリを更新できませんでした。`,"Could not start the update. Please retry.":`アップデートを開始できませんでした。再試行してください。`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Cursor ダッシュボードで Cursor API キーを作成するか、このホストで Cursor SDK ログインを設定してください。`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Zhipu または Z.ai で GLM Coding Plan または API キーを作成してください。`,"Create a passkey":`パスキーを作成`,"Create a passkey on this device to sign in as {name}.":`このデバイスでパスキーを作成して {name} としてサインインします。`,"Create a passkey to sign in to your Papilot from anywhere.":`パスキーを作成すると、どこからでもお使いの Papilot にサインインできます。`,"Create invite link":`招待リンクを作成`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`パスキーの作成がキャンセルされました。リンクは引き続き有効です。準備ができたら再試行してください。`,"Creating…":`作成中…`,"Credits available":`利用可能なクレジット`,Current:`現在`,"Current version":`現在のバージョン`,"Cursor SDK credentials were not detected.":`Cursor SDK の認証情報が検出されませんでした。`,"Customize shortcuts":`ショートカットをカスタマイズ`,Customized:`カスタマイズ済み`,"Cut length without losing content":`内容を損なわずに文章を短縮`,"Daily limit":`1日の上限`,Dark:`ダーク`,Decline:`却下`,Declined:`却下済み`,Default:`デフォルト`,"Default model":`デフォルトモデル`,"Default reasoning effort":`デフォルトの推論レベル`,"Delete file":`ファイルを削除`,"Delete note":`注釈を削除`,"Delete note {n}":`注釈 {n} を削除`,"Delete review note {n}":`レビュー注釈 {n} を削除`,"Delete skill":`スキルを削除`,"Delete task":`タスクを削除`,"Delete task?":`タスクを削除しますか?`,"Delete task…":`タスクを削除…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`このスキルを削除しますか?Markdown ファイルのみが削除され、関連ファイルはそのまま残ります。`,"Delete {name}?":`{name} を削除しますか?`,Deleted:`削除済み`,"Deleting task":`タスクを削除中`,"Deleting…":`削除中…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`削除はすでに開始されています。再試行してクリーンアップを確定し、タスクを削除してください。`,"Deletion is in progress":`削除処理が進行中です`,"Describe the revision":`改訂内容を説明`,"Describe what the agent should do, what to preserve, and how to present the result.":`エージェントが実行すべき内容、維持すべき要素、および結果の提示方法を記述してください。`,Description:`説明`,"Details (optional)":`詳細(任意)`,"Detect again":`再検出`,"Detecting LaTeX installation…":`LaTeX のインストールを検出中…`,"Dev (GitHub main)":`開発版 (GitHub main)`,Differs:`差異あり`,"Discard all changes":`すべての変更を破棄`,"Discard changes":`変更を破棄`,"Discard changes in {name}?":`{name} の変更を破棄しますか?`,"Discard changes in {n} file?":`{n} 個のファイルの変更を破棄しますか?`,"Discard changes in {n} files?":`{n} 個のファイルの変更を破棄しますか?`,"Discard changes in {path}":`{path} の変更を破棄`,"Discard unsaved skill changes?":`未保存のスキルの変更を破棄しますか?`,"Discarded changes in {n} file.":`{n} 個のファイルの変更を破棄しました。`,"Discarded changes in {n} files.":`{n} 個のファイルの変更を破棄しました。`,"Dismiss error":`エラーを閉じる`,Distribution:`ディストリビューション`,"Download desktop updates":`デスクトップ版のアップデートをダウンロード`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`お使いのシステム向けの最新デスクトップアプリをGitHub Releasesからダウンロードしてください。既存の論文と設定はそのまま保持されます。`,"Downloading and building the selected GitHub commit…":`選択された GitHub コミットをダウンロードしてビルド中…`,"Downloading and checking the new version…":`新しいバージョンをダウンロードして確認中…`,"Drag to resize · Double-click to reset":`ドラッグしてサイズ変更 · ダブルクリックでリセット`,"Drop files to attach":`ファイルをドロップして添付`,"Drop one folder or LaTeX ZIP file.":`1つのフォルダまたはLaTeXのZIPファイルをドロップしてください。`,"Early updates from GitHub main. May be less stable.":`GitHub main からの早期アップデートです。動作が不安定な場合があります。`,Edit:`編集`,"Edit note":`注釈を編集`,"Edit note {n}":`注釈 {n} を編集`,"Edit note {n}: {comment}":`注釈 {n} を編集: {comment}`,"Edit paper":`論文を編集`,"Edit {name}":`{name} を編集`,"Edited {file}":`{file} を編集しました`,"Edited {n} files":`{n} 個のファイルを編集しました`,"Editing dark mode colors. Changes are saved automatically.":`ダークモードの配色を編集中です。変更は自動的に保存されます。`,"Editing light mode colors. Changes are saved automatically.":`ライトモードの配色を編集中です。変更は自動的に保存されます。`,"Enable shortcut: {action}":`ショートカットを有効化: {action}`,"Enter a folder path":`フォルダのパスを入力`,"Environment variable":`環境変数`,Errors:`エラー`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`目次や参照番号など、他の箇所への変更も展開します。デフォルトではオフですが、マクロ定義など変更元に直接の表示変化がない編集については、その影響が表示されます。`,"Expand indirect changes":`間接的な変更を展開`,"Expand manuscript panel":`原稿パネルを展開`,"Expand {group} notes":`{group}の注釈を展開`,Failed:`失敗`,Fast:`高速`,"Fast mode":`高速モード`,"Faster responses; may use more of your limit.":`応答が速くなりますが、利用上限をより多く消費する場合があります。`,"Feedback & issues":`フィードバックと問題の報告`,"Fetch from the remote":`リモートからフェッチ`,"Files must be 25 MB or smaller.":`ファイルサイズは 25 MB 以下である必要があります。`,"Files on disk, Git history and task worktrees will stay in place.":`ディスク上のファイル、Git 履歴、およびタスクの作業ツリーはそのまま残ります。`,"Files received":`受信したファイル`,"Find (⌘F)":`検索 (⌘F)`,"Find errors in notation, equations and proofs":`記法、数式、証明の誤りを検出`,"Find in PDF":`PDF 内を検索`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`これらの参考文献の問題について原因を調査し、報告してください。ファイルは編集しないでください。各項目について、該当する文献が実在するか、またその出版記録(著者、タイトル、出版年、発表媒体、DOI)がどうなっているかを確認し、.bib および .tex ファイルの Git 履歴からそのエントリや引用がどこから来たのかを特定した上で、改善案を提示してください。情報源で確認できた事実と推測とを明確に区別して記載してください。`,"Fit page":`ページに合わせる`,"Fit width":`幅に合わせる`,"Fix LaTeX warnings":`LaTeX の警告を修正`,"Fix typos, grammar and punctuation without rewording":`表現を変えずに誤字・文法・句読点を修正します`,"Fix with an agent…":`エージェントで修正…`,"Folder path":`フォルダーのパス`,"Follow mode":`追従モード`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`代わりに SDK を使用する場合は、ANTHROPIC_API_KEY または対応しているクラウドプロバイダーを設定した状態で Papilot を起動してください。環境を変更した後は Papilot を再起動してください。`,Foreground:`前面表示`,"Full PDF":`PDF 全体`,General:`一般`,"Generate PDF comparison":`PDF の差分を生成`,"Generate commit message":`コミットメッセージを生成`,"Generate task title":`タスクのタイトルを生成`,"Generating task title…":`タスクのタイトルを生成中…`,"Get started and make Papilot your own.":`まずは使い始めて、Papilot を自分好みにカスタマイズしましょう。`,"Git status":`Git ステータス`,"Git status of the manuscript":`原稿の Git ステータス`,"Git, {n} changed":`Git、{n} 件の変更`,"GitHub repository":`GitHub リポジトリ`,"Give your skill a name":`スキルの名前を入力してください`,Global:`グローバル`,Globe:`地球`,Graphite:`グラファイト`,Green:`緑`,"Help fix compilation":`コンパイルの修正を手伝う`,"Help improve Papilot with code, docs, and ideas.":`コード、ドキュメント、アイデアで Papilot の改善にご協力ください。`,"Hide task list":`タスク一覧を非表示`,"Highlighted in {group}":`{group}でハイライト済み`,"Hover over a highlighted key to see what it does.":`ハイライトされたキーにカーソルを合わせると、その機能が表示されます。`,"I checked it myself":`自分で確認済み`,Idea:`アイデア`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`すでにインストールされている場合は、Papilot を起動する環境で {variable} に実行ファイルのパスを設定し、Papilot を再起動してください。`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`ライブステータスがチェック結果と一致しない場合は、エージェントを設定したのと同じユーザーおよび環境で Papilot を再起動してください。`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`タスクによって原稿が変更されると、ここに PDF の差分が表示されます。変更がない場合は、チャットで回答を確認してください。`,Ignore:`無視`,"Ignore suggestion {n}":`提案 {n} を無視`,"Images must be 5 MB or smaller.":`画像は 5 MB 以下にする必要があります。`,"Import a ZIP":`ZIPをインポート`,"Import a separate copy from Overleaf or a ZIP archive.":`OverleafまたはZIPアーカイブから別のコピーをインポートします。`,"Import progress":`インポートの進行状況`,"Improve clarity and flow, keeping the meaning":`意味を保ちながら明確さと流れを改善します`,"Include note {n} in this task":`このタスクに注釈 {n} を含める`,"Include suggestion {n} in this task":`このタスクに提案 {n} を含める`,"Include {key} in the task":`タスクに {key} を含める`,"Individual notes":`個別の注釈`,"Input needed":`入力が必要`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Papilot を実行しているコンピューターに latexmk を含む TeX Live または MacTeX をインストールしてから、再試行してください。`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`新しいバージョンをインストールし、タスクの待機中に自動で再起動します。論文、タスク、設定はそのまま保持されます。`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Papilot を実行しているホストに {command} をインストールし、以下でログインまたはプロバイダーの設定を完了してください。`,"Installation & setup":`インストールとセットアップ`,"Installation check":`インストール確認`,"Installation location":`インストール場所`,Instructions:`指示`,"Instructions for color groups":`色グループへの指示`,"Instructions for {agent}":`{agent} への指示`,"Instructions for {group} notes":`{group}の注釈への指示`,"Invite link for a new device":`新しいデバイス用の招待リンク`,"Invite link for {name}":`{name} 用の招待リンク`,"Invite someone":`メンバーを招待`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`招待されたユーザーは、認証情報や未共有の論文を含む、Papilot が読み取れるすべてのファイルにアクセスできます。`,"Invited, not joined yet":`招待済み(未参加)`,"Join Papilot":`Papilot に参加`,Joined:`参加済み`,"Jump to the next change that still needs a decision.":`判断が必要な次の変更箇所へ移動します。`,"Keep editing":`編集を続ける`,"Keep latest wording and apply":`最新の表現を保持して適用`,"Keep latest wording and commit":`最新の表現を保持してコミット`,"Keep on manuscript":`原稿に残す`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`重複する箇所では最新の表現を保持し、その他の承認した変更を保存します。`,"Kept on manuscript":`原稿に保持済み`,"Keyboard key {key}: {actions}":`キーボードの {key} キー: {actions}`,"Keyboard shortcuts":`キーボードショートカット`,"LaTeX Git repository · Requires a commit and latexmk":`LaTeX Git リポジトリ · コミットと latexmk が必要です`,"LaTeX engine":`LaTeX エンジン`,"LaTeX installation":`LaTeX のインストール環境`,"Label defined more than once":`ラベルが複数回定義されています`,Language:`言語`,"Language for the Papilot interface.":`Papilot インターフェースの表示言語。`,"Last active {time}":`最終アクティブ: {time}`,Later:`後で`,"Latest messages":`最新のメッセージ`,"Latest version":`最新バージョン`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Papilot とそのレビューエンジンで使用されているライブラリおよびフォントです。各コンポーネントにはそれぞれのライセンスが適用されます。`,"Libraries, fonts, and the people behind them.":`ライブラリ、フォント、およびその開発者について。`,"License text is not included in this package. See the component source for its terms.":`このパッケージにはライセンス本文が含まれていません。利用規約については各コンポーネントのソースを参照してください。`,"Licenses & acknowledgments":`ライセンスと謝辞`,Light:`ライト`,"Limit reached":`上限に達しました`,"Line too wide by {amount}pt":`行幅が {amount}pt 超過しています`,Link:`リンク`,"Loading PDF review…":`PDFレビューを読み込み中…`,"Loading conversation…":`会話を読み込み中…`,"Loading license notices…":`ライセンス通知を読み込み中…`,"Loading people…":`メンバーを読み込み中…`,"Loading skills…":`スキルを読み込み中…`,"Loading the diff…":`差分を読み込み中…`,"Loading…":`読み込み中…`,Location:`場所`,Locked:`ロック中`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Crossref、DBLP、arXivで項目を検索します。タイトル、著者、出版年、識別子のみが送信されます。`,"Made by Cui Chen and the Papilot contributors.":`Cui Chen と Papilot コントリビューターによって作成されました。`,"Main TeX file":`メインの TeX ファイル`,Manuscript:`原稿`,"Manuscript panels":`原稿パネル`,"Manuscript view":`原稿ビュー`,"Mark a figure or region":`図や領域をマーク`,"Mark region":`領域をマーク`,"Marked on earlier changes.":`以前の変更に対してマークされました。`,"Marked region":`マークされた領域`,Math:`数式`,"Maximize or restore window":`ウィンドウを最大化または元に戻す`,Members:`メンバー`,Merge:`マージ`,"Merge in progress":`マージ進行中`,"Merged {upstream}.":`{upstream} をマージしました。`,"Merging: no conflicts left":`マージ中: 残りの競合はありません`,"Merging: {n} file has conflicts":`マージ中: {n} 件のファイルに競合があります`,"Merging: {n} files have conflicts":`マージ中: {n} 件のファイルに競合があります`,"Message ({key} to commit on “{branch}”)":`メッセージ({key} で「{branch}」にコミット)`,"Minimize window":`ウィンドウを最小化`,"Missing character":`文字の欠落`,"Missing file":`ファイルが見つかりません`,"Missing worktree":`作業ツリーが見つかりません`,"Missing: {files}":`不足: {files}`,Mode:`モード`,"Model default":`モデルのデフォルト`,Models:`モデル`,Modified:`変更済み`,"More Git actions":`その他の Git 操作`,"More commit actions":`その他のコミット操作`,"Move to the next visible change.":`次の表示されている変更箇所へ移動します。`,"Move to the previous visible change.":`前の表示されている変更箇所へ移動します。`,"My notes":`自分の注釈`,Name:`名前`,"Needs attention":`対応が必要`,"Needs your reply":`返信が必要`,"New invite link":`新しい招待リンク`,"New skill":`新しいスキル`,"New task":`新しいタスク`,"New version":`新しいバージョン`,"Next change":`次の変更`,"Next match":`次の一致`,"Next page":`次のページ`,"Next suggestion":`次の提案`,"Next suggestion (→)":`次の提案 (→)`,"Next undecided change":`次の未決定の変更`,"No GLM API key was found.":`GLM APIキーが見つかりませんでした。`,"No LaTeX installation was detected on this host.":`このホストでLaTeXのインストールが検出されませんでした。`,"No archived tasks":`アーカイブ済みのタスクはありません`,"No commits yet":`コミットはまだありません`,"No components match your search.":`検索に一致するコンポーネントはありません。`,"No entry has this key.":`このキーを持つ項目はありません。`,"No files found in this folder.":`このフォルダにファイルが見つかりませんでした。`,"No installation details were returned. Run the checks again to refresh.":`インストール詳細が取得できませんでした。更新するにはチェックを再実行してください。`,"No linked change":`関連付けられた変更はありません`,"No linked task":`関連付けられたタスクはありません`,"No manuscript changes":`原稿の変更はありません`,"No matches":`一致なし`,"No matching settings":`一致する設定はありません`,"No matching skills":`一致するスキルはありません`,"No matching tasks":`一致するタスクはありません`,"No models match “{query}”":`「{query}」に一致するモデルはありません`,"No notes yet":`注釈はまだありません`,"No other worktrees in this repository.":`このリポジトリに他の作業ツリーはありません。`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`共有された論文はまだありません。{name} が共有するとここに表示されます。`,"No papers yet":`論文はまだありません`,"No passkey on this device? Ask the person who invited you for a new invite link.":`このデバイスにパスキーがありませんか?招待してくれた人に新しい招待リンクを依頼してください。`,"No problems found.":`問題は見つかりませんでした。`,"No problems in the files. Check online to compare the entries with their records.":`ファイルに問題はありません。オンラインで確認し、項目をレコードと比較してください。`,"No problems in the last build.":`前回のビルドで問題は見つかりませんでした。`,"No record in Crossref, DBLP or arXiv matches it.":`Crossref、DBLP、arXivに一致するレコードがありません。`,"No tasks yet":`まだタスクはありません`,"No textual changes.":`テキストの変更はありません。`,"No uncommitted changes":`未コミットの変更はありません`,"No upstream branch":`上流ブランチなし`,"Not assigned":`未割り当て`,"Not checked":`未確認`,"Not cited in the paper.":`論文内で引用されていません。`,"Not detected":`未検出`,"Not found":`見つかりません`,"Note deleted.":`注釈を削除しました。`,"Note for the agent":`エージェントへの注釈`,"Note on the PDF":`PDF上の注釈`,"Note {n}":`注釈 {n}`,"Note {n}: {comment}":`注釈 {n}: {comment}`,"Notes in this task":`このタスク内の注釈`,"Notes stay here unless you add them to a task.":`注釈はタスクに追加しない限りここに残ります。`,"Nothing to check":`確認する項目はありません`,Notifications:`通知`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`このサイトの通知がブロックされています。ブラウザのサイト設定で許可してから、ここでオンにしてください。`,"Notifications are on":`通知はオンです`,"Notify me about":`通知する項目`,"Notify me when a task fails or stops unexpectedly.":`タスクが失敗したか予期せず停止したときに通知する。`,"Notify me when an agent asks me a question.":`エージェントから質問があったときに通知する。`,"Notify me when an agent finishes without changes to review.":`エージェントがレビュー対象の変更なしで完了したときに通知する。`,"Notify me when an agent needs my approval to continue.":`エージェントが続行に承認を必要とするときに通知する。`,"Notify me when changes are ready for review.":`変更のレビュー準備ができたときに通知する。`,Off:`オフ`,"Online checks are off in Settings, so only problems found in the files are shown.":`設定でオンラインチェックがオフになっているため、ファイル内で見つかった問題のみ表示されています。`,"Online checks are off in Settings.":`設定でオンラインチェックがオフになっています。`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`PDF比較が必要なのは原稿の変更のみです。質問への回答はチャットにあります。`,"Open PDF":`PDFを開く`,"Open a branch to commit":`コミットするブランチを開く`,"Open a folder":`フォルダを開く`,"Open attachment {name}":`添付ファイル {name} を開く`,"Open chat":`チャットを開く`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`サインインしたいデバイスで開いてください。15分以内に1回のみ有効です。`,"Open paper":`論文を開く`,"Open review":`レビューを開く`,"Open review in new tab":`新しいタブでレビューを開く`,"Open reviews on":`レビューを開くときの表示`,"Open task: {title}":`タスクを開く: {title}`,"Open the full PDF":`PDF全体を開く`,"Open these shortcut settings.":`このショートカット設定を開きます。`,"Opening the PDF…":`PDFを開いています…`,"Opening your workspace":`ワークスペースを開いています`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`送信前に編集できる新しいタスクを開きます。エージェントは検出結果を報告し、変更は行いません。`,"Opens in a new tab":`新しいタブで開きます`,"Or drop a folder or ZIP here":`またはフォルダやZIPをここにドロップ`,"Or type your own answer":`または回答を直接入力`,Orange:`オレンジ`,Overridden:`上書き済み`,Owner:`オーナー`,"PDF annotations":`PDFの注釈`,"PDF appearance":`PDFの表示設定`,"PDF comparison":`PDF比較`,"PDF compilation":`PDFコンパイル`,"PDF compiled successfully.":`PDFのコンパイルに成功しました。`,"PDF contents":`PDF目次`,"PDF controls":`PDFコントロール`,"PDF note library":`PDF注釈ライブラリ`,"PDF note {n}":`PDF注釈 {n}`,"PDF notes":`PDF注釈`,"PDF pages":`PDFページ`,"PDF preview":`PDFプレビュー`,"PDF review":`PDFレビュー`,"PDF review only":`PDFレビューのみ`,"Page number":`ページ番号`,"Page {n}":`ページ {n}`,"Page {pages}":`{pages} ページ`,"Page {pages} of {total}":`{total} ページ中 {pages} ページ`,"Pages typeset":`組版済みページ数`,Paper:`論文`,"Paper name":`論文名`,"Paper tools":`論文ツール`,"Paper: {name}":`論文: {name}`,"Papers and tasks":`論文とタスク`,"Papers they can open":`開くことができる論文`,"Papers {name} can open":`{name} が開くことができる論文`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`このコンピュータで npm が見つかりません。npm がインストールされるまで更新は利用できません。`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`このエージェントへの有効な接続を確立できませんでした。最新の接続エラーは以下のとおりです。`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilotでコンパイル用のファイルを準備できませんでした。これはLaTeXのエラーではなく、アプリケーションのエラーです。`,"Papilot license":`Papilot ライセンス`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`このエージェントに到達しましたが、このホスト上でサインイン済みのアカウントを確認できませんでした。`,"Papilot sent the build error to {agent}, {time}":`Papilot がビルドエラーを {agent} に送信しました({time})`,"Papilot will tell you here when a task needs you.":`タスクで対応が必要になった際、Papilot がここでお知らせします。`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`一部レビュー済み`,Passed:`合格`,"Passkey · {label}":`パスキー · {label}`,Pause:`一時停止`,"Pause task":`タスクを一時停止`,"Pause this task before deleting it.":`削除する前にこのタスクを一時停止してください。`,"Pause {agent}":`{agent}を一時停止`,Paused:`一時停止中`,Pen:`ペン`,"Pending review":`レビュー待ち`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`招待されたユーザーは、公開アドレスでパスキーを使ってサインインし、共有された論文内であなたと同じすべての操作(このホストでエージェントが実行するコマンドの承認や、ホストのGit認証情報を使ったプッシュを含む)を行えます。`,Personal:`個人`,Polish:`推敲`,"Position needs confirmation":`位置の確認が必要です`,"Prepare and compile":`準備とコンパイル`,"Preparing task results":`タスク結果を準備中`,"Preparing task results…":`タスク結果を準備中…`,"Preparing version history and compiling the PDF…":`バージョン履歴を準備してPDFをコンパイル中…`,"Press a key…":`キーを押してください…`,Preview:`プレビュー`,"Previous change":`前の変更`,"Previous match":`前の一致`,"Previous page":`前のページ`,"Previous suggestion":`前の提案`,"Previous suggestion (←)":`前の提案 (←)`,Problems:`問題`,"Processing the bibliography…":`参考文献を処理中…`,Proofread:`校正`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Papilotを起動するプロセスまたはサービスに CURSOR_API_KEY を設定し、Papilotを再起動してください。SDKは使用時に自動的にインストールされます。`,"Publish branch":`ブランチを公開`,"Published releases, recommended for everyday use.":`公開リリース。日常的な使用に推奨されます。`,Pull:`プル`,"Pulled the latest commits.":`最新のコミットをプルしました。`,Purple:`紫`,Push:`プッシュ`,"Pushed to the remote.":`リモートにプッシュしました。`,"Pushed to {upstream}.":`{upstream} にプッシュしました。`,"Queue instructions for the next turn…":`次のターンの指示をキューに追加…`,Queued:`待機中`,"Quote in chat":`チャットで引用`,"Quoted text":`引用テキスト`,"Raw log":`生ログ`,"Read folder":`フォルダーを読み込む`,"Read the paper and leave PDF comments without editing the manuscript":`原稿を編集せずに論文を読み、PDFにコメントを残します`,"Read, annotate, and revise your papers with AI, all in one place.":`AIを活用した論文の閲覧、注釈付け、改訂をすべて1か所で。`,"Reading Git status…":`Gitのステータスを読み込み中…`,"Reading paper files…":`論文ファイルを読み込み中…`,"Reading the bibliography…":`文献リストを読み込み中…`,"Reading update status…":`アップデート状況を確認中…`,"Reading worktrees and history…":`作業ツリーと履歴を読み込み中…`,Ready:`準備完了`,"Ready for review":`レビュー準備完了`,"Ready to check for updates":`アップデートを確認できます`,"Reasoning effort":`推論の深さ`,Recent:`最近`,"Recompile PDF":`PDFを再コンパイル`,"Recompiling; this list will update.":`再コンパイル中です。このリストは更新されます。`,Reconnect:`再接続`,Reconnecting:`再接続中`,Record:`レコード`,Red:`赤`,"Reference check":`文献チェック`,"Refresh changes":`変更を更新`,"Refresh skills":`スキルを更新`,"Refresh worktrees and history":`作業ツリーと履歴を更新`,"Regenerate PDF comparison":`PDFの比較を再生成`,"Region note":`領域の注釈`,"Reject change":`変更を却下`,"Reject the current proposal. In Changes, revert it.":`現在の提案を却下します。「変更」内では元に戻します。`,Rejected:`却下済み`,"Reload review":`レビューを再読み込み`,Remove:`削除`,"Remove attachment {name}":`添付ファイル {name} を削除`,"Remove from Papilot":`Papilotから削除`,"Remove from draft":`下書きから削除`,"Remove note {n} from task":`タスクから注釈 {n} を削除`,"Remove paper":`論文を削除`,"Remove paper?":`論文を削除しますか?`,"Remove suggestion {n} from task":`タスクから提案 {n} を削除`,"Remove the {name} skill":`スキル「{name}」を削除`,"Remove this paper and its tasks, conversations and notes from Papilot?":`この論文と、それに関連するタスク、会話、注釈をPapilotから削除しますか?`,"Remove {device}":`{device}を削除`,"Remove {name}":`{name}を削除`,"Remove…":`削除…`,"Removing…":`削除中…`,"Rename {name}":`{name}の名前を変更`,Renamed:`名前を変更しました`,"Rename…":`名前を変更…`,"Repair summary":`修復の概要`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`修復内容は未コミットの変更として保存されます。論文のファイル変更でレビューしてください。`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`続行するにはチャットで返信してください。PDFの比較は原稿が変更された場合にのみ必要です。`,"Reply to {agent}":`{agent}に返信`,"Report a bug or suggest an improvement.":`バグの報告や改善の提案を行います。`,"Reported {n} times":`{n}回報告されました`,"Repository path":`リポジトリのパス`,"Request a revision":`修正を依頼`,"Request failed. Please try again.":`リクエストに失敗しました。もう一度お試しください。`,"Reset appearance":`外観をリセット`,"Resize chat panel":`チャットパネルのサイズを変更`,"Resize manuscript panel":`原稿パネルのサイズを変更`,"Resolve undefined references, overfull boxes and other build warnings":`未定義の参照、オーバーフルボックス、その他のビルド警告を解決します`,"Resolve with {agent}":`{agent}で解決`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Papilotを再起動しています。このページは自動的に再接続され、下書きは保持されます。`,"Restarting…":`再起動中…`,"Restore default shortcuts":`デフォルトのショートカットを復元`,"Restore task":`タスクを復元`,Retry:`再試行`,"Retry build":`ビルドを再試行`,"Retry compilation":`コンパイルを再試行`,"Retry connection":`接続を再試行`,"Retry conversation":`会話を再試行`,"Retry deletion":`削除を再試行`,"Retry deletion…":`削除を再試行…`,"Retry linking changes":`変更のリンクを再試行`,"Retry title generation":`タイトル生成を再試行`,"Retry update":`アップデートを再試行`,"Retry uploading {name}":`{name}のアップロードを再試行`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`改訂作業で再利用できる指示です。タスクの開始時に / メニューからスキルを選択してください。`,Review:`レビュー`,"Review PDF notes":`PDFの注釈をレビュー`,"Review and chat side by side":`レビューとチャットを並べて表示`,"Review complete":`レビュー完了`,"Review copy":`レビュー用コピー`,"Review decisions":`レビューの判定`,"Review feedback":`レビューのフィードバック`,"Review navigation":`レビューのナビゲーション`,"Review note: {comment}":`レビューの注釈: {comment}`,"Review notes":`レビューの注釈`,"Review notes ({n})":`レビューの注釈 ({n})`,"Review preferences":`レビュー設定`,"Review ready":`レビュー準備完了`,"Review ready · {n} change to decide":`レビュー準備完了 · 未判定の変更 {n} 件`,"Review ready · {n} changes to decide":`レビュー準備完了 · 未判定の変更 {n} 件`,"Review shortcut keyboard":`レビューのショートカットキーボード`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`レビューのショートカットは、PDFレビューにフォーカスがあるときに機能します。テキストの入力中や選択中は一時停止します。変更はこのブラウザに保存されます。`,"Review the merged result":`マージ結果をレビュー`,"Review, {n} to decide":`レビュー(未判定 {n} 件)`,"Revise for reviewer comments and draft a point-by-point reply":`査読者コメントに合わせて原稿を改訂し、項目別の回答を作成します`,"Revision requested":`修正リクエスト済み`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`アクセスを制限するため、PapilotとそのエージェントをDockerなどの隔離されたコンテナ内で実行してください。マウントされたファイルには引き続きアクセス可能です。`,"Run command":`コマンドを実行`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`ホスト上で papilot codex login を実行してください。必要に応じてサポートされているCodex CLIがインストールされます。`,"Run tool":`ツールを実行`,Running:`実行中`,Runtime:`ランタイム`,"Same DOI as {keys}.":`{keys}と同じDOIです。`,"Same title as {keys}.":`{keys}と同じタイトルです。`,Save:`保存`,"Save accepted changes":`承認した変更を保存`,"Save to":`保存先`,Saved:`保存済み`,"Saved folder":`保存されたフォルダ`,"Saving…":`保存中…`,Search:`検索`,"Search archived tasks…":`アーカイブされたタスクを検索…`,"Search components or licenses":`コンポーネントまたはライセンスを検索`,"Search components or licenses…":`コンポーネントまたはライセンスを検索…`,"Search models":`モデルを検索`,"Search settings":`設定を検索`,"Search skills":`スキルを検索`,"Search task titles and instructions":`タスクのタイトルと指示を検索`,"Search tasks":`タスクを検索`,"Search tasks…":`タスクを検索…`,"Search the PDF":`PDF を検索`,"See license notice":`ライセンス表記を表示`,"See what changed in each release.":`各リリースの変更内容を確認できます。`,"Select a skill or create your own.":`スキルを選択するか、独自に作成します。`,"Select all notes for this task":`このタスクのすべての注釈を選択`,"Select all {group} notes for this task":`このタスクのすべての {group} 注釈を選択`,"Send (Enter) · New line (Shift+Enter)":`送信 (Enter) · 改行 (Shift+Enter)`,"Send a test notification":`テスト通知を送信`,"Send annotations":`注釈を送信`,"Send annotations to the agent":`注釈をエージェントに送信`,"Send feedback":`フィードバックを送信`,"Send instructions":`指示を送信`,"Send it to {name} yourself. It works once, within 7 days.":`ご自身で {name} に送信してください。7 日以内に 1 回のみ有効です。`,"Send the review comment being written.":`作成中のレビューコメントを送信します。`,"Send your review decisions and comments to the agent":`レビューの判断とコメントをエージェントに送信`,"Send {n} note":`{n} 件の注釈を送信`,"Send {n} note to the agent":`{n} 件の注釈をエージェントに送信`,"Send {n} notes":`{n} 件の注釈を送信`,"Send {n} notes to the agent":`{n} 件の注釈をエージェントに送信`,"Sending feedback…":`フィードバックを送信中…`,"Sending…":`送信中…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`送信しました。何も表示されない場合は、システム設定でこのブラウザの通知を許可してください。`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Papilot を起動する環境で、open.bigmodel.cn には ZHIPU_API_KEY、api.z.ai には ZAI_API_KEY を設定してから、Papilot を再起動してください。`,"Set up on the host":`ホストでセットアップ`,"Set up sharing":`共有をセットアップ`,"Set up this agent":`このエージェントをセットアップ`,Settings:`設定`,"Settings categories":`設定カテゴリ`,"Setup guide":`セットアップガイド`,"Setup required":`セットアップが必要`,"Several TeX files were found. Check the selected main document before continuing.":`複数の TeX ファイルが見つかりました。続行する前に選択されたメイン文書を確認してください。`,"Share your papers and manage the people you work with.":`論文を共有し、共同作業者を管理します。`,Sharing:`共有`,"Sharing is not sandboxed":`共有はサンドボックス化されていません`,Shorten:`短縮`,Show:`表示`,"Show LaTeX source":`LaTeX ソースを表示`,"Show archived tasks":`アーカイブ済みのタスクを表示`,"Show current tasks":`現在のタスクを表示`,"Show desktop notifications while Papilot is in the background.":`Papilot がバックグラウンドにあるときにデスクトップ通知を表示します。`,"Show fewer models":`モデルの表示を減らす`,"Show note {n} on the page":`ページ上の注釈 {n} を表示`,"Show note {n}: {comment}":`注釈 {n} を表示: {comment}`,"Show or hide the source for the current change.":`現在の変更のソースを表示または非表示にします。`,"Show problems":`問題を表示`,"Show suggestion {n} on the page":`ページ上の提案 {n} を表示`,"Show task list":`タスクリストを表示`,"Show {n} more models":`さらに {n} 個のモデルを表示`,"Showing the last update.":`最新の更新を表示しています。`,"Showing the latest {n} commits. Older history is not shown.":`最新 {n} 件のコミットを表示しています。それ以前の履歴は表示されません。`,"Sign in as the user running Papilot, then restart Papilot.":`Papilot を実行しているユーザーとしてサインインしてから、Papilot を再起動してください。`,"Sign in from anywhere":`どこからでもサインイン`,"Sign in on the Papilot host to continue.":`続行するには Papilot ホストでサインインしてください。`,"Sign in to Papilot":`Papilot にサインイン`,"Sign in to continue.":`続行するにはサインインしてください。`,"Sign in with a passkey":`パスキーでサインイン`,"Sign out":`サインアウト`,"Sign out everywhere":`すべての場所からサインアウト`,"Sign-in required":`サインインが必要`,"Signed in":`サインイン済み`,"Signed in · {label}":`サインイン済み · {label}`,"Signing in was cancelled. Try again when you are ready.":`サインインがキャンセルされました。準備ができたらもう一度お試しください。`,"Skill ID":`スキル ID`,"Skill content (Markdown)":`スキルの内容 (Markdown)`,"Skill content must contain 1–20,000 characters.":`スキルの内容は 1〜20,000 文字で入力してください。`,"Skill content view":`スキルの内容の表示形式`,"Skill icon":`スキルアイコン`,"Skill name":`スキル名`,"Skill scope":`スキルのスコープ`,"Skill: {name}":`スキル: {name}`,Skills:`スキル`,Slate:`スレート`,"Slate blue":`スレートブルー`,"Some note positions need confirmation. Their original text and comments are kept.":`一部の注釈の位置は確認が必要です。元のテキストとコメントは保持されます。`,Source:`ソース`,Sparkles:`きらめき`,Spelling:`スペルチェック`,Split:`分割`,Stable:`安定版`,"Stage all changes":`すべての変更をステージ`,"Stage changes":`変更をステージング`,"Stage {path}":`{path} をステージ`,Staged:`ステージング済み`,"Staged changes":`ステージング済みの変更`,"Standard shortcuts":`標準ショートカット`,"Start task":`タスクを開始`,"Start task (Enter)":`タスクを開始 (Enter)`,"Status unavailable":`ステータスを取得できません`,Stone:`ストーン`,"Submitting…":`送信中…`,"Suggest an agent":`エージェントを提案`,"Suggested fix":`修正案`,"Suggestion ignored.":`提案を無視しました。`,"Suggestion {n}: {comment}":`提案 {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`提案は原稿にコピーするまでこのタスク内に残ります`,"Support more":`さらにサポート`,System:`システム`,"Task actions for {title}":`{title} のタスク操作`,"Task added: {title}":`タスクを追加しました: {title}`,"Task errors":`タスクのエラー`,"Task finished":`タスクの完了`,"Task list":`タスク一覧`,"Task saved. Waiting for an available {agent} session.":`タスクを保存しました。利用可能な {agent} セッションを待機しています。`,Tasks:`タスク`,"The PDF could not be opened: {error}":`PDF を開けませんでした: {error}`,"The PDF review could not be loaded.":`PDF レビューを読み込めませんでした。`,"The PDF review is taking longer than expected.":`PDF レビューに予想以上の時間がかかっています。`,"The agent could not connect. Check its setup and try again.":`エージェントに接続できませんでした。設定を確認して再試行してください。`,"The assistant is fixing compilation…":`アシスタントがコンパイルを修正しています…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`ブラウザーと Papilot サーバーは異なるコンピューターで実行されている場合があります。また、バックグラウンドサービスはターミナルとは異なる PATH やユーザーアカウントを使用することがあります。`,"The connection is taking too long. Check your network and try again.":`接続に時間がかかりすぎています。ネットワークを確認して再試行してください。`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`開発ビルドには少なくとも 2 GB の空きディスク容量が必要です。容量を空けてから再試行してください。`,"The diff is too long to show in full.":`差分が長すぎるため、すべてを表示できません。`,"The file “{name}” is empty.":`ファイル「{name}」は空です。`,"The first build is still running.":`初回ビルドがまだ実行中です。`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`前回の接続試行で、Papilot サーバー環境に実行可能な {command} CLI が見つかりませんでした。別の場所や別のユーザー向けにインストールされている可能性があります。`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`前回の接続試行で、Papilot を実行しているユーザーの CURSOR_API_KEY も保存済みの Cursor SDK ログインも見つかりませんでした。Cursor デスクトップアプリや CLI にサインインしても、この SDK は設定されません。`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`前回の接続試行で、Papilot サーバー環境に Claude Code もサポートされている API 認証情報も見つかりませんでした。`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`前回の接続試行で、Papilot サーバー環境に ZHIPU_API_KEY も ZAI_API_KEY も見つかりませんでした。Claude のログインや GLM ウェブサイトのログインではこれらのキーは提供されません。`,"The latest changes did not compile. This is the last PDF that did.":`最新の変更をコンパイルできませんでした。これは最後にコンパイルできた PDF です。`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`最新の設定確認でこのエージェントが見つかりました。再接続して現在のステータスを更新してください。`,"The manuscript did not compile.":`原稿をコンパイルできませんでした。`,"The merge stopped at conflicts.":`競合が発生したためマージが停止しました。`,"The merge was abandoned.":`マージが中止されました。`,"The paper needs a little help":`論文の調整が必要です`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`新しい PDF 内の位置を確認できませんでした。元のテキストと注釈は保持されます。`,"The request timed out and may still be processing. Check the task status before retrying.":`リクエストがタイムアウトしましたが、まだ処理中の可能性があります。再試行する前にタスクのステータスを確認してください。`,"The skill must contain instructions.":`スキルには指示を含める必要があります。`,"The update did not finish. Your current version is still available. You can retry here.":`更新が完了しませんでした。現在のバージョンは引き続き利用できます。ここから再試行できます。`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`更新の準備ができました。再起動する前にタスクと PDF ビルドの完了を待機しています。`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`更新版を起動できなかったため、Papilot はアプリに同梱されているバージョンを使用しています。更新を再試行するか、最新のデスクトップアプリをダウンロードしてください。`,"Their name, as others will see it":`他のユーザーに表示される名前`,Theme:`テーマ`,"These keep the usual browser and text-editing behavior.":`これらは通常のブラウザーおよびテキスト編集の動作を維持します。`,"Third-party licenses":`サードパーティライセンス`,"This PDF has no bookmarks.":`この PDF にはブックマークがありません。`,"This agent has not reported a model list. Its configured default can still be used.":`このエージェントからモデル一覧が報告されていません。設定済みのデフォルトモデルは引き続き使用できます。`,"This browser cannot show notifications.":`このブラウザーは通知を表示できません。`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`このブラウザーではパスキーを使用できません。最新バージョンの Safari、Chrome、Edge、または Firefox でこのページを開いてください。`,"This browser could not enable notifications.":`このブラウザーで通知を有効にできませんでした。`,"This browser could not show the notification.":`このブラウザーで通知を表示できませんでした。`,"This conversation has no manuscript changes.":`この会話には原稿の変更がありません。`,"This file is not tracked by Git, so it cannot be recovered.":`このファイルは Git で追跡されていないため、復元できません。`,"This invite link is incomplete. Copy the whole link and open it again.":`この招待リンクは不完全です。リンク全体をコピーしてもう一度開いてください。`,"This key is reserved for the browser or text editing. Choose another shortcut.":`このキーはブラウザーまたはテキスト編集用に予約されています。別のショートカットを選択してください。`,"This model uses its own reasoning settings.":`このモデルは独自の推論設定を使用します。`,"This paper":`この論文`,"This paper may need XeLaTeX. Change the engine below and retry.":`この論文には XeLaTeX が必要な可能性があります。下でエンジンを変更して再試行してください。`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`この論文には {bibliography} または {addbibresource} による .bib ファイルの指定がありません。`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`この箇所にはまだコミットされていない以前の変更が含まれています。レビュー済みの結果をまとめてコミットするか、コミットせずに適用できます。`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`これにより、会話、作業ツリー、PDF レビューファイルを含むタスクが Papilot から完全に削除されます。未承認の編集と保存済みのコメントは破棄され、レビューの決定は元に戻せなくなります。`,"This skill changed on disk. Reload it before deleting.":`このスキルはディスク上で変更されました。削除する前に再読み込みしてください。`,"This skill changed on disk. Reload it before saving.":`このスキルはディスク上で変更されました。保存する前に再読み込みしてください。`,"This skill no longer exists. Refresh the list.":`このスキルは存在しません。一覧を更新してください。`,"This skill was removed on disk. Reload the list before saving.":`このスキルはディスク上から削除されました。保存する前に一覧を再読み込みしてください。`,"This step needs attention":`このステップには確認が必要です`,"This task did not change the manuscript. Read the answer in the chat.":`このタスクでは原稿が変更されませんでした。チャットで回答を確認してください。`,"This task is being deleted":`このタスクは削除中です`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`このタスクは作業ツリーのクリーンアップが確認されるまで保持されます。接続が中断された場合は「削除を再試行」を使用してください。`,"This version needs the latest desktop app. Download it from GitHub Releases.":`このバージョンには最新のデスクトップアプリが必要です。GitHub Releases からダウンロードしてください。`,"This worktree’s HEAD is outside the displayed history.":`この作業ツリーの HEAD は表示中の履歴の範囲外にあります。`,Title:`タイトル`,Tools:`ツール`,Tracking:`追跡中`,"Type changed":`種別変更`,"Typesetting and other remarks":`組版およびその他の指摘事項`,"Typesetting with LaTeX, pass {n}…":`LaTeX で組版中 (パス {n})…`,Unavailable:`利用不可`,"Uncommitted changes in the PDF":`PDFの未コミットの変更`,"Undefined citation":`未定義の引用`,"Undefined reference":`未定義の参照`,Undo:`元に戻す`,"Undo review decision":`レビュー判定を元に戻す`,"Undo the last review decision or revert.":`直前のレビュー判定を元に戻すか、変更を取り消します。`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`フォーカスに応じて、入力、削除した注釈、または直前のレビュー判定を元に戻します。`,"Unify terms, notation, spelling and references":`用語、表記、スペル、参照を統一する`,Unknown:`不明`,"Unlimited credits":`無制限のクレジット`,"Unplaced suggestions":`配置されていない提案`,"Unsaved changes":`未保存の変更`,"Unstage all changes":`すべてのステージングを解除`,"Unstage changes":`ステージングを解除`,"Unstage {path}":`{path} のステージングを解除`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`ステージングされていない変更は完全に失われ、未追跡のファイルは削除されます。ステージング済みの変更は保持されます。`,"Unstaged changes are lost for good. Staged changes stay.":`ステージングされていない変更は完全に失われます。ステージング済みの変更は保持されます。`,Untracked:`未追跡`,"Untracked build output. Add to .gitignore adds:":`未追跡のビルド出力です。「.gitignore に追加」で以下を追加します:`,"Up to date":`最新です`,"Up to date with the remote.":`リモートと同期しています。`,"Update Papilot":`Papilot をアップデート`,"Update available":`アップデートがあります`,"Update channel":`アップデートチャンネル`,"Update failed":`アップデートに失敗しました`,"Update now":`今すぐアップデート`,"Update ready":`アップデートの準備完了`,"Update to {version}":`{version} にアップデート`,Updates:`アップデート`,"Updating…":`アップデート中…`,"Upload failed. Please retry.":`アップロードに失敗しました。再試行してください。`,"Uploading…":`アップロード中…`,"Usage & limits":`使用量と上限`,"Usage limit":`使用上限`,"Usage not reported":`使用量は報告されていません`,"Use a hex color, like #2563EB.":`#2563EB のような16進数のカラーコードを使用してください。`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`小文字の英字、数字、ハイフンを使用してください。これは / コマンド名にもなります。`,"Use the passkey you created from your invite link.":`招待リンクから作成したパスキーを使用してください。`,"Used for new tasks. Saved in this browser.":`新しいタスクで使用されます。このブラウザに保存されます。`,"User guide":`ユーザーガイド`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`ZHIPU_API_KEY または ZAI_API_KEY を指定して Claude Code または Claude Agent SDK を使用します。`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`インストールされている場合は Claude Code を使用し、それ以外の場合は API 認証情報を指定して Claude Agent SDK を使用します。`,"Uses DeepSeek Harness and the providers configured in dsh.":`DeepSeek Harness と dsh で設定されたプロバイダを使用します。`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`ACP経由でGitHub Copilot CLIと保存済みのログイン情報または設定済みのプロバイダーを使用します。`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`ACP経由でGrok Build CLIと保存済みのログイン情報または設定済みのAPI認証情報を使用します。`,"Uses Kimi Code CLI and its saved login through ACP.":`ACP 経由で Kimi Code CLI と保存されたログイン情報を使用します。`,"Uses OpenCode with the providers and models you have connected.":`接続済みのプロバイダとモデルで OpenCode を使用します。`,"Uses Qwen Code and its saved login through ACP.":`ACP 経由で Qwen Code と保存されたログイン情報を使用します。`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`互換性のあるローカルの Codex CLI を使用します。必要に応じて Papilot が独自のコピーをインストールします。`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`CURSOR_API_KEY を指定して Cursor SDK を使用します。初回使用時に Papilot が SDK をインストールします。`,"Uses the local Antigravity CLI and its saved Google login.":`ローカルの Antigravity CLI と保存された Google ログイン情報を使用します。`,Verified:`確認済み`,Version:`バージョン`,"Version history":`バージョン履歴`,"View & help":`表示とヘルプ`,"View changes for this note":`この注釈の変更を表示`,"View changes included in this commit":`このコミットに含まれる変更を表示`,"View details":`詳細を表示`,"View installation, account, and usage":`インストール状況、アカウント、使用量を表示`,"View {n} review suggestion":`{n} 件のレビュー提案を表示`,"View {n} review suggestions":`{n} 件のレビュー提案を表示`,"Viewed the PDF":`PDFを表示しました`,"Viewed the PDF: {places}":`PDFを表示しました: {places}`,"Visual style":`外観スタイル`,"Wait for the PDF build to finish before deleting this task.":`このタスクを削除する前に、PDFのビルドが完了するまでお待ちください。`,"Wait for the PDF to compile.":`PDFのコンパイルが完了するまでお待ちください。`,"Waiting for your passkey…":`パスキーを待機中…`,Warning:`警告`,Warnings:`警告`,"Weekly limit":`週間上限`,"What are we revising next?":`次はどこを改訂しますか?`,"What can invited people do?":`招待されたユーザーができること`,"What changed since the last commit, to stage, revert and commit change by change":`直前のコミット以降の変更内容を確認し、変更ごとにステージング、元に戻す、コミットを行う`,"What does this skill help with?":`このスキルは何に役立ちますか?`,"What is staged, in {n} file:":`ステージ済みの内容({n} ファイル):`,"What is staged, in {n} files:":`ステージ済みの内容({n} ファイル):`,"What should change here?":`ここをどのように変更しますか?`,"What should change in each color group?":`各カラーグループで何をどのように変更しますか?`,"What should change in this group?":`このグループで何をどのように変更しますか?`,"What this task accepted, in {n} file:":`このタスクで承認された内容({n} ファイル):`,"What this task accepted, in {n} files:":`このタスクで承認された内容({n} ファイル):`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`変更により文献項目が追加または編集された際、Crossref、DBLP、arXivでタイトル、著者、年、DOIを検索します。論文の他の情報は一切送信されません。`,"With review feedback":`レビューのフィードバック付き`,Workspace:`ワークスペース`,"Workspace view":`ワークスペース表示`,Worktrees:`作業ツリー`,"Write a commit message for the chosen files with {agent}":`{agent}で選択したファイルのコミットメッセージを作成`,"Write a note…":`注釈を入力…`,"Write feedback on the current proposed change.":`現在提案されている変更に対するフィードバックを入力します。`,"Writing the PDF…":`PDF を書き出し中…`,Year:`年`,Yellow:`黄色`,"You are offline. Your draft is kept in this browser.":`オフラインです。下書きはこのブラウザに保存されます。`,"You are using the latest version on this channel.":`このチャンネルの最新バージョンを使用しています。`,"You checked this entry yourself.":`この項目を自分で確認しました。`,"You sent review feedback, {time}":`レビューのフィードバックを送信、{time}`,"You, {time}":`あなた、{time}`,"Your note":`あなたの注釈`,"Your paper compiled successfully. It is ready for editing.":`論文のコンパイルに成功しました。編集の準備ができました。`,"Your review keyboard":`レビュー用キーボード`,Yours:`自分のもの`,Zoom:`ズーム`,"Zoom in":`拡大`,"Zoom in (⌘+)":`拡大 (⌘+)`,"Zoom out":`縮小`,"Zoom out (⌘−)":`縮小 (⌘−)`,"added {time}":`{time}に追加`,"another entry has the same key.":`別の項目に同じキーがあります。`,"build error":`ビルドエラー`,clean:`クリーン`,detached:`切り離し`,"detached HEAD":`detached HEAD`,"edited {file}":`{file}を編集`,"edited {n} files":`{n}個のファイルを編集`,"from {name}":`{name}より`,"it is not cited.":`引用されていません。`,"just now":`たった今`,"no record in Crossref, DBLP or arXiv matches it.":`Crossref、DBLP、arXivに一致するレコードがありません。`,nothing:`なし`,now:`現在`,"or select text to annotate":`またはテキストを選択して注釈を追加`,"p. {page}":`p. {page}`,"possibly the same work as {keys} (same title).":`{keys}と同一の文献の可能性があります(同一タイトル)。`,"ran {n} command":`{n}件のコマンドを実行`,"ran {n} commands":`{n}件のコマンドを実行`,"resets in {hours} h {minutes} min":`{hours}時間{minutes}分後にリセット`,"resets in {minutes} min":`{minutes}分後にリセット`,"resets now":`今すぐリセット`,"resets {time}":`{time}にリセット`,small:`小`,"the same work as {keys} (same DOI).":`{keys}と同一の文献です(同一DOI)。`,"used {n} tool":`{n}個のツールを使用`,"used {n} tools":`{n}個のツールを使用`,"used {time}":`{time}に使用`,"viewed the PDF":`PDFを表示`,"{agent} conversation":`{agent}との会話`,"{agent} details":`{agent}の詳細`,"{agent} finished":`{agent}が完了しました`,"{agent} is requesting permission for this action.":`{agent}がこの操作の許可を求めています。`,"{agent} is resolving…":`{agent}が解決しています…`,"{agent} is unavailable":`{agent}は利用できません`,"{agent} is waiting for your approval":`{agent}が承認を待っています`,"{agent} is working":`{agent}が作業中`,"{agent} is working on this task":`{agent}がこのタスクを作業中`,"{agent} is working · new instructions run next":`{agent}が作業中 · 新しい指示は次に実行されます`,"{agent} is writing a commit message…":`{agent}がコミットメッセージを作成しています…`,"{agent} needs your input":`{agent}が入力を求めています`,"{agent} on the merge":`マージに関する{agent}`,"{agent} usage":`{agent}の使用状況`,"{agent} usage details":`{agent}の使用状況の詳細`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`このコンピュータで{agent}が見つかりませんでした。インストールまたはセットアップしてから「再接続」を選択してください。`,"{ahead} ahead · {behind} behind":`{ahead}件先行 · {behind}件遅れ`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch}と{upstream}の両方に変更があります。マージするとリモートのコミットが取り込まれます。`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) に対応するキーの項目がありません。`,"{command} was not found by Papilot.":`Papilotが{command}を見つけられませんでした。`,"{current} of {total}":`{current} / {total}`,"{differences} (record: {url}).":`{differences}(レコード: {url})。`,"{field} is {bib} but {source} has {record}":`{field}は{bib}ですが、{source}では{record}です`,"{field}: {bib} here, {record} in {source}":`{field}: ここでは{bib}、{source}では{record}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} さんがあなたを Papilot に招待しました。{name} として表示されます。`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} さんが {papers} の共同編集にあなたを招待しました。{name} として表示されます。`,"{key} ({place}): {problems}":`{key}({place}): {problems}`,"{name} (you)":`{name}(あなた)`,"{name} sent review feedback, {time}":`{name} さんがレビューのフィードバックを送信({time})`,"{name} used":`{name} の使用分`,"{name}, {time}":`{name}、{time}`,"{n} accepted":`{n} 件承認済み`,"{n} active task":`{n} 件の進行中のタスク`,"{n} active tasks":`{n} 件の進行中のタスク`,"{n} build file":`{n} 個のビルドファイル`,"{n} build files":`{n} 個のビルドファイル`,"{n} change to decide":`未判断の変更 {n} 件`,"{n} change to review":`レビュー待ちの変更 {n} 件`,"{n} changed":`{n} 件変更`,"{n} changes to decide":`未判断の変更 {n} 件`,"{n} changes to review":`レビュー待ちの変更 {n} 件`,"{n} checked by you":`{n} 件をあなたが確認済み`,"{n} comment":`{n} 件のコメント`,"{n} comments":`{n} 件のコメント`,"{n} compilation error":`{n} 件のコンパイルエラー`,"{n} compilation errors":`{n} 件のコンパイルエラー`,"{n} compilation warning":`{n} 件のコンパイル警告`,"{n} compilation warnings":`{n} 件のコンパイル警告`,"{n} conflicts":`{n} 件の競合`,"{n} could not be checked":`{n} 件は確認できませんでした`,"{n} credits":`{n} クレジット`,"{n} differ":`{n} 件の相違`,"{n} entries":`{n} 件の項目`,"{n} entry":`{n} 件の項目`,"{n} failed":`{n} 件失敗`,"{n} file staged":`{n} 個のファイルをステージング済み`,"{n} file still has conflicts.":`{n} 個のファイルにまだ競合があります。`,"{n} files staged":`{n} 個のファイルをステージング済み`,"{n} files still have conflicts.":`{n} 個のファイルにまだ競合があります。`,"{n} location":`{n} か所`,"{n} locations":`{n} か所`,"{n} new commit on {upstream}.":`{upstream} に {n} 件の新しいコミットがあります。`,"{n} new commits on {upstream}.":`{upstream} に {n} 件の新しいコミットがあります。`,"{n} not found":`{n} 件が見つかりません`,"{n} notes on the PDF":`PDF 上の注釈 {n} 件`,"{n} rejected":`{n} 件却下済み`,"{n} review update not sent yet":`{n} 件のレビュー更新が未送信です`,"{n} review update will be sent with this message":`{n} 件のレビュー更新がこのメッセージとともに送信されます`,"{n} review updates not sent yet":`{n} 件のレビュー更新が未送信です`,"{n} review updates will be sent with this message":`{n} 件のレビュー更新がこのメッセージとともに送信されます`,"{n} staged":`{n} 件ステージング済み`,"{n} undone":`{n} 件取り消し済み`,"{n} unstaged":`{n} 件未ステージング`,"{n} untracked":`{n} 件未追跡`,"{n} verified":`{n} 件検証済み`,"{n}-day limit":`{n} 日間の上限`,"{n}-hour limit":`{n} 時間の上限`,"{n}-minute limit":`{n} 分間の上限`,"{n}d":`{n}日`,"{n}h":`{n}時間`,"{n}m":`{n}分`,"{selected} / {total} locations selected":`{total} か所中 {selected} か所を選択中`,"{shown} of {total} components":`{total} 個中 {shown} 個のコンポーネント`,"{sources} could not be reached.":`{sources} に接続できませんでした。`,"{time} ago":`{time}前`,"{title} PDF change review":`{title} PDF 変更レビュー`,"{used}% used":`{used}% 使用済み`},z={"A commit is already in progress. Wait for it to finish.":`コミットがすでに実行中です。完了するまでお待ちください。`,"A commit is in progress. Try again when it finishes.":`コミットを実行中です。完了してから再試行してください。`,"A review action is already in progress. Wait for it to finish.":`レビュー操作がすでに実行中です。完了するまでお待ちください。`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`選択した PDF の注釈はすでに送信中です。そのタスクの作成が完了するまでお待ちください。`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`選択した PDF の注釈は利用できなくなりました。原稿を再読み込みしてから再試行してください。`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`AI レビューではレビューの指示のみ受け付けます。注釈、スキル、または添付ファイルを送信するには、編集タスクを開始してください。`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`AI レビューは PDF の注釈のみを作成します。原稿の変更を公開することはできません。`,"AI review has no manuscript changes to apply.":`AI レビューに適用する原稿の変更がありません。`,"AI review has no manuscript changes to deliver.":`AI レビューには反映する原稿の変更がありません。`,"AI review uses manuscript PDF notes, not change decisions.":`AI レビューでは変更の採否ではなく、原稿の PDF の注釈を使用します。`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`AI レビューでは原稿の PDF を使用します。注釈や添付ファイルを送信するには、別の編集タスクを開始してください。`,"Accepted changes are already in the manuscript.":`承認された変更はすでに原稿に反映されています。`,"An AI review comment is invalid. Ask the reviewer to retry.":`AI レビューのコメントが無効です。レビュアーに再試行するよう指示してください。`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`AI レビューのコメントで PDF の行が逆順に指定されています。開始位置を終了位置より前にするようレビュアーに指示してください。`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`AI レビューのコメントが不明な PDF 位置を参照しています。指定された行 ID を使用して再試行するようレビュアーに指示してください。`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`AI レビューのコメントが複数の PDF ページにまたがっています。単一のページに固定するようレビュアーに指示してください。`,"Another Papilot instance is already updating.":`別の Papilot インスタンスがすでに更新中です。`,"Answer every question before submitting.":`送信する前にすべての質問に回答してください。`,"Attachment not found.":`添付ファイルが見つかりません。`,"Attachments must total 100 MB or less.":`添付ファイルの合計は 100 MB 以下にする必要があります。`,"Check for a newer release before updating.":`更新する前に、新しいリリースがあるか確認してください。`,"Check out a branch before pushing.":`プッシュする前にブランチをチェックアウトしてください。`,"Check the task status before pausing this turn.":`このターンを一時停止する前に、タスクの状態を確認してください。`,"Check the task status before sending more instructions.":`追加の指示を送信する前に、タスクの状態を確認してください。`,"Choose Codex, Claude or GLM for AI review.":`AI レビューには Codex、Claude、または GLM を選択してください。`,"Choose a ZIP smaller than 64 MB.":`64 MB 未満の ZIP を選択してください。`,"Choose a file with a valid name.":`有効な名前のファイルを選択してください。`,"Choose a folder smaller than 64 MB.":`64 MB 未満のフォルダを選択してください。`,"Choose a supported LaTeX engine.":`サポートされている LaTeX エンジンを選択してください。`,"Choose a valid update channel.":`有効な更新チャンネルを選択してください。`,"Choose an available model for this agent.":`このエージェントで使用可能なモデルを選択してください。`,"Choose an entry to confirm.":`確認する項目を選択してください。`,"Choose an existing TeX main file.":`既存の TeX メインファイルを選択してください。`,"Choose between 1 and 5,000 files.":`1〜5,000 個のファイルを選択してください。`,"Choose one folder or ZIP.":`フォルダまたは ZIP を 1 つ選択してください。`,"Choose one of the offered answers.":`提示された選択肢から 1 つ選んでください。`,"Choose stage, unstage or revert.":`ステージ、アンステージ、または元に戻す(revert)を選択してください。`,"Choose whether to archive or restore the task.":`タスクをアーカイブするか復元するかを選択してください。`,"Claude Code did not list its models.":`Claude Code からモデル一覧を取得できませんでした。`,"Claude Code exited before listing its models.":`モデル一覧を取得する前に Claude Code が終了しました。`,"Claude has not reported usage yet.":`Claude はまだ使用状況を報告していません。`,"Codex disconnected. Resume the task before retrying.":`Codex の接続が切断されました。再試行する前にタスクを再開してください。`,"Codex is not connected.":`Codex が接続されていません。`,"Commit the task first, then push from Git.":`先にタスクをコミットしてから、Git からプッシュしてください。`,"Confirm permanent task deletion before continuing.":`続行する前に、タスクの完全な削除を確認してください。`,"Could not check for updates.":`アップデートを確認できませんでした。`,"Could not check for updates. Try again when connected.":`更新を確認できませんでした。接続時に再試行してください。`,"Could not complete the environment checks. Please try again.":`環境チェックを完了できませんでした。もう一度お試しください。`,"Could not read the LaTeX installation.":`LaTeX のインストール情報を読み取れませんでした。`,"Could not restart the background service.":`バックグラウンドサービスを再起動できませんでした。`,"Deletion is already in progress. Wait for it to finish.":`削除がすでに実行中です。完了するまでお待ちください。`,"Describe the revision, choose a skill, or add a PDF note.":`修正内容を入力するか、スキルを選択するか、PDF の注釈を追加してください。`,"Describe what to do with each selected color group.":`選択した各色グループに対する処理内容を入力してください。`,"Download desktop updates from GitHub Releases.":`デスクトップ版のアップデートは GitHub Releases からダウンロードしてください。`,"Enter a folder path.":`フォルダパスを入力してください。`,"Enter a paper name under 120 characters.":`論文名は 120 文字未満で入力してください。`,"Fast mode is not available for this model.":`このモデルでは高速モードを利用できません。`,"Files must be 25 MB or smaller.":`ファイルは 25 MB 以下にする必要があります。`,"Finish or abort the merge before committing other changes.":`他の変更をコミットする前に、マージを完了するか中止してください。`,"Finish or abort the merge before discarding changes.":`変更を破棄する前に、マージを完了するか中止してください。`,"Finish or abort the merge before staging other changes.":`他の変更をステージする前に、マージを完了するか中止してください。`,"Finish or abort the merge first.":`先にマージを完了するか中止してください。`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`変更の承認、却下、または取り消しを行う前に、Git パネルでマージを完了するか中止してください。`,"GLM does not report usage to Papilot.":`GLM は Papilot に使用状況を報告しません。`,"Group instructions must refer to selected PDF notes.":`グループの指示では、選択した PDF の注釈を参照する必要があります。`,"Images must be 5 MB or smaller.":`画像は 5 MB 以下にする必要があります。`,"Import not found.":`インポートが見つかりません。`,"Invalid annotation group.":`無効な注釈グループです。`,"Invalid approval decision.":`承認の判断が無効です。`,"Invalid development revision.":`開発リビジョンが無効です。`,"Invalid development version.":`開発バージョンが無効です。`,"Invalid diagnostic report.":`診断レポートが無効です。`,"Invalid file path in upload.":`アップロード内のファイルパスが無効です。`,"Invalid file path.":`無効なファイルパスです。`,"Invalid model.":`無効なモデルです。`,"Invalid note location.":`無効な注釈の位置です。`,"Invalid reasoning effort.":`無効な推論レベルです。`,"Invalid release information.":`リリース情報が無効です。`,"Invalid release version.":`リリースバージョンが無効です。`,"Invalid save action.":`無効な保存操作です。`,"Invalid task ID.":`無効なタスク ID です。`,"Invalid update activation.":`アップデートの有効化が無効です。`,"Invalid upload data.":`アップロードデータが無効です。`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`この提案は AI レビュータスク内で管理するか、先に原稿へコピーしてください。`,"Missing update restart job.":`アップデート再起動ジョブが見つかりません。`,"No file has conflict markers left. Commit the merge.":`競合マーカーが残っているファイルはありません。マージをコミットしてください。`,"No merge is in progress.":`進行中のマージはありません。`,"No such file.":`そのようなファイルはありません。`,"None of the chosen files is build output that can be ignored.":`選択されたファイルに、無視できるビルド出力はありません。`,"Not found":`見つかりません`,"Note not found.":`注釈が見つかりません。`,"Only the model and its settings can be changed.":`モデルとその設定のみ変更できます。`,"Only the owner of this Papilot can do this.":`この操作は、この Papilot のオーナーのみが実行できます。`,"Open Papilot at its public address.":`公開アドレスから Papilot を開いてください。`,"Paper name is too long.":`論文名が長すぎます。`,"Paper project not found.":`論文プロジェクトが見つかりません。`,"Papilot did not finish shutting down.":`Papilot のシャットダウンが完了しませんでした。`,"Papilot is restarting after an update. Please wait a moment.":`Papilot はアップデート後に再起動しています。しばらくお待ちください。`,"Papilot restarted. Retry compilation to continue this import.":`Papilot が再起動しました。このインポートを続行するには、コンパイルを再試行してください。`,"Pause Codex before building a review.":`レビューをビルドする前に Codex を一時停止してください。`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`削除する前にタスクを一時停止し、現在の作業やレビュー操作が完了するまでお待ちください。未確定の操作がある場合は先に解決してください。`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`変更の承認、却下、または取り消しを行う前にタスクを一時停止してください。PDF のビルドが実行中の場合は完了するまでお待ちください。`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`パスを変更または削除する前に、この論文の実行中のタスクを一時停止し、現在の作業が完了するまでお待ちください。未確定の操作がある場合は先に解決してください。`,"Resolve the merge conflicts in the selected files before committing.":`コミットする前に、選択したファイルのマージ競合を解決してください。`,"Restore this suggestion before copying it.":`コピーする前にこの提案を復元してください。`,"Retry deletion to confirm this task was removed.":`削除を再試行して、このタスクが削除されたことを確認してください。`,"Retry the pending delivery before sending more instructions.":`追加の指示を送信する前に、保留中の送信を再試行してください。`,"Review resource not found.":`レビューリソースが見つかりません。`,"Select a folder containing the paper.":`論文が含まれるフォルダを選択してください。`,"Select a valid paper to check.":`確認する有効な論文を選択してください。`,"Select a valid paper.":`有効な論文を選択してください。`,"Select an existing review round and either the before or after PDF.":`既存のレビューラウンドと、変更前または変更後の PDF のいずれかを選択してください。`,"Select at least one change.":`少なくとも 1 つの変更を選択してください。`,"Select at least one changed file to commit.":`コミットする変更済みファイルを少なくとも 1 つ選択してください。`,"Select at least one changed file.":`変更されたファイルを少なくとも 1 つ選択してください。`,"Select text or mark a region on the page first.":`先にテキストを選択するか、ページ上の領域を指定してください。`,"Select the root directory of the Git repository.":`Git リポジトリのルートディレクトリを選択してください。`,"Select unsent PDF notes for this task.":`このタスクに対して未送信の PDF 注釈を選択してください。`,"Select up to 10 valid attachments.":`有効な添付ファイルを最大 10 件まで選択してください。`,"Select valid PDF notes for this task.":`このタスクに対して有効な PDF 注釈を選択してください。`,"Select valid review notes.":`有効なレビュー注釈を選択してください。`,"Send attachments with a message, separately from review feedback.":`添付ファイルはレビューのフィードバックとは別に、メッセージとともに送信してください。`,"Service tiers are only available for Codex.":`サービスティアは Codex でのみ利用できます。`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`ユーザーを招待する前に、PAPILOT_ACCOUNT_ORIGIN に公開 URL を設定してください。`,"Sign in to continue.":`続行するにはサインインしてください。`,"Sign-in is not set up on this Papilot.":`この Papilot ではサインインが設定されていません。`,"Stage at least one change to commit.":`コミットする変更を少なくとも 1 つステージしてください。`,"Stage at least one change.":`少なくとも 1 つの変更をステージしてください。`,"Start a new task to run the AI review skill on the current PDF.":`現在の PDF で AI レビュースキルを実行するには、新しいタスクを開始してください。`,"Start or resume the thread before starting a turn.":`ターンを開始する前に、スレッドを開始または再開してください。`,"Task not found.":`タスクが見つかりません。`,"That file has no uncommitted changes.":`そのファイルには未コミットの変更がありません。`,"That page is not part of the manuscript.":`そのページは原稿に含まれていません。`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`AI レビューから有効な注釈が返されませんでした。必要な JSON 形式で再試行するよう指示してください。`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`AI レビューの応答が不完全か長すぎます。レビュアーに再試行するよう指示してください。`,"The PDF copy for this review is unavailable. Start a new AI review.":`このレビューの PDF コピーを利用できません。新しい AI レビューを開始してください。`,"The PDF is building. Wait for this build to finish.":`PDF をビルド中です。このビルドが完了するまでお待ちください。`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`このレビューの PDF スナップショットは利用できません。新しい AI レビューを開始してください。`,"The ZIP expands beyond 64 MB or 5,000 files.":`ZIP の展開後のサイズが 64 MB または 5,000 ファイルを超えています。`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`開発ビルドには少なくとも 2 GB の空きディスク容量が必要です。空き容量を増やしてから再試行してください。`,"The development checkout does not match the requested commit.":`開発用チェックアウトが要求されたコミットと一致しません。`,"The development checkout does not match the requested version.":`開発用チェックアウトが要求されたバージョンと一致しません。`,"The downloaded package does not match the requested release.":`ダウンロードされたパッケージが要求されたリリースと一致しません。`,"The downloaded release is incomplete.":`ダウンロードされたリリースが不完全です。`,"The manuscript changed while copying this suggestion. Try again.":`この提案のコピー中に原稿が変更されました。もう一度お試しください。`,"The new version could not be installed. Check the connection and available disk space, then retry.":`新しいバージョンをインストールできませんでした。接続と空きディスク容量を確認してから、再試行してください。`,"The new version did not pass its startup check. Your current version is still running.":`新しいバージョンが起動チェックを通過しませんでした。現在のバージョンが引き続き実行されています。`,"The new version did not restart successfully.":`新しいバージョンが正常に再起動しませんでした。`,"The owner cannot be removed.":`オーナーは削除できません。`,"The owner sees every paper.":`オーナーはすべての論文を閲覧できます。`,"The paper configuration must contain a JSON object.":`論文の設定には JSON オブジェクトが含まれている必要があります。`,"The paper configuration must not be a symbolic link.":`論文の設定にシンボリックリンクは使用できません。`,"The passkey could not be created. Try again.":`パスキーを作成できませんでした。もう一度お試しください。`,"The request origin does not match.":`リクエストのオリジンが一致しません。`,"The review action is still being checked. Wait for it to finish.":`レビュー操作をまだ確認中です。完了するまでお待ちください。`,"The review could not be loaded. Try again.":`レビューを読み込めませんでした。もう一度お試しください。`,"The review engine could not confirm this action. Check again when it is available.":`レビューエンジンがこの操作を確認できませんでした。利用可能になってから再度確認してください。`,"The review engine could not confirm this action. Select Check status before continuing.":`レビューエンジンでこの操作を確認できませんでした。続行する前に「Check status」を選択してください。`,"The review engine could not confirm this task’s cleanup status.":`レビューエンジンがこのタスクのクリーンアップ状態を確認できませんでした。`,"The review engine did not confirm task deletion.":`レビューエンジンがタスクの削除を確認できませんでした。`,"The review engine returned an unexpected response. Select Check status before continuing.":`レビューエンジンから予期しない応答が返されました。続行する前に「Check status」を選択してください。`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`選択したリポジトリには、この論文のタスクの作業ツリーが含まれていません。既存のタスクがあるリポジトリを選択するか、別の論文として追加してください。`,"The server is shutting down.":`サーバーをシャットダウンしています。`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`サーバーが再起動したため、前のターンが中断されました。同じ会話で続行してください。`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`レビュー操作の確認前にサーバーが再起動しました。続行する前に「ステータスを確認」を選択してください。`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`削除中にサーバーが再起動しました。クリーンアップを完了するため、削除を再試行してください。`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`PDF のビルド中にサーバーが再起動しました。レビューを確認し、必要に応じて再ビルドしてください。`,"The task was paused before these instructions were queued. Your draft has been kept.":`これらの指示がキューに追加される前にタスクが一時停止されました。下書きは保持されています。`,"The update download timed out.":`アップデートのダウンロードがタイムアウトしました。`,"The update restart helper did not start.":`更新の再起動ヘルパーが起動しませんでした。`,"The update was interrupted. Your current installation is still available; retry the update.":`アップデートが中断されました。現在のインストールは引き続き利用可能です。アップデートを再試行してください。`,"There is no compilation log yet.":`コンパイルログはまだありません。`,"There is no new review feedback to send.":`送信する新しいレビューフィードバックはありません。`,"This PDF has no selectable text to review.":`この PDF にはレビュー用の選択可能なテキストがありません。`,"This PDF is too long for one AI review (180,000 characters maximum).":`この PDF は長すぎるため、1 回の AI レビューで処理できません(最大 180,000 文字)。`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`このアドレスはご利用の tailnet 専用です。外部のユーザーは PAPILOT_ACCOUNT_ORIGIN からサインインしてください。`,"This agent does not report usage.":`このエージェントは使用状況を報告しません。`,"This attachment is already being sent to another task.":`この添付ファイルはすでに別のタスクに送信中です。`,"This attachment is not available for this task.":`この添付ファイルはこのタスクでは利用できません。`,"This branch does not track a remote branch yet.":`このブランチはまだリモートブランチを追跡していません。`,"This comparison is out of date. Refresh the page.":`この比較は古くなっています。ページを再読み込みしてください。`,"This device is no longer signed in.":`このデバイスはサインアウトされています。`,"This entry is no longer among the changes. Refresh the page.":`この項目は変更一覧に存在しなくなりました。ページを再読み込みしてください。`,"This entry is no longer in the bibliography. Refresh the panel.":`この項目は文献リストに存在しません。パネルを更新してください。`,"This file is empty.":`このファイルは空です。`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`このフォルダは親 Git リポジトリに属しています。ルートフォルダを選択するか、コピーをアップロードしてください。`,"This image format is not supported.":`この画像形式はサポートされていません。`,"This invite link has expired or was already used. Ask for a new one.":`この招待リンクは有効期限が切れているか、すでに使用されています。新しいリンクをリクエストしてください。`,"This manuscript preview is out of date. Refresh it and try again.":`この原稿プレビューは古くなっています。更新してからもう一度お試しください。`,"This model does not support that reasoning effort.":`このモデルはその推論レベルをサポートしていません。`,"This note has already been sent.":`この注釈はすでに送信されています。`,"This note has been deleted. Undo the deletion first.":`この注釈は削除されています。先に削除を取り消してください。`,"This note is being sent. Wait for the task to finish creating.":`この注釈は送信中です。タスクの作成が完了するまでお待ちください。`,"This page has expired. Refresh it and try again.":`このページの有効期限が切れました。ページを再読み込みしてもう一度お試しください。`,"This paper is already added. Open it from the paper list.":`この論文はすでに追加されています。論文一覧から開いてください。`,"This paper is being updated. Please retry in a moment.":`この論文は更新中です。しばらくしてから再試行してください。`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`現在の原稿内でこの箇所を特定できませんでした。提案はレビュータスクに残っています。`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`このパスキーでサインインできませんでした。削除された場合は、オーナーに新しい招待を依頼してください。`,"This person is no longer in Papilot.":`このユーザーはすでに Papilot に登録されていません。`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`このリポジトリにはまだコミットがありません。以降の PDF の変更を比較するには、一度コミットしてください。`,"This repository has no remote.":`このリポジトリにはリモートがありません。`,"This repository is already added as another paper.":`このリポジトリはすでに別の論文として追加されています。`,"This request ID is already in use by another task.":`このリクエスト ID はすでに別のタスクで使用されています。`,"This request has ended or the connection has restarted.":`このリクエストが終了したか、接続が再起動されました。`,"This request has ended.":`このリクエストは終了しました。`,"This review page has expired. Refresh it and try again.":`このレビューページの有効期限が切れました。ページを再読み込みしてもう一度お試しください。`,"This review task does not belong to this workspace.":`このレビュータスクはこのワークスペースに属していません。`,"This suggestion does not belong to this review task.":`この提案はこのレビュータスクに属していません。`,"This suggestion was ignored while copying. Restore it first.":`この提案はコピー時に無視されました。先に復元してください。`,"This task already applies accepted changes to the working directory.":`このタスクはすでに承認済みの変更を作業ディレクトリに適用しています。`,"This task already has queued instructions. Wait or pause it first.":`このタスクにはすでにキューに入った指示があります。完了を待つか、先に一時停止してください。`,"This task has no accepted changes left to commit.":`このタスクにはコミットする承認済みの変更が残っていません。`,"This task is being created. Refresh in a moment.":`このタスクは作成中です。しばらくしてから再読み込みしてください。`,"This task is being deleted.":`このタスクは削除中です。`,"This task is being deleted. Retry deletion to finish cleanup.":`このタスクは削除中です。クリーンアップを完了するには削除を再試行してください。`,"This task is being deleted. Your instructions were not queued.":`このタスクは削除中です。指示はキューに追加されませんでした。`,"This task is busy. Wait for it to finish or pause it first.":`このタスクは処理中です。完了するまで待つか、先に一時停止してください。`,"This task is not an AI review.":`このタスクは AI レビューではありません。`,"This task was deleted. Create a new task instead.":`このタスクは削除されました。代わりに新しいタスクを作成してください。`,"Too many attempts. Wait a minute and try again.":`試行回数が多すぎます。1 分ほど待ってからもう一度お試しください。`,"Too many open Papilot tabs. Close one and try again.":`開いている Papilot タブが多すぎます。タブを閉じてからもう一度お試しください。`,"Unknown Git action.":`不明な Git アクションです。`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`未使用の添付ファイルが 500 MB に達しました。新しくアップロードする前に、下書きから添付ファイルを削除してください。`,"Upload a file as binary data.":`ファイルをバイナリデータとしてアップロードしてください。`,"Wait for repository preparation to finish.":`リポジトリの準備が完了するまでお待ちください。`,"Wait for task creation to finish before deleting it.":`削除する前に、タスクの作成が完了するまでお待ちください。`,"Wait for the current Git operation before sending more instructions.":`追加の指示を送信する前に、現在の Git 操作が完了するまでお待ちください。`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`現在の PDF のコンパイルが完了するのを待ってから、AI レビュースキルを実行してください。`,"Wait for the current delivery before sending more instructions.":`追加の指示を送信する前に、現在の送信が完了するまでお待ちください。`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`現在の原稿 PDF のコンパイルが完了するのを待ってから、もう一度提案をコピーしてください。`,"Wait for the current review action before building a review.":`レビューをビルドする前に、現在のレビュー操作が完了するまでお待ちください。`,"Wait for the current review action before committing.":`コミットする前に、現在のレビュー操作が完了するまでお待ちください。`,"Wait for the current update to finish before changing channels.":`チャンネルを変更する前に、現在の更新が完了するまでお待ちください。`,"Wait for the task and review actions to finish before applying changes.":`変更を適用する前に、タスクとレビューの操作が完了するまでお待ちください。`,"Wait for the task and review actions to finish before choosing a destination.":`反映先を選択する前に、タスクとレビュー操作が完了するまでお待ちください。`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`パスの変更や削除を行う前に、この論文の PDF ビルドが完了するまでお待ちください。`,"ZIP links and special files are not supported.":`ZIP 内のリンクおよび特殊ファイルはサポートされていません。`,"npm is unavailable to Papilot.":`Papilot から npm を利用できません。`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`PDF 比較サービスに接続できませんでした。変更は保存されています。「状態を確認」を選択して、元のビルドを復旧してください。`},B={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`패키지, 글꼴 또는 소스 파일이 누락되었을 수 있습니다. 아래 세부 정보를 확인하고 누락된 파일을 복원하거나 도움을 요청하세요.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`패스키를 사용하면 Face ID, Touch ID, Windows Hello 또는 휴대폰으로 로그인할 수 있습니다. Papilot은 비밀번호를 절대 확인하지 않습니다.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`동일한 ID의 스킬은 이 논문, 전역, 기본 내장 순으로 우선 적용됩니다.`,"A skill with this ID already exists in this location.":`이 위치에 동일한 ID의 스킬이 이미 존재합니다.`,"A task needs attention":`확인이 필요한 작업이 있습니다`,"A workspace for your papers.":`논문을 위한 작업 공간입니다.`,"AI is resolving conflicts…":`AI가 충돌을 해결하는 중…`,"AI needs your input":`AI에 사용자 입력이 필요합니다`,"AI review":`AI 검토`,"AI suggestion":`AI 제안`,"AI suggestion {n}":`AI 제안 {n}`,"AI suggestions":`AI 제안`,"Abort merge":`병합 중단`,"Aborting…":`중단 중…`,"About Papilot":`Papilot 정보`,Accent:`강조 색상`,"Accept change":`변경 사항 수락`,"Accept the current proposal. In Changes, stage or unstage it.":`현재 제안을 수락합니다. 변경 사항에서 스테이징하거나 스테이징을 해제합니다.`,Accepted:`수락됨`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`원고에서 수락된 변경 사항은 그대로 유지됩니다. 다른 작업에는 영향을 주지 않습니다.`,"Access to all papers":`모든 논문 접근 권한`,Account:`계정`,"Add a paper":`논문 추가`,"Add a passkey":`패스키 추가`,"Add all to task":`모두 작업에 추가`,"Add and fix later":`추가 후 나중에 수정`,"Add files or skills":`파일 또는 스킬 추가`,"Add files…":`파일 추가…`,"Add instructions to the selected color groups above.":`위에서 선택한 색상 그룹에 지침을 추가하세요.`,"Add note":`주석 추가`,"Add overall instructions (optional)":`전체 지침 추가(선택 사항)`,"Add paper":`논문 추가`,"Add paper…":`논문 추가…`,"Add skill":`스킬 추가`,"Add to .gitignore":`.gitignore에 추가`,"Add to group":`그룹에 추가`,"Add to {group}":`{group}에 추가`,"Add your first paper":`첫 번째 논문 추가하기`,Added:`추가됨`,"Added to task: {n}":`작업에 추가됨: {n}개`,"Added {n} pattern to .gitignore.":`.gitignore에 패턴 {n}개를 추가했습니다.`,"Added {n} patterns to .gitignore.":`.gitignore에 패턴 {n}개를 추가했습니다.`,"Address reviewers":`심사평 대응`,"Address {n} PDF notes":`PDF 주석 {n}개 처리`,Advanced:`고급`,"Agent configuration":`에이전트 구성`,"Agent settings":`에이전트 설정`,Agents:`에이전트`,All:`전체`,"All entries":`모든 항목`,"All skills":`모든 스킬`,"Allow this action":`이 작업 허용`,"Already set up?":`이미 설정하셨나요?`,"Already used for {action}. Choose another shortcut.":`이미 {action}에 사용 중입니다. 다른 단축키를 선택하세요.`,"Always light":`항상 라이트 모드`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`새 터미널에서 설정한 환경 변수는 이미 실행 중인 서버에 전달되지 않습니다. 자격 증명을 적용하려면 Papilot을 재시작하세요. 다시 연결하는 것만으로는 환경을 변경할 수 없습니다.`,"Annotation group color":`주석 그룹 색상`,"Annotation groups":`주석 그룹`,"Another entry has the same key.":`동일한 키를 가진 다른 항목이 있습니다.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity는 파일 도구를 통해 이미지를 엽니다. 이미지를 직접 입력하려면 Codex 또는 Claude를 선택하세요.`,Appearance:`모양`,Application:`애플리케이션`,"Applied to manuscript":`원고에 적용됨`,Apply:`적용`,"Apply file changes":`파일 변경 사항 적용`,"Apply to working directory":`작업 디렉터리에 적용`,"Apply to workspace":`작업 공간에 적용`,"Apply without committing":`커밋하지 않고 적용`,"Applying…":`적용 중…`,"Approval requests":`승인 요청`,"Approve this action":`이 작업 승인`,Archive:`보관`,"Archive task":`작업 보관`,"Archived task":`보관된 작업`,"Archived tasks":`보관된 작업`,"Ask a question or request changes…":`질문하거나 변경을 요청하세요…`,"Ask an agent to look into {n} problem":`에이전트에게 문제 {n}개 확인 요청하기`,"Ask an agent to look into {n} problems":`에이전트에게 문제 {n}개 확인 요청하기`,"Ask for another review of this PDF version…":`이 PDF 버전에 대한 추가 검토 요청…`,"Attach up to 10 files per message.":`메시지당 최대 10개의 파일을 첨부할 수 있습니다.`,Attachments:`첨부 파일`,"Attachments must total 100 MB or less.":`첨부 파일의 총용량은 100 MB 이하여야 합니다.`,Authors:`저자`,"Available levels depend on the selected model.":`사용 가능한 수준은 선택한 모델에 따라 다릅니다.`,"Available models":`사용 가능한 모델`,"Awaiting changes":`변경 사항 대기 중`,Background:`배경`,"Bare repository":`베어 저장소`,"BibTeX cannot read it ({error}).":`BibTeX에서 읽을 수 없습니다({error}).`,"BibTeX cannot read it: {error}":`BibTeX에서 읽을 수 없습니다: {error}`,Book:`책`,Branch:`브랜치`,"Bring your collaborators in":`공동 연구자 초대하기`,"Browser default ({language})":`브라우저 기본값({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`브라우저는 HTTPS 또는 localhost에서만 알림을 표시합니다. 알림을 사용하려면 안전한 주소에서 Papilot을 여세요.`,"Build failed · sent to {agent}":`빌드 실패 · {agent}에 전송됨`,"Built-in":`기본 제공`,Cancel:`취소`,"Change shortcut: {action}":`단축키 변경: {action}`,"Change {n}":`변경 {n}`,"Changed files in {branch}":`{branch}의 변경된 파일`,Changelog:`변경 내역`,Changes:`변경 사항`,"Changes apply to the next turn.":`변경 사항은 다음 턴부터 적용됩니다.`,"Changes in {path}":`{path}의 변경 사항`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`변경 사항은 변경된 섹션만 표시하며 가장 빠르게 열립니다. PDF는 전체 논문의 해당 위치에 각 변경 사항을 표시하며 긴 논문의 경우 시간이 더 걸립니다. 검토 내에서의 전환은 해당 검토에만 적용됩니다.`,"Change…":`변경…`,Chart:`차트`,Chat:`채팅`,"Chat (reply needed)":`채팅(답변 필요)`,"Chat only":`채팅만`,"Check again":`다시 확인`,"Check for updates":`업데이트 확인`,"Check for updates to see the latest version.":`최신 버전을 보려면 업데이트를 확인하세요.`,"Check math":`수식 확인`,"Check online":`온라인으로 확인`,"Check references online":`온라인으로 참고문헌 확인`,"Check status":`상태 확인`,"Check task status":`작업 상태 확인`,"Check task status before deleting this task.":`이 작업을 삭제하기 전에 작업 상태를 확인하세요.`,"Check task status before sending":`전송하기 전에 작업 상태 확인`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`위의 연결 오류와 이 호스트의 에이전트 로그인, 제공자 및 네트워크 설정을 확인하세요. 자격 증명이나 실행 파일 경로를 변경한 후에는 Papilot을 다시 시작하세요.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`메인 파일과 엔진을 확인하거나 어시스턴트에게 컴파일 수정을 요청하세요. 저장된 파일을 직접 수정한 후 다시 시도할 수도 있습니다.`,"Check the task status before sending notes.":`주석을 전송하기 전에 작업 상태를 확인하세요.`,"Check your connection and try again.":`연결 상태를 확인한 후 다시 시도하세요.`,"Check {n} more online":`{n}개 더 온라인으로 확인`,"Checked by you":`직접 확인함`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`원고 변경 사항을 확인하는 중입니다. PDF 비교는 필요한 경우에만 생성됩니다.`,"Checking for updates…":`업데이트 확인 중…`,"Checking {n}…":`{n}개 확인 중…`,"Checking…":`확인 중…`,Checklist:`체크리스트`,"Choose ZIP":`ZIP 선택`,"Choose a folder or ZIP, or drag it here.":`폴더나 ZIP 파일을 선택하거나 여기에 끌어다 놓으세요.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`사본을 업로드할 폴더를 선택하세요. 원본 파일을 사용하려면 데스크톱 앱에서 여세요.`,"Choose a shortcut to edit:":`편집할 단축키 선택:`,"Choose an icon":`아이콘 선택`,"Choose attachments":`첨부 파일 선택`,"Choose different files":`다른 파일 선택`,"Choose folder":`폴더 선택`,"Choose how paper pages look in dark mode.":`다크 모드에서 논문 페이지가 표시되는 방식을 선택하세요.`,"Choose the papers to share, then send a personal invite link.":`공유할 논문을 선택한 후 개인 초대 링크를 보내세요.`,"Choose up to 5,000 files, totaling less than 64 MB.":`최대 5,000개, 총 64 MB 미만의 파일을 선택하세요.`,"Choose {color} color":`{color} 색상 선택`,"Citations, entries and their records":`인용, 항목 및 해당 기록`,"Cited {n} time: {places}":`{n}회 인용됨: {places}`,"Cited {n} times: {places}":`{n}회 인용됨: {places}`,"Claude Code or API credentials were not detected.":`Claude Code 또는 API 자격 증명이 감지되지 않았습니다.`,"Clear selection":`선택 해제`,"Clear task search":`작업 검색 지우기`,"Click a highlighted key to customize it.":`강조 표시된 키를 클릭하여 사용자 지정하세요.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`변경할 키를 클릭한 다음 새 단축키를 누르세요. Escape를 누르면 취소되고 Backspace를 누르면 지워집니다.`,Close:`닫기`,"Close agent details":`에이전트 세부 정보 닫기`,"Close note":`주석 닫기`,"Close notes":`주석 닫기`,"Close review notes":`검토 주석 닫기`,"Close search":`검색 닫기`,"Close suggestion":`제안 닫기`,"Close task list":`작업 목록 닫기`,"Close the current editor or cancel region selection.":`현재 편집기를 닫거나 영역 선택을 취소합니다.`,"Close window":`창 닫기`,"Closest record":`가장 일치하는 기록`,Code:`코드`,"Collapse manuscript panel":`원고 패널 접기`,"Collapse {group} notes":`{group} 주석 접기`,Color:`색상`,Comments:`의견`,Commit:`커밋`,"Commit 1 file":`파일 1개 커밋`,"Commit all {n} files":`파일 {n}개 모두 커밋`,"Commit and push":`커밋 및 푸시`,"Commit graph":`커밋 그래프`,"Commit merge":`병합 커밋`,"Commit message":`커밋 메시지`,"Commit staged changes in 1 file":`파일 1개의 스테이징된 변경 사항 커밋`,"Commit staged changes in {n} files":`파일 {n}개의 스테이징된 변경 사항 커밋`,"Commit to manuscript":`원고에 커밋`,"Commit to task branch":`작업 브랜치에 커밋`,"Commit to {branch}":`{branch}에 커밋`,"Commit together":`함께 커밋`,"Commit what is staged":`스테이징된 항목 커밋`,"Commit {chosen} of {n} files":`파일 {n}개 중 {chosen}개 커밋`,Committed:`커밋됨`,"Committed and pushed":`커밋 및 푸시됨`,"Committed {hash} and pushed.":`{hash} 커밋 및 푸시됨.`,"Committed {hash} to {branch}":`{branch}에 {hash} 커밋됨`,"Committed {hash}.":`{hash} 커밋됨.`,"Committing and pushing…":`커밋 및 푸시 중…`,"Committing…":`커밋 중…`,"Commit…":`커밋…`,"Compared with {upstream}":`{upstream}와(과) 비교`,"Compilation details":`컴파일 세부 정보`,"Compilation failed. Click to retry.":`컴파일에 실패했습니다. 다시 시도하려면 클릭하세요.`,"Compilation log":`컴파일 로그`,"Compilation problems":`컴파일 문제`,"Compilation status unavailable.":`컴파일 상태를 확인할 수 없습니다.`,"Compiling the PDF…":`PDF 컴파일 중…`,Completed:`완료됨`,"Component source":`구성 요소 소스`,"Confirm and apply":`확인 및 적용`,"Confirm and commit":`확인 및 커밋`,"Confirm whether the task is still running before generating a PDF comparison.":`PDF 비교를 생성하기 전에 작업이 아직 실행 중인지 확인하세요.`,Conflict:`충돌`,"Conflict resolution paused":`충돌 해결 일시 중지됨`,"Conflicts resolved. Read the diffs, then commit the merge.":`충돌이 해결되었습니다. 변경 내역을 확인한 후 병합을 커밋하세요.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`논문에 다른 사용자를 초대하려면 공개 HTTPS 주소를 연결하세요. 초대받은 사용자는 패스키로 안전하게 로그인할 수 있습니다.`,"Connect an assistant in Settings to help repair this paper.":`이 논문을 복구하려면 설정에서 어시스턴트를 연결하세요.`,"Connect and sign in to load the model list.":`모델 목록을 불러오려면 연결하고 로그인하세요.`,"Connect to view account, models, and usage.":`계정, 모델 및 사용량을 보려면 연결하세요.`,Connected:`연결됨`,"Connecting to your papers and tasks…":`논문 및 작업에 연결 중…`,"Connecting to {agent}…":`{agent}에 연결 중…`,"Connecting…":`연결 중…`,"Connection details":`연결 세부 정보`,"Connection lost. Showing the last update; your draft is kept.":`연결이 끊어졌습니다. 마지막 업데이트를 표시하며 작성 중인 초안은 유지됩니다.`,Consistency:`일관성`,Contents:`목차`,"Contents will appear when the PDF is ready.":`PDF가 준비되면 목차가 표시됩니다.`,"Continue later":`나중에 계속하기`,Contribute:`기여하기`,"Contribute an integration":`연동 기능 기여하기`,Copied:`복사됨`,"Copied path":`경로 복사됨`,Copy:`복사`,"Copy and edit":`복사하여 편집`,"Copy message":`메시지 복사`,"Copy path: {path}":`경로 복사: {path}`,"Copy selected PDF text":`선택한 PDF 텍스트 복사`,"Copy this built-in skill to customize it for all papers or this paper.":`이 기본 제공 스킬을 복사하여 모든 논문 또는 이 논문에 맞게 사용자 지정하세요.`,"Could not check":`확인할 수 없음`,"Could not check for updates":`업데이트를 확인할 수 없음`,"Could not check for updates. Try again when connected.":`업데이트를 확인할 수 없습니다. 연결된 상태에서 다시 시도하세요.`,"Could not complete the environment checks. Check the connection and try again.":`환경 확인을 완료할 수 없습니다. 연결을 확인하고 다시 시도하세요.`,"Could not detect a main file. Enter its path relative to the paper folder.":`메인 파일을 감지할 수 없습니다. 논문 폴더를 기준으로 상대 경로를 입력하세요.`,"Could not generate the PDF comparison.":`PDF 비교를 생성할 수 없습니다.`,"Could not load the license notices.":`라이선스 고지를 불러올 수 없습니다.`,"Could not prepare the paper":`논문을 준비할 수 없습니다`,"Could not read the LaTeX installation. Try again.":`LaTeX 설치 정보를 읽을 수 없습니다. 다시 시도하세요.`,"Could not read the selected file.":`선택한 파일을 읽을 수 없습니다.`,"Could not read this worktree.":`이 작업 트리를 읽을 수 없습니다.`,"Could not reconnect. Check the server connection and try again.":`다시 연결할 수 없습니다. 서버 연결을 확인하고 다시 시도하세요.`,"Could not refresh the repository.":`저장소를 새로 고칠 수 없습니다.`,"Could not start the update. Please retry.":`업데이트를 시작할 수 없습니다. 다시 시도해 주세요.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Cursor 대시보드에서 Cursor API 키를 생성하거나 이 호스트에서 Cursor SDK 로그인을 구성하세요.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Zhipu 또는 Z.ai에서 GLM Coding Plan이나 API 키를 생성하세요.`,"Create a passkey":`패스키 생성`,"Create a passkey on this device to sign in as {name}.":`{name}(으)로 로그인하려면 이 기기에서 패스키를 생성하세요.`,"Create a passkey to sign in to your Papilot from anywhere.":`어디서나 Papilot에 로그인할 수 있도록 패스키를 생성하세요.`,"Create invite link":`초대 링크 생성`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`패스키 생성이 취소되었습니다. 링크는 계속 유효하니 준비되면 다시 시도하세요.`,"Creating…":`생성 중…`,"Credits available":`사용 가능한 크레딧`,Current:`현재`,"Current version":`현재 버전`,"Cursor SDK credentials were not detected.":`Cursor SDK 자격 증명이 감지되지 않았습니다.`,"Customize shortcuts":`단축키 사용자 지정`,Customized:`사용자 지정됨`,"Cut length without losing content":`내용 손실 없이 분량 줄이기`,"Daily limit":`일일 한도`,Dark:`다크`,Decline:`거절`,Declined:`거절됨`,Default:`기본값`,"Default model":`기본 모델`,"Default reasoning effort":`기본 추론 강도`,"Delete file":`파일 삭제`,"Delete note":`주석 삭제`,"Delete note {n}":`주석 {n} 삭제`,"Delete review note {n}":`검토 주석 {n} 삭제`,"Delete skill":`스킬 삭제`,"Delete task":`작업 삭제`,"Delete task?":`작업을 삭제하시겠습니까?`,"Delete task…":`작업 삭제…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`이 스킬을 삭제하시겠습니까? Markdown 파일만 삭제되며 관련 파일은 그대로 유지됩니다.`,"Delete {name}?":`{name}을(를) 삭제하시겠습니까?`,Deleted:`삭제됨`,"Deleting task":`작업 삭제 중`,"Deleting…":`삭제 중…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`삭제가 이미 시작되었습니다. 정리를 확인하고 작업을 제거하려면 다시 시도하세요.`,"Deletion is in progress":`삭제가 진행 중입니다`,"Describe the revision":`수정 내용 설명`,"Describe what the agent should do, what to preserve, and how to present the result.":`에이전트가 수행할 작업, 유지할 내용 및 결과 표시 방식을 설명하세요.`,Description:`설명`,"Details (optional)":`세부 정보 (선택 사항)`,"Detect again":`다시 감지`,"Detecting LaTeX installation…":`LaTeX 설치 감지 중…`,"Dev (GitHub main)":`개발 (GitHub main)`,Differs:`불일치`,"Discard all changes":`모든 변경 사항 취소`,"Discard changes":`변경 사항 취소`,"Discard changes in {name}?":`{name}의 변경 사항을 취소하시겠습니까?`,"Discard changes in {n} file?":`파일 {n}개의 변경 사항을 취소하시겠습니까?`,"Discard changes in {n} files?":`파일 {n}개의 변경 사항을 취소하시겠습니까?`,"Discard changes in {path}":`{path}의 변경 사항 취소`,"Discard unsaved skill changes?":`저장하지 않은 스킬 변경 사항을 취소하시겠습니까?`,"Discarded changes in {n} file.":`파일 {n}개의 변경 사항을 취소했습니다.`,"Discarded changes in {n} files.":`파일 {n}개의 변경 사항을 취소했습니다.`,"Dismiss error":`오류 닫기`,Distribution:`배포판`,"Download desktop updates":`데스크톱 업데이트 다운로드`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`GitHub Releases에서 시스템에 맞는 최신 데스크톱 앱을 다운로드하세요. 기존 논문과 설정은 그대로 유지됩니다.`,"Downloading and building the selected GitHub commit…":`선택한 GitHub 커밋을 다운로드하고 빌드하는 중…`,"Downloading and checking the new version…":`새 버전을 다운로드하고 확인하는 중…`,"Drag to resize · Double-click to reset":`드래그하여 크기 조절 · 두 번 클릭하여 초기화`,"Drop files to attach":`파일을 드롭하여 첨부`,"Drop one folder or LaTeX ZIP file.":`하나의 폴더 또는 LaTeX ZIP 파일을 끌어다 놓으세요.`,"Early updates from GitHub main. May be less stable.":`GitHub main의 초기 업데이트입니다. 안정성이 떨어질 수 있습니다.`,Edit:`편집`,"Edit note":`주석 편집`,"Edit note {n}":`주석 {n} 편집`,"Edit note {n}: {comment}":`주석 {n} 편집: {comment}`,"Edit paper":`논문 편집`,"Edit {name}":`{name} 편집`,"Edited {file}":`{file} 편집됨`,"Edited {n} files":`파일 {n}개 편집됨`,"Editing dark mode colors. Changes are saved automatically.":`다크 모드 색상을 편집 중입니다. 변경 사항은 자동으로 저장됩니다.`,"Editing light mode colors. Changes are saved automatically.":`라이트 모드 색상을 편집 중입니다. 변경 사항은 자동으로 저장됩니다.`,"Enable shortcut: {action}":`단축키 활성화: {action}`,"Enter a folder path":`폴더 경로 입력`,"Environment variable":`환경 변수`,Errors:`오류`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`목차나 참고문헌 번호 등 다른 위치의 변경 사항도 펼쳐서 표시합니다. 기본값은 꺼짐이며, 매크로 정의처럼 원본 위치에 눈에 띄는 변화가 없는 편집은 계속 그 결과가 표시됩니다.`,"Expand indirect changes":`간접 변경 사항 펼치기`,"Expand manuscript panel":`원고 패널 펼치기`,"Expand {group} notes":`{group} 주석 펼치기`,Failed:`실패`,Fast:`빠름`,"Fast mode":`빠른 모드`,"Faster responses; may use more of your limit.":`응답 속도가 빨라지지만 한도를 더 많이 소모할 수 있습니다.`,"Feedback & issues":`피드백 및 문제 보고`,"Fetch from the remote":`원격 저장소에서 가져오기`,"Files must be 25 MB or smaller.":`파일 크기는 25 MB 이하여야 합니다.`,"Files on disk, Git history and task worktrees will stay in place.":`디스크의 파일, Git 기록 및 작업의 작업 트리는 그대로 유지됩니다.`,"Files received":`수신된 파일`,"Find (⌘F)":`찾기 (⌘F)`,"Find errors in notation, equations and proofs":`표기법, 수식 및 증명의 오류 찾기`,"Find in PDF":`PDF에서 찾기`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`이 참고문헌 문제들의 원인을 파악하여 보고하세요. 어떤 파일도 편집하지 마세요. 각 항목에 대해 해당 저작물이 실제로 존재하는지, 출판 기록(저자, 제목, 연도, 학술지/학회, DOI)은 어떠한지 확인하고, .bib 및 .tex 파일의 Git 기록에서 해당 항목이나 인용의 출처를 찾은 뒤 제안 사항을 제시하세요. 출처에서 확인된 사실과 추측인 내용을 구분하여 표시하세요.`,"Fit page":`페이지에 맞춤`,"Fit width":`너비에 맞춤`,"Fix LaTeX warnings":`LaTeX 경고 수정`,"Fix typos, grammar and punctuation without rewording":`문장을 다시 쓰지 않고 오타, 문법 및 문장 부호 수정`,"Fix with an agent…":`에이전트로 수정…`,"Folder path":`폴더 경로`,"Follow mode":`따라가기 모드`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`대신 SDK를 사용하려면 ANTHROPIC_API_KEY 또는 지원되는 클라우드 제공업체를 구성하여 Papilot을 시작하세요. 환경을 변경한 후에는 Papilot을 다시 시작하세요.`,Foreground:`전경`,"Full PDF":`전체 PDF`,General:`일반`,"Generate PDF comparison":`PDF 비교 생성`,"Generate commit message":`커밋 메시지 생성`,"Generate task title":`작업 제목 생성`,"Generating task title…":`작업 제목 생성 중…`,"Get started and make Papilot your own.":`Papilot을 시작하고 나에게 맞게 설정해 보세요.`,"Git status":`Git 상태`,"Git status of the manuscript":`원고의 Git 상태`,"Git, {n} changed":`Git, {n}개 변경됨`,"GitHub repository":`GitHub 저장소`,"Give your skill a name":`스킬 이름 입력`,Global:`전역`,Globe:`지구본`,Graphite:`그래파이트`,Green:`초록색`,"Help fix compilation":`컴파일 오류 수정 지원`,"Help improve Papilot with code, docs, and ideas.":`코드, 문서, 아이디어로 Papilot 개선에 참여해 보세요.`,"Hide task list":`작업 목록 숨기기`,"Highlighted in {group}":`{group}(으)로 강조 표시됨`,"Hover over a highlighted key to see what it does.":`강조 표시된 키 위에 마우스를 올리면 기능을 확인할 수 있습니다.`,"I checked it myself":`직접 확인함`,Idea:`아이디어`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`이미 설치되어 있다면 Papilot을 시작하는 환경에서 {variable} 값을 실행 파일 경로로 설정한 후 Papilot을 다시 시작하세요.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`실시간 상태가 여전히 확인 결과와 일치하지 않으면 에이전트를 구성한 동일한 사용자 및 환경에서 Papilot을 다시 시작하세요.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`작업으로 인해 원고가 변경되면 여기에 PDF 비교가 표시됩니다. 그렇지 않은 경우 채팅에서 답변을 확인하세요.`,Ignore:`무시`,"Ignore suggestion {n}":`제안 {n} 무시`,"Images must be 5 MB or smaller.":`이미지는 5 MB 이하여야 합니다.`,"Import a ZIP":`ZIP 가져오기`,"Import a separate copy from Overleaf or a ZIP archive.":`Overleaf 또는 ZIP 압축 파일에서 별도의 사본을 가져옵니다.`,"Import progress":`가져오기 진행 상태`,"Improve clarity and flow, keeping the meaning":`의미를 유지하면서 명확성과 흐름 개선`,"Include note {n} in this task":`이 작업에 주석 {n} 포함`,"Include suggestion {n} in this task":`이 작업에 제안 {n} 포함`,"Include {key} in the task":`작업에 {key} 포함`,"Individual notes":`개별 주석`,"Input needed":`입력 필요`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Papilot을 실행 중인 컴퓨터에 latexmk가 포함된 TeX Live 또는 MacTeX를 설치한 후 다시 시도하세요.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`새 버전을 설치하고 작업이 유휴 상태일 때 자동으로 다시 시작합니다. 논문, 작업 및 설정은 그대로 유지됩니다.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Papilot을 실행 중인 호스트에 {command}을(를) 설치한 후 아래에서 로그인 또는 제공업체 설정을 완료하세요.`,"Installation & setup":`설치 및 설정`,"Installation check":`설치 확인`,"Installation location":`설치 위치`,Instructions:`지침`,"Instructions for color groups":`색상 그룹 지침`,"Instructions for {agent}":`{agent} 지침`,"Instructions for {group} notes":`{group} 주석 지침`,"Invite link for a new device":`새 기기용 초대 링크`,"Invite link for {name}":`{name} 초대 링크`,"Invite someone":`사용자 초대`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`초대된 사용자는 자격 증명과 공유되지 않은 논문을 포함하여 Papilot에서 읽을 수 있는 모든 파일에 접근할 수 있습니다.`,"Invited, not joined yet":`초대됨, 아직 참여하지 않음`,"Join Papilot":`Papilot 참여`,Joined:`참여함`,"Jump to the next change that still needs a decision.":`결정이 필요한 다음 변경 사항으로 이동합니다.`,"Keep editing":`계속 편집`,"Keep latest wording and apply":`최신 문구를 유지하고 적용`,"Keep latest wording and commit":`최신 문구를 유지하고 커밋`,"Keep on manuscript":`원고에 유지`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`겹치는 구절에는 최신 문구를 유지하고 수락된 다른 변경 사항을 저장합니다.`,"Kept on manuscript":`원고에 유지됨`,"Keyboard key {key}: {actions}":`키보드 키 {key}: {actions}`,"Keyboard shortcuts":`키보드 단축키`,"LaTeX Git repository · Requires a commit and latexmk":`LaTeX Git 저장소 · 커밋 및 latexmk 필요`,"LaTeX engine":`LaTeX 엔진`,"LaTeX installation":`LaTeX 설치`,"Label defined more than once":`레이블이 두 번 이상 정의됨`,Language:`언어`,"Language for the Papilot interface.":`Papilot 인터페이스 언어입니다.`,"Last active {time}":`마지막 활동: {time}`,Later:`나중에`,"Latest messages":`최근 메시지`,"Latest version":`최신 버전`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Papilot 및 검토 엔진에서 사용하는 라이브러리와 글꼴입니다. 각 구성 요소에는 고유한 라이선스가 적용됩니다.`,"Libraries, fonts, and the people behind them.":`라이브러리, 글꼴 및 제작자 정보입니다.`,"License text is not included in this package. See the component source for its terms.":`이 패키지에는 라이선스 전문이 포함되어 있지 않습니다. 약관은 해당 구성 요소의 소스를 참조하세요.`,"Licenses & acknowledgments":`라이선스 및 감사의 글`,Light:`라이트`,"Limit reached":`한도 도달`,"Line too wide by {amount}pt":`줄 너비가 {amount}pt 초과됨`,Link:`링크`,"Loading PDF review…":`PDF 검토 불러오는 중…`,"Loading conversation…":`대화 불러오는 중…`,"Loading license notices…":`라이선스 고지 불러오는 중…`,"Loading people…":`구성원 불러오는 중…`,"Loading skills…":`스킬 불러오는 중…`,"Loading the diff…":`변경 내용 불러오는 중…`,"Loading…":`불러오는 중…`,Location:`위치`,Locked:`잠김`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Crossref, DBLP 및 arXiv에서 항목을 조회합니다. 제목, 저자, 연도 및 식별자만 전송됩니다.`,"Made by Cui Chen and the Papilot contributors.":`Cui Chen 및 Papilot 기여자들이 제작했습니다.`,"Main TeX file":`메인 TeX 파일`,Manuscript:`원고`,"Manuscript panels":`원고 패널`,"Manuscript view":`원고 보기`,"Mark a figure or region":`그림 또는 영역 표시`,"Mark region":`영역 표시`,"Marked on earlier changes.":`이전 변경 사항에 표시됨.`,"Marked region":`표시된 영역`,Math:`수식`,"Maximize or restore window":`창 최대화 또는 복원`,Members:`구성원`,Merge:`병합`,"Merge in progress":`병합 진행 중`,"Merged {upstream}.":`{upstream} 병합됨.`,"Merging: no conflicts left":`병합 중: 남은 충돌 없음`,"Merging: {n} file has conflicts":`병합 중: 파일 {n}개에 충돌 있음`,"Merging: {n} files have conflicts":`병합 중: 파일 {n}개에 충돌 있음`,"Message ({key} to commit on “{branch}”)":`메시지(“{branch}”에 커밋하려면 {key})`,"Minimize window":`창 최소화`,"Missing character":`누락된 문자`,"Missing file":`누락된 파일`,"Missing worktree":`누락된 작업 트리`,"Missing: {files}":`누락됨: {files}`,Mode:`모드`,"Model default":`모델 기본값`,Models:`모델`,Modified:`수정됨`,"More Git actions":`추가 Git 작업`,"More commit actions":`추가 커밋 작업`,"Move to the next visible change.":`다음에 표시된 변경 사항으로 이동합니다.`,"Move to the previous visible change.":`이전에 표시된 변경 사항으로 이동합니다.`,"My notes":`내 주석`,Name:`이름`,"Needs attention":`확인 필요`,"Needs your reply":`응답 필요`,"New invite link":`새 초대 링크`,"New skill":`새 스킬`,"New task":`새 작업`,"New version":`새 버전`,"Next change":`다음 변경 사항`,"Next match":`다음 일치 항목`,"Next page":`다음 페이지`,"Next suggestion":`다음 제안`,"Next suggestion (→)":`다음 제안 (→)`,"Next undecided change":`미결정된 다음 변경 사항`,"No GLM API key was found.":`GLM API 키를 찾을 수 없습니다.`,"No LaTeX installation was detected on this host.":`이 호스트에서 설치된 LaTeX를 감지하지 못했습니다.`,"No archived tasks":`보관된 작업 없음`,"No commits yet":`아직 커밋 없음`,"No components match your search.":`검색과 일치하는 구성 요소가 없습니다.`,"No entry has this key.":`이 키를 가진 항목이 없습니다.`,"No files found in this folder.":`이 폴더에 파일이 없습니다.`,"No installation details were returned. Run the checks again to refresh.":`설치 세부 정보가 반환되지 않았습니다. 새로 고치려면 검사를 다시 실행하세요.`,"No linked change":`연결된 변경 사항 없음`,"No linked task":`연결된 작업 없음`,"No manuscript changes":`원고 변경 사항 없음`,"No matches":`일치 항목 없음`,"No matching settings":`일치하는 설정 없음`,"No matching skills":`일치하는 스킬 없음`,"No matching tasks":`일치하는 작업 없음`,"No models match “{query}”":`“{query}”와(과) 일치하는 모델 없음`,"No notes yet":`아직 주석 없음`,"No other worktrees in this repository.":`이 저장소에 다른 작업 트리가 없습니다.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`아직 공유된 논문이 없습니다. {name} 님이 논문을 공유하면 여기에 표시됩니다.`,"No papers yet":`아직 논문 없음`,"No passkey on this device? Ask the person who invited you for a new invite link.":`이 기기에 패스키가 없나요? 초대한 사람에게 새 초대 링크를 요청하세요.`,"No problems found.":`문제가 발견되지 않았습니다.`,"No problems in the files. Check online to compare the entries with their records.":`파일에 문제가 없습니다. 온라인에서 확인하여 항목을 해당 기록과 비교해 보세요.`,"No problems in the last build.":`마지막 빌드에서 문제가 발견되지 않았습니다.`,"No record in Crossref, DBLP or arXiv matches it.":`일치하는 Crossref, DBLP 또는 arXiv 기록이 없습니다.`,"No tasks yet":`아직 작업 없음`,"No textual changes.":`텍스트 변경 사항이 없습니다.`,"No uncommitted changes":`커밋되지 않은 변경 사항 없음`,"No upstream branch":`업스트림 브랜치 없음`,"Not assigned":`지정되지 않음`,"Not checked":`확인되지 않음`,"Not cited in the paper.":`논문에 인용되지 않았습니다.`,"Not detected":`감지되지 않음`,"Not found":`찾을 수 없음`,"Note deleted.":`주석이 삭제되었습니다.`,"Note for the agent":`에이전트용 주석`,"Note on the PDF":`PDF의 주석`,"Note {n}":`주석 {n}`,"Note {n}: {comment}":`주석 {n}: {comment}`,"Notes in this task":`이 작업의 주석`,"Notes stay here unless you add them to a task.":`주석은 작업에 추가하지 않으면 여기에 유지됩니다.`,"Nothing to check":`확인할 항목 없음`,Notifications:`알림`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`이 사이트의 알림이 차단되어 있습니다. 브라우저의 사이트 설정에서 알림을 허용한 후 여기에서 켜세요.`,"Notifications are on":`알림이 켜져 있습니다`,"Notify me about":`알림 받을 항목`,"Notify me when a task fails or stops unexpectedly.":`작업이 실패하거나 예기치 않게 중지되면 알림을 받습니다.`,"Notify me when an agent asks me a question.":`에이전트가 질문할 때 알림을 받습니다.`,"Notify me when an agent finishes without changes to review.":`에이전트가 검토할 변경 사항 없이 완료되면 알림을 받습니다.`,"Notify me when an agent needs my approval to continue.":`에이전트가 계속 진행하기 위해 승인이 필요할 때 알림을 받습니다.`,"Notify me when changes are ready for review.":`변경 사항이 검토 준비가 되면 알림을 받습니다.`,Off:`꺼짐`,"Online checks are off in Settings, so only problems found in the files are shown.":`설정에서 온라인 확인이 꺼져 있으므로 파일에서 발견된 문제만 표시됩니다.`,"Online checks are off in Settings.":`설정에서 온라인 확인이 꺼져 있습니다.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`원고 변경 사항만 PDF 비교가 필요합니다. 질문에 대한 답변은 채팅에 있습니다.`,"Open PDF":`PDF 열기`,"Open a branch to commit":`커밋할 브랜치 열기`,"Open a folder":`폴더 열기`,"Open attachment {name}":`첨부 파일 {name} 열기`,"Open chat":`채팅 열기`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`로그인하려는 기기에서 여세요. 15분 이내에 한 번만 사용할 수 있습니다.`,"Open paper":`논문 열기`,"Open review":`검토 열기`,"Open review in new tab":`새 탭에서 검토 열기`,"Open reviews on":`검토 열기 기본 보기`,"Open task: {title}":`작업 열기: {title}`,"Open the full PDF":`전체 PDF 열기`,"Open these shortcut settings.":`이 단축키 설정을 엽니다.`,"Opening the PDF…":`PDF 여는 중…`,"Opening your workspace":`작업 공간 여는 중`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`전송하기 전에 편집할 수 있는 새 작업을 엽니다. 에이전트는 발견한 내용을 보고하며 아무것도 변경하지 않습니다.`,"Opens in a new tab":`새 탭에서 열림`,"Or drop a folder or ZIP here":`또는 여기에 폴더나 ZIP 파일을 끌어다 놓으세요`,"Or type your own answer":`또는 직접 답변 입력`,Orange:`주황색`,Overridden:`재정의됨`,Owner:`소유자`,"PDF annotations":`PDF 주석`,"PDF appearance":`PDF 모양`,"PDF comparison":`PDF 비교`,"PDF compilation":`PDF 컴파일`,"PDF compiled successfully.":`PDF가 성공적으로 컴파일되었습니다.`,"PDF contents":`PDF 목차`,"PDF controls":`PDF 컨트롤`,"PDF note library":`PDF 주석 라이브러리`,"PDF note {n}":`PDF 주석 {n}`,"PDF notes":`PDF 주석`,"PDF pages":`PDF 페이지`,"PDF preview":`PDF 미리보기`,"PDF review":`PDF 검토`,"PDF review only":`PDF 검토 전용`,"Page number":`페이지 번호`,"Page {n}":`{n}페이지`,"Page {pages}":`{pages}페이지`,"Page {pages} of {total}":`{total}페이지 중 {pages}페이지`,"Pages typeset":`조판된 페이지`,Paper:`논문`,"Paper name":`논문 이름`,"Paper tools":`논문 도구`,"Paper: {name}":`논문: {name}`,"Papers and tasks":`논문 및 작업`,"Papers they can open":`열 수 있는 논문`,"Papers {name} can open":`{name} 님이 열 수 있는 논문`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot이 이 컴퓨터에서 npm을 찾을 수 없습니다. npm이 설치될 때까지 업데이트할 수 없습니다.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot이 이 에이전트와 정상적인 연결을 설정하지 못했습니다. 최근 연결 오류가 아래에 표시됩니다.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot에서 컴파일할 파일을 준비하지 못했습니다. 이는 LaTeX 오류가 아닌 애플리케이션 오류입니다.`,"Papilot license":`Papilot 라이선스`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot이 이 에이전트에 도달했지만 이 호스트에서 로그인된 계정을 확인할 수 없었습니다.`,"Papilot sent the build error to {agent}, {time}":`Papilot이 빌드 오류를 {agent}에 전송함, {time}`,"Papilot will tell you here when a task needs you.":`작업에 사용자의 확인이 필요할 때 Papilot이 여기에서 알려줍니다.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`일부 검토됨`,Passed:`통과됨`,"Passkey · {label}":`패스키 · {label}`,Pause:`일시정지`,"Pause task":`작업 일시정지`,"Pause this task before deleting it.":`삭제하기 전에 이 작업을 일시정지하세요.`,"Pause {agent}":`{agent} 일시정지`,Paused:`일시정지됨`,Pen:`펜`,"Pending review":`검토 대기 중`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`초대받은 사용자는 공개 주소에서 패스키로 로그인하며, 이 호스트에서 에이전트가 실행하는 명령을 승인하고 호스트의 Git 자격 증명으로 푸시하는 것을 포함해 공유된 논문에서 본인과 동일한 모든 권한을 가집니다.`,Personal:`개인`,Polish:`다듬기`,"Position needs confirmation":`위치 확인 필요`,"Prepare and compile":`준비 및 컴파일`,"Preparing task results":`작업 결과 준비 중`,"Preparing task results…":`작업 결과 준비 중…`,"Preparing version history and compiling the PDF…":`버전 기록을 준비하고 PDF를 컴파일하는 중…`,"Press a key…":`키를 누르세요…`,Preview:`미리보기`,"Previous change":`이전 변경사항`,"Previous match":`이전 일치 항목`,"Previous page":`이전 페이지`,"Previous suggestion":`이전 제안`,"Previous suggestion (←)":`이전 제안 (←)`,Problems:`문제`,"Processing the bibliography…":`참고문헌 처리 중…`,Proofread:`교정`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Papilot을 시작하는 프로세스나 서비스에 CURSOR_API_KEY를 제공한 후 Papilot을 다시 시작하세요. SDK는 사용할 때 자동으로 설치됩니다.`,"Publish branch":`브랜치 게시`,"Published releases, recommended for everyday use.":`정식 릴리스로, 일상적인 사용에 권장됩니다.`,Pull:`풀`,"Pulled the latest commits.":`최신 커밋을 풀했습니다.`,Purple:`보라색`,Push:`푸시`,"Pushed to the remote.":`원격 저장소에 푸시했습니다.`,"Pushed to {upstream}.":`{upstream}(으)로 푸시했습니다.`,"Queue instructions for the next turn…":`다음 차례를 위한 지시사항을 대기열에 추가…`,Queued:`대기열에 추가됨`,"Quote in chat":`채팅에 인용`,"Quoted text":`인용된 텍스트`,"Raw log":`원시 로그`,"Read folder":`폴더 읽기`,"Read the paper and leave PDF comments without editing the manuscript":`원고를 수정하지 않고 논문을 읽고 PDF에 주석을 남깁니다`,"Read, annotate, and revise your papers with AI, all in one place.":`한곳에서 AI와 함께 논문을 읽고, 주석을 달고, 수정하세요.`,"Reading Git status…":`Git 상태 읽는 중…`,"Reading paper files…":`논문 파일 읽는 중…`,"Reading the bibliography…":`참고문헌 읽는 중…`,"Reading update status…":`업데이트 상태 읽는 중…`,"Reading worktrees and history…":`작업 트리와 기록 읽는 중…`,Ready:`준비됨`,"Ready for review":`검토 준비됨`,"Ready to check for updates":`업데이트 확인 준비됨`,"Reasoning effort":`추론 강도`,Recent:`최근`,"Recompile PDF":`PDF 다시 컴파일`,"Recompiling; this list will update.":`다시 컴파일하는 중입니다. 이 목록은 곧 업데이트됩니다.`,Reconnect:`다시 연결`,Reconnecting:`다시 연결하는 중`,Record:`레코드`,Red:`빨간색`,"Reference check":`참고문헌 검사`,"Refresh changes":`변경 사항 새로 고침`,"Refresh skills":`스킬 새로고침`,"Refresh worktrees and history":`작업 트리와 기록 새로고침`,"Regenerate PDF comparison":`PDF 비교 다시 생성`,"Region note":`영역 주석`,"Reject change":`변경사항 거절`,"Reject the current proposal. In Changes, revert it.":`현재 제안을 거절합니다. 변경사항에서는 이를 되돌립니다.`,Rejected:`거절됨`,"Reload review":`검토 다시 불러오기`,Remove:`제거`,"Remove attachment {name}":`첨부파일 {name} 제거`,"Remove from Papilot":`Papilot에서 제거`,"Remove from draft":`초안에서 제거`,"Remove note {n} from task":`작업에서 주석 {n} 제거`,"Remove paper":`논문 제거`,"Remove paper?":`논문을 제거하시겠습니까?`,"Remove suggestion {n} from task":`작업에서 제안 {n} 제거`,"Remove the {name} skill":`{name} 스킬 제거`,"Remove this paper and its tasks, conversations and notes from Papilot?":`Papilot에서 이 논문과 관련된 작업, 대화 및 주석을 제거하시겠습니까?`,"Remove {device}":`{device} 제거`,"Remove {name}":`{name} 제거`,"Remove…":`제거…`,"Removing…":`제거 중…`,"Rename {name}":`{name} 이름 변경`,Renamed:`이름 변경됨`,"Rename…":`이름 변경…`,"Repair summary":`복구 요약`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`복구 내역은 커밋되지 않은 변경 사항으로 저장됩니다. 논문의 파일 변경 사항에서 검토하세요.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`계속하려면 채팅에 답장하세요. PDF 비교는 원고가 변경된 경우에만 필요합니다.`,"Reply to {agent}":`{agent}에 답장`,"Report a bug or suggest an improvement.":`버그를 신고하거나 개선 사항을 제안하세요.`,"Reported {n} times":`{n}회 보고됨`,"Repository path":`저장소 경로`,"Request a revision":`수정 요청`,"Request failed. Please try again.":`요청에 실패했습니다. 다시 시도해 주세요.`,"Reset appearance":`모양 초기화`,"Resize chat panel":`채팅 패널 크기 조절`,"Resize manuscript panel":`원고 패널 크기 조절`,"Resolve undefined references, overfull boxes and other build warnings":`정의되지 않은 참조, 넘침 상자(overfull box) 및 기타 빌드 경고 해결`,"Resolve with {agent}":`{agent}(으)로 해결`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Papilot을 재시작하는 중입니다. 이 페이지는 자동으로 다시 연결되며 작성 중인 초안은 유지됩니다.`,"Restarting…":`재시작 중…`,"Restore default shortcuts":`기본 단축키 복원`,"Restore task":`작업 복원`,Retry:`재시도`,"Retry build":`빌드 재시도`,"Retry compilation":`컴파일 재시도`,"Retry connection":`연결 재시도`,"Retry conversation":`대화 재시도`,"Retry deletion":`삭제 재시도`,"Retry deletion…":`삭제 재시도…`,"Retry linking changes":`변경 사항 연결 재시도`,"Retry title generation":`제목 생성 재시도`,"Retry update":`업데이트 재시도`,"Retry uploading {name}":`{name} 업로드 재시도`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`수정에 사용할 수 있는 재사용 가능한 지침입니다. 작업을 시작할 때 / 메뉴에서 스킬을 선택하세요.`,Review:`검토`,"Review PDF notes":`PDF 주석 검토`,"Review and chat side by side":`나란히 검토 및 채팅하기`,"Review complete":`검토 완료`,"Review copy":`검토본`,"Review decisions":`검토 결정`,"Review feedback":`검토 피드백`,"Review navigation":`검토 탐색`,"Review note: {comment}":`검토 주석: {comment}`,"Review notes":`검토 주석`,"Review notes ({n})":`검토 주석({n})`,"Review preferences":`검토 환경설정`,"Review ready":`검토 준비 완료`,"Review ready · {n} change to decide":`검토 준비 완료 · 결정할 변경 사항 {n}개`,"Review ready · {n} changes to decide":`검토 준비 완료 · 결정할 변경 사항 {n}개`,"Review shortcut keyboard":`검토 단축키 키보드`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`검토 단축키는 PDF 검토에 포커스가 있을 때 작동합니다. 텍스트를 입력하거나 선택하는 동안에는 일시 중지됩니다. 변경 사항은 이 브라우저에 저장됩니다.`,"Review the merged result":`병합된 결과 검토`,"Review, {n} to decide":`검토, 결정할 항목 {n}개`,"Revise for reviewer comments and draft a point-by-point reply":`심사위원 코멘트에 맞춰 수정하고 항목별 답변서 초안 작성`,"Revision requested":`수정 요청됨`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`접근을 제한하려면 Docker와 같은 격리된 컨테이너에서 Papilot과 에이전트를 실행하세요. 마운트된 파일에는 계속 접근할 수 있습니다.`,"Run command":`명령어 실행`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`호스트에서 papilot codex login을 실행하세요. 필요한 경우 지원되는 Codex CLI를 설치합니다.`,"Run tool":`도구 실행`,Running:`실행 중`,Runtime:`런타임`,"Same DOI as {keys}.":`{keys}와(과) 동일한 DOI입니다.`,"Same title as {keys}.":`{keys}와(과) 동일한 제목입니다.`,Save:`저장`,"Save accepted changes":`수락된 변경 사항 저장`,"Save to":`저장 위치`,Saved:`저장됨`,"Saved folder":`저장된 폴더`,"Saving…":`저장 중…`,Search:`검색`,"Search archived tasks…":`보관된 작업 검색…`,"Search components or licenses":`구성 요소 또는 라이선스 검색`,"Search components or licenses…":`구성 요소 또는 라이선스 검색…`,"Search models":`모델 검색`,"Search settings":`설정 검색`,"Search skills":`스킬 검색`,"Search task titles and instructions":`작업 제목 및 지침 검색`,"Search tasks":`작업 검색`,"Search tasks…":`작업 검색…`,"Search the PDF":`PDF 검색`,"See license notice":`라이선스 고지 보기`,"See what changed in each release.":`각 릴리스의 변경 사항을 확인하세요.`,"Select a skill or create your own.":`스킬을 선택하거나 직접 만드세요.`,"Select all notes for this task":`이 작업의 모든 주석 선택`,"Select all {group} notes for this task":`이 작업의 모든 {group} 주석 선택`,"Send (Enter) · New line (Shift+Enter)":`보내기 (Enter) · 줄 바꿈 (Shift+Enter)`,"Send a test notification":`테스트 알림 보내기`,"Send annotations":`주석 보내기`,"Send annotations to the agent":`에이전트에 주석 보내기`,"Send feedback":`피드백 보내기`,"Send instructions":`지시 사항 보내기`,"Send it to {name} yourself. It works once, within 7 days.":`{name} 님에게 직접 보내세요. 7일 이내에 한 번만 사용할 수 있습니다.`,"Send the review comment being written.":`작성 중인 검토 의견을 보냅니다.`,"Send your review decisions and comments to the agent":`검토 결정 및 의견을 에이전트에 보내기`,"Send {n} note":`주석 {n}개 보내기`,"Send {n} note to the agent":`에이전트에 주석 {n}개 보내기`,"Send {n} notes":`주석 {n}개 보내기`,"Send {n} notes to the agent":`에이전트에 주석 {n}개 보내기`,"Sending feedback…":`피드백 보내는 중…`,"Sending…":`보내는 중…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`보냈습니다. 아무것도 표시되지 않으면 시스템 설정에서 이 브라우저의 알림을 허용하세요.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Papilot을 시작하는 환경에서 open.bigmodel.cn의 경우 ZHIPU_API_KEY를, api.z.ai의 경우 ZAI_API_KEY를 설정한 다음 Papilot을 다시 시작하세요.`,"Set up on the host":`호스트에서 설정`,"Set up sharing":`공유 설정`,"Set up this agent":`이 에이전트 설정`,Settings:`설정`,"Settings categories":`설정 카테고리`,"Setup guide":`설정 가이드`,"Setup required":`설정 필요`,"Several TeX files were found. Check the selected main document before continuing.":`여러 개의 TeX 파일이 발견되었습니다. 계속하기 전에 선택된 메인 문서를 확인하세요.`,"Share your papers and manage the people you work with.":`논문을 공유하고 함께 작업하는 사람들을 관리하세요.`,Sharing:`공유`,"Sharing is not sandboxed":`공유는 샌드박스 처리되지 않습니다`,Shorten:`줄이기`,Show:`보기`,"Show LaTeX source":`LaTeX 소스 표시`,"Show archived tasks":`보관된 작업 표시`,"Show current tasks":`현재 작업 표시`,"Show desktop notifications while Papilot is in the background.":`Papilot이 백그라운드에 있을 때 데스크톱 알림을 표시합니다.`,"Show fewer models":`모델 간단히 표시`,"Show note {n} on the page":`페이지에 주석 {n} 표시`,"Show note {n}: {comment}":`주석 {n} 표시: {comment}`,"Show or hide the source for the current change.":`현재 변경 사항의 소스를 표시하거나 숨깁니다.`,"Show problems":`문제 표시`,"Show suggestion {n} on the page":`페이지에 제안 {n} 표시`,"Show task list":`작업 목록 표시`,"Show {n} more models":`모델 {n}개 더 표시`,"Showing the last update.":`마지막 업데이트를 표시하고 있습니다.`,"Showing the latest {n} commits. Older history is not shown.":`최근 커밋 {n}개를 표시하고 있습니다. 이전 기록은 표시되지 않습니다.`,"Sign in as the user running Papilot, then restart Papilot.":`Papilot을 실행하는 사용자로 로그인한 다음 Papilot을 다시 시작하세요.`,"Sign in from anywhere":`어디서나 로그인`,"Sign in on the Papilot host to continue.":`계속하려면 Papilot 호스트에서 로그인하세요.`,"Sign in to Papilot":`Papilot에 로그인`,"Sign in to continue.":`계속하려면 로그인하세요.`,"Sign in with a passkey":`패스키로 로그인`,"Sign out":`로그아웃`,"Sign out everywhere":`모든 기기에서 로그아웃`,"Sign-in required":`로그인 필요`,"Signed in":`로그인됨`,"Signed in · {label}":`로그인됨 · {label}`,"Signing in was cancelled. Try again when you are ready.":`로그인이 취소되었습니다. 준비되면 다시 시도하세요.`,"Skill ID":`스킬 ID`,"Skill content (Markdown)":`스킬 내용 (Markdown)`,"Skill content must contain 1–20,000 characters.":`스킬 내용은 1~20,000자여야 합니다.`,"Skill content view":`스킬 내용 보기`,"Skill icon":`스킬 아이콘`,"Skill name":`스킬 이름`,"Skill scope":`스킬 범위`,"Skill: {name}":`스킬: {name}`,Skills:`스킬`,Slate:`슬레이트`,"Slate blue":`슬레이트 블루`,"Some note positions need confirmation. Their original text and comments are kept.":`일부 주석 위치를 확인해야 합니다. 원본 텍스트와 의견은 유지됩니다.`,Source:`소스`,Sparkles:`반짝임`,Spelling:`맞춤법`,Split:`분할`,Stable:`안정 버전`,"Stage all changes":`모든 변경 사항 스테이징`,"Stage changes":`변경 사항 스테이징`,"Stage {path}":`{path} 스테이징`,Staged:`스테이징됨`,"Staged changes":`스테이징된 변경 사항`,"Standard shortcuts":`표준 단축키`,"Start task":`작업 시작`,"Start task (Enter)":`작업 시작 (Enter)`,"Status unavailable":`상태를 확인할 수 없음`,Stone:`스톤`,"Submitting…":`제출 중…`,"Suggest an agent":`에이전트 제안`,"Suggested fix":`제안된 해결 방법`,"Suggestion ignored.":`제안을 무시했습니다.`,"Suggestion {n}: {comment}":`제안 {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`제안은 원고에 복사하기 전까지 이 작업에 유지됩니다`,"Support more":`추가 지원`,System:`시스템`,"Task actions for {title}":`{title} 작업 동작`,"Task added: {title}":`작업 추가됨: {title}`,"Task errors":`작업 오류`,"Task finished":`작업 완료`,"Task list":`작업 목록`,"Task saved. Waiting for an available {agent} session.":`작업이 저장되었습니다. 사용 가능한 {agent} 세션을 기다리는 중입니다.`,Tasks:`작업`,"The PDF could not be opened: {error}":`PDF를 열 수 없습니다: {error}`,"The PDF review could not be loaded.":`PDF 검토를 불러올 수 없습니다.`,"The PDF review is taking longer than expected.":`PDF 검토가 예상보다 오래 걸리고 있습니다.`,"The agent could not connect. Check its setup and try again.":`에이전트에 연결할 수 없습니다. 설정을 확인하고 다시 시도하세요.`,"The assistant is fixing compilation…":`어시스턴트가 컴파일 문제를 수정하는 중…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`브라우저와 Papilot 서버가 서로 다른 컴퓨터에서 실행될 수 있습니다. 또한 백그라운드 서비스는 터미널과 다른 PATH나 사용자 계정을 사용할 수 있습니다.`,"The connection is taking too long. Check your network and try again.":`연결 시간이 너무 오래 걸립니다. 네트워크를 확인하고 다시 시도하세요.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`개발 빌드에는 최소 2 GB의 여유 디스크 공간이 필요합니다. 공간을 확보한 후 다시 시도하세요.`,"The diff is too long to show in full.":`변경 내역이 너무 길어 전체를 표시할 수 없습니다.`,"The file “{name}” is empty.":`“{name}” 파일이 비어 있습니다.`,"The first build is still running.":`첫 번째 빌드가 아직 실행 중입니다.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`마지막 연결 시도에서 Papilot 서버 환경 내 실행 가능한 {command} CLI를 찾지 못했습니다. 다른 위치나 다른 사용자 계정에 설치되어 있을 수 있습니다.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`마지막 연결 시도에서 Papilot을 실행하는 사용자의 CURSOR_API_KEY나 저장된 Cursor SDK 로그인 정보를 찾지 못했습니다. Cursor 데스크톱 앱이나 CLI에 로그인해도 이 SDK는 구성되지 않습니다.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`마지막 연결 시도에서 Papilot 서버 환경 내 Claude Code나 지원되는 API 자격 증명을 찾지 못했습니다.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`마지막 연결 시도에서 Papilot 서버 환경 내 ZHIPU_API_KEY나 ZAI_API_KEY를 찾지 못했습니다. Claude 로그인이나 GLM 웹사이트 로그인으로는 이 키가 제공되지 않습니다.`,"The latest changes did not compile. This is the last PDF that did.":`최신 변경 사항이 컴파일되지 않았습니다. 마지막으로 컴파일에 성공한 PDF입니다.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`최근 구성 확인에서 이 에이전트를 찾았습니다. 실시간 상태를 새로고침하려면 다시 연결하세요.`,"The manuscript did not compile.":`원고가 컴파일되지 않았습니다.`,"The merge stopped at conflicts.":`충돌이 발생하여 병합이 중단되었습니다.`,"The merge was abandoned.":`병합이 취소되었습니다.`,"The paper needs a little help":`논문에 약간의 조치가 필요합니다`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`새 PDF에서 위치를 확인할 수 없습니다. 원본 텍스트와 주석이 유지됩니다.`,"The request timed out and may still be processing. Check the task status before retrying.":`요청 시간이 초과되었으며 아직 처리 중일 수 있습니다. 다시 시도하기 전에 작업 상태를 확인하세요.`,"The skill must contain instructions.":`스킬에는 지침이 포함되어야 합니다.`,"The update did not finish. Your current version is still available. You can retry here.":`업데이트가 완료되지 않았습니다. 현재 버전을 계속 사용할 수 있으며, 여기서 다시 시도할 수 있습니다.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`업데이트가 준비되었습니다. 다시 시작하기 전에 작업 및 PDF 빌드가 완료되기를 기다리는 중입니다.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`업데이트된 버전이 시작되지 않아 Papilot이 앱에 포함된 버전을 사용하고 있습니다. 업데이트를 다시 시도하거나 최신 데스크톱 앱을 다운로드하세요.`,"Their name, as others will see it":`다른 사람에게 표시될 이름`,Theme:`테마`,"These keep the usual browser and text-editing behavior.":`일반적인 브라우저 및 텍스트 편집 동작을 유지합니다.`,"Third-party licenses":`타사 라이선스`,"This PDF has no bookmarks.":`이 PDF에는 북마크가 없습니다.`,"This agent has not reported a model list. Its configured default can still be used.":`이 에이전트가 모델 목록을 보고하지 않았습니다. 구성된 기본값은 계속 사용할 수 있습니다.`,"This browser cannot show notifications.":`이 브라우저에서는 알림을 표시할 수 없습니다.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`이 브라우저에서는 패스키를 사용할 수 없습니다. 최신 버전의 Safari, Chrome, Edge 또는 Firefox에서 이 페이지를 여세요.`,"This browser could not enable notifications.":`이 브라우저에서 알림을 사용하도록 설정할 수 없습니다.`,"This browser could not show the notification.":`이 브라우저에서 알림을 표시할 수 없습니다.`,"This conversation has no manuscript changes.":`이 대화에는 원고 변경 사항이 없습니다.`,"This file is not tracked by Git, so it cannot be recovered.":`이 파일은 Git에서 추적하지 않으므로 복구할 수 없습니다.`,"This invite link is incomplete. Copy the whole link and open it again.":`이 초대 링크가 불완전합니다. 전체 링크를 복사하여 다시 여세요.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`이 키는 브라우저 또는 텍스트 편집용으로 예약되어 있습니다. 다른 단축키를 선택하세요.`,"This model uses its own reasoning settings.":`이 모델은 자체 추론 설정을 사용합니다.`,"This paper":`이 논문`,"This paper may need XeLaTeX. Change the engine below and retry.":`이 논문에는 XeLaTeX이 필요할 수 있습니다. 아래에서 엔진을 변경한 후 다시 시도하세요.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`이 논문에는 {bibliography} 또는 {addbibresource}로 지정된 .bib 파일이 없습니다.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`이 구절에는 아직 커밋되지 않은 이전 편집 내용이 포함되어 있습니다. 검토된 결과를 함께 커밋하거나 커밋하지 않고 적용할 수 있습니다.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`대화, 작업 트리, PDF 검토 파일을 포함하여 Papilot에서 작업을 영구적으로 삭제합니다. 수락하지 않은 편집 내용과 저장된 의견은 폐기되며, 검토 결정은 더 이상 되돌릴 수 없습니다.`,"This skill changed on disk. Reload it before deleting.":`이 스킬이 디스크에서 변경되었습니다. 삭제하기 전에 다시 불러오세요.`,"This skill changed on disk. Reload it before saving.":`이 스킬이 디스크에서 변경되었습니다. 저장하기 전에 다시 불러오세요.`,"This skill no longer exists. Refresh the list.":`이 스킬이 더 이상 존재하지 않습니다. 목록을 새로고침하세요.`,"This skill was removed on disk. Reload the list before saving.":`이 스킬이 디스크에서 제거되었습니다. 저장하기 전에 목록을 다시 불러오세요.`,"This step needs attention":`이 단계에 확인이 필요합니다`,"This task did not change the manuscript. Read the answer in the chat.":`이 작업은 원고를 변경하지 않았습니다. 채팅에서 답변을 확인하세요.`,"This task is being deleted":`이 작업을 삭제하는 중입니다`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`이 작업은 작업 트리 정리가 확인될 때까지 예약 상태로 유지됩니다. 연결이 중단된 경우 삭제 다시 시도를 사용하세요.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`이 버전을 사용하려면 최신 데스크톱 앱이 필요합니다. GitHub Releases에서 다운로드하세요.`,"This worktree’s HEAD is outside the displayed history.":`이 작업 트리의 HEAD가 표시된 기록 범위 밖에 있습니다.`,Title:`제목`,Tools:`도구`,Tracking:`추적 중`,"Type changed":`유형 변경됨`,"Typesetting and other remarks":`조판 및 기타 참고 사항`,"Typesetting with LaTeX, pass {n}…":`LaTeX으로 조판 중, {n}회차…`,Unavailable:`사용 불가`,"Uncommitted changes in the PDF":`PDF의 커밋되지 않은 변경 사항`,"Undefined citation":`정의되지 않은 인용`,"Undefined reference":`정의되지 않은 참조`,Undo:`실행 취소`,"Undo review decision":`검토 결정 실행 취소`,"Undo the last review decision or revert.":`마지막 검토 결정을 실행 취소하거나 되돌립니다.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`포커스에 따라 입력 내용, 삭제된 주석 또는 마지막 검토 결정을 실행 취소합니다.`,"Unify terms, notation, spelling and references":`용어, 표기법, 맞춤법 및 참고문헌 통일`,Unknown:`알 수 없음`,"Unlimited credits":`무제한 크레딧`,"Unplaced suggestions":`배치되지 않은 제안`,"Unsaved changes":`저장되지 않은 변경 사항`,"Unstage all changes":`모든 변경 사항 스테이징 해제`,"Unstage changes":`변경 사항 스테이징 해제`,"Unstage {path}":`{path} 스테이징 해제`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`스테이징되지 않은 변경 사항은 영구적으로 손실되며 추적되지 않는 파일은 삭제됩니다. 스테이징된 변경 사항은 유지됩니다.`,"Unstaged changes are lost for good. Staged changes stay.":`스테이징되지 않은 변경 사항은 영구적으로 손실됩니다. 스테이징된 변경 사항은 유지됩니다.`,Untracked:`추적되지 않음`,"Untracked build output. Add to .gitignore adds:":`추적되지 않는 빌드 출력입니다. .gitignore에 추가하면 다음이 추가됩니다:`,"Up to date":`최신 상태`,"Up to date with the remote.":`원격 저장소와 최신 상태로 동기화되었습니다.`,"Update Papilot":`Papilot 업데이트`,"Update available":`업데이트 가능`,"Update channel":`업데이트 채널`,"Update failed":`업데이트 실패`,"Update now":`지금 업데이트`,"Update ready":`업데이트 준비 완료`,"Update to {version}":`{version} 버전으로 업데이트`,Updates:`업데이트`,"Updating…":`업데이트 중…`,"Upload failed. Please retry.":`업로드에 실패했습니다. 다시 시도해 주세요.`,"Uploading…":`업로드 중…`,"Usage & limits":`사용량 및 한도`,"Usage limit":`사용 한도`,"Usage not reported":`사용량 보고되지 않음`,"Use a hex color, like #2563EB.":`#2563EB와 같은 16진수 색상 코드를 사용하세요.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`소문자, 숫자, 하이픈을 사용하세요. / 명령어 이름으로도 사용됩니다.`,"Use the passkey you created from your invite link.":`초대 링크에서 생성한 패스키를 사용하세요.`,"Used for new tasks. Saved in this browser.":`새 작업에 사용됩니다. 이 브라우저에 저장됩니다.`,"User guide":`사용자 가이드`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`ZHIPU_API_KEY 또는 ZAI_API_KEY와 함께 Claude Code 또는 Claude Agent SDK를 사용합니다.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`설치된 경우 Claude Code를 사용하고, 그렇지 않으면 API 자격 증명과 함께 Claude Agent SDK를 사용합니다.`,"Uses DeepSeek Harness and the providers configured in dsh.":`DeepSeek Harness 및 dsh에 구성된 제공자를 사용합니다.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`ACP를 통해 GitHub Copilot CLI와 저장된 로그인 정보 또는 구성된 제공자를 사용합니다.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`ACP를 통해 저장된 로그인 정보 또는 구성된 API 자격 증명으로 Grok Build CLI를 사용합니다.`,"Uses Kimi Code CLI and its saved login through ACP.":`ACP를 통해 Kimi Code CLI 및 저장된 로그인 정보를 사용합니다.`,"Uses OpenCode with the providers and models you have connected.":`연결한 제공자 및 모델과 함께 OpenCode를 사용합니다.`,"Uses Qwen Code and its saved login through ACP.":`ACP를 통해 Qwen Code 및 저장된 로그인 정보를 사용합니다.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`호환되는 로컬 Codex CLI를 사용합니다. 필요한 경우 Papilot이 자체 사본을 설치합니다.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`CURSOR_API_KEY와 함께 Cursor SDK를 사용합니다. 처음 사용할 때 Papilot이 SDK를 설치합니다.`,"Uses the local Antigravity CLI and its saved Google login.":`로컬 Antigravity CLI 및 저장된 Google 로그인 정보를 사용합니다.`,Verified:`확인됨`,Version:`버전`,"Version history":`버전 기록`,"View & help":`보기 및 도움말`,"View changes for this note":`이 주석의 변경 사항 보기`,"View changes included in this commit":`이 커밋에 포함된 변경 사항 보기`,"View details":`상세 정보 보기`,"View installation, account, and usage":`설치, 계정 및 사용량 보기`,"View {n} review suggestion":`검토 제안 {n}개 보기`,"View {n} review suggestions":`검토 제안 {n}개 보기`,"Viewed the PDF":`PDF를 확인함`,"Viewed the PDF: {places}":`PDF를 확인함: {places}`,"Visual style":`시각적 스타일`,"Wait for the PDF build to finish before deleting this task.":`이 작업을 삭제하기 전에 PDF 빌드가 완료될 때까지 기다려 주세요.`,"Wait for the PDF to compile.":`PDF가 컴파일될 때까지 기다려 주세요.`,"Waiting for your passkey…":`패스키 대기 중…`,Warning:`경고`,Warnings:`경고`,"Weekly limit":`주간 한도`,"What are we revising next?":`다음에는 무엇을 수정할까요?`,"What can invited people do?":`초대된 사람은 무엇을 할 수 있나요?`,"What changed since the last commit, to stage, revert and commit change by change":`마지막 커밋 이후의 변경 사항을 확인하고 변경별로 스테이징, 되돌리기 및 커밋합니다`,"What does this skill help with?":`이 스킬은 어떤 작업에 도움이 되나요?`,"What is staged, in {n} file:":`파일 {n}개에 스테이징된 내용:`,"What is staged, in {n} files:":`파일 {n}개에 스테이징된 내용:`,"What should change here?":`여기에서 무엇을 변경할까요?`,"What should change in each color group?":`각 색상 그룹에서 무엇을 변경할까요?`,"What should change in this group?":`이 그룹에서 무엇을 변경할까요?`,"What this task accepted, in {n} file:":`파일 {n}개에서 이 작업이 수락한 내용:`,"What this task accepted, in {n} files:":`파일 {n}개에서 이 작업이 수락한 내용:`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`변경 사항으로 참고문헌 항목이 추가되거나 편집될 때 Crossref, DBLP 및 arXiv에서 제목, 저자, 연도 및 DOI를 조회합니다. 논문의 다른 내용은 전송되지 않습니다.`,"With review feedback":`검토 피드백 포함`,Workspace:`작업 공간`,"Workspace view":`작업 공간 보기`,Worktrees:`작업 트리`,"Write a commit message for the chosen files with {agent}":`{agent}로 선택한 파일의 커밋 메시지 작성`,"Write a note…":`주석 작성…`,"Write feedback on the current proposed change.":`현재 제안된 변경 사항에 대한 피드백을 작성합니다.`,"Writing the PDF…":`PDF 작성 중…`,Year:`연도`,Yellow:`노란색`,"You are offline. Your draft is kept in this browser.":`오프라인 상태입니다. 초안은 이 브라우저에 보관됩니다.`,"You are using the latest version on this channel.":`이 채널의 최신 버전을 사용 중입니다.`,"You checked this entry yourself.":`이 항목을 직접 확인했습니다.`,"You sent review feedback, {time}":`검토 피드백을 보냄, {time}`,"You, {time}":`나, {time}`,"Your note":`내 주석`,"Your paper compiled successfully. It is ready for editing.":`논문이 성공적으로 컴파일되었습니다. 이제 편집할 수 있습니다.`,"Your review keyboard":`내 검토 키보드`,Yours:`내 것`,Zoom:`확대/축소`,"Zoom in":`확대`,"Zoom in (⌘+)":`확대 (⌘+)`,"Zoom out":`축소`,"Zoom out (⌘−)":`축소 (⌘−)`,"added {time}":`{time}에 추가됨`,"another entry has the same key.":`다른 항목에 동일한 키가 있습니다.`,"build error":`빌드 오류`,clean:`변경 사항 없음`,detached:`분리됨`,"detached HEAD":`분리된 HEAD`,"edited {file}":`{file} 편집함`,"edited {n} files":`파일 {n}개 편집함`,"from {name}":`{name}로부터`,"it is not cited.":`인용되지 않았습니다.`,"just now":`방금`,"no record in Crossref, DBLP or arXiv matches it.":`Crossref, DBLP 또는 arXiv에 일치하는 레코드가 없습니다.`,nothing:`없음`,now:`지금`,"or select text to annotate":`또는 텍스트를 선택하여 주석 추가`,"p. {page}":`{page}페이지`,"possibly the same work as {keys} (same title).":`{keys}와 동일한 저작물일 수 있습니다(제목 동일).`,"ran {n} command":`명령어 {n}개 실행함`,"ran {n} commands":`명령어 {n}개 실행함`,"resets in {hours} h {minutes} min":`{hours}시간 {minutes}분 후 초기화`,"resets in {minutes} min":`{minutes}분 후 초기화`,"resets now":`지금 초기화됨`,"resets {time}":`{time}에 초기화`,small:`작음`,"the same work as {keys} (same DOI).":`{keys}와 동일한 저작물입니다(DOI 동일).`,"used {n} tool":`도구 {n}개 사용함`,"used {n} tools":`도구 {n}개 사용함`,"used {time}":`{time}에 사용됨`,"viewed the PDF":`PDF 확인함`,"{agent} conversation":`{agent} 대화`,"{agent} details":`{agent} 세부 정보`,"{agent} finished":`{agent} 완료됨`,"{agent} is requesting permission for this action.":`{agent}가 이 작업에 대한 권한을 요청하고 있습니다.`,"{agent} is resolving…":`{agent}가 해결하는 중…`,"{agent} is unavailable":`{agent}를 사용할 수 없음`,"{agent} is waiting for your approval":`{agent}가 승인을 기다리고 있습니다`,"{agent} is working":`{agent} 작업 중`,"{agent} is working on this task":`{agent}가 이 작업을 진행 중입니다`,"{agent} is working · new instructions run next":`{agent} 작업 중 · 새 지시 사항은 다음에 실행됩니다`,"{agent} is writing a commit message…":`{agent}가 커밋 메시지를 작성하는 중…`,"{agent} needs your input":`{agent}에 입력이 필요합니다`,"{agent} on the merge":`병합 관련 {agent}`,"{agent} usage":`{agent} 사용량`,"{agent} usage details":`{agent} 사용량 세부 정보`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`이 컴퓨터에서 {agent}를 찾을 수 없습니다. 설치하거나 설정한 후 다시 연결을 선택하세요.`,"{ahead} ahead · {behind} behind":`{ahead}개 앞섬 · {behind}개 뒤처짐`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} 및 {upstream}이(가) 모두 변경되었습니다. 병합하면 원격 커밋을 가져옵니다.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places})에 이 키를 가진 항목이 없습니다.`,"{command} was not found by Papilot.":`Papilot에서 {command}을(를) 찾을 수 없습니다.`,"{current} of {total}":`{total} 중 {current}`,"{differences} (record: {url}).":`{differences} (레코드: {url}).`,"{field} is {bib} but {source} has {record}":`{field} 값이 {bib}이지만 {source}에는 {record}입니다`,"{field}: {bib} here, {record} in {source}":`{field}: 현재 {bib}, {source}에서는 {record}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} 님이 회원님을 Papilot에 초대했습니다. {name}(으)로 표시됩니다.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} 님이 {papers} 공동 작업에 초대했습니다. {name}(으)로 표시됩니다.`,"{key} ({place}): {problems}":`{key} ({place}): {problems}`,"{name} (you)":`{name} (나)`,"{name} sent review feedback, {time}":`{name} 님이 검토 피드백을 보냄, {time}`,"{name} used":`{name} 사용함`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n}개 수락됨`,"{n} active task":`진행 중인 작업 {n}개`,"{n} active tasks":`진행 중인 작업 {n}개`,"{n} build file":`빌드 파일 {n}개`,"{n} build files":`빌드 파일 {n}개`,"{n} change to decide":`결정할 변경 사항 {n}개`,"{n} change to review":`검토할 변경 사항 {n}개`,"{n} changed":`{n}개 변경됨`,"{n} changes to decide":`결정할 변경 사항 {n}개`,"{n} changes to review":`검토할 변경 사항 {n}개`,"{n} checked by you":`내가 확인함 {n}개`,"{n} comment":`댓글 {n}개`,"{n} comments":`댓글 {n}개`,"{n} compilation error":`컴파일 오류 {n}개`,"{n} compilation errors":`컴파일 오류 {n}개`,"{n} compilation warning":`컴파일 경고 {n}개`,"{n} compilation warnings":`컴파일 경고 {n}개`,"{n} conflicts":`충돌 {n}개`,"{n} could not be checked":`{n}개 확인할 수 없음`,"{n} credits":`{n} 크레딧`,"{n} differ":`{n}개 불일치`,"{n} entries":`항목 {n}개`,"{n} entry":`항목 {n}개`,"{n} failed":`{n}개 실패`,"{n} file staged":`파일 {n}개 스테이징됨`,"{n} file still has conflicts.":`파일 {n}개에 아직 충돌이 있습니다.`,"{n} files staged":`파일 {n}개 스테이징됨`,"{n} files still have conflicts.":`파일 {n}개에 아직 충돌이 있습니다.`,"{n} location":`위치 {n}곳`,"{n} locations":`위치 {n}곳`,"{n} new commit on {upstream}.":`{upstream}에 새 커밋 {n}개가 있습니다.`,"{n} new commits on {upstream}.":`{upstream}에 새 커밋 {n}개가 있습니다.`,"{n} not found":`{n}개 찾을 수 없음`,"{n} notes on the PDF":`PDF 주석 {n}개`,"{n} rejected":`{n}개 거절됨`,"{n} review update not sent yet":`아직 전송되지 않은 검토 업데이트 {n}개`,"{n} review update will be sent with this message":`이 메시지와 함께 검토 업데이트 {n}개가 전송됩니다`,"{n} review updates not sent yet":`아직 전송되지 않은 검토 업데이트 {n}개`,"{n} review updates will be sent with this message":`이 메시지와 함께 검토 업데이트 {n}개가 전송됩니다`,"{n} staged":`{n}개 스테이징됨`,"{n} undone":`{n}개 실행 취소됨`,"{n} unstaged":`{n}개 스테이징되지 않음`,"{n} untracked":`{n}개 추적되지 않음`,"{n} verified":`{n}개 검증됨`,"{n}-day limit":`{n}일 한도`,"{n}-hour limit":`{n}시간 한도`,"{n}-minute limit":`{n}분 한도`,"{n}d":`{n}일`,"{n}h":`{n}시간`,"{n}m":`{n}분`,"{selected} / {total} locations selected":`{selected} / {total}곳 선택됨`,"{shown} of {total} components":`구성 요소 {total}개 중 {shown}개`,"{sources} could not be reached.":`{sources}에 연결할 수 없습니다.`,"{time} ago":`{time} 전`,"{title} PDF change review":`{title} PDF 변경 사항 검토`,"{used}% used":`{used}% 사용됨`},te={"A commit is already in progress. Wait for it to finish.":`커밋이 이미 진행 중입니다. 완료될 때까지 기다려 주세요.`,"A commit is in progress. Try again when it finishes.":`커밋이 진행 중입니다. 완료되면 다시 시도하세요.`,"A review action is already in progress. Wait for it to finish.":`검토 동작이 이미 진행 중입니다. 완료될 때까지 기다려 주세요.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`선택한 PDF 주석을 이미 전송하는 중입니다. 해당 작업 생성이 완료될 때까지 기다려 주세요.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`선택한 PDF 주석을 더 이상 사용할 수 없습니다. 원고를 새로고침한 후 다시 시도하세요.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`AI 검토에는 검토 지침만 입력할 수 있습니다. 주석, 스킬 또는 첨부 파일을 보내려면 편집 작업을 시작하세요.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`AI 검토는 PDF 주석만 생성하며 원고 변경 사항을 게시할 수 없습니다.`,"AI review has no manuscript changes to apply.":`AI 검토에 적용할 원고 변경 사항이 없습니다.`,"AI review has no manuscript changes to deliver.":`AI 검토에는 전달할 원고 변경 사항이 없습니다.`,"AI review uses manuscript PDF notes, not change decisions.":`AI 검토는 변경 결정이 아닌 원고 PDF 주석을 사용합니다.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`AI 검토에는 원고 PDF가 사용됩니다. 주석이나 첨부 파일을 보내려면 별도의 편집 작업을 시작하세요.`,"Accepted changes are already in the manuscript.":`수락된 변경 사항이 이미 원고에 반영되어 있습니다.`,"An AI review comment is invalid. Ask the reviewer to retry.":`AI 검토 의견이 유효하지 않습니다. 검토자에게 다시 시도하도록 요청하세요.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`AI 검토 의견의 PDF 줄 순서가 반대로 되어 있습니다. 시작 위치를 끝 위치보다 앞에 두도록 검토자에게 요청하세요.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`AI 검토 의견이 알 수 없는 PDF 위치를 참조합니다. 제공된 줄 ID를 사용하여 다시 시도하도록 검토자에게 요청하세요.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`AI 검토 의견이 여러 PDF 페이지에 걸쳐 있습니다. 단일 페이지에 고정하도록 검토자에게 요청하세요.`,"Another Papilot instance is already updating.":`다른 Papilot 인스턴스가 이미 업데이트 중입니다.`,"Answer every question before submitting.":`제출하기 전에 모든 질문에 답변하세요.`,"Attachment not found.":`첨부파일을 찾을 수 없습니다.`,"Attachments must total 100 MB or less.":`첨부파일의 총 크기는 100MB 이하여야 합니다.`,"Check for a newer release before updating.":`업데이트하기 전에 새 릴리스가 있는지 확인하세요.`,"Check out a branch before pushing.":`푸시하기 전에 브랜치를 체크아웃하세요.`,"Check the task status before pausing this turn.":`이번 차례를 일시 중지하기 전에 작업 상태를 확인하세요.`,"Check the task status before sending more instructions.":`추가 지침을 보내기 전에 작업 상태를 확인하세요.`,"Choose Codex, Claude or GLM for AI review.":`AI 검토를 위해 Codex, Claude 또는 GLM을 선택하세요.`,"Choose a ZIP smaller than 64 MB.":`64 MB 미만의 ZIP 파일을 선택하세요.`,"Choose a file with a valid name.":`유효한 이름의 파일을 선택하세요.`,"Choose a folder smaller than 64 MB.":`64 MB 미만의 폴더를 선택하세요.`,"Choose a supported LaTeX engine.":`지원되는 LaTeX 엔진을 선택하세요.`,"Choose a valid update channel.":`유효한 업데이트 채널을 선택하세요.`,"Choose an available model for this agent.":`이 에이전트에 사용할 수 있는 모델을 선택하세요.`,"Choose an entry to confirm.":`확인할 항목을 선택하세요.`,"Choose an existing TeX main file.":`기존 TeX 메인 파일을 선택하세요.`,"Choose between 1 and 5,000 files.":`1개에서 5,000개 사이의 파일을 선택하세요.`,"Choose one folder or ZIP.":`폴더 또는 ZIP 파일을 하나만 선택하세요.`,"Choose one of the offered answers.":`제시된 답변 중 하나를 선택하세요.`,"Choose stage, unstage or revert.":`스테이징, 스테이징 취소 또는 되돌리기를 선택하세요.`,"Choose whether to archive or restore the task.":`작업을 보관할지 복원할지 선택하세요.`,"Claude Code did not list its models.":`Claude Code가 모델 목록을 표시하지 않았습니다.`,"Claude Code exited before listing its models.":`Claude Code가 모델 목록을 표시하기 전에 종료되었습니다.`,"Claude has not reported usage yet.":`Claude가 아직 사용량을 보고하지 않았습니다.`,"Codex disconnected. Resume the task before retrying.":`Codex 연결이 끊어졌습니다. 다시 시도하기 전에 작업을 재개하세요.`,"Codex is not connected.":`Codex가 연결되어 있지 않습니다.`,"Commit the task first, then push from Git.":`먼저 작업을 커밋한 후 Git에서 푸시하세요.`,"Confirm permanent task deletion before continuing.":`계속하기 전에 작업 영구 삭제를 확인하세요.`,"Could not check for updates.":`업데이트를 확인할 수 없습니다.`,"Could not check for updates. Try again when connected.":`업데이트를 확인할 수 없습니다. 네트워크에 연결된 상태에서 다시 시도하세요.`,"Could not complete the environment checks. Please try again.":`환경 확인을 완료할 수 없습니다. 다시 시도해 주세요.`,"Could not read the LaTeX installation.":`LaTeX 설치 정보를 읽을 수 없습니다.`,"Could not restart the background service.":`백그라운드 서비스를 재시작할 수 없습니다.`,"Deletion is already in progress. Wait for it to finish.":`삭제가 이미 진행 중입니다. 완료될 때까지 기다려 주세요.`,"Describe the revision, choose a skill, or add a PDF note.":`수정 사항을 설명하거나, 스킬을 선택하거나, PDF 주석을 추가하세요.`,"Describe what to do with each selected color group.":`선택한 각 색상 그룹에 대해 수행할 작업을 설명하세요.`,"Download desktop updates from GitHub Releases.":`GitHub Releases에서 데스크톱 업데이트를 다운로드하세요.`,"Enter a folder path.":`폴더 경로를 입력하세요.`,"Enter a paper name under 120 characters.":`120자 미만의 논문 이름을 입력하세요.`,"Fast mode is not available for this model.":`이 모델에서는 빠른 모드를 사용할 수 없습니다.`,"Files must be 25 MB or smaller.":`파일 크기는 25MB 이하여야 합니다.`,"Finish or abort the merge before committing other changes.":`다른 변경 사항을 커밋하기 전에 병합을 완료하거나 중단하세요.`,"Finish or abort the merge before discarding changes.":`변경 사항을 취소하기 전에 병합을 완료하거나 중단하세요.`,"Finish or abort the merge before staging other changes.":`다른 변경 사항을 스테이징하기 전에 병합을 완료하거나 중단하세요.`,"Finish or abort the merge first.":`먼저 병합을 완료하거나 중단하세요.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`변경 사항을 수락, 거부 또는 실행 취소하기 전에 Git 패널에서 병합을 완료하거나 중단하세요.`,"GLM does not report usage to Papilot.":`GLM은 Papilot에 사용량을 보고하지 않습니다.`,"Group instructions must refer to selected PDF notes.":`그룹 지침은 선택한 PDF 주석을 참조해야 합니다.`,"Images must be 5 MB or smaller.":`이미지 크기는 5MB 이하여야 합니다.`,"Import not found.":`가져오기 항목을 찾을 수 없습니다.`,"Invalid annotation group.":`유효하지 않은 주석 그룹입니다.`,"Invalid approval decision.":`유효하지 않은 승인 결정입니다.`,"Invalid development revision.":`유효하지 않은 개발 리비전입니다.`,"Invalid development version.":`유효하지 않은 개발 버전입니다.`,"Invalid diagnostic report.":`유효하지 않은 진단 보고서입니다.`,"Invalid file path in upload.":`업로드의 파일 경로가 유효하지 않습니다.`,"Invalid file path.":`잘못된 파일 경로입니다.`,"Invalid model.":`유효하지 않은 모델입니다.`,"Invalid note location.":`유효하지 않은 주석 위치입니다.`,"Invalid reasoning effort.":`유효하지 않은 추론 강도입니다.`,"Invalid release information.":`유효하지 않은 릴리스 정보입니다.`,"Invalid release version.":`유효하지 않은 릴리스 버전입니다.`,"Invalid save action.":`유효하지 않은 저장 동작입니다.`,"Invalid task ID.":`유효하지 않은 작업 ID입니다.`,"Invalid update activation.":`유효하지 않은 업데이트 활성화입니다.`,"Invalid upload data.":`유효하지 않은 업로드 데이터입니다.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`해당 AI 검토 작업에서 이 제안을 관리하거나 먼저 원고에 복사하세요.`,"Missing update restart job.":`업데이트 재시작 작업이 누락되었습니다.`,"No file has conflict markers left. Commit the merge.":`충돌 표시가 남은 파일이 없습니다. 병합을 커밋하세요.`,"No merge is in progress.":`진행 중인 병합이 없습니다.`,"No such file.":`해당 파일이 없습니다.`,"None of the chosen files is build output that can be ignored.":`선택한 파일 중 무시할 수 있는 빌드 출력 파일이 없습니다.`,"Not found":`찾을 수 없음`,"Note not found.":`주석을 찾을 수 없습니다.`,"Only the model and its settings can be changed.":`모델과 해당 설정만 변경할 수 있습니다.`,"Only the owner of this Papilot can do this.":`이 Papilot의 소유자만 이 작업을 수행할 수 있습니다.`,"Open Papilot at its public address.":`공개 주소로 Papilot을 여세요.`,"Paper name is too long.":`논문 이름이 너무 깁니다.`,"Paper project not found.":`논문 프로젝트를 찾을 수 없습니다.`,"Papilot did not finish shutting down.":`Papilot 종료가 완료되지 않았습니다.`,"Papilot is restarting after an update. Please wait a moment.":`업데이트 후 Papilot을 다시 시작하는 중입니다. 잠시만 기다려 주세요.`,"Papilot restarted. Retry compilation to continue this import.":`Papilot이 재시작되었습니다. 이 가져오기를 계속하려면 컴파일을 다시 시도하세요.`,"Pause Codex before building a review.":`검토를 빌드하기 전에 Codex를 일시 중지하세요.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`작업을 삭제하기 전에 작업을 일시 중지하고 현재 진행 중인 작업이나 검토 동작이 완료될 때까지 기다려 주세요. 미확정 동작이 있다면 먼저 해결하세요.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`변경 사항을 수락, 거부 또는 실행 취소하기 전에 작업을 일시 중지하세요. 진행 중인 PDF 빌드가 있다면 완료될 때까지 기다려 주세요.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`논문의 경로를 변경하거나 제거하기 전에 활성 작업을 일시 중지하고 현재 진행 중인 작업이 완료될 때까지 기다려 주세요. 미확정 동작이 있다면 먼저 해결하세요.`,"Resolve the merge conflicts in the selected files before committing.":`커밋하기 전에 선택한 파일의 병합 충돌을 해결하세요.`,"Restore this suggestion before copying it.":`이 제안을 복사하기 전에 먼저 복원하세요.`,"Retry deletion to confirm this task was removed.":`이 작업이 제거되었는지 확인하려면 삭제를 다시 시도하세요.`,"Retry the pending delivery before sending more instructions.":`추가 지침을 보내기 전에 대기 중인 전송을 다시 시도하세요.`,"Review resource not found.":`검토 리소스를 찾을 수 없습니다.`,"Select a folder containing the paper.":`논문이 포함된 폴더를 선택하세요.`,"Select a valid paper to check.":`확인할 유효한 논문을 선택하세요.`,"Select a valid paper.":`유효한 논문을 선택하세요.`,"Select an existing review round and either the before or after PDF.":`기존 검토 라운드와 변경 전 또는 변경 후 PDF 중 하나를 선택하세요.`,"Select at least one change.":`변경 사항을 하나 이상 선택하세요.`,"Select at least one changed file to commit.":`커밋할 변경된 파일을 하나 이상 선택하세요.`,"Select at least one changed file.":`변경된 파일을 하나 이상 선택하세요.`,"Select text or mark a region on the page first.":`먼저 페이지에서 텍스트를 선택하거나 영역을 표시하세요.`,"Select the root directory of the Git repository.":`Git 저장소의 루트 디렉터리를 선택하세요.`,"Select unsent PDF notes for this task.":`이 작업에 사용할 미전송 PDF 주석을 선택하세요.`,"Select up to 10 valid attachments.":`유효한 첨부파일을 최대 10개까지 선택하세요.`,"Select valid PDF notes for this task.":`이 작업에 사용할 유효한 PDF 주석을 선택하세요.`,"Select valid review notes.":`유효한 검토 주석을 선택하세요.`,"Send attachments with a message, separately from review feedback.":`검토 피드백과는 별도로 메시지와 함께 첨부파일을 보내세요.`,"Service tiers are only available for Codex.":`서비스 등급은 Codex에서만 사용할 수 있습니다.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`사용자를 초대하기 전에 PAPILOT_ACCOUNT_ORIGIN을 공개 URL로 설정하세요.`,"Sign in to continue.":`계속하려면 로그인하세요.`,"Sign-in is not set up on this Papilot.":`이 Papilot에는 로그인이 설정되어 있지 않습니다.`,"Stage at least one change to commit.":`커밋할 변경 사항을 하나 이상 스테이징하세요.`,"Stage at least one change.":`변경 사항을 하나 이상 스테이징하세요.`,"Start a new task to run the AI review skill on the current PDF.":`현재 PDF에서 AI 검토 스킬을 실행하려면 새 작업을 시작하세요.`,"Start or resume the thread before starting a turn.":`턴을 시작하기 전에 스레드를 시작하거나 재개하세요.`,"Task not found.":`작업을 찾을 수 없습니다.`,"That file has no uncommitted changes.":`해당 파일에는 커밋되지 않은 변경 사항이 없습니다.`,"That page is not part of the manuscript.":`해당 페이지는 원고의 일부가 아닙니다.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`AI 검토에서 유효한 주석을 반환하지 않았습니다. 필수 JSON 형식으로 다시 시도하도록 요청하세요.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`AI 검토 응답이 불완전하거나 너무 깁니다. 검토자에게 다시 시도하도록 요청하세요.`,"The PDF copy for this review is unavailable. Start a new AI review.":`이 검토의 PDF 사본을 사용할 수 없습니다. 새 AI 검토를 시작하세요.`,"The PDF is building. Wait for this build to finish.":`PDF를 빌드하는 중입니다. 빌드가 완료될 때까지 기다려 주세요.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`이 검토의 PDF 스냅샷을 사용할 수 없습니다. 새 AI 검토를 시작하세요.`,"The ZIP expands beyond 64 MB or 5,000 files.":`ZIP 파일의 압축 해제 크기가 64 MB 또는 파일 5,000개를 초과합니다.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`개발 빌드에는 최소 2 GB의 여유 디스크 공간이 필요합니다. 공간을 확보한 후 다시 시도하세요.`,"The development checkout does not match the requested commit.":`개발 체크아웃이 요청한 커밋과 일치하지 않습니다.`,"The development checkout does not match the requested version.":`개발 체크아웃이 요청한 버전과 일치하지 않습니다.`,"The downloaded package does not match the requested release.":`다운로드한 패키지가 요청한 릴리스와 일치하지 않습니다.`,"The downloaded release is incomplete.":`다운로드한 릴리스가 불완전합니다.`,"The manuscript changed while copying this suggestion. Try again.":`이 제안을 복사하는 동안 원고가 변경되었습니다. 다시 시도하세요.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`새 버전을 설치할 수 없습니다. 연결 상태와 사용 가능한 디스크 공간을 확인한 후 다시 시도하세요.`,"The new version did not pass its startup check. Your current version is still running.":`새 버전이 시작 확인을 통과하지 못했습니다. 현재 버전이 계속 실행 중입니다.`,"The new version did not restart successfully.":`새 버전이 정상적으로 재시작되지 않았습니다.`,"The owner cannot be removed.":`소유자는 제거할 수 없습니다.`,"The owner sees every paper.":`소유자는 모든 논문을 볼 수 있습니다.`,"The paper configuration must contain a JSON object.":`논문 구성에는 JSON 객체가 포함되어야 합니다.`,"The paper configuration must not be a symbolic link.":`논문 구성은 심볼릭 링크여서는 안 됩니다.`,"The passkey could not be created. Try again.":`패스키를 생성할 수 없습니다. 다시 시도하세요.`,"The request origin does not match.":`요청 출처가 일치하지 않습니다.`,"The review action is still being checked. Wait for it to finish.":`검토 동작을 아직 확인하는 중입니다. 완료될 때까지 기다려 주세요.`,"The review could not be loaded. Try again.":`검토를 불러올 수 없습니다. 다시 시도하세요.`,"The review engine could not confirm this action. Check again when it is available.":`검토 엔진에서 이 동작을 확인하지 못했습니다. 사용할 수 있을 때 다시 확인하세요.`,"The review engine could not confirm this action. Select Check status before continuing.":`검토 엔진에서 이 작업을 확인할 수 없습니다. 계속하기 전에 상태 확인을 선택하세요.`,"The review engine could not confirm this task’s cleanup status.":`검토 엔진에서 이 작업의 정리 상태를 확인하지 못했습니다.`,"The review engine did not confirm task deletion.":`검토 엔진에서 작업 삭제를 확인하지 못했습니다.`,"The review engine returned an unexpected response. Select Check status before continuing.":`검토 엔진이 예기치 않은 응답을 반환했습니다. 계속하기 전에 상태 확인을 선택하세요.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`선택한 저장소에 이 논문의 작업 트리가 없습니다. 기존 작업이 있는 저장소를 선택하거나 별도의 논문으로 추가하세요.`,"The server is shutting down.":`서버가 종료되는 중입니다.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`서버가 재시작되어 이전 차례가 중단되었습니다. 동일한 대화에서 계속 진행하세요.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`검토 작업이 확인되기 전에 서버가 재시작되었습니다. 계속하기 전에 상태 확인을 선택하세요.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`삭제 중에 서버가 재시작되었습니다. 정리를 확인하려면 삭제를 다시 시도하세요.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`PDF 빌드 중에 서버가 재시작되었습니다. 검토를 확인하고 필요한 경우 다시 빌드하세요.`,"The task was paused before these instructions were queued. Your draft has been kept.":`지침이 대기열에 추가되기 전에 작업이 일시 중지되었습니다. 작성 중인 내용은 유지되었습니다.`,"The update download timed out.":`업데이트 다운로드 시간이 초과되었습니다.`,"The update restart helper did not start.":`업데이트 재시작 도우미가 시작되지 않았습니다.`,"The update was interrupted. Your current installation is still available; retry the update.":`업데이트가 중단되었습니다. 현재 설치된 버전은 계속 사용할 수 있으니 업데이트를 다시 시도하세요.`,"There is no compilation log yet.":`아직 컴파일 로그가 없습니다.`,"There is no new review feedback to send.":`보낼 새로운 검토 피드백이 없습니다.`,"This PDF has no selectable text to review.":`이 PDF에는 검토할 수 있는 선택 가능한 텍스트가 없습니다.`,"This PDF is too long for one AI review (180,000 characters maximum).":`이 PDF는 단일 AI 검토를 수행하기에 너무 깁니다(최대 180,000자).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`이 주소는 사용자의 tailnet 전용입니다. 외부 사용자는 PAPILOT_ACCOUNT_ORIGIN에서 로그인할 수 있습니다.`,"This agent does not report usage.":`이 에이전트는 사용량을 보고하지 않습니다.`,"This attachment is already being sent to another task.":`이 첨부파일은 이미 다른 작업으로 전송 중입니다.`,"This attachment is not available for this task.":`이 첨부파일은 이 작업에서 사용할 수 없습니다.`,"This branch does not track a remote branch yet.":`이 브랜치는 아직 원격 브랜치를 추적하지 않습니다.`,"This comparison is out of date. Refresh the page.":`이 비교는 최신 상태가 아닙니다. 페이지를 새로고침하세요.`,"This device is no longer signed in.":`이 기기는 더 이상 로그인되어 있지 않습니다.`,"This entry is no longer among the changes. Refresh the page.":`이 항목은 더 이상 변경 사항에 포함되어 있지 않습니다. 페이지를 새로고침하세요.`,"This entry is no longer in the bibliography. Refresh the panel.":`이 항목은 더 이상 참고문헌에 없습니다. 패널을 새로고침하세요.`,"This file is empty.":`이 파일은 비어 있습니다.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`이 폴더는 상위 Git 저장소에 속해 있습니다. 루트 폴더를 선택하거나 복사본을 업로드하세요.`,"This image format is not supported.":`지원되지 않는 이미지 형식입니다.`,"This invite link has expired or was already used. Ask for a new one.":`이 초대 링크는 만료되었거나 이미 사용되었습니다. 새 링크를 요청하세요.`,"This manuscript preview is out of date. Refresh it and try again.":`이 원고 미리보기는 최신 상태가 아닙니다. 새로고침한 후 다시 시도하세요.`,"This model does not support that reasoning effort.":`이 모델은 해당 추론 강도를 지원하지 않습니다.`,"This note has already been sent.":`이 주석은 이미 전송되었습니다.`,"This note has been deleted. Undo the deletion first.":`이 주석은 삭제되었습니다. 먼저 삭제를 실행 취소하세요.`,"This note is being sent. Wait for the task to finish creating.":`이 주석을 전송하는 중입니다. 작업 생성이 완료될 때까지 기다리세요.`,"This page has expired. Refresh it and try again.":`이 페이지가 만료되었습니다. 새로고침한 후 다시 시도하세요.`,"This paper is already added. Open it from the paper list.":`이 논문은 이미 추가되어 있습니다. 논문 목록에서 여세요.`,"This paper is being updated. Please retry in a moment.":`이 논문을 업데이트하는 중입니다. 잠시 후 다시 시도해 주세요.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`현재 원고에서 이 구절의 위치를 정확히 찾을 수 없습니다. 제안은 검토 작업에 그대로 유지됩니다.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`이 패스키로 로그인할 수 없습니다. 패스키가 제거된 경우 소유자에게 새 초대를 요청하세요.`,"This person is no longer in Papilot.":`이 사용자는 더 이상 Papilot에 없습니다.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`이 저장소에는 아직 커밋이 없습니다. 나중에 PDF에서 변경 사항을 비교하려면 먼저 한 번 커밋하세요.`,"This repository has no remote.":`이 저장소에는 원격 저장소가 없습니다.`,"This repository is already added as another paper.":`이 저장소는 이미 다른 논문으로 추가되어 있습니다.`,"This request ID is already in use by another task.":`이 요청 ID는 이미 다른 작업에서 사용 중입니다.`,"This request has ended or the connection has restarted.":`이 요청이 종료되었거나 연결이 다시 시작되었습니다.`,"This request has ended.":`이 요청은 종료되었습니다.`,"This review page has expired. Refresh it and try again.":`이 검토 페이지가 만료되었습니다. 새로고침한 후 다시 시도하세요.`,"This review task does not belong to this workspace.":`이 검토 작업은 이 작업 공간에 속하지 않습니다.`,"This suggestion does not belong to this review task.":`이 제안은 이 검토 작업에 속하지 않습니다.`,"This suggestion was ignored while copying. Restore it first.":`복사하는 동안 이 제안이 무시되었습니다. 먼저 복원하세요.`,"This task already applies accepted changes to the working directory.":`이 작업은 이미 수락된 변경 사항을 작업 디렉터리에 적용하고 있습니다.`,"This task already has queued instructions. Wait or pause it first.":`이 작업에는 이미 대기 중인 지침이 있습니다. 먼저 기다리거나 작업을 일시 중지하세요.`,"This task has no accepted changes left to commit.":`이 작업에는 커밋할 수락된 변경 사항이 남아 있지 않습니다.`,"This task is being created. Refresh in a moment.":`이 작업을 생성하는 중입니다. 잠시 후 새로고침하세요.`,"This task is being deleted.":`이 작업을 삭제하는 중입니다.`,"This task is being deleted. Retry deletion to finish cleanup.":`이 작업을 삭제하는 중입니다. 정리를 완료하려면 삭제를 다시 시도하세요.`,"This task is being deleted. Your instructions were not queued.":`이 작업을 삭제하는 중입니다. 지침이 대기열에 추가되지 않았습니다.`,"This task is busy. Wait for it to finish or pause it first.":`이 작업이 진행 중입니다. 완료될 때까지 기다리거나 먼저 일시 중지하세요.`,"This task is not an AI review.":`이 작업은 AI 검토가 아닙니다.`,"This task was deleted. Create a new task instead.":`이 작업은 삭제되었습니다. 대신 새 작업을 생성하세요.`,"Too many attempts. Wait a minute and try again.":`시도 횟수가 너무 많습니다. 1분 후에 다시 시도하세요.`,"Too many open Papilot tabs. Close one and try again.":`열려 있는 Papilot 탭이 너무 많습니다. 탭을 하나 닫고 다시 시도하세요.`,"Unknown Git action.":`알 수 없는 Git 작업입니다.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`미사용 첨부파일이 500MB에 도달했습니다. 더 업로드하려면 초안에서 첨부파일을 제거하세요.`,"Upload a file as binary data.":`파일을 바이너리 데이터로 업로드하세요.`,"Wait for repository preparation to finish.":`저장소 준비가 완료될 때까지 기다려 주세요.`,"Wait for task creation to finish before deleting it.":`작업을 삭제하기 전에 작업 생성이 완료될 때까지 기다려 주세요.`,"Wait for the current Git operation before sending more instructions.":`추가 지침을 보내기 전에 현재 Git 작업이 완료될 때까지 기다려 주세요.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`현재 PDF 컴파일이 완료될 때까지 기다린 후 AI 검토 스킬을 실행하세요.`,"Wait for the current delivery before sending more instructions.":`추가 지침을 보내기 전에 현재 전송이 완료될 때까지 기다려 주세요.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`현재 원고 PDF 컴파일이 완료될 때까지 기다린 후 제안을 다시 복사하세요.`,"Wait for the current review action before building a review.":`검토를 빌드하기 전에 현재 검토 동작이 완료될 때까지 기다려 주세요.`,"Wait for the current review action before committing.":`커밋하기 전에 현재 검토 동작이 완료될 때까지 기다려 주세요.`,"Wait for the current update to finish before changing channels.":`채널을 변경하기 전에 현재 업데이트가 완료될 때까지 기다려 주세요.`,"Wait for the task and review actions to finish before applying changes.":`변경 사항을 적용하기 전에 작업 및 검토 동작이 완료될 때까지 기다려 주세요.`,"Wait for the task and review actions to finish before choosing a destination.":`대상 위치를 선택하기 전에 작업 및 검토 동작이 완료될 때까지 기다려 주세요.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`경로를 변경하거나 제거하기 전에 이 논문의 PDF 빌드가 완료될 때까지 기다리세요.`,"ZIP links and special files are not supported.":`ZIP 링크 및 특수 파일은 지원되지 않습니다.`,"npm is unavailable to Papilot.":`Papilot에서 npm을 사용할 수 없습니다.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`PDF 비교 서비스에 연결할 수 없습니다. 수정 사항은 저장되어 있습니다. 기존 빌드를 복구하려면 상태 확인을 선택하세요.`},ne={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`Möglicherweise fehlt ein Paket, eine Schriftart oder eine Quelldatei. Prüfen Sie die Details unten, stellen Sie die fehlende Datei wieder her oder bitten Sie um Hilfe.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`Mit einem Passkey melden Sie sich per Face ID, Touch ID, Windows Hello oder Ihrem Smartphone an. Papilot sieht niemals ein Passwort.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`Ein Skill mit derselben ID hat in dieser Reihenfolge Vorrang: dieser Artikel, dann global, dann integriert.`,"A skill with this ID already exists in this location.":`An diesem Speicherort existiert bereits ein Skill mit dieser ID.`,"A task needs attention":`Eine Aufgabe erfordert Aufmerksamkeit`,"A workspace for your papers.":`Ein Arbeitsbereich für Ihre Artikel.`,"AI is resolving conflicts…":`KI löst Konflikte auf…`,"AI needs your input":`KI benötigt Ihre Eingabe`,"AI review":`KI-Überprüfung`,"AI suggestion":`KI-Vorschlag`,"AI suggestion {n}":`KI-Vorschlag {n}`,"AI suggestions":`KI-Vorschläge`,"Abort merge":`Zusammenführung abbrechen`,"Aborting…":`Wird abgebrochen…`,"About Papilot":`Über Papilot`,Accent:`Akzentfarbe`,"Accept change":`Änderung annehmen`,"Accept the current proposal. In Changes, stage or unstage it.":`Aktuellen Vorschlag annehmen. Unter „Änderungen“ vormerken oder Vormerkung aufheben.`,Accepted:`Angenommen`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`Angenommene Änderungen in Ihrem Manuskript bleiben erhalten. Andere Aufgaben sind nicht betroffen.`,"Access to all papers":`Zugriff auf alle Artikel`,Account:`Konto`,"Add a paper":`Einen Artikel hinzufügen`,"Add a passkey":`Passkey hinzufügen`,"Add all to task":`Alle zur Aufgabe hinzufügen`,"Add and fix later":`Hinzufügen und später korrigieren`,"Add files or skills":`Dateien oder Skills hinzufügen`,"Add files…":`Dateien hinzufügen…`,"Add instructions to the selected color groups above.":`Fügen Sie oben Anweisungen zu den ausgewählten Farbgruppen hinzu.`,"Add note":`Anmerkung hinzufügen`,"Add overall instructions (optional)":`Allgemeine Anweisungen hinzufügen (optional)`,"Add paper":`Artikel hinzufügen`,"Add paper…":`Artikel hinzufügen…`,"Add skill":`Skill hinzufügen`,"Add to .gitignore":`Zu .gitignore hinzufügen`,"Add to group":`Zur Gruppe hinzufügen`,"Add to {group}":`Zu {group} hinzufügen`,"Add your first paper":`Ihren ersten Artikel hinzufügen`,Added:`Hinzugefügt`,"Added to task: {n}":`Zur Aufgabe hinzugefügt: {n}`,"Added {n} pattern to .gitignore.":`{n} Muster zu .gitignore hinzugefügt.`,"Added {n} patterns to .gitignore.":`{n} Muster zu .gitignore hinzugefügt.`,"Address reviewers":`Auf Gutachter eingehen`,"Address {n} PDF notes":`{n} PDF-Anmerkungen bearbeiten`,Advanced:`Erweitert`,"Agent configuration":`Agent-Konfiguration`,"Agent settings":`Agent-Einstellungen`,Agents:`Agenten`,All:`Alle`,"All entries":`Alle Einträge`,"All skills":`Alle Skills`,"Allow this action":`Diese Aktion erlauben`,"Already set up?":`Bereits eingerichtet?`,"Already used for {action}. Choose another shortcut.":`Wird bereits für {action} verwendet. Wählen Sie ein anderes Tastenkürzel.`,"Always light":`Immer hell`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`Eine in einem neuen Terminal gesetzte Umgebungsvariable erreicht keinen bereits laufenden Server. Starten Sie Papilot mit den Zugangsdaten neu; ein bloßes Neuverbinden kann die Umgebung nicht ändern.`,"Annotation group color":`Farbe der Anmerkungsgruppe`,"Annotation groups":`Anmerkungsgruppen`,"Another entry has the same key.":`Ein anderer Eintrag hat denselben Schlüssel.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity öffnet Bilder über seine Dateiwerkzeuge. Wählen Sie für die direkte Bildeingabe Codex oder Claude.`,Appearance:`Erscheinungsbild`,Application:`Anwendung`,"Applied to manuscript":`Auf Manuskript angewendet`,Apply:`Anwenden`,"Apply file changes":`Dateiänderungen anwenden`,"Apply to working directory":`Auf Arbeitsverzeichnis anwenden`,"Apply to workspace":`Auf Arbeitsbereich anwenden`,"Apply without committing":`Ohne Commit anwenden`,"Applying…":`Wird angewendet…`,"Approval requests":`Genehmigungsanfragen`,"Approve this action":`Diese Aktion genehmigen`,Archive:`Archivieren`,"Archive task":`Aufgabe archivieren`,"Archived task":`Archivierte Aufgabe`,"Archived tasks":`Archivierte Aufgaben`,"Ask a question or request changes…":`Frage stellen oder Änderungen anfordern…`,"Ask an agent to look into {n} problem":`Einen Agenten bitten, {n} Problem zu prüfen`,"Ask an agent to look into {n} problems":`Einen Agenten bitten, {n} Probleme zu prüfen`,"Ask for another review of this PDF version…":`Weitere Überprüfung dieser PDF-Version anfordern…`,"Attach up to 10 files per message.":`Bis zu 10 Dateien pro Nachricht anhängen.`,Attachments:`Anhänge`,"Attachments must total 100 MB or less.":`Anhänge dürfen insgesamt maximal 100 MB groß sein.`,Authors:`Autoren`,"Available levels depend on the selected model.":`Die verfügbaren Stufen hängen vom ausgewählten Modell ab.`,"Available models":`Verfügbare Modelle`,"Awaiting changes":`Warte auf Änderungen`,Background:`Hintergrund`,"Bare repository":`Bare-Repository`,"BibTeX cannot read it ({error}).":`BibTeX kann die Datei nicht lesen ({error}).`,"BibTeX cannot read it: {error}":`BibTeX kann die Datei nicht lesen: {error}`,Book:`Buch`,Branch:`Branch`,"Bring your collaborators in":`Mitautorinnen und Mitautoren einladen`,"Browser default ({language})":`Browser-Standard ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`Browser zeigen Benachrichtigungen nur über HTTPS oder localhost an. Öffnen Sie Papilot über eine sichere Adresse, um sie zu nutzen.`,"Build failed · sent to {agent}":`Kompilierung fehlgeschlagen · an {agent} gesendet`,"Built-in":`Integriert`,Cancel:`Abbrechen`,"Change shortcut: {action}":`Tastenkürzel ändern: {action}`,"Change {n}":`Änderung {n}`,"Changed files in {branch}":`Geänderte Dateien in {branch}`,Changelog:`Änderungsprotokoll`,Changes:`Änderungen`,"Changes apply to the next turn.":`Änderungen gelten für den nächsten Durchgang.`,"Changes in {path}":`Änderungen in {path}`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`„Änderungen“ zeigt nur die geänderten Abschnitte an und wird am schnellsten geöffnet. „PDF“ zeigt jede Änderung an ihrer Stelle im gesamten Artikel an und dauert bei langen Artikeln länger. Der Umschalter in einer Überprüfung ändert nur diese Überprüfung.`,"Change…":`Ändern…`,Chart:`Diagramm`,Chat:`Chat`,"Chat (reply needed)":`Chat (Antwort erforderlich)`,"Chat only":`Nur Chat`,"Check again":`Erneut prüfen`,"Check for updates":`Nach Updates suchen`,"Check for updates to see the latest version.":`Suchen Sie nach Updates, um die neueste Version zu sehen.`,"Check math":`Mathematik prüfen`,"Check online":`Online prüfen`,"Check references online":`Literaturangaben online prüfen`,"Check status":`Status prüfen`,"Check task status":`Aufgabenstatus prüfen`,"Check task status before deleting this task.":`Prüfen Sie den Aufgabenstatus, bevor Sie diese Aufgabe löschen.`,"Check task status before sending":`Aufgabenstatus vor dem Senden prüfen`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`Prüfen Sie den Verbindungsfehler oben sowie Anmeldung, Anbieter und Netzwerkeinstellungen des Agenten auf diesem Host. Starten Sie Papilot neu, nachdem Sie Zugangsdaten oder ausführbare Pfade geändert haben.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`Prüfen Sie die Hauptdatei und die Engine oder bitten Sie den Assistenten, die Kompilierung zu korrigieren. Sie können auch die gespeicherten Dateien bearbeiten und es erneut versuchen.`,"Check the task status before sending notes.":`Prüfen Sie den Aufgabenstatus, bevor Sie Anmerkungen senden.`,"Check your connection and try again.":`Prüfen Sie Ihre Verbindung und versuchen Sie es erneut.`,"Check {n} more online":`{n} weitere online prüfen`,"Checked by you":`Von Ihnen geprüft`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`Prüfe auf Manuskriptänderungen. Ein PDF-Vergleich wird nur bei Bedarf erstellt.`,"Checking for updates…":`Suche nach Updates…`,"Checking {n}…":`Prüfe {n}…`,"Checking…":`Wird geprüft…`,Checklist:`Checkliste`,"Choose ZIP":`ZIP auswählen`,"Choose a folder or ZIP, or drag it here.":`Wählen Sie einen Ordner oder eine ZIP-Datei aus oder ziehen Sie sie hierher.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`Wählen Sie einen Ordner aus, um eine Kopie hochzuladen. Um die Originaldateien zu verwenden, öffnen Sie ihn in der Desktop-App.`,"Choose a shortcut to edit:":`Zu bearbeitendes Tastenkürzel auswählen:`,"Choose an icon":`Symbol auswählen`,"Choose attachments":`Anhänge auswählen`,"Choose different files":`Andere Dateien auswählen`,"Choose folder":`Ordner auswählen`,"Choose how paper pages look in dark mode.":`Legen Sie fest, wie Artikelseiten im Dunkelmodus dargestellt werden.`,"Choose the papers to share, then send a personal invite link.":`Wählen Sie die zu teilenden Artikel aus und senden Sie dann einen persönlichen Einladungslink.`,"Choose up to 5,000 files, totaling less than 64 MB.":`Wählen Sie bis zu 5.000 Dateien mit insgesamt weniger als 64 MB aus.`,"Choose {color} color":`Farbe {color} auswählen`,"Citations, entries and their records":`Zitate, Einträge und zugehörige Datensätze`,"Cited {n} time: {places}":`{n}-mal zitiert: {places}`,"Cited {n} times: {places}":`{n}-mal zitiert: {places}`,"Claude Code or API credentials were not detected.":`Claude Code oder API-Zugangsdaten wurden nicht erkannt.`,"Clear selection":`Auswahl aufheben`,"Clear task search":`Aufgabensuche zurücksetzen`,"Click a highlighted key to customize it.":`Klicken Sie auf eine hervorgehobene Taste, um sie anzupassen.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`Klicken Sie auf eine Taste, um sie zu ändern, und drücken Sie dann das neue Tastenkürzel. Escape bricht ab; die Rücktaste löscht es.`,Close:`Schließen`,"Close agent details":`Agentendetails schließen`,"Close note":`Anmerkung schließen`,"Close notes":`Anmerkungen schließen`,"Close review notes":`Überprüfungsanmerkungen schließen`,"Close search":`Suche schließen`,"Close suggestion":`Vorschlag schließen`,"Close task list":`Aufgabenliste schließen`,"Close the current editor or cancel region selection.":`Aktuellen Editor schließen oder Bereichsauswahl abbrechen.`,"Close window":`Fenster schließen`,"Closest record":`Ähnlichster Datensatz`,Code:`Code`,"Collapse manuscript panel":`Manuskriptbereich einklappen`,"Collapse {group} notes":`{group}-Anmerkungen einklappen`,Color:`Farbe`,Comments:`Kommentare`,Commit:`Commit`,"Commit 1 file":`1 Datei committen`,"Commit all {n} files":`Alle {n} Dateien committen`,"Commit and push":`Committen und pushen`,"Commit graph":`Commit-Graph`,"Commit merge":`Merge committen`,"Commit message":`Commit-Nachricht`,"Commit staged changes in 1 file":`Vorgemerkte Änderungen in 1 Datei committen`,"Commit staged changes in {n} files":`Vorgemerkte Änderungen in {n} Dateien committen`,"Commit to manuscript":`Ins Manuskript committen`,"Commit to task branch":`In Aufgaben-Branch committen`,"Commit to {branch}":`In {branch} committen`,"Commit together":`Gemeinsam committen`,"Commit what is staged":`Vorgemerkte Änderungen committen`,"Commit {chosen} of {n} files":`{chosen} von {n} Dateien committen`,Committed:`Committet`,"Committed and pushed":`Committet und gepusht`,"Committed {hash} and pushed.":`{hash} committet und gepusht.`,"Committed {hash} to {branch}":`{hash} in {branch} committet`,"Committed {hash}.":`{hash} committet.`,"Committing and pushing…":`Wird committet und gepusht…`,"Committing…":`Wird committet…`,"Commit…":`Committen…`,"Compared with {upstream}":`Verglichen mit {upstream}`,"Compilation details":`Kompilierungsdetails`,"Compilation failed. Click to retry.":`Kompilierung fehlgeschlagen. Zum Wiederholen klicken.`,"Compilation log":`Kompilierungsprotokoll`,"Compilation problems":`Kompilierungsprobleme`,"Compilation status unavailable.":`Kompilierungsstatus nicht verfügbar.`,"Compiling the PDF…":`PDF wird kompiliert…`,Completed:`Abgeschlossen`,"Component source":`Komponenten-Quellcode`,"Confirm and apply":`Bestätigen und anwenden`,"Confirm and commit":`Bestätigen und committen`,"Confirm whether the task is still running before generating a PDF comparison.":`Prüfen Sie vor dem Erstellen eines PDF-Vergleichs, ob die Aufgabe noch ausgeführt wird.`,Conflict:`Konflikt`,"Conflict resolution paused":`Konfliktlösung pausiert`,"Conflicts resolved. Read the diffs, then commit the merge.":`Konflikte gelöst. Prüfen Sie die Diffs und committen Sie anschließend den Merge.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`Verbinden Sie eine öffentliche HTTPS-Adresse, um Personen zu Ihren Artikeln einzuladen. Diese können sich sicher mit einem Passkey anmelden.`,"Connect an assistant in Settings to help repair this paper.":`Verbinden Sie in den Einstellungen einen Assistenten, der beim Reparieren dieses Artikels hilft.`,"Connect and sign in to load the model list.":`Verbinden und anmelden, um die Modellliste zu laden.`,"Connect to view account, models, and usage.":`Verbinden, um Konto, Modelle und Nutzung anzuzeigen.`,Connected:`Verbunden`,"Connecting to your papers and tasks…":`Verbindung zu Ihren Artikeln und Aufgaben wird hergestellt…`,"Connecting to {agent}…":`Verbindung zu {agent} wird hergestellt…`,"Connecting…":`Verbindung wird hergestellt…`,"Connection details":`Verbindungsdetails`,"Connection lost. Showing the last update; your draft is kept.":`Verbindung unterbrochen. Das letzte Update wird angezeigt; Ihr Entwurf bleibt erhalten.`,Consistency:`Konsistenz`,Contents:`Inhalt`,"Contents will appear when the PDF is ready.":`Der Inhalt wird angezeigt, sobald das PDF bereit ist.`,"Continue later":`Später fortfahren`,Contribute:`Mitwirken`,"Contribute an integration":`Integration beisteuern`,Copied:`Kopiert`,"Copied path":`Pfad kopiert`,Copy:`Kopieren`,"Copy and edit":`Kopieren und bearbeiten`,"Copy message":`Nachricht kopieren`,"Copy path: {path}":`Pfad kopieren: {path}`,"Copy selected PDF text":`Markierten PDF-Text kopieren`,"Copy this built-in skill to customize it for all papers or this paper.":`Kopieren Sie diesen integrierten Skill, um ihn für alle Artikel oder diesen Artikel anzupassen.`,"Could not check":`Konnte nicht geprüft werden`,"Could not check for updates":`Es konnte nicht nach Updates gesucht werden`,"Could not check for updates. Try again when connected.":`Es konnte nicht nach Updates gesucht werden. Versuchen Sie es erneut, sobald eine Verbindung besteht.`,"Could not complete the environment checks. Check the connection and try again.":`Die Umgebungsprüfungen konnten nicht abgeschlossen werden. Prüfen Sie die Verbindung und versuchen Sie es erneut.`,"Could not detect a main file. Enter its path relative to the paper folder.":`Es konnte keine Hauptdatei erkannt werden. Geben Sie den Pfad relativ zum Artikelordner ein.`,"Could not generate the PDF comparison.":`Der PDF-Vergleich konnte nicht erstellt werden.`,"Could not load the license notices.":`Die Lizenzhinweise konnten nicht geladen werden.`,"Could not prepare the paper":`Artikel konnte nicht vorbereitet werden`,"Could not read the LaTeX installation. Try again.":`Die LaTeX-Installation konnte nicht gelesen werden. Versuchen Sie es erneut.`,"Could not read the selected file.":`Die ausgewählte Datei konnte nicht gelesen werden.`,"Could not read this worktree.":`Dieser Arbeitsbaum konnte nicht gelesen werden.`,"Could not reconnect. Check the server connection and try again.":`Die Verbindung konnte nicht wiederhergestellt werden. Prüfen Sie die Serververbindung und versuchen Sie es erneut.`,"Could not refresh the repository.":`Das Repository konnte nicht aktualisiert werden.`,"Could not start the update. Please retry.":`Das Update konnte nicht gestartet werden. Bitte versuchen Sie es erneut.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Erstellen Sie einen Cursor-API-Schlüssel im Cursor-Dashboard oder konfigurieren Sie die Cursor-SDK-Anmeldung auf diesem Host.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Erstellen Sie einen GLM Coding Plan oder einen API-Schlüssel bei Zhipu oder Z.ai.`,"Create a passkey":`Passkey erstellen`,"Create a passkey on this device to sign in as {name}.":`Erstellen Sie auf diesem Gerät einen Passkey, um sich als {name} anzumelden.`,"Create a passkey to sign in to your Papilot from anywhere.":`Erstellen Sie einen Passkey, um sich von überall aus bei Ihrem Papilot anzumelden.`,"Create invite link":`Einladungslink erstellen`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`Das Erstellen des Passkeys wurde abgebrochen. Der Link funktioniert weiterhin; versuchen Sie es erneut, sobald Sie bereit sind.`,"Creating…":`Wird erstellt…`,"Credits available":`Guthaben verfügbar`,Current:`Aktuell`,"Current version":`Aktuelle Version`,"Cursor SDK credentials were not detected.":`Zugangsdaten für das Cursor SDK wurden nicht erkannt.`,"Customize shortcuts":`Tastenkürzel anpassen`,Customized:`Angepasst`,"Cut length without losing content":`Text kürzen, ohne Inhalt zu verlieren`,"Daily limit":`Tageslimit`,Dark:`Dunkel`,Decline:`Ablehnen`,Declined:`Abgelehnt`,Default:`Standard`,"Default model":`Standardmodell`,"Default reasoning effort":`Standard-Denkaufwand`,"Delete file":`Datei löschen`,"Delete note":`Anmerkung löschen`,"Delete note {n}":`Anmerkung {n} löschen`,"Delete review note {n}":`Überprüfungsanmerkung {n} löschen`,"Delete skill":`Skill löschen`,"Delete task":`Aufgabe löschen`,"Delete task?":`Aufgabe löschen?`,"Delete task…":`Aufgabe löschen…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`Diesen Skill löschen? Nur die zugehörige Markdown-Datei wird entfernt; unterstützende Dateien bleiben erhalten.`,"Delete {name}?":`{name} löschen?`,Deleted:`Gelöscht`,"Deleting task":`Aufgabe wird gelöscht`,"Deleting…":`Wird gelöscht…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`Das Löschen hat bereits begonnen. Erneut versuchen, um die Bereinigung zu bestätigen und die Aufgabe zu entfernen.`,"Deletion is in progress":`Löschvorgang läuft`,"Describe the revision":`Überarbeitung beschreiben`,"Describe what the agent should do, what to preserve, and how to present the result.":`Beschreiben Sie, was der Agent tun soll, was erhalten bleiben muss und wie das Ergebnis dargestellt werden soll.`,Description:`Beschreibung`,"Details (optional)":`Details (optional)`,"Detect again":`Erneut erkennen`,"Detecting LaTeX installation…":`LaTeX-Installation wird erkannt…`,"Dev (GitHub main)":`Dev (GitHub main)`,Differs:`Weicht ab`,"Discard all changes":`Alle Änderungen verwerfen`,"Discard changes":`Änderungen verwerfen`,"Discard changes in {name}?":`Änderungen in {name} verwerfen?`,"Discard changes in {n} file?":`Änderungen in {n} Datei verwerfen?`,"Discard changes in {n} files?":`Änderungen in {n} Dateien verwerfen?`,"Discard changes in {path}":`Änderungen in {path} verwerfen`,"Discard unsaved skill changes?":`Ungespeicherte Änderungen am Skill verwerfen?`,"Discarded changes in {n} file.":`Änderungen in {n} Datei verworfen.`,"Discarded changes in {n} files.":`Änderungen in {n} Dateien verworfen.`,"Dismiss error":`Fehler ausblenden`,Distribution:`Distribution`,"Download desktop updates":`Desktop-Updates herunterladen`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`Laden Sie die neueste Desktop-App für Ihr System von GitHub Releases herunter. Ihre Artikel und Einstellungen bleiben erhalten.`,"Downloading and building the selected GitHub commit…":`Ausgewählter GitHub-Commit wird heruntergeladen und erstellt…`,"Downloading and checking the new version…":`Neue Version wird heruntergeladen und geprüft…`,"Drag to resize · Double-click to reset":`Ziehen zum Ändern der Größe · Doppelklicken zum Zurücksetzen`,"Drop files to attach":`Dateien zum Anhängen hier ablegen`,"Drop one folder or LaTeX ZIP file.":`Legen Sie einen Ordner oder eine LaTeX-ZIP-Datei ab.`,"Early updates from GitHub main. May be less stable.":`Frühe Updates aus GitHub main. Möglicherweise weniger stabil.`,Edit:`Bearbeiten`,"Edit note":`Anmerkung bearbeiten`,"Edit note {n}":`Anmerkung {n} bearbeiten`,"Edit note {n}: {comment}":`Anmerkung {n} bearbeiten: {comment}`,"Edit paper":`Artikel bearbeiten`,"Edit {name}":`{name} bearbeiten`,"Edited {file}":`{file} bearbeitet`,"Edited {n} files":`{n} Dateien bearbeitet`,"Editing dark mode colors. Changes are saved automatically.":`Farben für den dunklen Modus werden bearbeitet. Änderungen werden automatisch gespeichert.`,"Editing light mode colors. Changes are saved automatically.":`Farben für den hellen Modus werden bearbeitet. Änderungen werden automatisch gespeichert.`,"Enable shortcut: {action}":`Tastenkürzel aktivieren: {action}`,"Enter a folder path":`Ordnerpfad eingeben`,"Environment variable":`Umgebungsvariable`,Errors:`Fehler`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`Änderungen an anderen Stellen einblenden, etwa im Inhaltsverzeichnis und bei der Nummerierung von Verweisen. Standardmäßig deaktiviert; Bearbeitungen ohne sichtbare Änderung am Ursprungsort, wie Makrodefinitionen, zeigen weiterhin ihre Auswirkungen.`,"Expand indirect changes":`Indirekte Änderungen einblenden`,"Expand manuscript panel":`Manuskriptbereich einblenden`,"Expand {group} notes":`Anmerkungen für {group} ausklappen`,Failed:`Fehlgeschlagen`,Fast:`Schnell`,"Fast mode":`Schneller Modus`,"Faster responses; may use more of your limit.":`Schnellere Antworten; verbraucht möglicherweise mehr von Ihrem Limit.`,"Feedback & issues":`Feedback & Probleme`,"Fetch from the remote":`Vom Remote abrufen`,"Files must be 25 MB or smaller.":`Dateien dürfen maximal 25 MB groß sein.`,"Files on disk, Git history and task worktrees will stay in place.":`Dateien auf der Festplatte, Git-Verlauf und Aufgaben-Arbeitsbäume bleiben erhalten.`,"Files received":`Dateien empfangen`,"Find (⌘F)":`Suchen (⌘F)`,"Find errors in notation, equations and proofs":`Fehler in Notation, Gleichungen und Beweisen finden`,"Find in PDF":`Im PDF suchen`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`Finden Sie heraus, was die Ursache dieser Literaturverzeichnis-Probleme ist, und berichten Sie darüber. Bearbeiten Sie keine Dateien. Prüfen Sie für jeden Eintrag, ob das Werk existiert und welche Angaben der veröffentlichte Datensatz enthält (Autoren, Titel, Jahr, Publikationsort, DOI), ermitteln Sie im Git-Verlauf der .bib- und .tex-Dateien, woher der Eintrag oder das Zitat stammt, und schlagen Sie eine Lösung vor. Kennzeichnen Sie, welche Erkenntnisse durch eine Quelle bestätigt wurden und welche Vermutungen sind.`,"Fit page":`An Seite anpassen`,"Fit width":`An Breite anpassen`,"Fix LaTeX warnings":`LaTeX-Warnungen beheben`,"Fix typos, grammar and punctuation without rewording":`Tippfehler, Grammatik und Zeichensetzung ohne Umformulierung korrigieren`,"Fix with an agent…":`Mit einem Agenten beheben…`,"Folder path":`Ordnerpfad`,"Follow mode":`Folgemodus`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`Starten Sie Papilot für das SDK stattdessen mit konfiguriertem ANTHROPIC_API_KEY oder einem unterstützten Cloud-Anbieter. Starten Sie Papilot nach dem Ändern der Umgebung neu.`,Foreground:`Vordergrund`,"Full PDF":`Vollständiges PDF`,General:`Allgemein`,"Generate PDF comparison":`PDF-Vergleich erstellen`,"Generate commit message":`Commit-Nachricht generieren`,"Generate task title":`Aufgabentitel erstellen`,"Generating task title…":`Aufgabentitel wird erstellt…`,"Get started and make Papilot your own.":`Legen Sie los und passen Sie Papilot an Ihre Bedürfnisse an.`,"Git status":`Git-Status`,"Git status of the manuscript":`Git-Status des Manuskripts`,"Git, {n} changed":`Git, {n} geändert`,"GitHub repository":`GitHub-Repository`,"Give your skill a name":`Geben Sie Ihrem Skill einen Namen`,Global:`Global`,Globe:`Globus`,Graphite:`Graphit`,Green:`Grün`,"Help fix compilation":`Beim Beheben der Kompilierung helfen`,"Help improve Papilot with code, docs, and ideas.":`Helfen Sie mit Code, Dokumentation und Ideen, Papilot zu verbessern.`,"Hide task list":`Aufgabenliste ausblenden`,"Highlighted in {group}":`Hervorgehoben in {group}`,"Hover over a highlighted key to see what it does.":`Bewegen Sie den Mauszeiger über eine hervorgehobene Taste, um ihre Funktion anzuzeigen.`,"I checked it myself":`Ich habe es selbst überprüft`,Idea:`Idee`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`Falls es bereits installiert ist, setzen Sie {variable} in der Umgebung, in der Papilot gestartet wird, auf den Pfad der ausführbaren Datei und starten Sie Papilot anschließend neu.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`Falls der Live-Status weiterhin von der Prüfung abweicht, starten Sie Papilot unter demselben Benutzer und in derselben Umgebung neu, in der Sie den Agenten konfiguriert haben.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`Wenn die Aufgabe das Manuskript ändert, wird hier ein PDF-Vergleich angezeigt. Lesen Sie andernfalls die Antwort im Chat.`,Ignore:`Ignorieren`,"Ignore suggestion {n}":`Vorschlag {n} ignorieren`,"Images must be 5 MB or smaller.":`Bilder dürfen maximal 5 MB groß sein.`,"Import a ZIP":`ZIP-Datei importieren`,"Import a separate copy from Overleaf or a ZIP archive.":`Importieren Sie eine separate Kopie aus Overleaf oder einem ZIP-Archiv.`,"Import progress":`Importfortschritt`,"Improve clarity and flow, keeping the meaning":`Klarheit und Lesefluss unter Beibehaltung der Bedeutung verbessern`,"Include note {n} in this task":`Anmerkung {n} in diese Aufgabe einbeziehen`,"Include suggestion {n} in this task":`Vorschlag {n} in diese Aufgabe einbeziehen`,"Include {key} in the task":`{key} in die Aufgabe einbeziehen`,"Individual notes":`Einzelne Anmerkungen`,"Input needed":`Eingabe erforderlich`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Installieren Sie TeX Live oder MacTeX mit latexmk auf dem Computer, auf dem Papilot ausgeführt wird, und versuchen Sie es erneut.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`Installieren Sie die neue Version und starten Sie automatisch neu, sobald keine Aufgaben aktiv sind. Ihre Artikel, Aufgaben und Einstellungen bleiben erhalten.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Installieren Sie {command} auf dem Host, auf dem Papilot ausgeführt wird, und schließen Sie anschließend unten die Anmeldung oder Anbietereinrichtung ab.`,"Installation & setup":`Installation & Einrichtung`,"Installation check":`Installationsprüfung`,"Installation location":`Installationsort`,Instructions:`Anweisungen`,"Instructions for color groups":`Anweisungen für Farbgruppen`,"Instructions for {agent}":`Anweisungen für {agent}`,"Instructions for {group} notes":`Anweisungen für {group}-Anmerkungen`,"Invite link for a new device":`Einladungslink für ein neues Gerät`,"Invite link for {name}":`Einladungslink für {name}`,"Invite someone":`Jemanden einladen`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`Eingeladene Personen können auf alle von Papilot lesbaren Dateien zugreifen, einschließlich Zugangsdaten und nicht geteilter Artikel.`,"Invited, not joined yet":`Eingeladen, noch nicht beigetreten`,"Join Papilot":`Papilot beitreten`,Joined:`Beigetreten`,"Jump to the next change that still needs a decision.":`Zur nächsten Änderung springen, die noch eine Entscheidung erfordert.`,"Keep editing":`Weiter bearbeiten`,"Keep latest wording and apply":`Neueste Formulierung beibehalten und anwenden`,"Keep latest wording and commit":`Neueste Formulierung beibehalten und committen`,"Keep on manuscript":`Im Manuskript behalten`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`Behalten Sie in überlappenden Textstellen die neueste Formulierung bei und speichern Sie die übrigen akzeptierten Änderungen.`,"Kept on manuscript":`Im Manuskript behalten`,"Keyboard key {key}: {actions}":`Taste {key}: {actions}`,"Keyboard shortcuts":`Tastenkürzel`,"LaTeX Git repository · Requires a commit and latexmk":`LaTeX-Git-Repository · Erfordert einen Commit und latexmk`,"LaTeX engine":`LaTeX-Engine`,"LaTeX installation":`LaTeX-Installation`,"Label defined more than once":`Label mehrfach definiert`,Language:`Sprache`,"Language for the Papilot interface.":`Sprache der Papilot-Oberfläche.`,"Last active {time}":`Zuletzt aktiv {time}`,Later:`Später`,"Latest messages":`Neueste Nachrichten`,"Latest version":`Neueste Version`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Von Papilot und seiner Überprüfungs-Engine verwendete Bibliotheken und Schriftarten. Jede Komponente unterliegt ihrer eigenen Lizenz.`,"Libraries, fonts, and the people behind them.":`Bibliotheken, Schriftarten und die Menschen dahinter.`,"License text is not included in this package. See the component source for its terms.":`Der Lizenztext ist in diesem Paket nicht enthalten. Die Bedingungen finden Sie im Quellcode der jeweiligen Komponente.`,"Licenses & acknowledgments":`Lizenzen & Danksagungen`,Light:`Hell`,"Limit reached":`Limit erreicht`,"Line too wide by {amount}pt":`Zeile um {amount}pt zu breit`,Link:`Link`,"Loading PDF review…":`PDF-Überprüfung wird geladen…`,"Loading conversation…":`Unterhaltung wird geladen…`,"Loading license notices…":`Lizenzhinweise werden geladen…`,"Loading people…":`Personen werden geladen…`,"Loading skills…":`Skills werden geladen…`,"Loading the diff…":`Diff wird geladen…`,"Loading…":`Wird geladen…`,Location:`Speicherort`,Locked:`Gesperrt`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Einträge in Crossref, DBLP und arXiv nachschlagen. Es werden nur Titel, Autoren, Jahre und Kennungen gesendet.`,"Made by Cui Chen and the Papilot contributors.":`Entwickelt von Cui Chen und den Mitwirkenden von Papilot.`,"Main TeX file":`TeX-Hauptdatei`,Manuscript:`Manuskript`,"Manuscript panels":`Manuskriptbereiche`,"Manuscript view":`Manuskriptansicht`,"Mark a figure or region":`Abbildung oder Bereich markieren`,"Mark region":`Bereich markieren`,"Marked on earlier changes.":`Bei früheren Änderungen markiert.`,"Marked region":`Markierter Bereich`,Math:`Mathematik`,"Maximize or restore window":`Fenster maximieren oder wiederherstellen`,Members:`Mitglieder`,Merge:`Zusammenführen`,"Merge in progress":`Zusammenführung läuft`,"Merged {upstream}.":`{upstream} zusammengeführt.`,"Merging: no conflicts left":`Zusammenführung: keine Konflikte mehr`,"Merging: {n} file has conflicts":`Zusammenführung: {n} Datei hat Konflikte`,"Merging: {n} files have conflicts":`Zusammenführung: {n} Dateien haben Konflikte`,"Message ({key} to commit on “{branch}”)":`Nachricht ({key} zum Committen auf „{branch}“)`,"Minimize window":`Fenster minimieren`,"Missing character":`Fehlendes Zeichen`,"Missing file":`Fehlende Datei`,"Missing worktree":`Fehlender Arbeitsbaum`,"Missing: {files}":`Fehlt: {files}`,Mode:`Modus`,"Model default":`Modellstandard`,Models:`Modelle`,Modified:`Geändert`,"More Git actions":`Weitere Git-Aktionen`,"More commit actions":`Weitere Commit-Aktionen`,"Move to the next visible change.":`Zur nächsten sichtbaren Änderung wechseln.`,"Move to the previous visible change.":`Zur vorherigen sichtbaren Änderung wechseln.`,"My notes":`Meine Anmerkungen`,Name:`Name`,"Needs attention":`Erfordert Aufmerksamkeit`,"Needs your reply":`Erfordert Ihre Antwort`,"New invite link":`Neuer Einladungslink`,"New skill":`Neuer Skill`,"New task":`Neue Aufgabe`,"New version":`Neue Version`,"Next change":`Nächste Änderung`,"Next match":`Nächster Treffer`,"Next page":`Nächste Seite`,"Next suggestion":`Nächster Vorschlag`,"Next suggestion (→)":`Nächster Vorschlag (→)`,"Next undecided change":`Nächste offene Änderung`,"No GLM API key was found.":`Es wurde kein GLM-API-Schlüssel gefunden.`,"No LaTeX installation was detected on this host.":`Auf diesem Host wurde keine LaTeX-Installation erkannt.`,"No archived tasks":`Keine archivierten Aufgaben`,"No commits yet":`Noch keine Commits`,"No components match your search.":`Keine Komponenten entsprechen Ihrer Suche.`,"No entry has this key.":`Kein Eintrag hat diesen Schlüssel.`,"No files found in this folder.":`Keine Dateien in diesem Ordner gefunden.`,"No installation details were returned. Run the checks again to refresh.":`Es wurden keine Installationsdetails zurückgegeben. Führen Sie die Prüfungen zum Aktualisieren erneut aus.`,"No linked change":`Keine verknüpfte Änderung`,"No linked task":`Keine verknüpfte Aufgabe`,"No manuscript changes":`Keine Manuskriptänderungen`,"No matches":`Keine Treffer`,"No matching settings":`Keine passenden Einstellungen`,"No matching skills":`Keine passenden Skills`,"No matching tasks":`Keine passenden Aufgaben`,"No models match “{query}”":`Keine Modelle entsprechen „{query}“`,"No notes yet":`Noch keine Anmerkungen`,"No other worktrees in this repository.":`Keine weiteren Arbeitsbäume in diesem Repository.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`Mit Ihnen wurden noch keine Artikel geteilt. Artikel erscheinen hier, sobald {name} sie teilt.`,"No papers yet":`Noch keine Artikel`,"No passkey on this device? Ask the person who invited you for a new invite link.":`Kein Passkey auf diesem Gerät? Bitten Sie die Person, die Sie eingeladen hat, um einen neuen Einladungslink.`,"No problems found.":`Keine Probleme gefunden.`,"No problems in the files. Check online to compare the entries with their records.":`Keine Probleme in den Dateien. Prüfen Sie online, um die Einträge mit ihren Datensätzen abzugleichen.`,"No problems in the last build.":`Keine Probleme beim letzten Build.`,"No record in Crossref, DBLP or arXiv matches it.":`Kein passender Datensatz in Crossref, DBLP oder arXiv gefunden.`,"No tasks yet":`Noch keine Aufgaben`,"No textual changes.":`Keine Textänderungen.`,"No uncommitted changes":`Keine ungesicherten Änderungen`,"No upstream branch":`Kein Upstream-Branch`,"Not assigned":`Nicht zugewiesen`,"Not checked":`Nicht geprüft`,"Not cited in the paper.":`Im Artikel nicht zitiert.`,"Not detected":`Nicht erkannt`,"Not found":`Nicht gefunden`,"Note deleted.":`Anmerkung gelöscht.`,"Note for the agent":`Anmerkung für den Agenten`,"Note on the PDF":`Anmerkung im PDF`,"Note {n}":`Anmerkung {n}`,"Note {n}: {comment}":`Anmerkung {n}: {comment}`,"Notes in this task":`Anmerkungen in dieser Aufgabe`,"Notes stay here unless you add them to a task.":`Anmerkungen bleiben hier, bis Sie sie einer Aufgabe hinzufügen.`,"Nothing to check":`Nichts zu prüfen`,Notifications:`Benachrichtigungen`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`Benachrichtigungen sind für diese Website blockiert. Erlauben Sie sie in den Website-Einstellungen des Browsers und aktivieren Sie sie anschließend hier.`,"Notifications are on":`Benachrichtigungen sind aktiviert`,"Notify me about":`Benachrichtigen bei`,"Notify me when a task fails or stops unexpectedly.":`Benachrichtigen, wenn eine Aufgabe fehlschlägt oder unerwartet abbricht.`,"Notify me when an agent asks me a question.":`Benachrichtigen, wenn ein Agent mir eine Frage stellt.`,"Notify me when an agent finishes without changes to review.":`Benachrichtigen, wenn ein Agent ohne zu überprüfende Änderungen fertig ist.`,"Notify me when an agent needs my approval to continue.":`Benachrichtigen, wenn ein Agent meine Freigabe zum Fortfahren benötigt.`,"Notify me when changes are ready for review.":`Benachrichtigen, wenn Änderungen zur Überprüfung bereitstehen.`,Off:`Aus`,"Online checks are off in Settings, so only problems found in the files are shown.":`Online-Prüfungen sind in den Einstellungen deaktiviert, sodass nur Probleme aus den Dateien angezeigt werden.`,"Online checks are off in Settings.":`Online-Prüfungen sind in den Einstellungen deaktiviert.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`Nur Änderungen am Manuskript erfordern einen PDF-Vergleich. Antworten auf Fragen finden Sie im Chat.`,"Open PDF":`PDF öffnen`,"Open a branch to commit":`Branch zum Committen öffnen`,"Open a folder":`Ordner öffnen`,"Open attachment {name}":`Anhang {name} öffnen`,"Open chat":`Chat öffnen`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`Öffnen Sie ihn auf dem Gerät, auf dem Sie sich anmelden möchten. Er ist innerhalb von 15 Minuten einmalig gültig.`,"Open paper":`Artikel öffnen`,"Open review":`Überprüfung öffnen`,"Open review in new tab":`Überprüfung in neuem Tab öffnen`,"Open reviews on":`Überprüfungen öffnen in`,"Open task: {title}":`Aufgabe öffnen: {title}`,"Open the full PDF":`Gesamtes PDF öffnen`,"Open these shortcut settings.":`Diese Tastenkürzel-Einstellungen öffnen.`,"Opening the PDF…":`PDF wird geöffnet…`,"Opening your workspace":`Arbeitsbereich wird geöffnet`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`Öffnet eine neue Aufgabe, die Sie vor dem Senden bearbeiten können. Der Agent berichtet seine Ergebnisse und nimmt keine Änderungen vor.`,"Opens in a new tab":`Wird in einem neuen Tab geöffnet`,"Or drop a folder or ZIP here":`Oder einen Ordner oder eine ZIP-Datei hier ablegen`,"Or type your own answer":`Oder eigene Antwort eingeben`,Orange:`Orange`,Overridden:`Überschrieben`,Owner:`Eigentümer`,"PDF annotations":`PDF-Anmerkungen`,"PDF appearance":`PDF-Darstellung`,"PDF comparison":`PDF-Vergleich`,"PDF compilation":`PDF-Kompilierung`,"PDF compiled successfully.":`PDF erfolgreich kompiliert.`,"PDF contents":`PDF-Inhalte`,"PDF controls":`PDF-Steuerung`,"PDF note library":`PDF-Anmerkungsbibliothek`,"PDF note {n}":`PDF-Anmerkung {n}`,"PDF notes":`PDF-Anmerkungen`,"PDF pages":`PDF-Seiten`,"PDF preview":`PDF-Vorschau`,"PDF review":`PDF-Überprüfung`,"PDF review only":`Nur PDF-Überprüfung`,"Page number":`Seitenzahl`,"Page {n}":`Seite {n}`,"Page {pages}":`Seite {pages}`,"Page {pages} of {total}":`Seite {pages} von {total}`,"Pages typeset":`Gesetzte Seiten`,Paper:`Papier`,"Paper name":`Artikelname`,"Paper tools":`Artikel-Werkzeuge`,"Paper: {name}":`Artikel: {name}`,"Papers and tasks":`Artikel und Aufgaben`,"Papers they can open":`Artikel, die sie öffnen können`,"Papers {name} can open":`Artikel, die {name} öffnen kann`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot kann npm auf diesem Computer nicht finden. Updates sind erst verfügbar, wenn npm installiert ist.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot konnte keine funktionierende Verbindung zu diesem Agenten herstellen. Der letzte Verbindungsfehler wird unten angezeigt.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot konnte die Dateien nicht für die Kompilierung vorbereiten. Dies ist ein Anwendungsfehler, kein LaTeX-Fehler.`,"Papilot license":`Papilot-Lizenz`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot hat diesen Agenten erreicht, konnte jedoch kein angemeldetes Konto auf diesem Host bestätigen.`,"Papilot sent the build error to {agent}, {time}":`Papilot hat den Kompilierungsfehler an {agent} gesendet, {time}`,"Papilot will tell you here when a task needs you.":`Papilot benachrichtigt Sie hier, wenn eine Aufgabe Ihre Aufmerksamkeit erfordert.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`Teilweise überprüft`,Passed:`Bestanden`,"Passkey · {label}":`Passkey · {label}`,Pause:`Pausieren`,"Pause task":`Aufgabe pausieren`,"Pause this task before deleting it.":`Pausieren Sie diese Aufgabe, bevor Sie sie löschen.`,"Pause {agent}":`{agent} pausieren`,Paused:`Pausiert`,Pen:`Stift`,"Pending review":`Überprüfung ausstehend`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`Eingeladene Personen melden sich unter der öffentlichen Adresse mit einem Passkey an und können in den mit ihnen geteilten Artikeln alles tun, was auch Sie können – einschließlich der Genehmigung von Befehlen, die Agenten auf diesem Host ausführen, und des Pushens mit dessen Git-Zugangsdaten.`,Personal:`Persönlich`,Polish:`Feinschliff`,"Position needs confirmation":`Position erfordert Bestätigung`,"Prepare and compile":`Vorbereiten und kompilieren`,"Preparing task results":`Aufgabenergebnisse werden vorbereitet`,"Preparing task results…":`Aufgabenergebnisse werden vorbereitet…`,"Preparing version history and compiling the PDF…":`Versionsverlauf wird vorbereitet und PDF wird kompiliert…`,"Press a key…":`Taste drücken…`,Preview:`Vorschau`,"Previous change":`Vorherige Änderung`,"Previous match":`Vorheriger Treffer`,"Previous page":`Vorherige Seite`,"Previous suggestion":`Vorheriger Vorschlag`,"Previous suggestion (←)":`Vorheriger Vorschlag (←)`,Problems:`Probleme`,"Processing the bibliography…":`Literaturverzeichnis wird verarbeitet…`,Proofread:`Korrekturlesen`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Stellen Sie dem Prozess oder Dienst, der Papilot startet, CURSOR_API_KEY bereit und starten Sie Papilot anschließend neu. Das SDK wird bei Verwendung automatisch installiert.`,"Publish branch":`Branch veröffentlichen`,"Published releases, recommended for everyday use.":`Veröffentlichte Versionen, für den täglichen Gebrauch empfohlen.`,Pull:`Pull`,"Pulled the latest commits.":`Die neuesten Commits wurden gepullt.`,Purple:`Lila`,Push:`Push`,"Pushed to the remote.":`Auf das Remote-Repository gepusht.`,"Pushed to {upstream}.":`Auf {upstream} gepusht.`,"Queue instructions for the next turn…":`Anweisungen für den nächsten Durchgang einreihen…`,Queued:`In Warteschlange`,"Quote in chat":`Im Chat zitieren`,"Quoted text":`Zitierter Text`,"Raw log":`Rohprotokoll`,"Read folder":`Ordner lesen`,"Read the paper and leave PDF comments without editing the manuscript":`Den Artikel lesen und PDF-Kommentare hinterlassen, ohne das Manuskript zu bearbeiten`,"Read, annotate, and revise your papers with AI, all in one place.":`Lesen, kommentieren und überarbeiten Sie Ihre Artikel mit KI – alles an einem Ort.`,"Reading Git status…":`Git-Status wird gelesen…`,"Reading paper files…":`Artikeldateien werden gelesen…`,"Reading the bibliography…":`Literaturverzeichnis wird gelesen…`,"Reading update status…":`Update-Status wird gelesen…`,"Reading worktrees and history…":`Arbeitsbäume und Verlauf werden gelesen…`,Ready:`Bereit`,"Ready for review":`Bereit zur Überprüfung`,"Ready to check for updates":`Bereit zur Suche nach Updates`,"Reasoning effort":`Denkaufwand`,Recent:`Zuletzt verwendet`,"Recompile PDF":`PDF neu kompilieren`,"Recompiling; this list will update.":`Wird neu kompiliert; diese Liste wird aktualisiert.`,Reconnect:`Neu verbinden`,Reconnecting:`Verbindung wird wiederhergestellt`,Record:`Aufzeichnen`,Red:`Rot`,"Reference check":`Literaturprüfung`,"Refresh changes":`Änderungen aktualisieren`,"Refresh skills":`Skills aktualisieren`,"Refresh worktrees and history":`Arbeitsbäume und Verlauf aktualisieren`,"Regenerate PDF comparison":`PDF-Vergleich neu erstellen`,"Region note":`Bereichsanmerkung`,"Reject change":`Änderung ablehnen`,"Reject the current proposal. In Changes, revert it.":`Den aktuellen Vorschlag ablehnen. Unter „Änderungen“ rückgängig machen.`,Rejected:`Abgelehnt`,"Reload review":`Überprüfung neu laden`,Remove:`Entfernen`,"Remove attachment {name}":`Anhang {name} entfernen`,"Remove from Papilot":`Aus Papilot entfernen`,"Remove from draft":`Aus Entwurf entfernen`,"Remove note {n} from task":`Anmerkung {n} aus Aufgabe entfernen`,"Remove paper":`Artikel entfernen`,"Remove paper?":`Artikel entfernen?`,"Remove suggestion {n} from task":`Vorschlag {n} aus Aufgabe entfernen`,"Remove the {name} skill":`Skill {name} entfernen`,"Remove this paper and its tasks, conversations and notes from Papilot?":`Diesen Artikel sowie seine Aufgaben, Unterhaltungen und Anmerkungen aus Papilot entfernen?`,"Remove {device}":`{device} entfernen`,"Remove {name}":`{name} entfernen`,"Remove…":`Entfernen…`,"Removing…":`Wird entfernt…`,"Rename {name}":`{name} umbenennen`,Renamed:`Umbenannt`,"Rename…":`Umbenennen…`,"Repair summary":`Reparaturübersicht`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`Reparaturen werden als nicht committete Änderungen gespeichert. Überprüfen Sie sie in den Dateiänderungen des Artikels.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`Antworten Sie im Chat, um fortzufahren. Ein PDF-Vergleich ist nur erforderlich, wenn sich das Manuskript ändert.`,"Reply to {agent}":`{agent} antworten`,"Report a bug or suggest an improvement.":`Einen Fehler melden oder eine Verbesserung vorschlagen.`,"Reported {n} times":`{n}-mal gemeldet`,"Repository path":`Repository-Pfad`,"Request a revision":`Überarbeitung anfordern`,"Request failed. Please try again.":`Anfrage fehlgeschlagen. Bitte versuchen Sie es erneut.`,"Reset appearance":`Darstellung zurücksetzen`,"Resize chat panel":`Größe des Chat-Bereichs ändern`,"Resize manuscript panel":`Größe des Manuskript-Bereichs ändern`,"Resolve undefined references, overfull boxes and other build warnings":`Nicht definierte Referenzen, übervolle Boxen und andere Build-Warnungen beheben`,"Resolve with {agent}":`Mit {agent} beheben`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Papilot wird neu gestartet. Diese Seite verbindet sich automatisch neu; Ihre Entwürfe bleiben erhalten.`,"Restarting…":`Wird neu gestartet…`,"Restore default shortcuts":`Standard-Tastenkürzel wiederherstellen`,"Restore task":`Aufgabe wiederherstellen`,Retry:`Erneut versuchen`,"Retry build":`Build erneut versuchen`,"Retry compilation":`Kompilierung erneut versuchen`,"Retry connection":`Verbindung erneut versuchen`,"Retry conversation":`Konversation erneut versuchen`,"Retry deletion":`Löschen erneut versuchen`,"Retry deletion…":`Löschen erneut versuchen…`,"Retry linking changes":`Verknüpfen der Änderungen erneut versuchen`,"Retry title generation":`Titelgenerierung erneut versuchen`,"Retry update":`Update erneut versuchen`,"Retry uploading {name}":`Hochladen von {name} erneut versuchen`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`Wiederverwendbare Anweisungen für Ihre Überarbeitungen. Wählen Sie beim Starten einer Aufgabe einen Skill aus dem /-Menü.`,Review:`Überprüfung`,"Review PDF notes":`PDF-Anmerkungen überprüfen`,"Review and chat side by side":`Überprüfung und Chat nebeneinander`,"Review complete":`Überprüfung abgeschlossen`,"Review copy":`Überprüfungskopie`,"Review decisions":`Überprüfungsentscheidungen`,"Review feedback":`Feedback zur Überprüfung`,"Review navigation":`Überprüfungsnavigation`,"Review note: {comment}":`Überprüfungsanmerkung: {comment}`,"Review notes":`Überprüfungsanmerkungen`,"Review notes ({n})":`Überprüfungsanmerkungen ({n})`,"Review preferences":`Überprüfungseinstellungen`,"Review ready":`Überprüfung bereit`,"Review ready · {n} change to decide":`Überprüfung bereit · {n} Änderung zu entscheiden`,"Review ready · {n} changes to decide":`Überprüfung bereit · {n} Änderungen zu entscheiden`,"Review shortcut keyboard":`Tastatur für Überprüfungs-Tastenkürzel`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`Überprüfungs-Tastenkürzel funktionieren, solange die PDF-Überprüfung fokussiert ist. Sie pausieren während der Texteingabe oder Textauswahl. Änderungen werden in diesem Browser gespeichert.`,"Review the merged result":`Zusammengeführtes Ergebnis überprüfen`,"Review, {n} to decide":`Überprüfung, {n} zu entscheiden`,"Revise for reviewer comments and draft a point-by-point reply":`Anhand von Gutachterkommentaren überarbeiten und eine Punkt-für-Punkt-Antwort entwerfen`,"Revision requested":`Überarbeitung angefordert`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`Führen Sie Papilot und seine Agenten in einem isolierten Container wie Docker aus, um den Zugriff zu beschränken; eingebundene Dateien bleiben zugänglich.`,"Run command":`Befehl ausführen`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`Führen Sie papilot codex login auf dem Host aus. Bei Bedarf wird eine unterstützte Codex-CLI installiert.`,"Run tool":`Tool ausführen`,Running:`Wird ausgeführt`,Runtime:`Laufzeitumgebung`,"Same DOI as {keys}.":`Gleiche DOI wie {keys}.`,"Same title as {keys}.":`Gleicher Titel wie {keys}.`,Save:`Speichern`,"Save accepted changes":`Akzeptierte Änderungen speichern`,"Save to":`Speichern in`,Saved:`Gespeichert`,"Saved folder":`Gespeicherter Ordner`,"Saving…":`Wird gespeichert…`,Search:`Suche`,"Search archived tasks…":`Archivierte Aufgaben durchsuchen…`,"Search components or licenses":`Komponenten oder Lizenzen durchsuchen`,"Search components or licenses…":`Komponenten oder Lizenzen durchsuchen…`,"Search models":`Modelle durchsuchen`,"Search settings":`Einstellungen durchsuchen`,"Search skills":`Skills durchsuchen`,"Search task titles and instructions":`Aufgabentitel und Anweisungen durchsuchen`,"Search tasks":`Aufgaben durchsuchen`,"Search tasks…":`Aufgaben durchsuchen…`,"Search the PDF":`PDF durchsuchen`,"See license notice":`Lizenzhinweis anzeigen`,"See what changed in each release.":`Änderungen der einzelnen Versionen ansehen.`,"Select a skill or create your own.":`Wählen Sie einen Skill aus oder erstellen Sie einen eigenen.`,"Select all notes for this task":`Alle Anmerkungen für diese Aufgabe auswählen`,"Select all {group} notes for this task":`Alle {group}-Anmerkungen für diese Aufgabe auswählen`,"Send (Enter) · New line (Shift+Enter)":`Senden (Enter) · Neue Zeile (Shift+Enter)`,"Send a test notification":`Testbenachrichtigung senden`,"Send annotations":`Anmerkungen senden`,"Send annotations to the agent":`Anmerkungen an den Agenten senden`,"Send feedback":`Feedback senden`,"Send instructions":`Anweisungen senden`,"Send it to {name} yourself. It works once, within 7 days.":`Senden Sie ihn selbst an {name}. Er ist innerhalb von 7 Tagen einmalig gültig.`,"Send the review comment being written.":`Den aktuell verfassten Überprüfungskommentar senden.`,"Send your review decisions and comments to the agent":`Überprüfungsentscheidungen und Kommentare an den Agenten senden`,"Send {n} note":`{n} Anmerkung senden`,"Send {n} note to the agent":`{n} Anmerkung an den Agenten senden`,"Send {n} notes":`{n} Anmerkungen senden`,"Send {n} notes to the agent":`{n} Anmerkungen an den Agenten senden`,"Sending feedback…":`Feedback wird gesendet…`,"Sending…":`Wird gesendet…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`Gesendet. Falls nichts angezeigt wurde, erlauben Sie Benachrichtigungen für diesen Browser in Ihren Systemeinstellungen.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Legen Sie ZHIPU_API_KEY für open.bigmodel.cn oder ZAI_API_KEY für api.z.ai in der Umgebung fest, die Papilot startet. Starten Sie Papilot anschließend neu.`,"Set up on the host":`Auf dem Host einrichten`,"Set up sharing":`Freigabe einrichten`,"Set up this agent":`Diesen Agenten einrichten`,Settings:`Einstellungen`,"Settings categories":`Einstellungskategorien`,"Setup guide":`Einrichtungsanleitung`,"Setup required":`Einrichtung erforderlich`,"Several TeX files were found. Check the selected main document before continuing.":`Es wurden mehrere TeX-Dateien gefunden. Überprüfen Sie das ausgewählte Hauptdokument, bevor Sie fortfahren.`,"Share your papers and manage the people you work with.":`Teilen Sie Ihre Artikel und verwalten Sie die Personen, mit denen Sie zusammenarbeiten.`,Sharing:`Freigabe`,"Sharing is not sandboxed":`Freigabe erfolgt nicht in einer Sandbox`,Shorten:`Kürzen`,Show:`Anzeigen`,"Show LaTeX source":`LaTeX-Quelltext anzeigen`,"Show archived tasks":`Archivierte Aufgaben anzeigen`,"Show current tasks":`Aktuelle Aufgaben anzeigen`,"Show desktop notifications while Papilot is in the background.":`Desktop-Benachrichtigungen anzeigen, während Papilot im Hintergrund läuft.`,"Show fewer models":`Weniger Modelle anzeigen`,"Show note {n} on the page":`Anmerkung {n} auf der Seite anzeigen`,"Show note {n}: {comment}":`Anmerkung {n} anzeigen: {comment}`,"Show or hide the source for the current change.":`Quelltext für die aktuelle Änderung ein- oder ausblenden.`,"Show problems":`Probleme anzeigen`,"Show suggestion {n} on the page":`Vorschlag {n} auf der Seite anzeigen`,"Show task list":`Aufgabenliste anzeigen`,"Show {n} more models":`{n} weitere Modelle anzeigen`,"Showing the last update.":`Letzte Aktualisierung wird angezeigt.`,"Showing the latest {n} commits. Older history is not shown.":`Die letzten {n} Commits werden angezeigt. Älterer Verlauf wird ausgeblendet.`,"Sign in as the user running Papilot, then restart Papilot.":`Melden Sie sich als der Benutzer an, der Papilot ausführt, und starten Sie Papilot anschließend neu.`,"Sign in from anywhere":`Von überall anmelden`,"Sign in on the Papilot host to continue.":`Melden Sie sich auf dem Papilot-Host an, um fortzufahren.`,"Sign in to Papilot":`Bei Papilot anmelden`,"Sign in to continue.":`Melden Sie sich an, um fortzufahren.`,"Sign in with a passkey":`Mit einem Passkey anmelden`,"Sign out":`Abmelden`,"Sign out everywhere":`Überall abmelden`,"Sign-in required":`Anmeldung erforderlich`,"Signed in":`Angemeldet`,"Signed in · {label}":`Angemeldet · {label}`,"Signing in was cancelled. Try again when you are ready.":`Die Anmeldung wurde abgebrochen. Versuchen Sie es erneut, wenn Sie bereit sind.`,"Skill ID":`Skill-ID`,"Skill content (Markdown)":`Skill-Inhalt (Markdown)`,"Skill content must contain 1–20,000 characters.":`Der Skill-Inhalt muss 1–20.000 Zeichen umfassen.`,"Skill content view":`Ansicht des Skill-Inhalts`,"Skill icon":`Skill-Symbol`,"Skill name":`Skill-Name`,"Skill scope":`Skill-Geltungsbereich`,"Skill: {name}":`Skill: {name}`,Skills:`Skills`,Slate:`Schiefergrau`,"Slate blue":`Schieferblau`,"Some note positions need confirmation. Their original text and comments are kept.":`Einige Anmerkungspositionen müssen bestätigt werden. Ihr ursprünglicher Text und ihre Kommentare bleiben erhalten.`,Source:`Quelltext`,Sparkles:`Funkeln`,Spelling:`Rechtschreibung`,Split:`Geteilt`,Stable:`Stabil`,"Stage all changes":`Alle Änderungen vormerken`,"Stage changes":`Änderungen vormerken`,"Stage {path}":`{path} vormerken`,Staged:`Vorgemerkt`,"Staged changes":`Vorgemerkte Änderungen`,"Standard shortcuts":`Standard-Tastenkürzel`,"Start task":`Aufgabe starten`,"Start task (Enter)":`Aufgabe starten (Enter)`,"Status unavailable":`Status nicht verfügbar`,Stone:`Stein`,"Submitting…":`Wird gesendet…`,"Suggest an agent":`Einen Agenten vorschlagen`,"Suggested fix":`Lösungsvorschlag`,"Suggestion ignored.":`Vorschlag ignoriert.`,"Suggestion {n}: {comment}":`Vorschlag {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`Vorschläge verbleiben in dieser Aufgabe, bis Sie sie in das Manuskript kopieren`,"Support more":`Weitere unterstützen`,System:`System`,"Task actions for {title}":`Aufgabenaktionen für {title}`,"Task added: {title}":`Aufgabe hinzugefügt: {title}`,"Task errors":`Aufgabenfehler`,"Task finished":`Aufgabe abgeschlossen`,"Task list":`Aufgabenliste`,"Task saved. Waiting for an available {agent} session.":`Aufgabe gespeichert. Warte auf eine verfügbare {agent}-Sitzung.`,Tasks:`Aufgaben`,"The PDF could not be opened: {error}":`Das PDF konnte nicht geöffnet werden: {error}`,"The PDF review could not be loaded.":`Die PDF-Überprüfung konnte nicht geladen werden.`,"The PDF review is taking longer than expected.":`Die PDF-Überprüfung dauert länger als erwartet.`,"The agent could not connect. Check its setup and try again.":`Der Agent konnte keine Verbindung herstellen. Überprüfen Sie seine Einrichtung und versuchen Sie es erneut.`,"The assistant is fixing compilation…":`Der Assistent behebt Kompilierungsprobleme…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`Der Browser und der Papilot-Server laufen möglicherweise auf verschiedenen Computern. Hintergrunddienste können zudem einen anderen PATH oder ein anderes Benutzerkonto als Ihr Terminal verwenden.`,"The connection is taking too long. Check your network and try again.":`Die Verbindung dauert zu lange. Überprüfen Sie Ihr Netzwerk und versuchen Sie es erneut.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`Der Dev-Build benötigt mindestens 2 GB freien Speicherplatz. Geben Sie Speicherplatz frei und versuchen Sie es erneut.`,"The diff is too long to show in full.":`Der Diff ist zu lang, um vollständig angezeigt zu werden.`,"The file “{name}” is empty.":`Die Datei „{name}“ ist leer.`,"The first build is still running.":`Der erste Build läuft noch.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`Beim letzten Verbindungsversuch wurde keine ausführbare {command}-CLI in der Papilot-Serverumgebung gefunden. Sie ist möglicherweise an einem anderen Ort oder für einen anderen Benutzer installiert.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`Beim letzten Verbindungsversuch wurde weder CURSOR_API_KEY noch eine gespeicherte Cursor-SDK-Anmeldung für den Benutzer gefunden, der Papilot ausführt. Eine Anmeldung in der Cursor-Desktop-App oder -CLI konfiguriert dieses SDK nicht.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`Beim letzten Verbindungsversuch wurden weder Claude Code noch unterstützte API-Zugangsdaten in der Papilot-Serverumgebung gefunden.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`Beim letzten Verbindungsversuch wurde weder ZHIPU_API_KEY noch ZAI_API_KEY in der Papilot-Serverumgebung gefunden. Eine Claude-Anmeldung oder eine Anmeldung auf der GLM-Website stellt diese Schlüssel nicht bereit.`,"The latest changes did not compile. This is the last PDF that did.":`Die letzten Änderungen konnten nicht kompiliert werden. Dies ist das letzte erfolgreich kompilierte PDF.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`Die letzte Konfigurationsprüfung hat diesen Agenten gefunden. Verbinden Sie ihn erneut, um seinen Live-Status zu aktualisieren.`,"The manuscript did not compile.":`Das Manuskript konnte nicht kompiliert werden.`,"The merge stopped at conflicts.":`Das Zusammenführen wurde wegen Konflikten angehalten.`,"The merge was abandoned.":`Das Zusammenführen wurde abgebrochen.`,"The paper needs a little help":`Der Artikel benötigt etwas Hilfe`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`Die Position im neuen PDF konnte nicht bestätigt werden. Der ursprüngliche Text und die Anmerkung bleiben erhalten.`,"The request timed out and may still be processing. Check the task status before retrying.":`Die Anfrage hat das Zeitlimit überschritten und wird möglicherweise noch verarbeitet. Überprüfen Sie den Aufgabenstatus, bevor Sie es erneut versuchen.`,"The skill must contain instructions.":`Der Skill muss Anweisungen enthalten.`,"The update did not finish. Your current version is still available. You can retry here.":`Das Update wurde nicht abgeschlossen. Ihre aktuelle Version ist weiterhin verfügbar. Sie können es hier erneut versuchen.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`Das Update ist bereit. Es wird auf den Abschluss von Aufgaben und PDF-Builds gewartet, bevor neu gestartet wird.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`Die aktualisierte Version konnte nicht gestartet werden. Papilot verwendet daher die in der App enthaltene Version. Versuchen Sie das Update erneut oder laden Sie die neueste Desktop-App herunter.`,"Their name, as others will see it":`Der Name der Person, wie er für andere sichtbar ist`,Theme:`Design`,"These keep the usual browser and text-editing behavior.":`Diese behalten das übliche Verhalten für Browser und Textbearbeitung bei.`,"Third-party licenses":`Drittanbieter-Lizenzen`,"This PDF has no bookmarks.":`Dieses PDF enthält keine Lesezeichen.`,"This agent has not reported a model list. Its configured default can still be used.":`Dieser Agent hat keine Modellliste gemeldet. Sein konfigurierter Standardwert kann weiterhin verwendet werden.`,"This browser cannot show notifications.":`Dieser Browser kann keine Benachrichtigungen anzeigen.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`Dieser Browser unterstützt keine Passkeys. Öffnen Sie diese Seite in einer aktuellen Version von Safari, Chrome, Edge oder Firefox.`,"This browser could not enable notifications.":`Dieser Browser konnte Benachrichtigungen nicht aktivieren.`,"This browser could not show the notification.":`Dieser Browser konnte die Benachrichtigung nicht anzeigen.`,"This conversation has no manuscript changes.":`Diese Unterhaltung enthält keine Änderungen am Manuskript.`,"This file is not tracked by Git, so it cannot be recovered.":`Diese Datei wird nicht von Git nachverfolgt und kann daher nicht wiederhergestellt werden.`,"This invite link is incomplete. Copy the whole link and open it again.":`Dieser Einladungslink ist unvollständig. Kopieren Sie den gesamten Link und öffnen Sie ihn erneut.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`Diese Taste ist für den Browser oder die Textbearbeitung reserviert. Wählen Sie ein anderes Tastenkürzel.`,"This model uses its own reasoning settings.":`Dieses Modell verwendet seine eigenen Reasoning-Einstellungen.`,"This paper":`Dieser Artikel`,"This paper may need XeLaTeX. Change the engine below and retry.":`Dieser Artikel benötigt möglicherweise XeLaTeX. Ändern Sie unten die Engine und versuchen Sie es erneut.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`Dieser Artikel gibt keine .bib-Datei mit {bibliography} oder {addbibresource} an.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`Diese Textstelle enthält frühere Bearbeitungen, die noch nicht committet wurden. Sie können das überprüfte Ergebnis gemeinsam committen oder ohne Commit anwenden.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`Dadurch wird die Aufgabe dauerhaft aus Papilot entfernt, einschließlich ihrer Unterhaltung, ihres Arbeitsbaums und ihrer PDF-Überprüfungsdateien. Nicht übernommene Bearbeitungen und gespeicherte Kommentare werden verworfen, und Überprüfungsentscheidungen können nicht mehr rückgängig gemacht werden.`,"This skill changed on disk. Reload it before deleting.":`Dieser Skill wurde auf der Festplatte geändert. Laden Sie ihn vor dem Löschen neu.`,"This skill changed on disk. Reload it before saving.":`Dieser Skill wurde auf der Festplatte geändert. Laden Sie ihn vor dem Speichern neu.`,"This skill no longer exists. Refresh the list.":`Dieser Skill existiert nicht mehr. Aktualisieren Sie die Liste.`,"This skill was removed on disk. Reload the list before saving.":`Dieser Skill wurde von der Festplatte entfernt. Laden Sie die Liste vor dem Speichern neu.`,"This step needs attention":`Dieser Schritt erfordert Aufmerksamkeit`,"This task did not change the manuscript. Read the answer in the chat.":`Diese Aufgabe hat das Manuskript nicht geändert. Lesen Sie die Antwort im Chat.`,"This task is being deleted":`Diese Aufgabe wird gelöscht`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`Diese Aufgabe ist reserviert, bis die Bereinigung ihres Arbeitsbaums bestätigt wurde. Verwenden Sie „Löschen wiederholen“, falls die Verbindung unterbrochen wurde.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`Für diese Version ist die neueste Desktop-App erforderlich. Laden Sie sie über GitHub Releases herunter.`,"This worktree’s HEAD is outside the displayed history.":`Der HEAD dieses Arbeitsbaums liegt außerhalb des angezeigten Verlaufs.`,Title:`Titel`,Tools:`Werkzeuge`,Tracking:`Nachverfolgung`,"Type changed":`Typ geändert`,"Typesetting and other remarks":`Satz- und weitere Hinweise`,"Typesetting with LaTeX, pass {n}…":`Satz mit LaTeX, Durchlauf {n}…`,Unavailable:`Nicht verfügbar`,"Uncommitted changes in the PDF":`Nicht committete Änderungen im PDF`,"Undefined citation":`Undefiniertes Zitat`,"Undefined reference":`Undefinierter Verweis`,Undo:`Rückgängig`,"Undo review decision":`Überprüfungsentscheidung rückgängig machen`,"Undo the last review decision or revert.":`Die letzte Überprüfungsentscheidung oder das Verwerfen rückgängig machen.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`Je nach Fokus Tippvorgänge, eine gelöschte Anmerkung oder die letzte Überprüfungsentscheidung rückgängig machen.`,"Unify terms, notation, spelling and references":`Begriffe, Notation, Rechtschreibung und Verweise vereinheitlichen`,Unknown:`Unbekannt`,"Unlimited credits":`Unbegrenzte Credits`,"Unplaced suggestions":`Nicht platzierte Vorschläge`,"Unsaved changes":`Ungespeicherte Änderungen`,"Unstage all changes":`Vormerkung aller Änderungen aufheben`,"Unstage changes":`Vormerkung der Änderungen aufheben`,"Unstage {path}":`Vormerkung für {path} aufheben`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`Nicht vorgemerkte Änderungen gehen endgültig verloren und nicht nachverfolgte Dateien werden gelöscht. Vorgemerkte Änderungen bleiben erhalten.`,"Unstaged changes are lost for good. Staged changes stay.":`Nicht vorgemerkte Änderungen gehen endgültig verloren. Vorgemerkte Änderungen bleiben erhalten.`,Untracked:`Unversioniert`,"Untracked build output. Add to .gitignore adds:":`Unversionierte Build-Ausgabe. „Zu .gitignore hinzufügen“ ergänzt:`,"Up to date":`Auf dem neuesten Stand`,"Up to date with the remote.":`Auf dem neuesten Stand mit dem Remote-Repository.`,"Update Papilot":`Papilot aktualisieren`,"Update available":`Update verfügbar`,"Update channel":`Update-Kanal`,"Update failed":`Update fehlgeschlagen`,"Update now":`Jetzt aktualisieren`,"Update ready":`Update bereit`,"Update to {version}":`Auf {version} aktualisieren`,Updates:`Updates`,"Updating…":`Wird aktualisiert…`,"Upload failed. Please retry.":`Upload fehlgeschlagen. Bitte erneut versuchen.`,"Uploading…":`Wird hochgeladen…`,"Usage & limits":`Nutzung & Limits`,"Usage limit":`Nutzungslimit`,"Usage not reported":`Nutzung nicht gemeldet`,"Use a hex color, like #2563EB.":`Hex-Farbwert verwenden, z. B. #2563EB.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`Kleinbuchstaben, Zahlen und Bindestriche verwenden. Dies ist zugleich der /-Befehlsname.`,"Use the passkey you created from your invite link.":`Den über Ihren Einladungslink erstellten Passkey verwenden.`,"Used for new tasks. Saved in this browser.":`Wird für neue Aufgaben verwendet. In diesem Browser gespeichert.`,"User guide":`Benutzerhandbuch`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`Verwendet Claude Code oder das Claude Agent SDK mit ZHIPU_API_KEY oder ZAI_API_KEY.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`Verwendet Claude Code (falls installiert) oder das Claude Agent SDK mit API-Zugangsdaten.`,"Uses DeepSeek Harness and the providers configured in dsh.":`Verwendet DeepSeek Harness und die in dsh konfigurierten Anbieter.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`Verwendet die GitHub Copilot CLI und deren gespeicherte Anmeldung oder den konfigurierten Anbieter über ACP.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`Verwendet die Grok Build CLI über ACP mit deren gespeicherter Anmeldung oder den konfigurierten API-Zugangsdaten.`,"Uses Kimi Code CLI and its saved login through ACP.":`Verwendet die Kimi Code CLI und deren gespeicherte Anmeldung über ACP.`,"Uses OpenCode with the providers and models you have connected.":`Verwendet OpenCode mit den von Ihnen verbundenen Anbietern und Modellen.`,"Uses Qwen Code and its saved login through ACP.":`Verwendet Qwen Code und dessen gespeicherte Anmeldung über ACP.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`Verwendet eine kompatible lokale Codex CLI. Papilot installiert bei Bedarf eine eigene Kopie.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`Verwendet das Cursor SDK mit CURSOR_API_KEY. Papilot installiert das SDK bei der ersten Verwendung.`,"Uses the local Antigravity CLI and its saved Google login.":`Verwendet die lokale Antigravity CLI und deren gespeicherte Google-Anmeldung.`,Verified:`Verifiziert`,Version:`Version`,"Version history":`Versionsverlauf`,"View & help":`Ansicht & Hilfe`,"View changes for this note":`Änderungen für diese Anmerkung anzeigen`,"View changes included in this commit":`In diesem Commit enthaltene Änderungen anzeigen`,"View details":`Details anzeigen`,"View installation, account, and usage":`Installation, Konto und Nutzung anzeigen`,"View {n} review suggestion":`{n} Überprüfungsvorschlag anzeigen`,"View {n} review suggestions":`{n} Überprüfungsvorschläge anzeigen`,"Viewed the PDF":`PDF angesehen`,"Viewed the PDF: {places}":`PDF angesehen: {places}`,"Visual style":`Erscheinungsbild`,"Wait for the PDF build to finish before deleting this task.":`Warten Sie, bis die PDF-Erstellung abgeschlossen ist, bevor Sie diese Aufgabe löschen.`,"Wait for the PDF to compile.":`Warten Sie, bis das PDF kompiliert wurde.`,"Waiting for your passkey…":`Warten auf Ihren Passkey…`,Warning:`Warnung`,Warnings:`Warnungen`,"Weekly limit":`Wöchentliches Limit`,"What are we revising next?":`Was überarbeiten wir als Nächstes?`,"What can invited people do?":`Was können eingeladene Personen tun?`,"What changed since the last commit, to stage, revert and commit change by change":`Was sich seit dem letzten Commit geändert hat, um Änderung für Änderung vorzumerken, zurückzusetzen und zu committen`,"What does this skill help with?":`Wobei hilft dieser Skill?`,"What is staged, in {n} file:":`Vorgemerkt in {n} Datei:`,"What is staged, in {n} files:":`Vorgemerkt in {n} Dateien:`,"What should change here?":`Was soll hier geändert werden?`,"What should change in each color group?":`Was soll in den einzelnen Farbgruppen geändert werden?`,"What should change in this group?":`Was soll in dieser Gruppe geändert werden?`,"What this task accepted, in {n} file:":`Von dieser Aufgabe übernommen in {n} Datei:`,"What this task accepted, in {n} files:":`Von dieser Aufgabe übernommen in {n} Dateien:`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`Wenn eine Änderung einen Literaturverzeichniseintrag hinzufügt oder bearbeitet, werden Titel, Autoren, Jahr und DOI in Crossref, DBLP und arXiv nachgeschlagen. Nichts anderes aus Ihrem Artikel wird gesendet.`,"With review feedback":`Mit Überprüfungs-Feedback`,Workspace:`Arbeitsbereich`,"Workspace view":`Arbeitsbereichsansicht`,Worktrees:`Arbeitsbäume`,"Write a commit message for the chosen files with {agent}":`Commit-Nachricht für die ausgewählten Dateien mit {agent} verfassen`,"Write a note…":`Anmerkung schreiben…`,"Write feedback on the current proposed change.":`Feedback zur aktuell vorgeschlagenen Änderung schreiben.`,"Writing the PDF…":`PDF wird geschrieben…`,Year:`Jahr`,Yellow:`Gelb`,"You are offline. Your draft is kept in this browser.":`Sie sind offline. Ihr Entwurf bleibt in diesem Browser gespeichert.`,"You are using the latest version on this channel.":`Sie verwenden die neueste Version in diesem Kanal.`,"You checked this entry yourself.":`Sie haben diesen Eintrag selbst überprüft.`,"You sent review feedback, {time}":`Sie haben Überprüfungs-Feedback gesendet, {time}`,"You, {time}":`Sie, {time}`,"Your note":`Ihre Anmerkung`,"Your paper compiled successfully. It is ready for editing.":`Ihr Artikel wurde erfolgreich kompiliert. Er ist bereit zur Bearbeitung.`,"Your review keyboard":`Ihre Überprüfungstastatur`,Yours:`Ihre`,Zoom:`Zoom`,"Zoom in":`Vergrößern`,"Zoom in (⌘+)":`Vergrößern (⌘+)`,"Zoom out":`Verkleinern`,"Zoom out (⌘−)":`Verkleinern (⌘−)`,"added {time}":`hinzugefügt {time}`,"another entry has the same key.":`ein anderer Eintrag hat denselben Schlüssel.`,"build error":`Build-Fehler`,clean:`sauber`,detached:`losgelöst`,"detached HEAD":`losgelöster HEAD`,"edited {file}":`{file} bearbeitet`,"edited {n} files":`{n} Dateien bearbeitet`,"from {name}":`von {name}`,"it is not cited.":`er wird nicht zitiert.`,"just now":`gerade eben`,"no record in Crossref, DBLP or arXiv matches it.":`kein Datensatz in Crossref, DBLP oder arXiv stimmt damit überein.`,nothing:`nichts`,now:`jetzt`,"or select text to annotate":`oder Text für eine Anmerkung auswählen`,"p. {page}":`S. {page}`,"possibly the same work as {keys} (same title).":`möglicherweise dasselbe Werk wie {keys} (gleicher Titel).`,"ran {n} command":`{n} Befehl ausgeführt`,"ran {n} commands":`{n} Befehle ausgeführt`,"resets in {hours} h {minutes} min":`wird in {hours} Std. {minutes} Min. zurückgesetzt`,"resets in {minutes} min":`wird in {minutes} Min. zurückgesetzt`,"resets now":`wird jetzt zurückgesetzt`,"resets {time}":`wird zurückgesetzt {time}`,small:`klein`,"the same work as {keys} (same DOI).":`dasselbe Werk wie {keys} (gleiche DOI).`,"used {n} tool":`{n} Werkzeug verwendet`,"used {n} tools":`{n} Werkzeuge verwendet`,"used {time}":`verwendet {time}`,"viewed the PDF":`PDF angesehen`,"{agent} conversation":`{agent}-Unterhaltung`,"{agent} details":`{agent}-Details`,"{agent} finished":`{agent} ist fertig`,"{agent} is requesting permission for this action.":`{agent} bittet um Berechtigung für diese Aktion.`,"{agent} is resolving…":`{agent} löst auf…`,"{agent} is unavailable":`{agent} ist nicht verfügbar`,"{agent} is waiting for your approval":`{agent} wartet auf Ihre Freigabe`,"{agent} is working":`{agent} arbeitet`,"{agent} is working on this task":`{agent} arbeitet an dieser Aufgabe`,"{agent} is working · new instructions run next":`{agent} arbeitet · neue Anweisungen werden als Nächstes ausgeführt`,"{agent} is writing a commit message…":`{agent} verfasst eine Commit-Nachricht…`,"{agent} needs your input":`{agent} benötigt Ihre Eingabe`,"{agent} on the merge":`{agent} beim Merge`,"{agent} usage":`{agent}-Nutzung`,"{agent} usage details":`Details zur {agent}-Nutzung`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`{agent} wurde auf diesem Computer nicht gefunden. Installieren oder richten Sie ihn ein und wählen Sie dann „Erneut verbinden“.`,"{ahead} ahead · {behind} behind":`{ahead} voraus · {behind} zurück`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} und {upstream} wurden beide geändert. Ein Merge führt die Remote-Commits zusammen.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) hat keinen Eintrag mit diesem Schlüssel.`,"{command} was not found by Papilot.":`{command} wurde von Papilot nicht gefunden.`,"{current} of {total}":`{current} von {total}`,"{differences} (record: {url}).":`{differences} (Datensatz: {url}).`,"{field} is {bib} but {source} has {record}":`{field} ist {bib}, aber in {source} steht {record}`,"{field}: {bib} here, {record} in {source}":`{field}: hier {bib}, {record} in {source}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} hat Sie zu Papilot eingeladen. Sie werden als {name} angezeigt.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} hat Sie zur Mitarbeit an {papers} eingeladen. Sie werden als {name} angezeigt.`,"{key} ({place}): {problems}":`{key} ({place}): {problems}`,"{name} (you)":`{name} (Sie)`,"{name} sent review feedback, {time}":`{name} hat Feedback zur Überprüfung gesendet, {time}`,"{name} used":`{name} verbraucht`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n} angenommen`,"{n} active task":`{n} aktive Aufgabe`,"{n} active tasks":`{n} aktive Aufgaben`,"{n} build file":`{n} Build-Datei`,"{n} build files":`{n} Build-Dateien`,"{n} change to decide":`{n} Änderung zu entscheiden`,"{n} change to review":`{n} Änderung zur Überprüfung`,"{n} changed":`{n} geändert`,"{n} changes to decide":`{n} Änderungen zu entscheiden`,"{n} changes to review":`{n} Änderungen zur Überprüfung`,"{n} checked by you":`{n} von Ihnen geprüft`,"{n} comment":`{n} Kommentar`,"{n} comments":`{n} Kommentare`,"{n} compilation error":`{n} Kompilierungsfehler`,"{n} compilation errors":`{n} Kompilierungsfehler`,"{n} compilation warning":`{n} Kompilierungswarnung`,"{n} compilation warnings":`{n} Kompilierungswarnungen`,"{n} conflicts":`{n} Konflikte`,"{n} could not be checked":`{n} konnten nicht geprüft werden`,"{n} credits":`{n} Credits`,"{n} differ":`{n} weichen ab`,"{n} entries":`{n} Einträge`,"{n} entry":`{n} Eintrag`,"{n} failed":`{n} fehlgeschlagen`,"{n} file staged":`{n} Datei vorgemerkt`,"{n} file still has conflicts.":`{n} Datei enthält noch Konflikte.`,"{n} files staged":`{n} Dateien vorgemerkt`,"{n} files still have conflicts.":`{n} Dateien enthalten noch Konflikte.`,"{n} location":`{n} Stelle`,"{n} locations":`{n} Stellen`,"{n} new commit on {upstream}.":`{n} neuer Commit auf {upstream}.`,"{n} new commits on {upstream}.":`{n} neue Commits auf {upstream}.`,"{n} not found":`{n} nicht gefunden`,"{n} notes on the PDF":`{n} Anmerkungen im PDF`,"{n} rejected":`{n} abgelehnt`,"{n} review update not sent yet":`{n} Überprüfungsaktualisierung noch nicht gesendet`,"{n} review update will be sent with this message":`{n} Überprüfungsaktualisierung wird mit dieser Nachricht gesendet`,"{n} review updates not sent yet":`{n} Überprüfungsaktualisierungen noch nicht gesendet`,"{n} review updates will be sent with this message":`{n} Überprüfungsaktualisierungen werden mit dieser Nachricht gesendet`,"{n} staged":`{n} vorgemerkt`,"{n} undone":`{n} rückgängig gemacht`,"{n} unstaged":`{n} nicht vorgemerkt`,"{n} untracked":`{n} nicht nachverfolgt`,"{n} verified":`{n} verifiziert`,"{n}-day limit":`{n}-Tage-Limit`,"{n}-hour limit":`{n}-Stunden-Limit`,"{n}-minute limit":`{n}-Minuten-Limit`,"{n}d":`{n} T`,"{n}h":`{n} Std.`,"{n}m":`{n} Min.`,"{selected} / {total} locations selected":`{selected} / {total} Stellen ausgewählt`,"{shown} of {total} components":`{shown} von {total} Komponenten`,"{sources} could not be reached.":`{sources} konnten nicht erreicht werden.`,"{time} ago":`vor {time}`,"{title} PDF change review":`{title} PDF-Änderungsüberprüfung`,"{used}% used":`{used} % verbraucht`},re={"A commit is already in progress. Wait for it to finish.":`Ein Commit wird bereits ausgeführt. Warten Sie, bis er abgeschlossen ist.`,"A commit is in progress. Try again when it finishes.":`Ein Commit wird gerade ausgeführt. Versuchen Sie es nach Abschluss erneut.`,"A review action is already in progress. Wait for it to finish.":`Eine Überprüfungsaktion wird bereits ausgeführt. Warten Sie, bis sie abgeschlossen ist.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`Eine ausgewählte PDF-Anmerkung wird bereits gesendet. Warten Sie, bis die Erstellung dieser Aufgabe abgeschlossen ist.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`Eine ausgewählte PDF-Anmerkung ist nicht mehr verfügbar. Aktualisieren Sie das Manuskript und versuchen Sie es erneut.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`Die KI-Überprüfung akzeptiert nur Überprüfungsanweisungen. Starten Sie eine Bearbeitungsaufgabe, um Anmerkungen, Skills oder Anhänge zu senden.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`Die KI-Überprüfung erstellt nur PDF-Anmerkungen. Sie kann keine Änderungen am Manuskript veröffentlichen.`,"AI review has no manuscript changes to apply.":`Die KI-Überprüfung enthält keine anzuwendenden Manuskriptänderungen.`,"AI review has no manuscript changes to deliver.":`Die KI-Überprüfung hat keine Manuskriptänderungen zum Übergeben.`,"AI review uses manuscript PDF notes, not change decisions.":`Die KI-Überprüfung verwendet PDF-Anmerkungen im Manuskript, keine Änderungsentscheidungen.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`Die KI-Überprüfung verwendet das Manuskript-PDF. Starten Sie eine separate Bearbeitungsaufgabe, um Anmerkungen oder Anhänge zu senden.`,"Accepted changes are already in the manuscript.":`Akzeptierte Änderungen sind bereits im Manuskript enthalten.`,"An AI review comment is invalid. Ask the reviewer to retry.":`Ein Kommentar der KI-Überprüfung ist ungültig. Bitten Sie den Prüfer um einen erneuten Versuch.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`Ein Kommentar der KI-Überprüfung führt die PDF-Zeilen in umgekehrter Reihenfolge auf. Bitten Sie den Prüfer, den Anfang vor das Ende zu setzen.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`Ein Kommentar der KI-Überprüfung verweist auf eine unbekannte PDF-Position. Bitten Sie den Prüfer, es mit den angegebenen Zeilen-IDs erneut zu versuchen.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`Ein Kommentar der KI-Überprüfung erstreckt sich über mehrere PDF-Seiten. Bitten Sie den Prüfer, ihn auf einer einzelnen Seite zu verankern.`,"Another Papilot instance is already updating.":`Eine andere Papilot-Instanz wird bereits aktualisiert.`,"Answer every question before submitting.":`Beantworten Sie vor dem Absenden jede Frage.`,"Attachment not found.":`Anhang nicht gefunden.`,"Attachments must total 100 MB or less.":`Anhänge dürfen insgesamt maximal 100 MB groß sein.`,"Check for a newer release before updating.":`Suchen Sie vor dem Aktualisieren nach einer neueren Version.`,"Check out a branch before pushing.":`Checken Sie vor dem Pushen einen Branch aus.`,"Check the task status before pausing this turn.":`Prüfen Sie den Aufgabenstatus, bevor Sie diesen Durchgang pausieren.`,"Check the task status before sending more instructions.":`Prüfen Sie den Aufgabenstatus, bevor Sie weitere Anweisungen senden.`,"Choose Codex, Claude or GLM for AI review.":`Wählen Sie Codex, Claude oder GLM für die KI-Überprüfung.`,"Choose a ZIP smaller than 64 MB.":`Wählen Sie eine ZIP-Datei aus, die kleiner als 64 MB ist.`,"Choose a file with a valid name.":`Wählen Sie eine Datei mit einem gültigen Namen aus.`,"Choose a folder smaller than 64 MB.":`Wählen Sie einen Ordner aus, der kleiner als 64 MB ist.`,"Choose a supported LaTeX engine.":`Wählen Sie eine unterstützte LaTeX-Engine aus.`,"Choose a valid update channel.":`Wählen Sie einen gültigen Update-Kanal.`,"Choose an available model for this agent.":`Ein verfügbares Modell für diesen Agenten auswählen.`,"Choose an entry to confirm.":`Wählen Sie einen Eintrag zum Bestätigen aus.`,"Choose an existing TeX main file.":`Wählen Sie eine vorhandene TeX-Hauptdatei aus.`,"Choose between 1 and 5,000 files.":`Wählen Sie zwischen 1 und 5.000 Dateien aus.`,"Choose one folder or ZIP.":`Wählen Sie einen Ordner oder eine ZIP-Datei aus.`,"Choose one of the offered answers.":`Wählen Sie eine der angebotenen Antworten.`,"Choose stage, unstage or revert.":`Wählen Sie Vormerken (stage), Vormerkung aufheben (unstage) oder Zurücksetzen (revert).`,"Choose whether to archive or restore the task.":`Wählen Sie aus, ob die Aufgabe archiviert oder wiederhergestellt werden soll.`,"Claude Code did not list its models.":`Claude Code hat seine Modelle nicht aufgelistet.`,"Claude Code exited before listing its models.":`Claude Code wurde beendet, bevor seine Modelle aufgelistet wurden.`,"Claude has not reported usage yet.":`Claude hat noch keine Nutzungsdaten gemeldet.`,"Codex disconnected. Resume the task before retrying.":`Verbindung zu Codex getrennt. Setzen Sie die Aufgabe fort, bevor Sie es erneut versuchen.`,"Codex is not connected.":`Codex ist nicht verbunden.`,"Commit the task first, then push from Git.":`Zuerst die Aufgabe committen, dann aus Git pushen.`,"Confirm permanent task deletion before continuing.":`Bestätigen Sie das endgültige Löschen der Aufgabe, bevor Sie fortfahren.`,"Could not check for updates.":`Es konnte nicht nach Updates gesucht werden.`,"Could not check for updates. Try again when connected.":`Es konnte nicht nach Updates gesucht werden. Versuchen Sie es erneut, sobald eine Verbindung besteht.`,"Could not complete the environment checks. Please try again.":`Die Umgebungsprüfungen konnten nicht abgeschlossen werden. Bitte versuchen Sie es erneut.`,"Could not read the LaTeX installation.":`Die LaTeX-Installation konnte nicht gelesen werden.`,"Could not restart the background service.":`Der Hintergrunddienst konnte nicht neu gestartet werden.`,"Deletion is already in progress. Wait for it to finish.":`Der Löschvorgang läuft bereits. Warten Sie, bis er abgeschlossen ist.`,"Describe the revision, choose a skill, or add a PDF note.":`Beschreiben Sie die Überarbeitung, wählen Sie einen Skill oder fügen Sie eine PDF-Anmerkung hinzu.`,"Describe what to do with each selected color group.":`Beschreiben Sie, was mit jeder ausgewählten Farbgruppe geschehen soll.`,"Download desktop updates from GitHub Releases.":`Desktop-Updates von GitHub Releases herunterladen.`,"Enter a folder path.":`Geben Sie einen Ordnerpfad ein.`,"Enter a paper name under 120 characters.":`Geben Sie einen Artikelnamen mit weniger als 120 Zeichen ein.`,"Fast mode is not available for this model.":`Der Schnellmodus ist für dieses Modell nicht verfügbar.`,"Files must be 25 MB or smaller.":`Dateien dürfen maximal 25 MB groß sein.`,"Finish or abort the merge before committing other changes.":`Schließen Sie den Merge ab oder brechen Sie ihn ab, bevor Sie weitere Änderungen committen.`,"Finish or abort the merge before discarding changes.":`Schließen Sie den Merge ab oder brechen Sie ihn ab, bevor Sie Änderungen verwerfen.`,"Finish or abort the merge before staging other changes.":`Schließen Sie den Merge ab oder brechen Sie ihn ab, bevor Sie weitere Änderungen vormerken.`,"Finish or abort the merge first.":`Schließen Sie den Merge zuerst ab oder brechen Sie ihn ab.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`Schließen Sie den Merge im Git-Bereich ab oder brechen Sie ihn ab, bevor Sie Änderungen annehmen, ablehnen oder rückgängig machen.`,"GLM does not report usage to Papilot.":`GLM meldet keine Nutzungsdaten an Papilot.`,"Group instructions must refer to selected PDF notes.":`Gruppenanweisungen müssen sich auf ausgewählte PDF-Anmerkungen beziehen.`,"Images must be 5 MB or smaller.":`Bilder dürfen maximal 5 MB groß sein.`,"Import not found.":`Import nicht gefunden.`,"Invalid annotation group.":`Ungültige Anmerkungsgruppe.`,"Invalid approval decision.":`Ungültige Freigabeentscheidung.`,"Invalid development revision.":`Ungültige Entwicklungsrevision.`,"Invalid development version.":`Ungültige Entwicklungsversion.`,"Invalid diagnostic report.":`Ungültiger Diagnosebericht.`,"Invalid file path in upload.":`Ungültiger Dateipfad im Upload.`,"Invalid file path.":`Ungültiger Dateipfad.`,"Invalid model.":`Ungültiges Modell.`,"Invalid note location.":`Ungültige Anmerkungsposition.`,"Invalid reasoning effort.":`Ungültiger Denkaufwand.`,"Invalid release information.":`Ungültige Release-Informationen.`,"Invalid release version.":`Ungültige Release-Version.`,"Invalid save action.":`Ungültige Speicheraktion.`,"Invalid task ID.":`Ungültige Aufgaben-ID.`,"Invalid update activation.":`Ungültige Update-Aktivierung.`,"Invalid upload data.":`Ungültige Upload-Daten.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`Verwalten Sie diesen Vorschlag in seiner KI-Überprüfungsaufgabe oder kopieren Sie ihn zuerst in das Manuskript.`,"Missing update restart job.":`Auftrag zum Update-Neustart fehlt.`,"No file has conflict markers left. Commit the merge.":`Keine Datei enthält mehr Konfliktmarkierungen. Committen Sie den Merge.`,"No merge is in progress.":`Es läuft derzeit kein Merge.`,"No such file.":`Datei nicht gefunden.`,"None of the chosen files is build output that can be ignored.":`Keine der ausgewählten Dateien ist eine Build-Ausgabe, die ignoriert werden kann.`,"Not found":`Nicht gefunden`,"Note not found.":`Anmerkung nicht gefunden.`,"Only the model and its settings can be changed.":`Nur das Modell und seine Einstellungen können geändert werden.`,"Only the owner of this Papilot can do this.":`Nur der Eigentümer dieser Papilot-Instanz kann dies tun.`,"Open Papilot at its public address.":`Öffnen Sie Papilot unter der öffentlichen Adresse.`,"Paper name is too long.":`Der Artikelname ist zu lang.`,"Paper project not found.":`Artikelprojekt nicht gefunden.`,"Papilot did not finish shutting down.":`Papilot konnte das Herunterfahren nicht abschließen.`,"Papilot is restarting after an update. Please wait a moment.":`Papilot wird nach einem Update neu gestartet. Bitte warten Sie einen Moment.`,"Papilot restarted. Retry compilation to continue this import.":`Papilot wurde neu gestartet. Wiederholen Sie die Kompilierung, um diesen Import fortzusetzen.`,"Pause Codex before building a review.":`Pausieren Sie Codex, bevor Sie eine Überprüfung erstellen.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`Pausieren Sie die Aufgabe und warten Sie, bis ihre laufende Arbeit oder Überprüfungsaktion abgeschlossen ist, bevor Sie sie löschen. Klären Sie zuerst alle unbestätigten Aktionen.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`Pausieren Sie die Aufgabe, bevor Sie Änderungen annehmen, ablehnen oder rückgängig machen. Warten Sie eine laufende PDF-Erstellung ab.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`Pausieren Sie die aktiven Aufgaben dieses Artikels und warten Sie, bis laufende Arbeiten abgeschlossen sind, bevor Sie den Pfad ändern oder ihn entfernen. Klären Sie zuerst alle unbestätigten Aktionen.`,"Resolve the merge conflicts in the selected files before committing.":`Lösen Sie die Merge-Konflikte in den ausgewählten Dateien vor dem Committen auf.`,"Restore this suggestion before copying it.":`Stellen Sie diesen Vorschlag wieder her, bevor Sie ihn kopieren.`,"Retry deletion to confirm this task was removed.":`Wiederholen Sie das Löschen, um zu bestätigen, dass diese Aufgabe entfernt wurde.`,"Retry the pending delivery before sending more instructions.":`Wiederholen Sie die ausstehende Zustellung, bevor Sie weitere Anweisungen senden.`,"Review resource not found.":`Überprüfungsressource nicht gefunden.`,"Select a folder containing the paper.":`Wählen Sie einen Ordner aus, der den Artikel enthält.`,"Select a valid paper to check.":`Wählen Sie einen gültigen Artikel zur Prüfung aus.`,"Select a valid paper.":`Wählen Sie einen gültigen Artikel aus.`,"Select an existing review round and either the before or after PDF.":`Wählen Sie eine vorhandene Überprüfungsrunde und entweder die vorherige oder die nachherige PDF-Datei aus.`,"Select at least one change.":`Wählen Sie mindestens eine Änderung aus.`,"Select at least one changed file to commit.":`Wählen Sie mindestens eine geänderte Datei für den Commit aus.`,"Select at least one changed file.":`Wählen Sie mindestens eine geänderte Datei aus.`,"Select text or mark a region on the page first.":`Wählen Sie zuerst Text aus oder markieren Sie einen Bereich auf der Seite.`,"Select the root directory of the Git repository.":`Wählen Sie das Stammverzeichnis des Git-Repositorys aus.`,"Select unsent PDF notes for this task.":`Wählen Sie nicht gesendete PDF-Anmerkungen für diese Aufgabe aus.`,"Select up to 10 valid attachments.":`Wählen Sie bis zu 10 gültige Anhänge aus.`,"Select valid PDF notes for this task.":`Wählen Sie gültige PDF-Anmerkungen für diese Aufgabe aus.`,"Select valid review notes.":`Wählen Sie gültige Überprüfungsanmerkungen aus.`,"Send attachments with a message, separately from review feedback.":`Senden Sie Anhänge zusammen mit einer Nachricht, getrennt vom Überprüfungs-Feedback.`,"Service tiers are only available for Codex.":`Servicestufen sind nur für Codex verfügbar.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`Legen Sie PAPILOT_ACCOUNT_ORIGIN auf die öffentliche URL fest, bevor Sie Personen einladen.`,"Sign in to continue.":`Melden Sie sich an, um fortzufahren.`,"Sign-in is not set up on this Papilot.":`Die Anmeldung ist für diese Papilot-Instanz nicht eingerichtet.`,"Stage at least one change to commit.":`Merken Sie mindestens eine Änderung für den Commit vor.`,"Stage at least one change.":`Merken Sie mindestens eine Änderung vor.`,"Start a new task to run the AI review skill on the current PDF.":`Starten Sie eine neue Aufgabe, um den KI-Überprüfungs-Skill auf dem aktuellen PDF auszuführen.`,"Start or resume the thread before starting a turn.":`Starten oder setzen Sie den Thread fort, bevor Sie einen Durchgang starten.`,"Task not found.":`Aufgabe nicht gefunden.`,"That file has no uncommitted changes.":`Diese Datei enthält keine nicht committeten Änderungen.`,"That page is not part of the manuscript.":`Diese Seite ist nicht Teil des Manuskripts.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`Die KI-Überprüfung hat keine gültigen Anmerkungen zurückgegeben. Bitten Sie um einen erneuten Versuch im erforderlichen JSON-Format.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`Die Antwort der KI-Überprüfung ist unvollständig oder zu lang. Bitten Sie den Prüfer um einen erneuten Versuch.`,"The PDF copy for this review is unavailable. Start a new AI review.":`Die PDF-Kopie für diese Überprüfung ist nicht verfügbar. Starten Sie eine neue KI-Überprüfung.`,"The PDF is building. Wait for this build to finish.":`Das PDF wird gerade erstellt. Warten Sie, bis die Erstellung abgeschlossen ist.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`Der PDF-Schnappschuss für diese Überprüfung ist nicht verfügbar. Starten Sie eine neue KI-Überprüfung.`,"The ZIP expands beyond 64 MB or 5,000 files.":`Die entpackte ZIP-Datei überschreitet 64 MB oder 5.000 Dateien.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`Der Entwicklungs-Build benötigt mindestens 2 GB freien Speicherplatz. Geben Sie Speicherplatz frei und versuchen Sie es erneut.`,"The development checkout does not match the requested commit.":`Der Entwicklungs-Checkout stimmt nicht mit dem angeforderten Commit überein.`,"The development checkout does not match the requested version.":`Der Entwicklungs-Checkout stimmt nicht mit der angeforderten Version überein.`,"The downloaded package does not match the requested release.":`Das heruntergeladene Paket stimmt nicht mit dem angeforderten Release überein.`,"The downloaded release is incomplete.":`Das heruntergeladene Release ist unvollständig.`,"The manuscript changed while copying this suggestion. Try again.":`Das Manuskript wurde während des Kopierens dieses Vorschlags geändert. Versuchen Sie es erneut.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`Die neue Version konnte nicht installiert werden. Prüfen Sie die Verbindung und den verfügbaren Speicherplatz und versuchen Sie es dann erneut.`,"The new version did not pass its startup check. Your current version is still running.":`Die neue Version hat die Startprüfung nicht bestanden. Ihre aktuelle Version wird weiterhin ausgeführt.`,"The new version did not restart successfully.":`Die neue Version konnte nicht erfolgreich neu gestartet werden.`,"The owner cannot be removed.":`Der Eigentümer kann nicht entfernt werden.`,"The owner sees every paper.":`Der Eigentümer sieht jeden Artikel.`,"The paper configuration must contain a JSON object.":`Die Artikelkonfiguration muss ein JSON-Objekt enthalten.`,"The paper configuration must not be a symbolic link.":`Die Artikelkonfiguration darf kein symbolischer Link sein.`,"The passkey could not be created. Try again.":`Der Passkey konnte nicht erstellt werden. Versuchen Sie es erneut.`,"The request origin does not match.":`Die Herkunft der Anfrage stimmt nicht überein.`,"The review action is still being checked. Wait for it to finish.":`Die Überprüfungsaktion wird noch geprüft. Warten Sie, bis der Vorgang abgeschlossen ist.`,"The review could not be loaded. Try again.":`Die Überprüfung konnte nicht geladen werden. Versuchen Sie es erneut.`,"The review engine could not confirm this action. Check again when it is available.":`Das Überprüfungssystem konnte diese Aktion nicht bestätigen. Prüfen Sie es erneut, sobald es verfügbar ist.`,"The review engine could not confirm this action. Select Check status before continuing.":`Die Überprüfungs-Engine konnte diese Aktion nicht bestätigen. Wählen Sie „Status prüfen“, bevor Sie fortfahren.`,"The review engine could not confirm this task’s cleanup status.":`Das Überprüfungssystem konnte den Bereinigungsstatus dieser Aufgabe nicht bestätigen.`,"The review engine did not confirm task deletion.":`Das Überprüfungssystem hat das Löschen der Aufgabe nicht bestätigt.`,"The review engine returned an unexpected response. Select Check status before continuing.":`Die Überprüfungs-Engine hat eine unerwartete Antwort zurückgegeben. Wählen Sie „Status prüfen“, bevor Sie fortfahren.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`Das ausgewählte Repository enthält nicht die Aufgaben-Arbeitsbäume dieses Artikels. Wählen Sie das Repository mit den vorhandenen Aufgaben aus oder fügen Sie es als separaten Artikel hinzu.`,"The server is shutting down.":`Der Server wird heruntergefahren.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`Der Server wurde neu gestartet und hat den vorherigen Durchgang unterbrochen. Fahren Sie in derselben Unterhaltung fort.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`Der Server wurde neu gestartet, bevor eine Überprüfungsaktion bestätigt wurde. Wählen Sie „Status prüfen“ aus, bevor Sie fortfahren.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`Der Server wurde während des Löschens neu gestartet. Wiederholen Sie den Löschvorgang, um die Bereinigung zu bestätigen.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`Der Server wurde während der PDF-Erstellung neu gestartet. Prüfen Sie die Überprüfung und erstellen Sie sie bei Bedarf neu.`,"The task was paused before these instructions were queued. Your draft has been kept.":`Die Aufgabe wurde pausiert, bevor diese Anweisungen in die Warteschlange aufgenommen wurden. Ihr Entwurf wurde beibehalten.`,"The update download timed out.":`Zeitüberschreitung beim Herunterladen des Updates.`,"The update restart helper did not start.":`Das Hilfsprogramm für den Update-Neustart wurde nicht gestartet.`,"The update was interrupted. Your current installation is still available; retry the update.":`Das Update wurde unterbrochen. Ihre aktuelle Installation ist weiterhin verfügbar; versuchen Sie das Update erneut.`,"There is no compilation log yet.":`Es liegt noch kein Kompilierungsprotokoll vor.`,"There is no new review feedback to send.":`Es liegt kein neues Überprüfungs-Feedback zum Senden vor.`,"This PDF has no selectable text to review.":`Diese PDF enthält keinen auswählbaren Text zur Überprüfung.`,"This PDF is too long for one AI review (180,000 characters maximum).":`Diese PDF ist zu lang für eine einzelne KI-Überprüfung (maximal 180.000 Zeichen).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`Diese Adresse ist nur für Ihr Tailnet bestimmt. Personen außerhalb melden sich unter PAPILOT_ACCOUNT_ORIGIN an.`,"This agent does not report usage.":`Dieser Agent meldet keine Nutzungsdaten.`,"This attachment is already being sent to another task.":`Dieser Anhang wird bereits an eine andere Aufgabe gesendet.`,"This attachment is not available for this task.":`Dieser Anhang ist für diese Aufgabe nicht verfügbar.`,"This branch does not track a remote branch yet.":`Dieser Branch verfolgt noch keinen Remote-Branch.`,"This comparison is out of date. Refresh the page.":`Dieser Vergleich ist veraltet. Laden Sie die Seite neu.`,"This device is no longer signed in.":`Dieses Gerät ist nicht mehr angemeldet.`,"This entry is no longer among the changes. Refresh the page.":`Dieser Eintrag ist nicht mehr unter den Änderungen. Laden Sie die Seite neu.`,"This entry is no longer in the bibliography. Refresh the panel.":`Dieser Eintrag befindet sich nicht mehr im Literaturverzeichnis. Aktualisieren Sie den Bereich.`,"This file is empty.":`Diese Datei ist leer.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`Dieser Ordner gehört zu einem übergeordneten Git-Repository. Wählen Sie dessen Stammordner aus oder laden Sie eine Kopie hoch.`,"This image format is not supported.":`Dieses Bildformat wird nicht unterstützt.`,"This invite link has expired or was already used. Ask for a new one.":`Dieser Einladungslink ist abgelaufen oder wurde bereits verwendet. Bitten Sie um einen neuen.`,"This manuscript preview is out of date. Refresh it and try again.":`Diese Manuskriptvorschau ist veraltet. Aktualisieren Sie sie und versuchen Sie es erneut.`,"This model does not support that reasoning effort.":`Dieses Modell unterstützt diesen Denkaufwand nicht.`,"This note has already been sent.":`Diese Anmerkung wurde bereits gesendet.`,"This note has been deleted. Undo the deletion first.":`Diese Anmerkung wurde gelöscht. Machen Sie das Löschen zuerst rückgängig.`,"This note is being sent. Wait for the task to finish creating.":`Diese Anmerkung wird gerade gesendet. Warten Sie, bis die Erstellung der Aufgabe abgeschlossen ist.`,"This page has expired. Refresh it and try again.":`Diese Seite ist abgelaufen. Laden Sie sie neu und versuchen Sie es erneut.`,"This paper is already added. Open it from the paper list.":`Dieser Artikel wurde bereits hinzugefügt. Öffnen Sie ihn über die Artikelliste.`,"This paper is being updated. Please retry in a moment.":`Dieser Artikel wird gerade aktualisiert. Bitte versuchen Sie es gleich erneut.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`Diese Textstelle konnte im aktuellen Manuskript nicht zuverlässig gefunden werden. Der Vorschlag verbleibt in der Überprüfungsaufgabe.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`Mit diesem Passkey konnten Sie nicht angemeldet werden. Bitten Sie den Eigentümer um eine neue Einladung, falls er entfernt wurde.`,"This person is no longer in Papilot.":`Diese Person ist nicht mehr in Papilot.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`Dieses Repository enthält noch keine Commits. Erstellen Sie einmal einen Commit, um spätere Änderungen in der PDF-Datei zu vergleichen.`,"This repository has no remote.":`Dieses Repository hat kein Remote-Repository.`,"This repository is already added as another paper.":`Dieses Repository wurde bereits als ein anderer Artikel hinzugefügt.`,"This request ID is already in use by another task.":`Diese Anfrage-ID wird bereits von einer anderen Aufgabe verwendet.`,"This request has ended or the connection has restarted.":`Diese Anfrage wurde beendet oder die Verbindung wurde neu gestartet.`,"This request has ended.":`Diese Anfrage wurde beendet.`,"This review page has expired. Refresh it and try again.":`Diese Überprüfungsseite ist abgelaufen. Laden Sie sie neu und versuchen Sie es erneut.`,"This review task does not belong to this workspace.":`Diese Überprüfungsaufgabe gehört nicht zu diesem Arbeitsbereich.`,"This suggestion does not belong to this review task.":`Dieser Vorschlag gehört nicht zu dieser Überprüfungsaufgabe.`,"This suggestion was ignored while copying. Restore it first.":`Dieser Vorschlag wurde beim Kopieren ignoriert. Stellen Sie ihn zuerst wieder her.`,"This task already applies accepted changes to the working directory.":`Diese Aufgabe wendet angenommene Änderungen bereits auf das Arbeitsverzeichnis an.`,"This task already has queued instructions. Wait or pause it first.":`Für diese Aufgabe befinden sich bereits Anweisungen in der Warteschlange. Warten Sie oder pausieren Sie sie zuerst.`,"This task has no accepted changes left to commit.":`Diese Aufgabe hat keine angenommenen Änderungen mehr zum Committen.`,"This task is being created. Refresh in a moment.":`Diese Aufgabe wird gerade erstellt. Aktualisieren Sie die Ansicht gleich.`,"This task is being deleted.":`Diese Aufgabe wird gerade gelöscht.`,"This task is being deleted. Retry deletion to finish cleanup.":`Diese Aufgabe wird gerade gelöscht. Wiederholen Sie das Löschen, um die Bereinigung abzuschließen.`,"This task is being deleted. Your instructions were not queued.":`Diese Aufgabe wird gerade gelöscht. Ihre Anweisungen wurden nicht in die Warteschlange aufgenommen.`,"This task is busy. Wait for it to finish or pause it first.":`Diese Aufgabe ist beschäftigt. Warten Sie, bis sie abgeschlossen ist, oder pausieren Sie sie zuerst.`,"This task is not an AI review.":`Diese Aufgabe ist keine KI-Überprüfung.`,"This task was deleted. Create a new task instead.":`Diese Aufgabe wurde gelöscht. Erstellen Sie stattdessen eine neue Aufgabe.`,"Too many attempts. Wait a minute and try again.":`Zu viele Versuche. Warten Sie eine Minute und versuchen Sie es erneut.`,"Too many open Papilot tabs. Close one and try again.":`Zu viele geöffnete Papilot-Tabs. Schließen Sie einen und versuchen Sie es erneut.`,"Unknown Git action.":`Unbekannte Git-Aktion.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`Nicht verwendete Anhänge haben 500 MB erreicht. Entfernen Sie Anhänge aus Ihren Entwürfen, bevor Sie weitere hochladen.`,"Upload a file as binary data.":`Laden Sie eine Datei als Binärdaten hoch.`,"Wait for repository preparation to finish.":`Warten Sie, bis die Vorbereitung des Repositorys abgeschlossen ist.`,"Wait for task creation to finish before deleting it.":`Warten Sie, bis die Erstellung der Aufgabe abgeschlossen ist, bevor Sie sie löschen.`,"Wait for the current Git operation before sending more instructions.":`Warten Sie den aktuellen Git-Vorgang ab, bevor Sie weitere Anweisungen senden.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`Warten Sie, bis die aktuelle PDF-Datei fertig kompiliert ist, und führen Sie dann den Skill zur KI-Überprüfung aus.`,"Wait for the current delivery before sending more instructions.":`Warten Sie die aktuelle Zustellung ab, bevor Sie weitere Anweisungen senden.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`Warten Sie, bis die aktuelle Manuskript-PDF fertig kompiliert ist, und kopieren Sie den Vorschlag dann erneut.`,"Wait for the current review action before building a review.":`Warten Sie die aktuelle Überprüfungsaktion ab, bevor Sie eine Überprüfung erstellen.`,"Wait for the current review action before committing.":`Warten Sie die aktuelle Überprüfungsaktion vor dem Committen ab.`,"Wait for the current update to finish before changing channels.":`Warten Sie, bis das aktuelle Update abgeschlossen ist, bevor Sie den Kanal wechseln.`,"Wait for the task and review actions to finish before applying changes.":`Vor dem Anwenden von Änderungen warten, bis die Aufgaben- und Überprüfungsaktionen abgeschlossen sind.`,"Wait for the task and review actions to finish before choosing a destination.":`Warten Sie, bis die Aufgaben- und Überprüfungsaktionen abgeschlossen sind, bevor Sie ein Ziel auswählen.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`Warten Sie, bis die PDF-Erstellung für diesen Artikel abgeschlossen ist, bevor Sie den Pfad ändern oder ihn entfernen.`,"ZIP links and special files are not supported.":`Links und Spezialdateien in ZIP-Archiven werden nicht unterstützt.`,"npm is unavailable to Papilot.":`npm ist für Papilot nicht verfügbar.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`Der Dienst für den PDF-Vergleich ist nicht erreichbar. Ihre Änderungen sind gespeichert. Wählen Sie „Status prüfen“, um den bestehenden Build wiederherzustellen.`},ie={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`Un paquet, une police ou un fichier source est peut-être manquant. Vérifiez les détails ci-dessous, restaurez le fichier manquant ou demandez de l’aide.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`Une clé d’accès vous connecte avec Face ID, Touch ID, Windows Hello ou votre téléphone. Papilot ne voit jamais de mot de passe.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`Une compétence portant le même identifiant est prioritaire selon cet ordre : cet article, puis globale, puis intégrée.`,"A skill with this ID already exists in this location.":`Une compétence portant cet identifiant existe déjà à cet emplacement.`,"A task needs attention":`Une tâche requiert votre attention`,"A workspace for your papers.":`Un espace de travail pour vos articles.`,"AI is resolving conflicts…":`L'IA résout les conflits…`,"AI needs your input":`L'IA a besoin de votre intervention`,"AI review":`Révision par l’IA`,"AI suggestion":`Suggestion de l’IA`,"AI suggestion {n}":`Suggestion de l’IA {n}`,"AI suggestions":`Suggestions de l’IA`,"Abort merge":`Annuler la fusion`,"Aborting…":`Annulation…`,"About Papilot":`À propos de Papilot`,Accent:`Couleur d’accentuation`,"Accept change":`Accepter la modification`,"Accept the current proposal. In Changes, stage or unstage it.":`Accepter la proposition actuelle. Dans Modifications, l’indexer ou la désindexer.`,Accepted:`Accepté`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`Les modifications acceptées dans votre manuscrit sont conservées. Les autres tâches ne sont pas affectées.`,"Access to all papers":`Accès à tous les articles`,Account:`Compte`,"Add a paper":`Ajouter un article`,"Add a passkey":`Ajouter une clé d’accès`,"Add all to task":`Tout ajouter à la tâche`,"Add and fix later":`Ajouter et corriger plus tard`,"Add files or skills":`Ajouter des fichiers ou des compétences`,"Add files…":`Ajouter des fichiers…`,"Add instructions to the selected color groups above.":`Ajoutez des instructions aux groupes de couleurs sélectionnés ci-dessus.`,"Add note":`Ajouter une annotation`,"Add overall instructions (optional)":`Ajouter des instructions générales (facultatif)`,"Add paper":`Ajouter un article`,"Add paper…":`Ajouter un article…`,"Add skill":`Ajouter une compétence`,"Add to .gitignore":`Ajouter à .gitignore`,"Add to group":`Ajouter au groupe`,"Add to {group}":`Ajouter à {group}`,"Add your first paper":`Ajouter votre premier article`,Added:`Ajouté`,"Added to task: {n}":`Ajouté à la tâche : {n}`,"Added {n} pattern to .gitignore.":`{n} motif ajouté à .gitignore.`,"Added {n} patterns to .gitignore.":`{n} motifs ajoutés à .gitignore.`,"Address reviewers":`Répondre aux évaluateurs`,"Address {n} PDF notes":`Traiter {n} annotations PDF`,Advanced:`Avancé`,"Agent configuration":`Configuration des agents`,"Agent settings":`Paramètres de l’agent`,Agents:`Agents`,All:`Tout`,"All entries":`Toutes les entrées`,"All skills":`Toutes les compétences`,"Allow this action":`Autoriser cette action`,"Already set up?":`Déjà configuré ?`,"Already used for {action}. Choose another shortcut.":`Déjà utilisé pour {action}. Choisissez un autre raccourci.`,"Always light":`Toujours clair`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`Une variable d’environnement définie dans un nouveau terminal n’est pas transmise à un serveur déjà en cours d’exécution. Redémarrez Papilot avec les identifiants ; une simple reconnexion ne peut pas modifier son environnement.`,"Annotation group color":`Couleur du groupe d’annotations`,"Annotation groups":`Groupes d’annotations`,"Another entry has the same key.":`Une autre entrée possède la même clé.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity ouvre les images via ses outils de fichiers. Pour une saisie directe d’images, choisissez Codex ou Claude.`,Appearance:`Apparence`,Application:`Application`,"Applied to manuscript":`Appliqué au manuscrit`,Apply:`Appliquer`,"Apply file changes":`Appliquer les modifications de fichiers`,"Apply to working directory":`Appliquer au répertoire de travail`,"Apply to workspace":`Appliquer à l'espace de travail`,"Apply without committing":`Appliquer sans valider`,"Applying…":`Application…`,"Approval requests":`Demandes d’approbation`,"Approve this action":`Approuver cette action`,Archive:`Archiver`,"Archive task":`Archiver la tâche`,"Archived task":`Tâche archivée`,"Archived tasks":`Tâches archivées`,"Ask a question or request changes…":`Poser une question ou demander des modifications…`,"Ask an agent to look into {n} problem":`Demander à un agent d’examiner {n} problème`,"Ask an agent to look into {n} problems":`Demander à un agent d’examiner {n} problèmes`,"Ask for another review of this PDF version…":`Demander une nouvelle révision de cette version du PDF…`,"Attach up to 10 files per message.":`Joignez jusqu’à 10 fichiers par message.`,Attachments:`Pièces jointes`,"Attachments must total 100 MB or less.":`La taille totale des pièces jointes ne doit pas dépasser 100 Mo.`,Authors:`Auteurs`,"Available levels depend on the selected model.":`Les niveaux disponibles dépendent du modèle sélectionné.`,"Available models":`Modèles disponibles`,"Awaiting changes":`En attente de modifications`,Background:`Arrière-plan`,"Bare repository":`Dépôt nu`,"BibTeX cannot read it ({error}).":`BibTeX ne peut pas le lire ({error}).`,"BibTeX cannot read it: {error}":`BibTeX ne peut pas le lire : {error}`,Book:`Livre`,Branch:`Branche`,"Bring your collaborators in":`Invitez vos collaborateurs`,"Browser default ({language})":`Par défaut du navigateur ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`Les navigateurs n’affichent les notifications que sur HTTPS ou localhost. Ouvrez Papilot à une adresse sécurisée pour les utiliser.`,"Build failed · sent to {agent}":`Échec de la compilation · envoyé à {agent}`,"Built-in":`Intégré`,Cancel:`Annuler`,"Change shortcut: {action}":`Modifier le raccourci : {action}`,"Change {n}":`Modification {n}`,"Changed files in {branch}":`Fichiers modifiés dans {branch}`,Changelog:`Journal des modifications`,Changes:`Modifications`,"Changes apply to the next turn.":`Les modifications s'appliquent au prochain tour.`,"Changes in {path}":`Modifications dans {path}`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`Modifications affiche uniquement les sections modifiées et s’ouvre le plus rapidement. PDF affiche chaque modification à son emplacement dans l’ensemble de l’article et prend plus de temps pour les longs articles. Le sélecteur dans une révision ne modifie que cette révision.`,"Change…":`Modifier…`,Chart:`Graphique`,Chat:`Discussion`,"Chat (reply needed)":`Discussion (réponse requise)`,"Chat only":`Discussion uniquement`,"Check again":`Vérifier à nouveau`,"Check for updates":`Rechercher des mises à jour`,"Check for updates to see the latest version.":`Recherchez des mises à jour pour voir la dernière version.`,"Check math":`Vérifier les mathématiques`,"Check online":`Vérifier en ligne`,"Check references online":`Vérifier les références en ligne`,"Check status":`Vérifier l’état`,"Check task status":`Vérifier l’état de la tâche`,"Check task status before deleting this task.":`Vérifiez l’état de la tâche avant de la supprimer.`,"Check task status before sending":`Vérifier l’état de la tâche avant l’envoi`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`Vérifiez l’erreur de connexion ci-dessus ainsi que les paramètres d’identification, de fournisseur et de réseau de l’agent sur cet hôte. Redémarrez Papilot après avoir modifié les identifiants ou les chemins d’exécutables.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`Vérifiez le fichier principal et le moteur, ou demandez à l’assistant de corriger la compilation. Vous pouvez aussi modifier les fichiers enregistrés et réessayer.`,"Check the task status before sending notes.":`Vérifiez l’état de la tâche avant d’envoyer des annotations.`,"Check your connection and try again.":`Vérifiez votre connexion et réessayez.`,"Check {n} more online":`Vérifier {n} de plus en ligne`,"Checked by you":`Vérifié par vous`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`Vérification des modifications du manuscrit. Une comparaison PDF n’est générée qu’en cas de besoin.`,"Checking for updates…":`Recherche de mises à jour…`,"Checking {n}…":`Vérification ({n})…`,"Checking…":`Vérification…`,Checklist:`Liste de contrôle`,"Choose ZIP":`Choisir un fichier ZIP`,"Choose a folder or ZIP, or drag it here.":`Choisissez un dossier ou un fichier ZIP, ou glissez-le ici.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`Choisissez un dossier pour en téléverser une copie. Pour utiliser les fichiers d'origine, ouvrez-le dans l'application de bureau.`,"Choose a shortcut to edit:":`Choisissez un raccourci à modifier :`,"Choose an icon":`Choisir une icône`,"Choose attachments":`Choisir des pièces jointes`,"Choose different files":`Choisir d’autres fichiers`,"Choose folder":`Choisir un dossier`,"Choose how paper pages look in dark mode.":`Choisissez l’apparence des pages de l’article en mode sombre.`,"Choose the papers to share, then send a personal invite link.":`Choisissez les articles à partager, puis envoyez un lien d’invitation personnel.`,"Choose up to 5,000 files, totaling less than 64 MB.":`Choisissez jusqu'à 5 000 fichiers, pour un total inférieur à 64 Mo.`,"Choose {color} color":`Choisir la couleur {color}`,"Citations, entries and their records":`Citations, entrées et leurs notices`,"Cited {n} time: {places}":`Cité {n} fois : {places}`,"Cited {n} times: {places}":`Cité {n} fois : {places}`,"Claude Code or API credentials were not detected.":`Les identifiants Claude Code ou API n’ont pas été détectés.`,"Clear selection":`Effacer la sélection`,"Clear task search":`Effacer la recherche de tâches`,"Click a highlighted key to customize it.":`Cliquez sur une touche mise en évidence pour la personnaliser.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`Cliquez sur une touche pour la modifier, puis appuyez sur le nouveau raccourci. Échap annule ; Retour arrière l’efface.`,Close:`Fermer`,"Close agent details":`Fermer les détails de l’agent`,"Close note":`Fermer l’annotation`,"Close notes":`Fermer les annotations`,"Close review notes":`Fermer les annotations de révision`,"Close search":`Fermer la recherche`,"Close suggestion":`Fermer la suggestion`,"Close task list":`Fermer la liste des tâches`,"Close the current editor or cancel region selection.":`Fermer l’éditeur actuel ou annuler la sélection de zone.`,"Close window":`Fermer la fenêtre`,"Closest record":`Notice la plus proche`,Code:`Code`,"Collapse manuscript panel":`Réduire le panneau du manuscrit`,"Collapse {group} notes":`Réduire les annotations de {group}`,Color:`Couleur`,Comments:`Commentaires`,Commit:`Valider`,"Commit 1 file":`Valider 1 fichier`,"Commit all {n} files":`Valider les {n} fichiers`,"Commit and push":`Valider et pousser`,"Commit graph":`Graphe des commits`,"Commit merge":`Valider la fusion`,"Commit message":`Message de commit`,"Commit staged changes in 1 file":`Valider les modifications indexées dans 1 fichier`,"Commit staged changes in {n} files":`Valider les modifications indexées dans {n} fichiers`,"Commit to manuscript":`Valider dans le manuscrit`,"Commit to task branch":`Valider sur la branche de la tâche`,"Commit to {branch}":`Valider sur {branch}`,"Commit together":`Valider ensemble`,"Commit what is staged":`Valider les éléments indexés`,"Commit {chosen} of {n} files":`Valider {chosen} fichier(s) sur {n}`,Committed:`Validé`,"Committed and pushed":`Validé et poussé`,"Committed {hash} and pushed.":`Commit {hash} validé et poussé.`,"Committed {hash} to {branch}":`Commit {hash} validé sur {branch}`,"Committed {hash}.":`Commit {hash} validé.`,"Committing and pushing…":`Validation et poussée…`,"Committing…":`Validation…`,"Commit…":`Valider…`,"Compared with {upstream}":`Comparé à {upstream}`,"Compilation details":`Détails de la compilation`,"Compilation failed. Click to retry.":`Échec de la compilation. Cliquez pour réessayer.`,"Compilation log":`Journal de compilation`,"Compilation problems":`Problèmes de compilation`,"Compilation status unavailable.":`État de la compilation indisponible.`,"Compiling the PDF…":`Compilation du PDF…`,Completed:`Terminé`,"Component source":`Source du composant`,"Confirm and apply":`Confirmer et appliquer`,"Confirm and commit":`Confirmer et valider`,"Confirm whether the task is still running before generating a PDF comparison.":`Vérifiez si la tâche est toujours en cours avant de générer une comparaison PDF.`,Conflict:`Conflit`,"Conflict resolution paused":`Résolution des conflits en pause`,"Conflicts resolved. Read the diffs, then commit the merge.":`Conflits résolus. Vérifiez les différences, puis validez la fusion.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`Connectez une adresse HTTPS publique pour inviter des personnes sur vos articles. Elles pourront se connecter en toute sécurité avec une clé d’accès.`,"Connect an assistant in Settings to help repair this paper.":`Connectez un assistant dans les Paramètres pour aider à réparer cet article.`,"Connect and sign in to load the model list.":`Connectez-vous et identifiez-vous pour charger la liste des modèles.`,"Connect to view account, models, and usage.":`Connectez-vous pour afficher le compte, les modèles et l’utilisation.`,Connected:`Connecté`,"Connecting to your papers and tasks…":`Connexion à vos articles et tâches…`,"Connecting to {agent}…":`Connexion à {agent}…`,"Connecting…":`Connexion…`,"Connection details":`Détails de la connexion`,"Connection lost. Showing the last update; your draft is kept.":`Connexion perdue. Affichage de la dernière mise à jour ; votre brouillon est conservé.`,Consistency:`Cohérence`,Contents:`Sommaire`,"Contents will appear when the PDF is ready.":`Le sommaire s’affichera lorsque le PDF sera prêt.`,"Continue later":`Continuer plus tard`,Contribute:`Contribuer`,"Contribute an integration":`Contribuer à une intégration`,Copied:`Copié`,"Copied path":`Chemin copié`,Copy:`Copier`,"Copy and edit":`Copier et modifier`,"Copy message":`Copier le message`,"Copy path: {path}":`Copier le chemin : {path}`,"Copy selected PDF text":`Copier le texte PDF sélectionné`,"Copy this built-in skill to customize it for all papers or this paper.":`Copiez cette compétence intégrée pour la personnaliser pour tous les articles ou pour cet article.`,"Could not check":`Vérification impossible`,"Could not check for updates":`Impossible de vérifier les mises à jour`,"Could not check for updates. Try again when connected.":`Impossible de vérifier les mises à jour. Réessayez une fois connecté.`,"Could not complete the environment checks. Check the connection and try again.":`Impossible de terminer les vérifications de l’environnement. Vérifiez la connexion et réessayez.`,"Could not detect a main file. Enter its path relative to the paper folder.":`Impossible de détecter un fichier principal. Saisissez son chemin relatif au dossier de l'article.`,"Could not generate the PDF comparison.":`Impossible de générer la comparaison PDF.`,"Could not load the license notices.":`Impossible de charger les avis de licence.`,"Could not prepare the paper":`Impossible de préparer l'article`,"Could not read the LaTeX installation. Try again.":`Impossible de lire l’installation LaTeX. Réessayez.`,"Could not read the selected file.":`Impossible de lire le fichier sélectionné.`,"Could not read this worktree.":`Impossible de lire cet arbre de travail.`,"Could not reconnect. Check the server connection and try again.":`Reconnexion impossible. Vérifiez la connexion au serveur et réessayez.`,"Could not refresh the repository.":`Impossible d’actualiser le dépôt.`,"Could not start the update. Please retry.":`Impossible de démarrer la mise à jour. Veuillez réessayer.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Créez une clé API Cursor dans le tableau de bord Cursor, ou configurez la connexion au SDK Cursor sur cet hôte.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Créez un forfait GLM Coding Plan ou une clé API auprès de Zhipu ou Z.ai.`,"Create a passkey":`Créer une clé d’accès`,"Create a passkey on this device to sign in as {name}.":`Créez une clé d’accès sur cet appareil pour vous connecter en tant que {name}.`,"Create a passkey to sign in to your Papilot from anywhere.":`Créez une clé d’accès pour vous connecter à votre Papilot depuis n’importe où.`,"Create invite link":`Créer un lien d’invitation`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`La création de la clé d’accès a été annulée. Le lien fonctionne toujours ; réessayez lorsque vous serez prêt.`,"Creating…":`Création…`,"Credits available":`Crédits disponibles`,Current:`Actuel`,"Current version":`Version actuelle`,"Cursor SDK credentials were not detected.":`Les identifiants du SDK Cursor n’ont pas été détectés.`,"Customize shortcuts":`Personnaliser les raccourcis`,Customized:`Personnalisé`,"Cut length without losing content":`Réduire la longueur sans perdre de contenu`,"Daily limit":`Limite quotidienne`,Dark:`Sombre`,Decline:`Refuser`,Declined:`Refusé`,Default:`Par défaut`,"Default model":`Modèle par défaut`,"Default reasoning effort":`Effort de raisonnement par défaut`,"Delete file":`Supprimer le fichier`,"Delete note":`Supprimer l’annotation`,"Delete note {n}":`Supprimer l’annotation {n}`,"Delete review note {n}":`Supprimer l’annotation de révision {n}`,"Delete skill":`Supprimer la compétence`,"Delete task":`Supprimer la tâche`,"Delete task?":`Supprimer la tâche ?`,"Delete task…":`Supprimer la tâche…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`Supprimer cette compétence ? Seul son fichier Markdown est supprimé ; les fichiers associés sont conservés.`,"Delete {name}?":`Supprimer {name} ?`,Deleted:`Supprimé`,"Deleting task":`Suppression de la tâche`,"Deleting…":`Suppression…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`La suppression a déjà commencé. Réessayez pour confirmer le nettoyage et supprimer la tâche.`,"Deletion is in progress":`Suppression en cours`,"Describe the revision":`Décrire la révision`,"Describe what the agent should do, what to preserve, and how to present the result.":`Décrivez ce que l’agent doit faire, ce qu’il doit préserver et comment présenter le résultat.`,Description:`Description`,"Details (optional)":`Détails (facultatif)`,"Detect again":`Détecter à nouveau`,"Detecting LaTeX installation…":`Détection de l’installation LaTeX…`,"Dev (GitHub main)":`Dev (GitHub main)`,Differs:`Diffère`,"Discard all changes":`Abandonner toutes les modifications`,"Discard changes":`Abandonner les modifications`,"Discard changes in {name}?":`Abandonner les modifications dans {name} ?`,"Discard changes in {n} file?":`Abandonner les modifications dans {n} fichier ?`,"Discard changes in {n} files?":`Abandonner les modifications dans {n} fichiers ?`,"Discard changes in {path}":`Abandonner les modifications dans {path}`,"Discard unsaved skill changes?":`Ignorer les modifications non enregistrées de la compétence ?`,"Discarded changes in {n} file.":`Modifications abandonnées dans {n} fichier.`,"Discarded changes in {n} files.":`Modifications abandonnées dans {n} fichiers.`,"Dismiss error":`Fermer l’erreur`,Distribution:`Distribution`,"Download desktop updates":`Télécharger les mises à jour de l'application de bureau`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`Téléchargez la dernière version de l'application de bureau pour votre système depuis GitHub Releases. Vos articles et vos paramètres sont conservés.`,"Downloading and building the selected GitHub commit…":`Téléchargement et compilation du commit GitHub sélectionné…`,"Downloading and checking the new version…":`Téléchargement et vérification de la nouvelle version…`,"Drag to resize · Double-click to reset":`Glisser pour redimensionner · Double-cliquer pour réinitialiser`,"Drop files to attach":`Déposez des fichiers pour les joindre`,"Drop one folder or LaTeX ZIP file.":`Déposez un seul dossier ou fichier ZIP LaTeX.`,"Early updates from GitHub main. May be less stable.":`Mises à jour anticipées depuis GitHub main. Peut être moins stable.`,Edit:`Modifier`,"Edit note":`Modifier l’annotation`,"Edit note {n}":`Modifier l’annotation {n}`,"Edit note {n}: {comment}":`Modifier l’annotation {n} : {comment}`,"Edit paper":`Modifier l’article`,"Edit {name}":`Modifier {name}`,"Edited {file}":`{file} modifié`,"Edited {n} files":`{n} fichiers modifiés`,"Editing dark mode colors. Changes are saved automatically.":`Modification des couleurs du mode sombre. Les modifications sont enregistrées automatiquement.`,"Editing light mode colors. Changes are saved automatically.":`Modification des couleurs du mode clair. Les modifications sont enregistrées automatiquement.`,"Enable shortcut: {action}":`Activer le raccourci : {action}`,"Enter a folder path":`Saisissez le chemin d'un dossier`,"Environment variable":`Variable d’environnement`,Errors:`Erreurs`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`Développer les modifications ailleurs, comme la table des matières et la numérotation des références. Désactivé par défaut ; les modifications sans changement visible à la source, comme les définitions de macros, affichent toujours leurs effets.`,"Expand indirect changes":`Développer les modifications indirectes`,"Expand manuscript panel":`Développer le panneau du manuscrit`,"Expand {group} notes":`Développer les annotations ({group})`,Failed:`Échec`,Fast:`Rapide`,"Fast mode":`Mode rapide`,"Faster responses; may use more of your limit.":`Réponses plus rapides ; peut consommer davantage de votre limite.`,"Feedback & issues":`Commentaires et problèmes`,"Fetch from the remote":`Récupérer depuis le dépôt distant`,"Files must be 25 MB or smaller.":`Les fichiers ne doivent pas dépasser 25 Mo.`,"Files on disk, Git history and task worktrees will stay in place.":`Les fichiers sur le disque, l’historique Git et les arbres de travail des tâches seront conservés.`,"Files received":`Fichiers reçus`,"Find (⌘F)":`Rechercher (⌘F)`,"Find errors in notation, equations and proofs":`Trouver les erreurs de notation, d’équations et de démonstrations`,"Find in PDF":`Rechercher dans le PDF`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`Découvrez l’origine de ces problèmes de bibliographie et faites un rapport. Ne modifiez aucun fichier. Pour chacun, vérifiez si l’ouvrage existe et ce qu’indique sa notice publiée (auteurs, titre, année, revue ou conférence, DOI), trouvez d’où provient l’entrée ou la citation dans l’historique Git des fichiers .bib et .tex, et indiquez ce que vous suggérez. Précisez quels résultats sont confirmés par une source et lesquels sont des suppositions.`,"Fit page":`Ajuster à la page`,"Fit width":`Ajuster à la largeur`,"Fix LaTeX warnings":`Corriger les avertissements LaTeX`,"Fix typos, grammar and punctuation without rewording":`Corriger les fautes de frappe, la grammaire et la ponctuation sans reformuler`,"Fix with an agent…":`Corriger avec un agent…`,"Folder path":`Chemin du dossier`,"Follow mode":`Mode suivi`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`Pour utiliser le SDK à la place, démarrez Papilot avec ANTHROPIC_API_KEY ou un fournisseur cloud pris en charge configuré. Redémarrez Papilot après avoir modifié son environnement.`,Foreground:`Premier plan`,"Full PDF":`PDF complet`,General:`Général`,"Generate PDF comparison":`Générer la comparaison PDF`,"Generate commit message":`Générer un message de commit`,"Generate task title":`Générer un titre de tâche`,"Generating task title…":`Génération du titre de la tâche…`,"Get started and make Papilot your own.":`Lancez-vous et personnalisez Papilot.`,"Git status":`État Git`,"Git status of the manuscript":`État Git du manuscrit`,"Git, {n} changed":`Git, {n} modifié(s)`,"GitHub repository":`Dépôt GitHub`,"Give your skill a name":`Donnez un nom à votre compétence`,Global:`Global`,Globe:`Globe`,Graphite:`Graphite`,Green:`Vert`,"Help fix compilation":`Aider à corriger la compilation`,"Help improve Papilot with code, docs, and ideas.":`Aidez à améliorer Papilot avec du code, de la documentation et des idées.`,"Hide task list":`Masquer la liste des tâches`,"Highlighted in {group}":`Surligné dans {group}`,"Hover over a highlighted key to see what it does.":`Survolez une touche en surbrillance pour voir son action.`,"I checked it myself":`Je l'ai vérifié moi-même`,Idea:`Idée`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`S'il est déjà installé, définissez {variable} sur le chemin de son exécutable dans l'environnement qui lance Papilot, puis redémarrez Papilot.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`Si l'état en direct diffère toujours de la vérification, redémarrez Papilot sous le même utilisateur et dans le même environnement où vous avez configuré l'agent.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`Si la tâche modifie le manuscrit, une comparaison PDF s'affichera ici. Sinon, consultez la réponse dans la discussion.`,Ignore:`Ignorer`,"Ignore suggestion {n}":`Ignorer la suggestion {n}`,"Images must be 5 MB or smaller.":`Les images ne doivent pas dépasser 5 Mo.`,"Import a ZIP":`Importer un fichier ZIP`,"Import a separate copy from Overleaf or a ZIP archive.":`Importez une copie distincte depuis Overleaf ou une archive ZIP.`,"Import progress":`Progression de l'importation`,"Improve clarity and flow, keeping the meaning":`Améliorer la clarté et la fluidité tout en conservant le sens`,"Include note {n} in this task":`Inclure l'annotation {n} dans cette tâche`,"Include suggestion {n} in this task":`Inclure la suggestion {n} dans cette tâche`,"Include {key} in the task":`Inclure {key} dans la tâche`,"Individual notes":`Annotations individuelles`,"Input needed":`Intervention requise`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Installez TeX Live ou MacTeX avec latexmk sur l'ordinateur exécutant Papilot, puis réessayez.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`Installer la nouvelle version et redémarrer automatiquement lorsque les tâches sont inactives. Vos articles, tâches et paramètres sont conservés.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Installez {command} sur l'hôte exécutant Papilot, puis terminez la configuration de la connexion ou du fournisseur ci-dessous.`,"Installation & setup":`Installation et configuration`,"Installation check":`Vérification de l'installation`,"Installation location":`Emplacement de l'installation`,Instructions:`Instructions`,"Instructions for color groups":`Instructions pour les groupes de couleurs`,"Instructions for {agent}":`Instructions pour {agent}`,"Instructions for {group} notes":`Instructions pour les annotations {group}`,"Invite link for a new device":`Lien d'invitation pour un nouvel appareil`,"Invite link for {name}":`Lien d'invitation pour {name}`,"Invite someone":`Inviter quelqu'un`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`Les personnes invitées peuvent accéder à tous les fichiers lisibles par Papilot, y compris les identifiants et les articles non partagés.`,"Invited, not joined yet":`Invité, n'a pas encore rejoint`,"Join Papilot":`Rejoindre Papilot`,Joined:`A rejoint`,"Jump to the next change that still needs a decision.":`Passer à la modification suivante nécessitant encore une décision.`,"Keep editing":`Continuer la modification`,"Keep latest wording and apply":`Conserver la dernière formulation et appliquer`,"Keep latest wording and commit":`Conserver la dernière formulation et valider`,"Keep on manuscript":`Conserver sur le manuscrit`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`Conserver la dernière formulation dans les passages qui se chevauchent et enregistrer les autres modifications acceptées.`,"Kept on manuscript":`Conservé sur le manuscrit`,"Keyboard key {key}: {actions}":`Touche du clavier {key} : {actions}`,"Keyboard shortcuts":`Raccourcis clavier`,"LaTeX Git repository · Requires a commit and latexmk":`Dépôt Git LaTeX · Nécessite un commit et latexmk`,"LaTeX engine":`Moteur LaTeX`,"LaTeX installation":`Installation LaTeX`,"Label defined more than once":`Étiquette définie plus d'une fois`,Language:`Langue`,"Language for the Papilot interface.":`Langue de l'interface de Papilot.`,"Last active {time}":`Dernière activité {time}`,Later:`Plus tard`,"Latest messages":`Derniers messages`,"Latest version":`Dernière version`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Bibliothèques et polices utilisées par Papilot et son moteur de révision. Chaque composant est couvert par sa propre licence.`,"Libraries, fonts, and the people behind them.":`Bibliothèques, polices et les personnes qui les ont créées.`,"License text is not included in this package. See the component source for its terms.":`Le texte de la licence n'est pas inclus dans ce paquet. Consultez le code source du composant pour connaître ses conditions.`,"Licenses & acknowledgments":`Licences et remerciements`,Light:`Clair`,"Limit reached":`Limite atteinte`,"Line too wide by {amount}pt":`Ligne trop large de {amount} pt`,Link:`Lien`,"Loading PDF review…":`Chargement de la révision PDF…`,"Loading conversation…":`Chargement de la conversation…`,"Loading license notices…":`Chargement des mentions de licence…`,"Loading people…":`Chargement des personnes…`,"Loading skills…":`Chargement des compétences…`,"Loading the diff…":`Chargement des différences…`,"Loading…":`Chargement…`,Location:`Emplacement`,Locked:`Verrouillé`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Rechercher les entrées dans Crossref, DBLP et arXiv. Seuls les titres, auteurs, années et identifiants sont envoyés.`,"Made by Cui Chen and the Papilot contributors.":`Créé par Cui Chen et les contributeurs de Papilot.`,"Main TeX file":`Fichier TeX principal`,Manuscript:`Manuscrit`,"Manuscript panels":`Panneaux du manuscrit`,"Manuscript view":`Vue du manuscrit`,"Mark a figure or region":`Sélectionner une figure ou une zone`,"Mark region":`Sélectionner une zone`,"Marked on earlier changes.":`Marqué sur des modifications antérieures.`,"Marked region":`Zone sélectionnée`,Math:`Mathématiques`,"Maximize or restore window":`Agrandir ou restaurer la fenêtre`,Members:`Membres`,Merge:`Fusionner`,"Merge in progress":`Fusion en cours`,"Merged {upstream}.":`{upstream} fusionné.`,"Merging: no conflicts left":`Fusion en cours : aucun conflit restant`,"Merging: {n} file has conflicts":`Fusion en cours : {n} fichier en conflit`,"Merging: {n} files have conflicts":`Fusion en cours : {n} fichiers en conflit`,"Message ({key} to commit on “{branch}”)":`Message ({key} pour valider sur « {branch} »)`,"Minimize window":`Réduire la fenêtre`,"Missing character":`Caractère manquant`,"Missing file":`Fichier manquant`,"Missing worktree":`Arbre de travail manquant`,"Missing: {files}":`Manquant : {files}`,Mode:`Mode`,"Model default":`Valeur par défaut du modèle`,Models:`Modèles`,Modified:`Modifié`,"More Git actions":`Plus d’actions Git`,"More commit actions":`Plus d’actions de validation`,"Move to the next visible change.":`Aller à la modification visible suivante.`,"Move to the previous visible change.":`Aller à la modification visible précédente.`,"My notes":`Mes annotations`,Name:`Nom`,"Needs attention":`Attention requise`,"Needs your reply":`En attente de votre réponse`,"New invite link":`Nouveau lien d’invitation`,"New skill":`Nouvelle compétence`,"New task":`Nouvelle tâche`,"New version":`Nouvelle version`,"Next change":`Modification suivante`,"Next match":`Occurrence suivante`,"Next page":`Page suivante`,"Next suggestion":`Suggestion suivante`,"Next suggestion (→)":`Suggestion suivante (→)`,"Next undecided change":`Modification en attente suivante`,"No GLM API key was found.":`Aucune clé API GLM n’a été trouvée.`,"No LaTeX installation was detected on this host.":`Aucune installation LaTeX n’a été détectée sur cet hôte.`,"No archived tasks":`Aucune tâche archivée`,"No commits yet":`Aucun commit pour le moment`,"No components match your search.":`Aucun composant ne correspond à votre recherche.`,"No entry has this key.":`Aucune entrée ne possède cette clé.`,"No files found in this folder.":`Aucun fichier trouvé dans ce dossier.`,"No installation details were returned. Run the checks again to refresh.":`Aucun détail d’installation n’a été renvoyé. Relancez les vérifications pour actualiser.`,"No linked change":`Aucune modification liée`,"No linked task":`Aucune tâche liée`,"No manuscript changes":`Aucune modification du manuscrit`,"No matches":`Aucun résultat`,"No matching settings":`Aucun paramètre correspondant`,"No matching skills":`Aucune compétence correspondante`,"No matching tasks":`Aucune tâche correspondante`,"No models match “{query}”":`Aucun modèle ne correspond à « {query} »`,"No notes yet":`Aucune annotation pour le moment`,"No other worktrees in this repository.":`Aucun autre arbre de travail dans ce dépôt.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`Aucun article n’a encore été partagé avec vous. Les articles apparaîtront ici dès que {name} les partagera.`,"No papers yet":`Aucun article pour le moment`,"No passkey on this device? Ask the person who invited you for a new invite link.":`Aucune clé d’accès sur cet appareil ? Demandez un nouveau lien d’invitation à la personne qui vous a invité.`,"No problems found.":`Aucun problème détecté.`,"No problems in the files. Check online to compare the entries with their records.":`Aucun problème dans les fichiers. Vérifiez en ligne pour comparer les entrées avec leurs notices.`,"No problems in the last build.":`Aucun problème lors de la dernière compilation.`,"No record in Crossref, DBLP or arXiv matches it.":`Aucune notice dans Crossref, DBLP ou arXiv ne correspond.`,"No tasks yet":`Aucune tâche pour le moment`,"No textual changes.":`Aucune modification textuelle.`,"No uncommitted changes":`Aucune modification non validée`,"No upstream branch":`Aucune branche amont`,"Not assigned":`Non attribué`,"Not checked":`Non vérifié`,"Not cited in the paper.":`Non cité dans l’article.`,"Not detected":`Non détecté`,"Not found":`Introuvable`,"Note deleted.":`Annotation supprimée.`,"Note for the agent":`Annotation pour l’agent`,"Note on the PDF":`Annotation sur le PDF`,"Note {n}":`Annotation {n}`,"Note {n}: {comment}":`Annotation {n} : {comment}`,"Notes in this task":`Annotations dans cette tâche`,"Notes stay here unless you add them to a task.":`Les annotations restent ici tant que vous ne les ajoutez pas à une tâche.`,"Nothing to check":`Rien à vérifier`,Notifications:`Notifications`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`Les notifications sont bloquées pour ce site. Autorisez-les dans les paramètres de site du navigateur, puis activez-les ici.`,"Notifications are on":`Les notifications sont activées`,"Notify me about":`M’avertir pour`,"Notify me when a task fails or stops unexpectedly.":`M’avertir lorsqu’une tâche échoue ou s’arrête de façon inattendue.`,"Notify me when an agent asks me a question.":`M’avertir lorsqu’un agent me pose une question.`,"Notify me when an agent finishes without changes to review.":`M’avertir lorsqu’un agent termine sans modifications à réviser.`,"Notify me when an agent needs my approval to continue.":`M’avertir lorsqu’un agent a besoin de mon approbation pour continuer.`,"Notify me when changes are ready for review.":`M’avertir lorsque des modifications sont prêtes pour révision.`,Off:`Désactivé`,"Online checks are off in Settings, so only problems found in the files are shown.":`Les vérifications en ligne sont désactivées dans les Paramètres ; seuls les problèmes détectés dans les fichiers sont donc affichés.`,"Online checks are off in Settings.":`Les vérifications en ligne sont désactivées dans les Paramètres.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`Seules les modifications du manuscrit nécessitent une comparaison PDF. Les réponses aux questions se trouvent dans la discussion.`,"Open PDF":`Ouvrir le PDF`,"Open a branch to commit":`Ouvrir une branche pour valider`,"Open a folder":`Ouvrir un dossier`,"Open attachment {name}":`Ouvrir la pièce jointe {name}`,"Open chat":`Ouvrir la discussion`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`Ouvrez-le sur l’appareil depuis lequel vous souhaitez vous connecter. Il est utilisable une seule fois, pendant 15 minutes.`,"Open paper":`Ouvrir l’article`,"Open review":`Ouvrir la révision`,"Open review in new tab":`Ouvrir la révision dans un nouvel onglet`,"Open reviews on":`Ouvrir les révisions sur`,"Open task: {title}":`Ouvrir la tâche : {title}`,"Open the full PDF":`Ouvrir le PDF complet`,"Open these shortcut settings.":`Ouvrir ces paramètres de raccourcis.`,"Opening the PDF…":`Ouverture du PDF…`,"Opening your workspace":`Ouverture de votre espace de travail`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`Ouvre une nouvelle tâche que vous pouvez modifier avant l’envoi. L’agent signale ce qu’il trouve et ne modifie rien.`,"Opens in a new tab":`S’ouvre dans un nouvel onglet`,"Or drop a folder or ZIP here":`Ou déposez un dossier ou un fichier ZIP ici`,"Or type your own answer":`Ou saisissez votre propre réponse`,Orange:`Orange`,Overridden:`Remplacé`,Owner:`Propriétaire`,"PDF annotations":`Annotations PDF`,"PDF appearance":`Apparence du PDF`,"PDF comparison":`Comparaison PDF`,"PDF compilation":`Compilation PDF`,"PDF compiled successfully.":`PDF compilé avec succès.`,"PDF contents":`Contenu du PDF`,"PDF controls":`Commandes PDF`,"PDF note library":`Bibliothèque d’annotations PDF`,"PDF note {n}":`Annotation PDF {n}`,"PDF notes":`Annotations PDF`,"PDF pages":`Pages du PDF`,"PDF preview":`Aperçu du PDF`,"PDF review":`Révision du PDF`,"PDF review only":`Révision du PDF uniquement`,"Page number":`Numéro de page`,"Page {n}":`Page {n}`,"Page {pages}":`Page {pages}`,"Page {pages} of {total}":`Page {pages} sur {total}`,"Pages typeset":`Pages composées`,Paper:`Article`,"Paper name":`Nom de l’article`,"Paper tools":`Outils de l’article`,"Paper: {name}":`Article : {name}`,"Papers and tasks":`Articles et tâches`,"Papers they can open":`Articles qu’ils peuvent ouvrir`,"Papers {name} can open":`Articles que {name} peut ouvrir`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot ne trouve pas npm sur cet ordinateur. Les mises à jour sont indisponibles tant que npm n’est pas installé.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot n’a pas pu établir de connexion fonctionnelle avec cet agent. La dernière erreur de connexion est affichée ci-dessous.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot n'a pas pu préparer les fichiers pour la compilation. Il s'agit d'une erreur de l'application, et non d'une erreur LaTeX.`,"Papilot license":`Licence de Papilot`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot a joint cet agent, mais n’a pas pu confirmer la présence d’un compte connecté sur cet hôte.`,"Papilot sent the build error to {agent}, {time}":`Papilot a envoyé l’erreur de compilation à {agent}, {time}`,"Papilot will tell you here when a task needs you.":`Papilot vous préviendra ici lorsqu’une tâche aura besoin de vous.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`Partiellement révisé`,Passed:`Réussi`,"Passkey · {label}":`Clé d’accès · {label}`,Pause:`Mettre en pause`,"Pause task":`Mettre la tâche en pause`,"Pause this task before deleting it.":`Mettez cette tâche en pause avant de la supprimer.`,"Pause {agent}":`Mettre {agent} en pause`,Paused:`En pause`,Pen:`Stylo`,"Pending review":`En attente de révision`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`Les personnes que vous invitez se connectent avec une clé d’accès à l’adresse publique et peuvent tout faire comme vous dans les articles que vous partagez avec elles, y compris approuver les commandes exécutées par les agents sur cet hôte et pousser avec ses identifiants Git.`,Personal:`Personnel`,Polish:`Peaufiner`,"Position needs confirmation":`Position à confirmer`,"Prepare and compile":`Préparer et compiler`,"Preparing task results":`Préparation des résultats de la tâche`,"Preparing task results…":`Préparation des résultats de la tâche…`,"Preparing version history and compiling the PDF…":`Préparation de l’historique des versions et compilation du PDF…`,"Press a key…":`Appuyez sur une touche…`,Preview:`Aperçu`,"Previous change":`Modification précédente`,"Previous match":`Occurrence précédente`,"Previous page":`Page précédente`,"Previous suggestion":`Suggestion précédente`,"Previous suggestion (←)":`Suggestion précédente (←)`,Problems:`Problèmes`,"Processing the bibliography…":`Traitement de la bibliographie…`,Proofread:`Relire`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Fournissez CURSOR_API_KEY au processus ou au service qui démarre Papilot, puis redémarrez Papilot. Le SDK est installé automatiquement lors de son utilisation.`,"Publish branch":`Publier la branche`,"Published releases, recommended for everyday use.":`Versions publiées, recommandées pour un usage quotidien.`,Pull:`Tirer`,"Pulled the latest commits.":`Derniers commits tirés.`,Purple:`Violet`,Push:`Pousser`,"Pushed to the remote.":`Poussé vers le dépôt distant.`,"Pushed to {upstream}.":`Poussé vers {upstream}.`,"Queue instructions for the next turn…":`Mettre des instructions en file d’attente pour le prochain tour…`,Queued:`En file d’attente`,"Quote in chat":`Citer dans la discussion`,"Quoted text":`Texte cité`,"Raw log":`Journal brut`,"Read folder":`Lire le dossier`,"Read the paper and leave PDF comments without editing the manuscript":`Lire l’article et laisser des commentaires PDF sans modifier le manuscrit`,"Read, annotate, and revise your papers with AI, all in one place.":`Lisez, annotez et révisez vos articles avec l’IA, le tout au même endroit.`,"Reading Git status…":`Lecture de l’état Git…`,"Reading paper files…":`Lecture des fichiers de l’article…`,"Reading the bibliography…":`Lecture de la bibliographie…`,"Reading update status…":`Lecture de l’état des mises à jour…`,"Reading worktrees and history…":`Lecture des arbres de travail et de l’historique…`,Ready:`Prêt`,"Ready for review":`Prêt pour révision`,"Ready to check for updates":`Prêt à rechercher des mises à jour`,"Reasoning effort":`Effort de raisonnement`,Recent:`Récents`,"Recompile PDF":`Recompiler le PDF`,"Recompiling; this list will update.":`Recompilation en cours ; cette liste sera mise à jour.`,Reconnect:`Reconnecter`,Reconnecting:`Reconnexion`,Record:`Notice`,Red:`Rouge`,"Reference check":`Vérification des références`,"Refresh changes":`Actualiser les modifications`,"Refresh skills":`Actualiser les compétences`,"Refresh worktrees and history":`Actualiser les arbres de travail et l’historique`,"Regenerate PDF comparison":`Régénérer la comparaison PDF`,"Region note":`Annotation de zone`,"Reject change":`Rejeter la modification`,"Reject the current proposal. In Changes, revert it.":`Rejeter la proposition actuelle. Dans Modifications, l’annuler.`,Rejected:`Rejeté`,"Reload review":`Recharger la révision`,Remove:`Retirer`,"Remove attachment {name}":`Retirer la pièce jointe {name}`,"Remove from Papilot":`Retirer de Papilot`,"Remove from draft":`Retirer du brouillon`,"Remove note {n} from task":`Retirer l’annotation {n} de la tâche`,"Remove paper":`Retirer l’article`,"Remove paper?":`Retirer l’article ?`,"Remove suggestion {n} from task":`Retirer la suggestion {n} de la tâche`,"Remove the {name} skill":`Retirer la compétence {name}`,"Remove this paper and its tasks, conversations and notes from Papilot?":`Retirer cet article ainsi que ses tâches, conversations et annotations de Papilot ?`,"Remove {device}":`Supprimer {device}`,"Remove {name}":`Supprimer {name}`,"Remove…":`Supprimer…`,"Removing…":`Suppression…`,"Rename {name}":`Renommer {name}`,Renamed:`Renommé`,"Rename…":`Renommer…`,"Repair summary":`Résumé des réparations`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`Les réparations sont enregistrées comme modifications non validées. Examinez-les dans les modifications de fichiers de l’article.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`Répondez dans la discussion pour continuer. Une comparaison PDF n’est nécessaire que si le manuscrit change.`,"Reply to {agent}":`Répondre à {agent}`,"Report a bug or suggest an improvement.":`Signaler un bug ou suggérer une amélioration.`,"Reported {n} times":`Signalé {n} fois`,"Repository path":`Chemin du dépôt`,"Request a revision":`Demander une révision`,"Request failed. Please try again.":`Échec de la requête. Veuillez réessayer.`,"Reset appearance":`Réinitialiser l’apparence`,"Resize chat panel":`Redimensionner le panneau de discussion`,"Resize manuscript panel":`Redimensionner le panneau du manuscrit`,"Resolve undefined references, overfull boxes and other build warnings":`Résoudre les références non définies, les boîtes débordantes et autres avertissements de compilation`,"Resolve with {agent}":`Résoudre avec {agent}`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Redémarrage de Papilot. Cette page se reconnectera automatiquement ; vos brouillons sont conservés.`,"Restarting…":`Redémarrage…`,"Restore default shortcuts":`Rétablir les raccourcis par défaut`,"Restore task":`Restaurer la tâche`,Retry:`Réessayer`,"Retry build":`Réessayer la compilation`,"Retry compilation":`Réessayer la compilation`,"Retry connection":`Réessayer la connexion`,"Retry conversation":`Réessayer la conversation`,"Retry deletion":`Réessayer la suppression`,"Retry deletion…":`Réessayer la suppression…`,"Retry linking changes":`Réessayer de lier les modifications`,"Retry title generation":`Réessayer la génération du titre`,"Retry update":`Réessayer la mise à jour`,"Retry uploading {name}":`Réessayer le téléversement de {name}`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`Instructions réutilisables pour vos révisions. Choisissez une compétence dans le menu / au démarrage d’une tâche.`,Review:`Révision`,"Review PDF notes":`Annotations PDF de révision`,"Review and chat side by side":`Révision et discussion côte à côte`,"Review complete":`Révision terminée`,"Review copy":`Copie de révision`,"Review decisions":`Décisions de révision`,"Review feedback":`Commentaires de révision`,"Review navigation":`Navigation de révision`,"Review note: {comment}":`Annotation de révision : {comment}`,"Review notes":`Annotations de révision`,"Review notes ({n})":`Annotations de révision ({n})`,"Review preferences":`Préférences de révision`,"Review ready":`Révision prête`,"Review ready · {n} change to decide":`Révision prête · {n} modification à trancher`,"Review ready · {n} changes to decide":`Révision prête · {n} modifications à trancher`,"Review shortcut keyboard":`Clavier des raccourcis de révision`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`Les raccourcis de révision fonctionnent lorsque la révision PDF est active. Ils se mettent en pause lorsque vous saisissez ou sélectionnez du texte. Les modifications sont enregistrées dans ce navigateur.`,"Review the merged result":`Réviser le résultat fusionné`,"Review, {n} to decide":`Révision, {n} à trancher`,"Revise for reviewer comments and draft a point-by-point reply":`Réviser selon les commentaires des évaluateurs et rédiger une réponse point par point`,"Revision requested":`Révision demandée`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`Exécutez Papilot et ses agents dans un conteneur isolé tel que Docker pour limiter l’accès ; les fichiers montés restent accessibles.`,"Run command":`Exécuter la commande`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`Exécutez papilot codex login sur l’hôte. Cela installe une interface CLI Codex prise en charge si nécessaire.`,"Run tool":`Exécuter l’outil`,Running:`En cours d’exécution`,Runtime:`Environnement d’exécution`,"Same DOI as {keys}.":`Même DOI que {keys}.`,"Same title as {keys}.":`Même titre que {keys}.`,Save:`Enregistrer`,"Save accepted changes":`Enregistrer les modifications acceptées`,"Save to":`Enregistrer dans`,Saved:`Enregistré`,"Saved folder":`Dossier enregistré`,"Saving…":`Enregistrement…`,Search:`Rechercher`,"Search archived tasks…":`Rechercher des tâches archivées…`,"Search components or licenses":`Rechercher des composants ou des licences`,"Search components or licenses…":`Rechercher des composants ou des licences…`,"Search models":`Rechercher des modèles`,"Search settings":`Rechercher dans les paramètres`,"Search skills":`Rechercher des compétences`,"Search task titles and instructions":`Rechercher dans les titres et instructions des tâches`,"Search tasks":`Rechercher des tâches`,"Search tasks…":`Rechercher des tâches…`,"Search the PDF":`Rechercher dans le PDF`,"See license notice":`Voir l'avis de licence`,"See what changed in each release.":`Voir les nouveautés de chaque version.`,"Select a skill or create your own.":`Sélectionnez une compétence ou créez la vôtre.`,"Select all notes for this task":`Sélectionner toutes les annotations de cette tâche`,"Select all {group} notes for this task":`Sélectionner toutes les annotations {group} de cette tâche`,"Send (Enter) · New line (Shift+Enter)":`Envoyer (Enter) · Nouvelle ligne (Shift+Enter)`,"Send a test notification":`Envoyer une notification de test`,"Send annotations":`Envoyer les annotations`,"Send annotations to the agent":`Envoyer les annotations à l'agent`,"Send feedback":`Envoyer les commentaires`,"Send instructions":`Envoyer les instructions`,"Send it to {name} yourself. It works once, within 7 days.":`Envoyez-le vous-même à {name}. Il est utilisable une seule fois, sous 7 jours.`,"Send the review comment being written.":`Envoyer le commentaire de révision en cours de rédaction.`,"Send your review decisions and comments to the agent":`Envoyer vos décisions et commentaires de révision à l'agent`,"Send {n} note":`Envoyer {n} annotation`,"Send {n} note to the agent":`Envoyer {n} annotation à l'agent`,"Send {n} notes":`Envoyer {n} annotations`,"Send {n} notes to the agent":`Envoyer {n} annotations à l'agent`,"Sending feedback…":`Envoi des commentaires…`,"Sending…":`Envoi…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`Envoyé. Si rien ne s'est affiché, autorisez les notifications pour ce navigateur dans les paramètres de votre système.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Définissez ZHIPU_API_KEY pour open.bigmodel.cn, ou ZAI_API_KEY pour api.z.ai, dans l'environnement qui lance Papilot, puis redémarrez Papilot.`,"Set up on the host":`Configurer sur l'hôte`,"Set up sharing":`Configurer le partage`,"Set up this agent":`Configurer cet agent`,Settings:`Paramètres`,"Settings categories":`Catégories de paramètres`,"Setup guide":`Guide de configuration`,"Setup required":`Configuration requise`,"Several TeX files were found. Check the selected main document before continuing.":`Plusieurs fichiers TeX ont été trouvés. Vérifiez le document principal sélectionné avant de continuer.`,"Share your papers and manage the people you work with.":`Partagez vos articles et gérez vos collaborateurs.`,Sharing:`Partage`,"Sharing is not sandboxed":`Le partage n'est pas isolé (sandbox)`,Shorten:`Raccourcir`,Show:`Afficher`,"Show LaTeX source":`Afficher le code source LaTeX`,"Show archived tasks":`Afficher les tâches archivées`,"Show current tasks":`Afficher les tâches actuelles`,"Show desktop notifications while Papilot is in the background.":`Afficher les notifications de bureau lorsque Papilot est en arrière-plan.`,"Show fewer models":`Afficher moins de modèles`,"Show note {n} on the page":`Afficher l'annotation {n} sur la page`,"Show note {n}: {comment}":`Afficher l'annotation {n} : {comment}`,"Show or hide the source for the current change.":`Afficher ou masquer le code source de la modification actuelle.`,"Show problems":`Afficher les problèmes`,"Show suggestion {n} on the page":`Afficher la suggestion {n} sur la page`,"Show task list":`Afficher la liste des tâches`,"Show {n} more models":`Afficher {n} modèles supplémentaires`,"Showing the last update.":`Affichage de la dernière mise à jour.`,"Showing the latest {n} commits. Older history is not shown.":`Affichage des {n} derniers commits. L'historique plus ancien est masqué.`,"Sign in as the user running Papilot, then restart Papilot.":`Connectez-vous avec le compte utilisateur qui exécute Papilot, puis redémarrez Papilot.`,"Sign in from anywhere":`Se connecter depuis n'importe où`,"Sign in on the Papilot host to continue.":`Connectez-vous sur l'hôte Papilot pour continuer.`,"Sign in to Papilot":`Se connecter à Papilot`,"Sign in to continue.":`Connectez-vous pour continuer.`,"Sign in with a passkey":`Se connecter avec une clé d'accès`,"Sign out":`Se déconnecter`,"Sign out everywhere":`Se déconnecter partout`,"Sign-in required":`Connexion requise`,"Signed in":`Connecté`,"Signed in · {label}":`Connecté · {label}`,"Signing in was cancelled. Try again when you are ready.":`La connexion a été annulée. Réessayez lorsque vous serez prêt.`,"Skill ID":`Identifiant de la compétence`,"Skill content (Markdown)":`Contenu de la compétence (Markdown)`,"Skill content must contain 1–20,000 characters.":`Le contenu de la compétence doit comprendre entre 1 et 20 000 caractères.`,"Skill content view":`Affichage du contenu de la compétence`,"Skill icon":`Icône de la compétence`,"Skill name":`Nom de la compétence`,"Skill scope":`Portée de la compétence`,"Skill: {name}":`Compétence : {name}`,Skills:`Compétences`,Slate:`Ardoise`,"Slate blue":`Bleu ardoise`,"Some note positions need confirmation. Their original text and comments are kept.":`La position de certaines annotations doit être confirmée. Leur texte et leurs commentaires d'origine sont conservés.`,Source:`Source`,Sparkles:`Étincelles`,Spelling:`Orthographe`,Split:`Scinder`,Stable:`Stable`,"Stage all changes":`Indexer toutes les modifications`,"Stage changes":`Indexer les modifications`,"Stage {path}":`Indexer {path}`,Staged:`Indexées`,"Staged changes":`Modifications indexées`,"Standard shortcuts":`Raccourcis standard`,"Start task":`Démarrer la tâche`,"Start task (Enter)":`Démarrer la tâche (Enter)`,"Status unavailable":`État indisponible`,Stone:`Pierre`,"Submitting…":`Envoi en cours…`,"Suggest an agent":`Suggérer un agent`,"Suggested fix":`Correctif suggéré`,"Suggestion ignored.":`Suggestion ignorée.`,"Suggestion {n}: {comment}":`Suggestion {n} : {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`Les suggestions restent dans cette tâche jusqu’à ce que vous les copiiez dans le manuscrit`,"Support more":`En prendre en charge davantage`,System:`Système`,"Task actions for {title}":`Actions de tâche pour {title}`,"Task added: {title}":`Tâche ajoutée : {title}`,"Task errors":`Erreurs de tâche`,"Task finished":`Tâche terminée`,"Task list":`Liste des tâches`,"Task saved. Waiting for an available {agent} session.":`Tâche enregistrée. En attente d’une session {agent} disponible.`,Tasks:`Tâches`,"The PDF could not be opened: {error}":`Impossible d’ouvrir le PDF : {error}`,"The PDF review could not be loaded.":`Impossible de charger la révision du PDF.`,"The PDF review is taking longer than expected.":`La révision du PDF prend plus de temps que prévu.`,"The agent could not connect. Check its setup and try again.":`L’agent n’a pas pu se connecter. Vérifiez sa configuration et réessayez.`,"The assistant is fixing compilation…":`L’assistant corrige la compilation…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`Le navigateur et le serveur Papilot peuvent s’exécuter sur des ordinateurs différents. Les services en arrière-plan peuvent également utiliser un PATH ou un compte utilisateur différent de celui de votre terminal.`,"The connection is taking too long. Check your network and try again.":`La connexion prend trop de temps. Vérifiez votre réseau et réessayez.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`La version de développement nécessite au moins 2 Go d’espace disque disponible. Libérez de l’espace et réessayez.`,"The diff is too long to show in full.":`Le diff est trop long pour être affiché intégralement.`,"The file “{name}” is empty.":`Le fichier « {name} » est vide.`,"The first build is still running.":`La première compilation est toujours en cours.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`La dernière tentative de connexion n’a trouvé aucune interface CLI {command} exécutable dans l’environnement du serveur Papilot. Elle est peut-être installée à un autre emplacement ou pour un autre utilisateur.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`La dernière tentative de connexion n’a trouvé ni CURSOR_API_KEY ni identifiant Cursor SDK enregistré pour l’utilisateur exécutant Papilot. Se connecter à l’application de bureau ou à la CLI Cursor ne configure pas ce SDK.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`La dernière tentative de connexion n’a trouvé ni Claude Code ni identifiants API pris en charge dans l’environnement du serveur Papilot.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`La dernière tentative de connexion n’a trouvé ni ZHIPU_API_KEY ni ZAI_API_KEY dans l’environnement du serveur Papilot. Une connexion à Claude ou au site web GLM ne fournit pas ces clés.`,"The latest changes did not compile. This is the last PDF that did.":`Les dernières modifications n’ont pas pu être compilées. Voici le dernier PDF compilé avec succès.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`La dernière vérification de configuration a détecté cet agent. Reconnectez-vous pour actualiser son état en direct.`,"The manuscript did not compile.":`Le manuscrit n’a pas pu être compilé.`,"The merge stopped at conflicts.":`La fusion s’est arrêtée en raison de conflits.`,"The merge was abandoned.":`La fusion a été abandonnée.`,"The paper needs a little help":`L’article a besoin d’un peu d’aide`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`La position dans le nouveau PDF n’a pas pu être confirmée. Le texte d’origine et l’annotation sont conservés.`,"The request timed out and may still be processing. Check the task status before retrying.":`La requête a expiré et est peut-être toujours en cours de traitement. Vérifiez l’état de la tâche avant de réessayer.`,"The skill must contain instructions.":`La compétence doit contenir des instructions.`,"The update did not finish. Your current version is still available. You can retry here.":`La mise à jour ne s’est pas terminée. Votre version actuelle est toujours disponible. Vous pouvez réessayer ici.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`La mise à jour est prête. En attente de la fin des tâches et des compilations PDF avant de redémarrer.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`La version mise à jour n'a pas démarré ; Papilot utilise donc la version incluse dans l'application. Réessayez la mise à jour ou téléchargez la dernière application de bureau.`,"Their name, as others will see it":`Son nom, tel que les autres le verront`,Theme:`Thème`,"These keep the usual browser and text-editing behavior.":`Ceux-ci conservent le comportement habituel du navigateur et de l’édition de texte.`,"Third-party licenses":`Licences tierces`,"This PDF has no bookmarks.":`Ce PDF ne contient aucun signet.`,"This agent has not reported a model list. Its configured default can still be used.":`Cet agent n’a communiqué aucune liste de modèles. Son modèle par défaut configuré peut toujours être utilisé.`,"This browser cannot show notifications.":`Ce navigateur ne peut pas afficher de notifications.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`Ce navigateur ne prend pas en charge les clés d’accès. Ouvrez cette page dans une version récente de Safari, Chrome, Edge ou Firefox.`,"This browser could not enable notifications.":`Ce navigateur n’a pas pu activer les notifications.`,"This browser could not show the notification.":`Ce navigateur n’a pas pu afficher la notification.`,"This conversation has no manuscript changes.":`Cette conversation ne comporte aucune modification du manuscrit.`,"This file is not tracked by Git, so it cannot be recovered.":`Ce fichier n’est pas suivi par Git, il ne pourra donc pas être récupéré.`,"This invite link is incomplete. Copy the whole link and open it again.":`Ce lien d’invitation est incomplet. Copiez le lien entier et ouvrez-le à nouveau.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`Cette touche est réservée au navigateur ou à l’édition de texte. Choisissez un autre raccourci.`,"This model uses its own reasoning settings.":`Ce modèle utilise ses propres paramètres de raisonnement.`,"This paper":`Cet article`,"This paper may need XeLaTeX. Change the engine below and retry.":`Cet article nécessite peut-être XeLaTeX. Modifiez le moteur ci-dessous et réessayez.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`Cet article n’indique aucun fichier .bib avec {bibliography} ou {addbibresource}.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`Ce passage inclut des modifications antérieures qui n'ont pas été validées. Vous pouvez valider le résultat révisé ensemble, ou l'appliquer sans valider.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`Cette action supprime définitivement la tâche de Papilot, y compris sa conversation, son arbre de travail et ses fichiers de révision PDF. Les modifications non acceptées et les commentaires enregistrés seront perdus, et les décisions de révision ne pourront plus être annulées.`,"This skill changed on disk. Reload it before deleting.":`Cette compétence a été modifiée sur le disque. Rechargez-la avant de la supprimer.`,"This skill changed on disk. Reload it before saving.":`Cette compétence a été modifiée sur le disque. Rechargez-la avant de l’enregistrer.`,"This skill no longer exists. Refresh the list.":`Cette compétence n’existe plus. Actualisez la liste.`,"This skill was removed on disk. Reload the list before saving.":`Cette compétence a été supprimée du disque. Rechargez la liste avant d’enregistrer.`,"This step needs attention":`Cette étape requiert votre attention`,"This task did not change the manuscript. Read the answer in the chat.":`Cette tâche n’a pas modifié le manuscrit. Consultez la réponse dans la discussion.`,"This task is being deleted":`Cette tâche est en cours de suppression`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`Cette tâche est réservée jusqu’à la confirmation du nettoyage de son arbre de travail. Utilisez Réessayer la suppression si la connexion a été interrompue.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`Cette version nécessite la dernière application de bureau. Téléchargez-la depuis GitHub Releases.`,"This worktree’s HEAD is outside the displayed history.":`Le HEAD de cet arbre de travail se trouve en dehors de l’historique affiché.`,Title:`Titre`,Tools:`Outils`,Tracking:`Suivi`,"Type changed":`Type modifié`,"Typesetting and other remarks":`Composition et autres remarques`,"Typesetting with LaTeX, pass {n}…":`Composition avec LaTeX, passe {n}…`,Unavailable:`Indisponible`,"Uncommitted changes in the PDF":`Modifications non validées dans le PDF`,"Undefined citation":`Citation non définie`,"Undefined reference":`Référence non définie`,Undo:`Annuler`,"Undo review decision":`Annuler la décision de révision`,"Undo the last review decision or revert.":`Annuler la dernière décision de révision ou rétablir.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`Annuler la saisie, la suppression d’une annotation ou la dernière décision de révision, selon l’élément actif.`,"Unify terms, notation, spelling and references":`Uniformiser la terminologie, la notation, l’orthographe et les références`,Unknown:`Inconnu`,"Unlimited credits":`Crédits illimités`,"Unplaced suggestions":`Suggestions non placées`,"Unsaved changes":`Modifications non enregistrées`,"Unstage all changes":`Désindexer toutes les modifications`,"Unstage changes":`Désindexer les modifications`,"Unstage {path}":`Désindexer {path}`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`Les modifications non indexées seront définitivement perdues et les fichiers non suivis seront supprimés. Les modifications indexées seront conservées.`,"Unstaged changes are lost for good. Staged changes stay.":`Les modifications non indexées seront définitivement perdues. Les modifications indexées seront conservées.`,Untracked:`Non suivi`,"Untracked build output. Add to .gitignore adds:":`Fichiers générés non suivis. Ajouter à .gitignore ajoute :`,"Up to date":`À jour`,"Up to date with the remote.":`À jour avec le dépôt distant.`,"Update Papilot":`Mettre à jour Papilot`,"Update available":`Mise à jour disponible`,"Update channel":`Canal de mise à jour`,"Update failed":`Échec de la mise à jour`,"Update now":`Mettre à jour maintenant`,"Update ready":`Mise à jour prête`,"Update to {version}":`Mettre à jour vers {version}`,Updates:`Mises à jour`,"Updating…":`Mise à jour…`,"Upload failed. Please retry.":`Échec du téléversement. Veuillez réessayer.`,"Uploading…":`Téléversement…`,"Usage & limits":`Utilisation et limites`,"Usage limit":`Limite d’utilisation`,"Usage not reported":`Utilisation non communiquée`,"Use a hex color, like #2563EB.":`Utilisez une couleur hexadécimale, comme #2563EB.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`Utilisez des lettres minuscules, des chiffres et des tirets. Il s’agit aussi du nom de la commande /.`,"Use the passkey you created from your invite link.":`Utilisez la clé d’accès créée à partir de votre lien d’invitation.`,"Used for new tasks. Saved in this browser.":`Utilisé pour les nouvelles tâches. Enregistré dans ce navigateur.`,"User guide":`Guide d’utilisation`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`Utilise Claude Code ou le SDK Claude Agent avec ZHIPU_API_KEY ou ZAI_API_KEY.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`Utilise Claude Code s’il est installé, ou le SDK Claude Agent avec des identifiants d’API.`,"Uses DeepSeek Harness and the providers configured in dsh.":`Utilise DeepSeek Harness et les fournisseurs configurés dans dsh.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`Utilise GitHub Copilot CLI et sa connexion enregistrée ou le fournisseur configuré via ACP.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`Utilise Grok Build CLI via ACP avec sa connexion enregistrée ou les identifiants API configurés.`,"Uses Kimi Code CLI and its saved login through ACP.":`Utilise Kimi Code CLI et sa connexion enregistrée via ACP.`,"Uses OpenCode with the providers and models you have connected.":`Utilise OpenCode avec les fournisseurs et modèles que vous avez connectés.`,"Uses Qwen Code and its saved login through ACP.":`Utilise Qwen Code et sa connexion enregistrée via ACP.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`Utilise un Codex CLI local compatible. Papilot installe sa propre copie si nécessaire.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`Utilise le SDK Cursor avec CURSOR_API_KEY. Papilot installe le SDK lors de la première utilisation.`,"Uses the local Antigravity CLI and its saved Google login.":`Utilise l’outil local Antigravity CLI et sa connexion Google enregistrée.`,Verified:`Vérifié`,Version:`Version`,"Version history":`Historique des versions`,"View & help":`Affichage et aide`,"View changes for this note":`Voir les modifications pour cette annotation`,"View changes included in this commit":`Afficher les modifications incluses dans ce commit`,"View details":`Voir les détails`,"View installation, account, and usage":`Voir l’installation, le compte et l’utilisation`,"View {n} review suggestion":`Voir {n} suggestion de révision`,"View {n} review suggestions":`Voir {n} suggestions de révision`,"Viewed the PDF":`A consulté le PDF`,"Viewed the PDF: {places}":`A consulté le PDF : {places}`,"Visual style":`Style visuel`,"Wait for the PDF build to finish before deleting this task.":`Attendez la fin de la compilation du PDF avant de supprimer cette tâche.`,"Wait for the PDF to compile.":`Attendez la compilation du PDF.`,"Waiting for your passkey…":`En attente de votre clé d’accès…`,Warning:`Avertissement`,Warnings:`Avertissements`,"Weekly limit":`Limite hebdomadaire`,"What are we revising next?":`Que révisons-nous ensuite ?`,"What can invited people do?":`Que peuvent faire les personnes invitées ?`,"What changed since the last commit, to stage, revert and commit change by change":`Modifications depuis le dernier commit, à indexer, annuler et valider une par une`,"What does this skill help with?":`À quoi sert cette compétence ?`,"What is staged, in {n} file:":`Modifications indexées dans {n} fichier :`,"What is staged, in {n} files:":`Modifications indexées dans {n} fichiers :`,"What should change here?":`Que faut-il modifier ici ?`,"What should change in each color group?":`Que faut-il modifier dans chaque groupe de couleur ?`,"What should change in this group?":`Que faut-il modifier dans ce groupe ?`,"What this task accepted, in {n} file:":`Modifications acceptées par cette tâche dans {n} fichier :`,"What this task accepted, in {n} files:":`Modifications acceptées par cette tâche dans {n} fichiers :`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`Lorsqu’une modification ajoute ou modifie une entrée bibliographique, rechercher son titre, ses auteurs, son année et son DOI dans Crossref, DBLP et arXiv. Aucun autre élément de votre article n’est envoyé.`,"With review feedback":`Avec retours de révision`,Workspace:`Espace de travail`,"Workspace view":`Vue de l’espace de travail`,Worktrees:`Arbres de travail`,"Write a commit message for the chosen files with {agent}":`Rédiger un message de commit pour les fichiers sélectionnés avec {agent}`,"Write a note…":`Rédiger une annotation…`,"Write feedback on the current proposed change.":`Rédiger un retour sur la modification proposée actuelle.`,"Writing the PDF…":`Écriture du PDF…`,Year:`Année`,Yellow:`Jaune`,"You are offline. Your draft is kept in this browser.":`Vous êtes hors ligne. Votre brouillon est conservé dans ce navigateur.`,"You are using the latest version on this channel.":`Vous utilisez la dernière version sur ce canal.`,"You checked this entry yourself.":`Vous avez vérifié cette entrée vous-même.`,"You sent review feedback, {time}":`Vous avez envoyé des retours de révision, {time}`,"You, {time}":`Vous, {time}`,"Your note":`Votre annotation`,"Your paper compiled successfully. It is ready for editing.":`Votre article a été compilé avec succès. Il est prêt à être modifié.`,"Your review keyboard":`Votre clavier de révision`,Yours:`Les vôtres`,Zoom:`Zoom`,"Zoom in":`Zoom avant`,"Zoom in (⌘+)":`Zoom avant (⌘+)`,"Zoom out":`Zoom arrière`,"Zoom out (⌘−)":`Zoom arrière (⌘−)`,"added {time}":`ajouté {time}`,"another entry has the same key.":`une autre entrée utilise la même clé.`,"build error":`erreur de compilation`,clean:`propre`,detached:`détaché`,"detached HEAD":`HEAD détachée`,"edited {file}":`a modifié {file}`,"edited {n} files":`a modifié {n} fichiers`,"from {name}":`de {name}`,"it is not cited.":`elle n’est pas citée.`,"just now":`à l’instant`,"no record in Crossref, DBLP or arXiv matches it.":`aucune notice dans Crossref, DBLP ou arXiv ne correspond.`,nothing:`rien`,now:`maintenant`,"or select text to annotate":`ou sélectionnez du texte à annoter`,"p. {page}":`p. {page}`,"possibly the same work as {keys} (same title).":`probablement le même travail que {keys} (même titre).`,"ran {n} command":`a exécuté {n} commande`,"ran {n} commands":`a exécuté {n} commandes`,"resets in {hours} h {minutes} min":`réinitialisation dans {hours} h {minutes} min`,"resets in {minutes} min":`réinitialisation dans {minutes} min`,"resets now":`réinitialisation maintenant`,"resets {time}":`réinitialisation {time}`,small:`petit`,"the same work as {keys} (same DOI).":`le même travail que {keys} (même DOI).`,"used {n} tool":`a utilisé {n} outil`,"used {n} tools":`a utilisé {n} outils`,"used {time}":`utilisé {time}`,"viewed the PDF":`a consulté le PDF`,"{agent} conversation":`Conversation avec {agent}`,"{agent} details":`Détails de {agent}`,"{agent} finished":`{agent} a terminé`,"{agent} is requesting permission for this action.":`{agent} demande l’autorisation pour cette action.`,"{agent} is resolving…":`{agent} résout le problème…`,"{agent} is unavailable":`{agent} est indisponible`,"{agent} is waiting for your approval":`{agent} attend votre approbation`,"{agent} is working":`{agent} travaille`,"{agent} is working on this task":`{agent} travaille sur cette tâche`,"{agent} is working · new instructions run next":`{agent} travaille · les nouvelles instructions suivront`,"{agent} is writing a commit message…":`{agent} rédige un message de commit…`,"{agent} needs your input":`{agent} attend votre réponse`,"{agent} on the merge":`{agent} sur la fusion`,"{agent} usage":`Utilisation de {agent}`,"{agent} usage details":`Détails d’utilisation de {agent}`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`{agent} est introuvable sur cet ordinateur. Installez-le ou configurez-le, puis sélectionnez Reconnecter.`,"{ahead} ahead · {behind} behind":`{ahead} en avance · {behind} en retard`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} et {upstream} ont toutes deux été modifiées. La fusion intègre les commits distants.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) n’a aucune entrée avec cette clé.`,"{command} was not found by Papilot.":`{command} est introuvable par Papilot.`,"{current} of {total}":`{current} sur {total}`,"{differences} (record: {url}).":`{differences} (notice : {url}).`,"{field} is {bib} but {source} has {record}":`{field} vaut {bib} mais {source} indique {record}`,"{field}: {bib} here, {record} in {source}":`{field} : {bib} ici, {record} dans {source}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} vous a invité sur Papilot. Vous apparaîtrez sous le nom de {name}.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} vous a invité à travailler sur {papers}. Vous apparaîtrez sous le nom de {name}.`,"{key} ({place}): {problems}":`{key} ({place}) : {problems}`,"{name} (you)":`{name} (vous)`,"{name} sent review feedback, {time}":`{name} a envoyé des commentaires de révision, {time}`,"{name} used":`{name} utilisé`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n} acceptés`,"{n} active task":`{n} tâche active`,"{n} active tasks":`{n} tâches actives`,"{n} build file":`{n} fichier de compilation`,"{n} build files":`{n} fichiers de compilation`,"{n} change to decide":`{n} modification à trancher`,"{n} change to review":`{n} modification à réviser`,"{n} changed":`{n} modifiés`,"{n} changes to decide":`{n} modifications à trancher`,"{n} changes to review":`{n} modifications à réviser`,"{n} checked by you":`{n} vérifiés par vous`,"{n} comment":`{n} commentaire`,"{n} comments":`{n} commentaires`,"{n} compilation error":`{n} erreur de compilation`,"{n} compilation errors":`{n} erreurs de compilation`,"{n} compilation warning":`{n} avertissement de compilation`,"{n} compilation warnings":`{n} avertissements de compilation`,"{n} conflicts":`{n} conflits`,"{n} could not be checked":`{n} n'ont pas pu être vérifiés`,"{n} credits":`{n} crédits`,"{n} differ":`{n} diffèrent`,"{n} entries":`{n} entrées`,"{n} entry":`{n} entrée`,"{n} failed":`{n} en échec`,"{n} file staged":`{n} fichier indexé`,"{n} file still has conflicts.":`{n} fichier présente encore des conflits.`,"{n} files staged":`{n} fichiers indexés`,"{n} files still have conflicts.":`{n} fichiers présentent encore des conflits.`,"{n} location":`{n} emplacement`,"{n} locations":`{n} emplacements`,"{n} new commit on {upstream}.":`{n} nouveau commit sur {upstream}.`,"{n} new commits on {upstream}.":`{n} nouveaux commits sur {upstream}.`,"{n} not found":`{n} introuvables`,"{n} notes on the PDF":`{n} annotations sur le PDF`,"{n} rejected":`{n} rejetés`,"{n} review update not sent yet":`{n} mise à jour de révision non envoyée`,"{n} review update will be sent with this message":`{n} mise à jour de révision sera envoyée avec ce message`,"{n} review updates not sent yet":`{n} mises à jour de révision non envoyées`,"{n} review updates will be sent with this message":`{n} mises à jour de révision seront envoyées avec ce message`,"{n} staged":`{n} indexés`,"{n} undone":`{n} annulés`,"{n} unstaged":`{n} non indexés`,"{n} untracked":`{n} non suivis`,"{n} verified":`{n} vérifiés`,"{n}-day limit":`Limite sur {n} jours`,"{n}-hour limit":`Limite sur {n} heures`,"{n}-minute limit":`Limite sur {n} minutes`,"{n}d":`{n} j`,"{n}h":`{n} h`,"{n}m":`{n} min`,"{selected} / {total} locations selected":`{selected} / {total} emplacements sélectionnés`,"{shown} of {total} components":`{shown} composants sur {total}`,"{sources} could not be reached.":`Impossible de joindre {sources}.`,"{time} ago":`il y a {time}`,"{title} PDF change review":`Révision des modifications du PDF {title}`,"{used}% used":`{used} % utilisé`},ae={"A commit is already in progress. Wait for it to finish.":`Un commit est déjà en cours. Attendez qu’il se termine.`,"A commit is in progress. Try again when it finishes.":`Un commit est en cours. Réessayez lorsqu’il sera terminé.`,"A review action is already in progress. Wait for it to finish.":`Une action de révision est déjà en cours. Attendez qu’elle se termine.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`Une annotation PDF sélectionnée est déjà en cours d’envoi. Attendez la fin de la création de cette tâche.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`Une annotation PDF sélectionnée n’est plus disponible. Actualisez le manuscrit et réessayez.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`La révision par IA accepte uniquement des instructions de révision. Démarrez une tâche d’édition pour envoyer des annotations, des compétences ou des pièces jointes.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`La révision par IA crée uniquement des annotations PDF. Elle ne peut pas publier de modifications du manuscrit.`,"AI review has no manuscript changes to apply.":`La révision IA n'a aucune modification du manuscrit à appliquer.`,"AI review has no manuscript changes to deliver.":`La révision par IA n’a aucune modification du manuscrit à livrer.`,"AI review uses manuscript PDF notes, not change decisions.":`La révision par IA utilise les annotations PDF du manuscrit, et non les décisions de modification.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`La révision par IA utilise le PDF du manuscrit. Démarrez une tâche d’édition distincte pour envoyer des annotations ou des pièces jointes.`,"Accepted changes are already in the manuscript.":`Les modifications acceptées sont déjà dans le manuscrit.`,"An AI review comment is invalid. Ask the reviewer to retry.":`Un commentaire de révision par IA est invalide. Demandez au réviseur de réessayer.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`Un commentaire de révision par IA indique ses lignes PDF dans l’ordre inverse. Demandez au réviseur de placer le début avant la fin.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`Un commentaire de révision par IA renvoie à un emplacement PDF inconnu. Demandez au réviseur de réessayer avec les identifiants de ligne fournis.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`Un commentaire de révision par IA s’étend sur plusieurs pages PDF. Demandez au réviseur de l’ancrer sur une seule page.`,"Another Papilot instance is already updating.":`Une autre instance de Papilot est déjà en cours de mise à jour.`,"Answer every question before submitting.":`Répondez à chaque question avant de valider.`,"Attachment not found.":`Pièce jointe introuvable.`,"Attachments must total 100 MB or less.":`La taille totale des pièces jointes ne doit pas dépasser 100 Mo.`,"Check for a newer release before updating.":`Vérifiez la disponibilité d’une version plus récente avant de mettre à jour.`,"Check out a branch before pushing.":`Basculez sur une branche avant de pousser les modifications.`,"Check the task status before pausing this turn.":`Vérifiez l’état de la tâche avant de mettre ce tour en pause.`,"Check the task status before sending more instructions.":`Vérifiez l’état de la tâche avant d’envoyer d’autres instructions.`,"Choose Codex, Claude or GLM for AI review.":`Choisissez Codex, Claude ou GLM pour la révision par IA.`,"Choose a ZIP smaller than 64 MB.":`Choisissez un fichier ZIP de moins de 64 Mo.`,"Choose a file with a valid name.":`Choisissez un fichier portant un nom valide.`,"Choose a folder smaller than 64 MB.":`Choisissez un dossier de moins de 64 Mo.`,"Choose a supported LaTeX engine.":`Choisissez un moteur LaTeX pris en charge.`,"Choose a valid update channel.":`Choisissez un canal de mise à jour valide.`,"Choose an available model for this agent.":`Choisissez un modèle disponible pour cet agent.`,"Choose an entry to confirm.":`Choisissez une entrée à confirmer.`,"Choose an existing TeX main file.":`Choisissez un fichier principal TeX existant.`,"Choose between 1 and 5,000 files.":`Choisissez entre 1 et 5 000 fichiers.`,"Choose one folder or ZIP.":`Choisissez un seul dossier ou fichier ZIP.`,"Choose one of the offered answers.":`Choisissez l’une des réponses proposées.`,"Choose stage, unstage or revert.":`Choisissez d’indexer, de désindexer ou d’annuler.`,"Choose whether to archive or restore the task.":`Choisissez d’archiver ou de restaurer la tâche.`,"Claude Code did not list its models.":`Claude Code n’a pas listé ses modèles.`,"Claude Code exited before listing its models.":`Claude Code s’est arrêté avant de lister ses modèles.`,"Claude has not reported usage yet.":`Claude n’a pas encore communiqué son utilisation.`,"Codex disconnected. Resume the task before retrying.":`Codex s’est déconnecté. Reprenez la tâche avant de réessayer.`,"Codex is not connected.":`Codex n’est pas connecté.`,"Commit the task first, then push from Git.":`Validez d'abord la tâche, puis poussez depuis Git.`,"Confirm permanent task deletion before continuing.":`Confirmez la suppression définitive de la tâche avant de continuer.`,"Could not check for updates.":`Impossible de rechercher les mises à jour.`,"Could not check for updates. Try again when connected.":`Impossible de vérifier les mises à jour. Réessayez une fois connecté.`,"Could not complete the environment checks. Please try again.":`Impossible de terminer les vérifications de l’environnement. Veuillez réessayer.`,"Could not read the LaTeX installation.":`Impossible de lire l’installation LaTeX.`,"Could not restart the background service.":`Impossible de redémarrer le service en arrière-plan.`,"Deletion is already in progress. Wait for it to finish.":`La suppression est déjà en cours. Attendez qu’elle se termine.`,"Describe the revision, choose a skill, or add a PDF note.":`Décrivez la modification, choisissez une compétence ou ajoutez une annotation PDF.`,"Describe what to do with each selected color group.":`Décrivez ce qu’il faut faire pour chaque groupe de couleur sélectionné.`,"Download desktop updates from GitHub Releases.":`Téléchargez les mises à jour de l'application de bureau depuis GitHub Releases.`,"Enter a folder path.":`Saisissez le chemin d’un dossier.`,"Enter a paper name under 120 characters.":`Saisissez un nom d’article de moins de 120 caractères.`,"Fast mode is not available for this model.":`Le mode rapide n’est pas disponible pour ce modèle.`,"Files must be 25 MB or smaller.":`Les fichiers ne doivent pas dépasser 25 Mo.`,"Finish or abort the merge before committing other changes.":`Terminez ou annulez la fusion avant de valider d’autres modifications.`,"Finish or abort the merge before discarding changes.":`Terminez ou abandonnez la fusion avant d’annuler les modifications.`,"Finish or abort the merge before staging other changes.":`Terminez ou annulez la fusion avant d’indexer d’autres modifications.`,"Finish or abort the merge first.":`Terminez ou annulez d’abord la fusion.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`Terminez ou abandonnez la fusion dans le panneau Git avant d’accepter, de refuser ou d’annuler des modifications.`,"GLM does not report usage to Papilot.":`GLM ne communique pas son utilisation à Papilot.`,"Group instructions must refer to selected PDF notes.":`Les instructions de groupe doivent faire référence aux annotations PDF sélectionnées.`,"Images must be 5 MB or smaller.":`Les images ne doivent pas dépasser 5 Mo.`,"Import not found.":`Importation introuvable.`,"Invalid annotation group.":`Groupe d’annotations invalide.`,"Invalid approval decision.":`Décision d’approbation non valide.`,"Invalid development revision.":`Révision de développement non valide.`,"Invalid development version.":`Version de développement non valide.`,"Invalid diagnostic report.":`Rapport de diagnostic non valide.`,"Invalid file path in upload.":`Chemin de fichier non valide dans le téléversement.`,"Invalid file path.":`Chemin de fichier non valide.`,"Invalid model.":`Modèle invalide.`,"Invalid note location.":`Emplacement d’annotation invalide.`,"Invalid reasoning effort.":`Effort de raisonnement invalide.`,"Invalid release information.":`Informations de version non valides.`,"Invalid release version.":`Version de publication non valide.`,"Invalid save action.":`Action d'enregistrement invalide.`,"Invalid task ID.":`Identifiant de tâche invalide.`,"Invalid update activation.":`Activation de la mise à jour non valide.`,"Invalid upload data.":`Données de téléversement non valides.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`Gérez cette suggestion dans sa tâche de révision par IA, ou copiez-la d’abord dans le manuscrit.`,"Missing update restart job.":`Tâche de redémarrage de mise à jour manquante.`,"No file has conflict markers left. Commit the merge.":`Aucun fichier ne contient plus de marqueurs de conflit. Validez la fusion par commit.`,"No merge is in progress.":`Aucune fusion n’est en cours.`,"No such file.":`Fichier introuvable.`,"None of the chosen files is build output that can be ignored.":`Aucun des fichiers choisis n’est un fichier généré pouvant être ignoré.`,"Not found":`Introuvable`,"Note not found.":`Annotation introuvable.`,"Only the model and its settings can be changed.":`Seuls le modèle et ses paramètres peuvent être modifiés.`,"Only the owner of this Papilot can do this.":`Seul le propriétaire de ce Papilot peut effectuer cette action.`,"Open Papilot at its public address.":`Ouvrez Papilot à son adresse publique.`,"Paper name is too long.":`Le nom de l’article est trop long.`,"Paper project not found.":`Projet d’article introuvable.`,"Papilot did not finish shutting down.":`Papilot n’a pas terminé sa fermeture.`,"Papilot is restarting after an update. Please wait a moment.":`Papilot redémarre après une mise à jour. Veuillez patienter un instant.`,"Papilot restarted. Retry compilation to continue this import.":`Papilot a redémarré. Relancez la compilation pour poursuivre cette importation.`,"Pause Codex before building a review.":`Mettez Codex en pause avant de compiler une révision.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`Mettez la tâche en pause et attendez la fin de son travail en cours ou de son action de révision avant de la supprimer. Résolvez d’abord toute action incertaine.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`Mettez la tâche en pause avant d’accepter, de refuser ou d’annuler des modifications. Attendez la fin de toute compilation du PDF.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`Mettez en pause les tâches actives de cet article et attendez la fin du travail en cours avant de modifier son chemin ou de le supprimer. Résolvez d’abord toute action incertaine.`,"Resolve the merge conflicts in the selected files before committing.":`Résolvez les conflits de fusion dans les fichiers sélectionnés avant de valider.`,"Restore this suggestion before copying it.":`Restaurez cette suggestion avant de la copier.`,"Retry deletion to confirm this task was removed.":`Réessayez la suppression pour confirmer que cette tâche a été retirée.`,"Retry the pending delivery before sending more instructions.":`Réessayez l’envoi en attente avant d’envoyer d’autres instructions.`,"Review resource not found.":`Ressource de révision introuvable.`,"Select a folder containing the paper.":`Sélectionnez un dossier contenant l’article.`,"Select a valid paper to check.":`Sélectionnez un article valide à vérifier.`,"Select a valid paper.":`Sélectionnez un article valide.`,"Select an existing review round and either the before or after PDF.":`Sélectionnez un cycle de révision existant ainsi que le PDF avant ou après.`,"Select at least one change.":`Sélectionnez au moins une modification.`,"Select at least one changed file to commit.":`Sélectionnez au moins un fichier modifié à valider.`,"Select at least one changed file.":`Sélectionnez au moins un fichier modifié.`,"Select text or mark a region on the page first.":`Sélectionnez d’abord du texte ou délimitez une zone sur la page.`,"Select the root directory of the Git repository.":`Sélectionnez le répertoire racine du dépôt Git.`,"Select unsent PDF notes for this task.":`Sélectionnez des annotations PDF non envoyées pour cette tâche.`,"Select up to 10 valid attachments.":`Sélectionnez jusqu’à 10 pièces jointes valides.`,"Select valid PDF notes for this task.":`Sélectionnez des annotations PDF valides pour cette tâche.`,"Select valid review notes.":`Sélectionnez des annotations de révision valides.`,"Send attachments with a message, separately from review feedback.":`Envoyez les pièces jointes avec un message, séparément des retours de révision.`,"Service tiers are only available for Codex.":`Les niveaux de service sont uniquement disponibles pour Codex.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`Définissez PAPILOT_ACCOUNT_ORIGIN sur l’URL publique avant d’inviter des personnes.`,"Sign in to continue.":`Connectez-vous pour continuer.`,"Sign-in is not set up on this Papilot.":`La connexion n’est pas configurée sur ce Papilot.`,"Stage at least one change to commit.":`Indexez au moins une modification à valider.`,"Stage at least one change.":`Indexez au moins une modification.`,"Start a new task to run the AI review skill on the current PDF.":`Démarrez une nouvelle tâche pour exécuter la compétence de révision par IA sur le PDF actuel.`,"Start or resume the thread before starting a turn.":`Démarrez ou reprenez le fil avant de lancer un tour.`,"Task not found.":`Tâche introuvable.`,"That file has no uncommitted changes.":`Ce fichier ne comporte aucune modification non validée.`,"That page is not part of the manuscript.":`Cette page ne fait pas partie du manuscrit.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`La révision par IA n’a pas renvoyé d’annotations valides. Demandez-lui de réessayer au format JSON requis.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`La réponse de la révision par IA est incomplète ou trop longue. Demandez au réviseur de réessayer.`,"The PDF copy for this review is unavailable. Start a new AI review.":`La copie PDF de cette révision est indisponible. Lancez une nouvelle révision par IA.`,"The PDF is building. Wait for this build to finish.":`Le PDF est en cours de compilation. Attendez la fin de cette compilation.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`L’instantané PDF de cette révision n’est pas disponible. Lancez une nouvelle révision par l’IA.`,"The ZIP expands beyond 64 MB or 5,000 files.":`Le fichier ZIP dépasse 64 Mo ou 5 000 fichiers après extraction.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`La compilation de développement nécessite au moins 2 Go d’espace disque libre. Libérez de l’espace et réessayez.`,"The development checkout does not match the requested commit.":`La copie de travail de développement ne correspond pas au commit demandé.`,"The development checkout does not match the requested version.":`La copie de travail de développement ne correspond pas à la version demandée.`,"The downloaded package does not match the requested release.":`Le paquet téléchargé ne correspond pas à la version demandée.`,"The downloaded release is incomplete.":`La version téléchargée est incomplète.`,"The manuscript changed while copying this suggestion. Try again.":`Le manuscrit a été modifié pendant la copie de cette suggestion. Réessayez.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`Impossible d’installer la nouvelle version. Vérifiez la connexion et l’espace disque disponible, puis réessayez.`,"The new version did not pass its startup check. Your current version is still running.":`La nouvelle version a échoué à la vérification de démarrage. Votre version actuelle est toujours en cours d’exécution.`,"The new version did not restart successfully.":`La nouvelle version n’a pas redémarré correctement.`,"The owner cannot be removed.":`Le propriétaire ne peut pas être retiré.`,"The owner sees every paper.":`Le propriétaire voit tous les articles.`,"The paper configuration must contain a JSON object.":`La configuration de l’article doit contenir un objet JSON.`,"The paper configuration must not be a symbolic link.":`La configuration de l’article ne doit pas être un lien symbolique.`,"The passkey could not be created. Try again.":`La clé d’accès n’a pas pu être créée. Réessayez.`,"The request origin does not match.":`L’origine de la requête ne correspond pas.`,"The review action is still being checked. Wait for it to finish.":`L’action de révision est toujours en cours de vérification. Attendez qu’elle se termine.`,"The review could not be loaded. Try again.":`Impossible de charger la révision. Réessayez.`,"The review engine could not confirm this action. Check again when it is available.":`Le moteur de révision n’a pas pu confirmer cette action. Vérifiez à nouveau lorsqu’il sera disponible.`,"The review engine could not confirm this action. Select Check status before continuing.":`Le moteur de révision n’a pas pu confirmer cette action. Sélectionnez Vérifier l’état avant de continuer.`,"The review engine could not confirm this task’s cleanup status.":`Le moteur de révision n’a pas pu confirmer l’état de nettoyage de cette tâche.`,"The review engine did not confirm task deletion.":`Le moteur de révision n’a pas confirmé la suppression de la tâche.`,"The review engine returned an unexpected response. Select Check status before continuing.":`Le moteur de révision a renvoyé une réponse inattendue. Sélectionnez Vérifier l’état avant de continuer.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`Le dépôt sélectionné ne contient pas les arbres de travail des tâches de cet article. Sélectionnez le dépôt avec ses tâches existantes ou ajoutez-le comme un article distinct.`,"The server is shutting down.":`Le serveur est en cours d’arrêt.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`Le serveur a redémarré et a interrompu l’échange précédent. Continuez dans la même conversation.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`Le serveur a redémarré avant la confirmation d’une action de révision. Sélectionnez Vérifier l’état avant de continuer.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`Le serveur a redémarré pendant la suppression. Réessayez la suppression pour confirmer le nettoyage.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`Le serveur a redémarré pendant la génération du PDF. Vérifiez la révision et recompilez-la si nécessaire.`,"The task was paused before these instructions were queued. Your draft has been kept.":`La tâche a été mise en pause avant la mise en file d’attente de ces instructions. Votre brouillon a été conservé.`,"The update download timed out.":`Le téléchargement de la mise à jour a expiré.`,"The update restart helper did not start.":`L’utilitaire de redémarrage de mise à jour n’a pas démarré.`,"The update was interrupted. Your current installation is still available; retry the update.":`La mise à jour a été interrompue. Votre installation actuelle est toujours disponible ; relancez la mise à jour.`,"There is no compilation log yet.":`Il n’y a pas encore de journal de compilation.`,"There is no new review feedback to send.":`Il n’y a aucun nouveau retour de révision à envoyer.`,"This PDF has no selectable text to review.":`Ce PDF ne contient aucun texte sélectionnable à réviser.`,"This PDF is too long for one AI review (180,000 characters maximum).":`Ce PDF est trop long pour une seule révision par l’IA (180 000 caractères maximum).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`Cette adresse est réservée à votre tailnet. Les personnes extérieures se connectent via PAPILOT_ACCOUNT_ORIGIN.`,"This agent does not report usage.":`Cet agent ne communique pas son utilisation.`,"This attachment is already being sent to another task.":`Cette pièce jointe est déjà en cours d’envoi vers une autre tâche.`,"This attachment is not available for this task.":`Cette pièce jointe n’est pas disponible pour cette tâche.`,"This branch does not track a remote branch yet.":`Cette branche ne suit pas encore de branche distante.`,"This comparison is out of date. Refresh the page.":`Cette comparaison n’est plus à jour. Actualisez la page.`,"This device is no longer signed in.":`Cet appareil n’est plus connecté.`,"This entry is no longer among the changes. Refresh the page.":`Cette entrée ne figure plus parmi les modifications. Actualisez la page.`,"This entry is no longer in the bibliography. Refresh the panel.":`Cette entrée ne figure plus dans la bibliographie. Actualisez le panneau.`,"This file is empty.":`Ce fichier est vide.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`Ce dossier appartient à un dépôt Git parent. Sélectionnez son dossier racine ou téléversez une copie.`,"This image format is not supported.":`Ce format d’image n’est pas pris en charge.`,"This invite link has expired or was already used. Ask for a new one.":`Ce lien d’invitation a expiré ou a déjà été utilisé. Demandez-en un nouveau.`,"This manuscript preview is out of date. Refresh it and try again.":`Cet aperçu du manuscrit n’est plus à jour. Actualisez-le et réessayez.`,"This model does not support that reasoning effort.":`Ce modèle ne prend pas en charge cet effort de raisonnement.`,"This note has already been sent.":`Cette annotation a déjà été envoyée.`,"This note has been deleted. Undo the deletion first.":`Cette annotation a été supprimée. Annulez d’abord sa suppression.`,"This note is being sent. Wait for the task to finish creating.":`Cette annotation est en cours d’envoi. Attendez la fin de la création de la tâche.`,"This page has expired. Refresh it and try again.":`Cette page a expiré. Actualisez-la et réessayez.`,"This paper is already added. Open it from the paper list.":`Cet article a déjà été ajouté. Ouvrez-le depuis la liste des articles.`,"This paper is being updated. Please retry in a moment.":`Cet article est en cours de mise à jour. Veuillez réessayer dans un instant.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`Ce passage n’a pas pu être localisé de manière fiable dans le manuscrit actuel. La suggestion reste dans la tâche de révision.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`Cette clé d’accès n’a pas pu vous connecter. Demandez une nouvelle invitation au propriétaire si elle a été supprimée.`,"This person is no longer in Papilot.":`Cette personne n’est plus dans Papilot.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`Ce dépôt n’a pas encore de commit. Effectuez un premier commit pour comparer les modifications ultérieures dans le PDF.`,"This repository has no remote.":`Ce dépôt n’a aucun dépôt distant.`,"This repository is already added as another paper.":`Ce dépôt est déjà ajouté en tant qu’autre article.`,"This request ID is already in use by another task.":`Cet identifiant de requête est déjà utilisé par une autre tâche.`,"This request has ended or the connection has restarted.":`Cette requête est terminée ou la connexion a redémarré.`,"This request has ended.":`Cette requête est terminée.`,"This review page has expired. Refresh it and try again.":`Cette page de révision a expiré. Actualisez-la et réessayez.`,"This review task does not belong to this workspace.":`Cette tâche de révision n’appartient pas à cet espace de travail.`,"This suggestion does not belong to this review task.":`Cette suggestion n’appartient pas à cette tâche de révision.`,"This suggestion was ignored while copying. Restore it first.":`Cette suggestion a été ignorée lors de la copie. Restaurez-la d’abord.`,"This task already applies accepted changes to the working directory.":`Cette tâche applique déjà les modifications acceptées au répertoire de travail.`,"This task already has queued instructions. Wait or pause it first.":`Cette tâche a déjà des instructions en file d’attente. Attendez ou mettez-la d’abord en pause.`,"This task has no accepted changes left to commit.":`Cette tâche n’a plus de modifications acceptées à valider par commit.`,"This task is being created. Refresh in a moment.":`Cette tâche est en cours de création. Actualisez dans un instant.`,"This task is being deleted.":`Cette tâche est en cours de suppression.`,"This task is being deleted. Retry deletion to finish cleanup.":`Cette tâche est en cours de suppression. Réessayez la suppression pour terminer le nettoyage.`,"This task is being deleted. Your instructions were not queued.":`Cette tâche est en cours de suppression. Vos instructions n’ont pas été mises en file d’attente.`,"This task is busy. Wait for it to finish or pause it first.":`Cette tâche est occupée. Attendez qu’elle se termine ou mettez-la d’abord en pause.`,"This task is not an AI review.":`Cette tâche n’est pas une révision par IA.`,"This task was deleted. Create a new task instead.":`Cette tâche a été supprimée. Créez plutôt une nouvelle tâche.`,"Too many attempts. Wait a minute and try again.":`Trop de tentatives. Patientez une minute et réessayez.`,"Too many open Papilot tabs. Close one and try again.":`Trop d’onglets Papilot sont ouverts. Fermez-en un et réessayez.`,"Unknown Git action.":`Action Git inconnue.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`Les pièces jointes inutilisées ont atteint 500 Mo. Supprimez des pièces jointes de vos brouillons avant d’en téléverser d’autres.`,"Upload a file as binary data.":`Téléversez un fichier sous forme de données binaires.`,"Wait for repository preparation to finish.":`Patientez jusqu’à la fin de la préparation du dépôt.`,"Wait for task creation to finish before deleting it.":`Attendez la fin de la création de la tâche avant de la supprimer.`,"Wait for the current Git operation before sending more instructions.":`Attendez la fin de l’opération Git en cours avant d’envoyer d’autres instructions.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`Attendez la fin de la compilation du PDF en cours, puis lancez la compétence de révision par IA.`,"Wait for the current delivery before sending more instructions.":`Attendez la fin de l’envoi en cours avant d’envoyer d’autres instructions.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`Attendez la fin de la compilation du PDF du manuscrit actuel, puis copiez à nouveau la suggestion.`,"Wait for the current review action before building a review.":`Attendez la fin de l’action de révision en cours avant de compiler une révision.`,"Wait for the current review action before committing.":`Attendez la fin de l’action de révision en cours avant d’effectuer le commit.`,"Wait for the current update to finish before changing channels.":`Attendez la fin de la mise à jour en cours avant de changer de canal.`,"Wait for the task and review actions to finish before applying changes.":`Attendez la fin de la tâche et des actions de révision avant d'appliquer les modifications.`,"Wait for the task and review actions to finish before choosing a destination.":`Attendez la fin de la tâche et des actions de révision avant de choisir une destination.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`Attendez la fin de la compilation du PDF de cet article avant de modifier son chemin d’accès ou de le supprimer.`,"ZIP links and special files are not supported.":`Les liens et fichiers spéciaux dans les archives ZIP ne sont pas pris en charge.`,"npm is unavailable to Papilot.":`npm n’est pas disponible pour Papilot.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`Le service de comparaison PDF est inaccessible. Vos modifications sont enregistrées. Sélectionnez « Vérifier le statut » pour récupérer la compilation existante.`},oe={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`Puede que falte un paquete, una fuente o un archivo fuente. Consulta los detalles a continuación, restaura el archivo que falta o pide ayuda.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`Una llave de acceso inicia sesión con Face ID, Touch ID, Windows Hello o tu teléfono. Papilot nunca ve una contraseña.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`Una habilidad con el mismo ID tiene prioridad aquí: este artículo, luego global y luego integrada.`,"A skill with this ID already exists in this location.":`Ya existe una habilidad con este ID en esta ubicación.`,"A task needs attention":`Una tarea requiere atención`,"A workspace for your papers.":`Un espacio de trabajo para tus artículos.`,"AI is resolving conflicts…":`La IA está resolviendo conflictos…`,"AI needs your input":`La IA necesita tu intervención`,"AI review":`Revisión por IA`,"AI suggestion":`Sugerencia de IA`,"AI suggestion {n}":`Sugerencia de IA {n}`,"AI suggestions":`Sugerencias de IA`,"Abort merge":`Cancelar fusión`,"Aborting…":`Cancelando…`,"About Papilot":`Acerca de Papilot`,Accent:`Énfasis`,"Accept change":`Aceptar cambio`,"Accept the current proposal. In Changes, stage or unstage it.":`Aceptar la propuesta actual. En Cambios, prepararla o quitarla de preparación.`,Accepted:`Aceptado`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`Los cambios aceptados en tu manuscrito se mantienen. Las demás tareas no se ven afectadas.`,"Access to all papers":`Acceso a todos los artículos`,Account:`Cuenta`,"Add a paper":`Añadir un artículo`,"Add a passkey":`Añadir una llave de acceso`,"Add all to task":`Añadir todo a la tarea`,"Add and fix later":`Añadir y corregir más tarde`,"Add files or skills":`Añadir archivos o habilidades`,"Add files…":`Añadir archivos…`,"Add instructions to the selected color groups above.":`Añade instrucciones a los grupos de colores seleccionados arriba.`,"Add note":`Añadir anotación`,"Add overall instructions (optional)":`Añadir instrucciones generales (opcional)`,"Add paper":`Añadir artículo`,"Add paper…":`Añadir artículo…`,"Add skill":`Añadir habilidad`,"Add to .gitignore":`Añadir a .gitignore`,"Add to group":`Añadir al grupo`,"Add to {group}":`Añadir a {group}`,"Add your first paper":`Añade tu primer artículo`,Added:`Añadido`,"Added to task: {n}":`Añadido a la tarea: {n}`,"Added {n} pattern to .gitignore.":`Se añadió {n} patrón a .gitignore.`,"Added {n} patterns to .gitignore.":`Se añadieron {n} patrones a .gitignore.`,"Address reviewers":`Responder a los revisores`,"Address {n} PDF notes":`Atender {n} anotaciones del PDF`,Advanced:`Avanzado`,"Agent configuration":`Configuración de agentes`,"Agent settings":`Ajustes del agente`,Agents:`Agentes`,All:`Todas`,"All entries":`Todas las entradas`,"All skills":`Todas las habilidades`,"Allow this action":`Permitir esta acción`,"Already set up?":`¿Ya está configurado?`,"Already used for {action}. Choose another shortcut.":`Ya se usa para {action}. Elige otro atajo.`,"Always light":`Siempre claro`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`Una variable de entorno definida en una terminal nueva no llega a un servidor que ya está en ejecución. Reinicia Papilot con las credenciales; volver a conectar por sí solo no puede cambiar su entorno.`,"Annotation group color":`Color del grupo de anotaciones`,"Annotation groups":`Grupos de anotaciones`,"Another entry has the same key.":`Otra entrada tiene la misma clave.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity abre imágenes mediante sus herramientas de archivos. Para introducir imágenes directamente, elige Codex o Claude.`,Appearance:`Apariencia`,Application:`Aplicación`,"Applied to manuscript":`Aplicado al manuscrito`,Apply:`Aplicar`,"Apply file changes":`Aplicar cambios de archivos`,"Apply to working directory":`Aplicar al directorio de trabajo`,"Apply to workspace":`Aplicar al espacio de trabajo`,"Apply without committing":`Aplicar sin confirmar`,"Applying…":`Aplicando…`,"Approval requests":`Solicitudes de aprobación`,"Approve this action":`Aprobar esta acción`,Archive:`Archivar`,"Archive task":`Archivar tarea`,"Archived task":`Tarea archivada`,"Archived tasks":`Tareas archivadas`,"Ask a question or request changes…":`Haz una pregunta o solicita cambios…`,"Ask an agent to look into {n} problem":`Pedir a un agente que revise {n} problema`,"Ask an agent to look into {n} problems":`Pedir a un agente que revise {n} problemas`,"Ask for another review of this PDF version…":`Solicitar otra revisión de esta versión del PDF…`,"Attach up to 10 files per message.":`Adjunta hasta 10 archivos por mensaje.`,Attachments:`Archivos adjuntos`,"Attachments must total 100 MB or less.":`Los archivos adjuntos no deben superar los 100 MB en total.`,Authors:`Autores`,"Available levels depend on the selected model.":`Los niveles disponibles dependen del modelo seleccionado.`,"Available models":`Modelos disponibles`,"Awaiting changes":`Esperando cambios`,Background:`Fondo`,"Bare repository":`Repositorio bare`,"BibTeX cannot read it ({error}).":`BibTeX no puede leerlo ({error}).`,"BibTeX cannot read it: {error}":`BibTeX no puede leerlo: {error}`,Book:`Libro`,Branch:`Rama`,"Bring your collaborators in":`Invita a tus colaboradores`,"Browser default ({language})":`Predeterminado del navegador ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`Los navegadores muestran notificaciones solo en HTTPS o localhost. Abre Papilot en una dirección segura para usarlas.`,"Build failed · sent to {agent}":`Error de compilación · enviado a {agent}`,"Built-in":`Integrada`,Cancel:`Cancelar`,"Change shortcut: {action}":`Cambiar atajo: {action}`,"Change {n}":`Cambio {n}`,"Changed files in {branch}":`Archivos modificados en {branch}`,Changelog:`Registro de cambios`,Changes:`Cambios`,"Changes apply to the next turn.":`Los cambios se aplican en el siguiente turno.`,"Changes in {path}":`Cambios en {path}`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`Cambios muestra solo las secciones modificadas y se abre más rápido. PDF muestra cada cambio en su lugar dentro de todo el artículo y tarda más en artículos largos. El selector en una revisión cambia solo esa revisión.`,"Change…":`Cambiar…`,Chart:`Gráfico`,Chat:`Chat`,"Chat (reply needed)":`Chat (requiere respuesta)`,"Chat only":`Solo chat`,"Check again":`Comprobar de nuevo`,"Check for updates":`Buscar actualizaciones`,"Check for updates to see the latest version.":`Busca actualizaciones para ver la versión más reciente.`,"Check math":`Revisar matemáticas`,"Check online":`Comprobar en línea`,"Check references online":`Comprobar referencias en línea`,"Check status":`Comprobar estado`,"Check task status":`Comprobar el estado de la tarea`,"Check task status before deleting this task.":`Comprueba el estado de la tarea antes de eliminarla.`,"Check task status before sending":`Comprueba el estado de la tarea antes de enviar`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`Comprueba el error de conexión anterior y la configuración de inicio de sesión, proveedor y red del agente en este host. Reinicia Papilot después de cambiar las credenciales o las rutas de los ejecutables.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`Comprueba el archivo principal y el motor, o pide al asistente que corrija la compilación. También puedes editar los archivos guardados y volver a intentarlo.`,"Check the task status before sending notes.":`Comprueba el estado de la tarea antes de enviar anotaciones.`,"Check your connection and try again.":`Comprueba tu conexión y vuelve a intentarlo.`,"Check {n} more online":`Comprobar {n} más en línea`,"Checked by you":`Comprobado por ti`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`Comprobando si hay cambios en el manuscrito. Solo se genera una comparación en PDF cuando es necesario.`,"Checking for updates…":`Buscando actualizaciones…`,"Checking {n}…":`Comprobando {n}…`,"Checking…":`Comprobando…`,Checklist:`Lista de verificación`,"Choose ZIP":`Elegir ZIP`,"Choose a folder or ZIP, or drag it here.":`Elige una carpeta o un archivo ZIP, o arrástralo aquí.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`Elige una carpeta para subir una copia. Para usar los archivos originales, ábrela en la aplicación de escritorio.`,"Choose a shortcut to edit:":`Elige un atajo para editar:`,"Choose an icon":`Elegir un icono`,"Choose attachments":`Elegir archivos adjuntos`,"Choose different files":`Elegir otros archivos`,"Choose folder":`Elegir carpeta`,"Choose how paper pages look in dark mode.":`Elige cómo se ven las páginas del artículo en el modo oscuro.`,"Choose the papers to share, then send a personal invite link.":`Elige los artículos que quieres compartir y envía un enlace de invitación personal.`,"Choose up to 5,000 files, totaling less than 64 MB.":`Elige hasta 5000 archivos, con un total inferior a 64 MB.`,"Choose {color} color":`Elegir color {color}`,"Citations, entries and their records":`Citas, entradas y sus registros`,"Cited {n} time: {places}":`Citado {n} vez: {places}`,"Cited {n} times: {places}":`Citado {n} veces: {places}`,"Claude Code or API credentials were not detected.":`No se detectaron credenciales de Claude Code ni de la API.`,"Clear selection":`Borrar selección`,"Clear task search":`Borrar búsqueda de tareas`,"Click a highlighted key to customize it.":`Haz clic en una tecla resaltada para personalizarla.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`Haz clic en una tecla para cambiarla y luego pulsa el nuevo atajo. Escape cancela; Retroceso lo borra.`,Close:`Cerrar`,"Close agent details":`Cerrar detalles del agente`,"Close note":`Cerrar anotación`,"Close notes":`Cerrar anotaciones`,"Close review notes":`Cerrar anotaciones de revisión`,"Close search":`Cerrar búsqueda`,"Close suggestion":`Cerrar sugerencia`,"Close task list":`Cerrar lista de tareas`,"Close the current editor or cancel region selection.":`Cerrar el editor actual o cancelar la selección de región.`,"Close window":`Cerrar ventana`,"Closest record":`Registro más cercano`,Code:`Código`,"Collapse manuscript panel":`Contraer el panel del manuscrito`,"Collapse {group} notes":`Contraer las anotaciones de {group}`,Color:`Color`,Comments:`Comentarios`,Commit:`Confirmar`,"Commit 1 file":`Confirmar 1 archivo`,"Commit all {n} files":`Confirmar los {n} archivos`,"Commit and push":`Confirmar y enviar`,"Commit graph":`Gráfico de confirmaciones`,"Commit merge":`Confirmar fusión`,"Commit message":`Mensaje de confirmación`,"Commit staged changes in 1 file":`Confirmar cambios preparados en 1 archivo`,"Commit staged changes in {n} files":`Confirmar cambios preparados en {n} archivos`,"Commit to manuscript":`Confirmar en el manuscrito`,"Commit to task branch":`Confirmar en la rama de la tarea`,"Commit to {branch}":`Confirmar en {branch}`,"Commit together":`Confirmar en conjunto`,"Commit what is staged":`Confirmar lo preparado`,"Commit {chosen} of {n} files":`Confirmar {chosen} de {n} archivos`,Committed:`Confirmado`,"Committed and pushed":`Confirmado y subido`,"Committed {hash} and pushed.":`Confirmado {hash} y subido.`,"Committed {hash} to {branch}":`Confirmado {hash} en {branch}`,"Committed {hash}.":`Confirmado {hash}.`,"Committing and pushing…":`Confirmando y subiendo…`,"Committing…":`Confirmando…`,"Commit…":`Confirmar…`,"Compared with {upstream}":`Comparado con {upstream}`,"Compilation details":`Detalles de compilación`,"Compilation failed. Click to retry.":`Error de compilación. Haz clic para reintentar.`,"Compilation log":`Registro de compilación`,"Compilation problems":`Problemas de compilación`,"Compilation status unavailable.":`Estado de compilación no disponible.`,"Compiling the PDF…":`Compilando el PDF…`,Completed:`Completado`,"Component source":`Código fuente de componentes`,"Confirm and apply":`Confirmar y aplicar`,"Confirm and commit":`Aceptar y confirmar`,"Confirm whether the task is still running before generating a PDF comparison.":`Confirma si la tarea sigue en ejecución antes de generar una comparación de PDF.`,Conflict:`Conflicto`,"Conflict resolution paused":`Resolución de conflictos en pausa`,"Conflicts resolved. Read the diffs, then commit the merge.":`Conflictos resueltos. Revisa las diferencias y confirma la fusión.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`Conecta una dirección HTTPS pública para invitar a personas a tus artículos. Podrán iniciar sesión de forma segura con una llave de acceso.`,"Connect an assistant in Settings to help repair this paper.":`Conecta un asistente en Ajustes para ayudar a reparar este artículo.`,"Connect and sign in to load the model list.":`Conéctate e inicia sesión para cargar la lista de modelos.`,"Connect to view account, models, and usage.":`Conéctate para ver la cuenta, los modelos y el uso.`,Connected:`Conectado`,"Connecting to your papers and tasks…":`Conectando con tus artículos y tareas…`,"Connecting to {agent}…":`Conectando con {agent}…`,"Connecting…":`Conectando…`,"Connection details":`Detalles de conexión`,"Connection lost. Showing the last update; your draft is kept.":`Se perdió la conexión. Mostrando la última actualización; tu borrador se conserva.`,Consistency:`Consistencia`,Contents:`Índice`,"Contents will appear when the PDF is ready.":`El índice aparecerá cuando el PDF esté listo.`,"Continue later":`Continuar más tarde`,Contribute:`Contribuir`,"Contribute an integration":`Contribuir con una integración`,Copied:`Copiado`,"Copied path":`Ruta copiada`,Copy:`Copiar`,"Copy and edit":`Copiar y editar`,"Copy message":`Copiar mensaje`,"Copy path: {path}":`Copiar ruta: {path}`,"Copy selected PDF text":`Copiar texto seleccionado del PDF`,"Copy this built-in skill to customize it for all papers or this paper.":`Copia esta habilidad integrada para personalizarla para todos los artículos o para este artículo.`,"Could not check":`No se pudo comprobar`,"Could not check for updates":`No se pudieron buscar actualizaciones`,"Could not check for updates. Try again when connected.":`No se pudieron buscar actualizaciones. Inténtalo de nuevo cuando tengas conexión.`,"Could not complete the environment checks. Check the connection and try again.":`No se pudieron completar las comprobaciones del entorno. Revisa la conexión e inténtalo de nuevo.`,"Could not detect a main file. Enter its path relative to the paper folder.":`No se pudo detectar un archivo principal. Introduce su ruta relativa a la carpeta del artículo.`,"Could not generate the PDF comparison.":`No se pudo generar la comparación de PDF.`,"Could not load the license notices.":`No se pudieron cargar los avisos de licencia.`,"Could not prepare the paper":`No se pudo preparar el artículo`,"Could not read the LaTeX installation. Try again.":`No se pudo leer la instalación de LaTeX. Inténtalo de nuevo.`,"Could not read the selected file.":`No se pudo leer el archivo seleccionado.`,"Could not read this worktree.":`No se pudo leer este árbol de trabajo.`,"Could not reconnect. Check the server connection and try again.":`No se pudo reconectar. Revisa la conexión con el servidor e inténtalo de nuevo.`,"Could not refresh the repository.":`No se pudo actualizar el repositorio.`,"Could not start the update. Please retry.":`No se pudo iniciar la actualización. Inténtalo de nuevo.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Crea una clave de API de Cursor en el panel de Cursor o configura el inicio de sesión del SDK de Cursor en este host.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Crea un GLM Coding Plan o una clave de API con Zhipu o Z.ai.`,"Create a passkey":`Crear una llave de acceso`,"Create a passkey on this device to sign in as {name}.":`Crea una llave de acceso en este dispositivo para iniciar sesión como {name}.`,"Create a passkey to sign in to your Papilot from anywhere.":`Crea una llave de acceso para iniciar sesión en tu Papilot desde cualquier lugar.`,"Create invite link":`Crear enlace de invitación`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`Se canceló la creación de la llave de acceso. El enlace sigue funcionando; inténtalo de nuevo cuando estés listo.`,"Creating…":`Creando…`,"Credits available":`Créditos disponibles`,Current:`Actual`,"Current version":`Versión actual`,"Cursor SDK credentials were not detected.":`No se detectaron credenciales del SDK de Cursor.`,"Customize shortcuts":`Personalizar atajos`,Customized:`Personalizado`,"Cut length without losing content":`Reducir la extensión sin perder contenido`,"Daily limit":`Límite diario`,Dark:`Oscuro`,Decline:`Rechazar`,Declined:`Rechazado`,Default:`Predeterminado`,"Default model":`Modelo predeterminado`,"Default reasoning effort":`Esfuerzo de razonamiento predeterminado`,"Delete file":`Eliminar archivo`,"Delete note":`Eliminar anotación`,"Delete note {n}":`Eliminar anotación {n}`,"Delete review note {n}":`Eliminar anotación de revisión {n}`,"Delete skill":`Eliminar habilidad`,"Delete task":`Eliminar tarea`,"Delete task?":`¿Eliminar tarea?`,"Delete task…":`Eliminar tarea…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`¿Eliminar esta habilidad? Solo se elimina su archivo Markdown; los archivos de apoyo permanecen en su lugar.`,"Delete {name}?":`¿Eliminar {name}?`,Deleted:`Eliminado`,"Deleting task":`Eliminando tarea`,"Deleting…":`Eliminando…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`La eliminación ya ha comenzado. Reinténtalo para confirmar la limpieza y eliminar la tarea.`,"Deletion is in progress":`La eliminación está en curso`,"Describe the revision":`Describe la revisión`,"Describe what the agent should do, what to preserve, and how to present the result.":`Describe qué debe hacer el agente, qué conservar y cómo presentar el resultado.`,Description:`Descripción`,"Details (optional)":`Detalles (opcional)`,"Detect again":`Detectar de nuevo`,"Detecting LaTeX installation…":`Detectando la instalación de LaTeX…`,"Dev (GitHub main)":`Desarrollo (GitHub main)`,Differs:`Difiere`,"Discard all changes":`Descartar todos los cambios`,"Discard changes":`Descartar cambios`,"Discard changes in {name}?":`¿Descartar los cambios en {name}?`,"Discard changes in {n} file?":`¿Descartar los cambios en {n} archivo?`,"Discard changes in {n} files?":`¿Descartar los cambios en {n} archivos?`,"Discard changes in {path}":`Descartar cambios en {path}`,"Discard unsaved skill changes?":`¿Descartar los cambios sin guardar en la habilidad?`,"Discarded changes in {n} file.":`Se descartaron los cambios en {n} archivo.`,"Discarded changes in {n} files.":`Se descartaron los cambios en {n} archivos.`,"Dismiss error":`Descartar error`,Distribution:`Distribución`,"Download desktop updates":`Descargar actualizaciones de escritorio`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`Descarga la última versión de la aplicación de escritorio para tu sistema desde GitHub Releases. Tus artículos y ajustes se mantendrán intactos.`,"Downloading and building the selected GitHub commit…":`Descargando y compilando el commit de GitHub seleccionado…`,"Downloading and checking the new version…":`Descargando y comprobando la nueva versión…`,"Drag to resize · Double-click to reset":`Arrastrar para cambiar el tamaño · Doble clic para restablecer`,"Drop files to attach":`Suelta archivos para adjuntar`,"Drop one folder or LaTeX ZIP file.":`Suelta una carpeta o un archivo ZIP de LaTeX.`,"Early updates from GitHub main. May be less stable.":`Actualizaciones anticipadas desde GitHub main. Pueden ser menos estables.`,Edit:`Editar`,"Edit note":`Editar anotación`,"Edit note {n}":`Editar anotación {n}`,"Edit note {n}: {comment}":`Editar anotación {n}: {comment}`,"Edit paper":`Editar artículo`,"Edit {name}":`Editar {name}`,"Edited {file}":`Editado {file}`,"Edited {n} files":`{n} archivos editados`,"Editing dark mode colors. Changes are saved automatically.":`Editando los colores del modo oscuro. Los cambios se guardan automáticamente.`,"Editing light mode colors. Changes are saved automatically.":`Editando los colores del modo claro. Los cambios se guardan automáticamente.`,"Enable shortcut: {action}":`Activar atajo: {action}`,"Enter a folder path":`Introduce la ruta de una carpeta`,"Environment variable":`Variable de entorno`,Errors:`Errores`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`Expandir cambios en otras partes, como el índice y la numeración de referencias. Desactivado de forma predeterminada; las ediciones sin cambios visibles en su origen, como las definiciones de macros, siguen mostrando sus efectos.`,"Expand indirect changes":`Expandir cambios indirectos`,"Expand manuscript panel":`Expandir el panel del manuscrito`,"Expand {group} notes":`Expandir anotaciones de {group}`,Failed:`Fallido`,Fast:`Rápido`,"Fast mode":`Modo rápido`,"Faster responses; may use more of your limit.":`Respuestas más rápidas; puede consumir más de tu límite.`,"Feedback & issues":`Comentarios y problemas`,"Fetch from the remote":`Obtener del remoto`,"Files must be 25 MB or smaller.":`Los archivos deben ser de 25 MB o menos.`,"Files on disk, Git history and task worktrees will stay in place.":`Los archivos en disco, el historial de Git y los árboles de trabajo de las tareas permanecerán en su lugar.`,"Files received":`Archivos recibidos`,"Find (⌘F)":`Buscar (⌘F)`,"Find errors in notation, equations and proofs":`Encontrar errores en la notación, las ecuaciones y las demostraciones`,"Find in PDF":`Buscar en el PDF`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`Averigua qué ocurrió con estos problemas de bibliografía e informa de los resultados. No edites ningún archivo. Para cada uno, comprueba si la obra existe y qué indica su registro publicado (autores, título, año, medio de publicación, DOI), busca de dónde proceden la entrada o la cita en el historial de Git de los archivos .bib y .tex, e indica qué sugerirías. Marca qué hallazgos confirmaste en una fuente y cuáles son suposiciones.`,"Fit page":`Ajustar a la página`,"Fit width":`Ajustar al ancho`,"Fix LaTeX warnings":`Corregir advertencias de LaTeX`,"Fix typos, grammar and punctuation without rewording":`Corregir erratas, gramática y puntuación sin reformular`,"Fix with an agent…":`Corregir con un agente…`,"Folder path":`Ruta de la carpeta`,"Follow mode":`Modo de seguimiento`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`Para usar el SDK en su lugar, inicie Papilot con ANTHROPIC_API_KEY o con un proveedor en la nube compatible configurado. Reinicie Papilot tras cambiar su entorno.`,Foreground:`Primer plano`,"Full PDF":`PDF completo`,General:`General`,"Generate PDF comparison":`Generar comparación de PDF`,"Generate commit message":`Generar mensaje de confirmación`,"Generate task title":`Generar título de la tarea`,"Generating task title…":`Generando título de la tarea…`,"Get started and make Papilot your own.":`Empiece y adapte Papilot a su gusto.`,"Git status":`Estado de Git`,"Git status of the manuscript":`Estado de Git del manuscrito`,"Git, {n} changed":`Git, {n} con cambios`,"GitHub repository":`Repositorio de GitHub`,"Give your skill a name":`Asigne un nombre a la habilidad`,Global:`Global`,Globe:`Globo`,Graphite:`Grafito`,Green:`Verde`,"Help fix compilation":`Ayudar a corregir la compilación`,"Help improve Papilot with code, docs, and ideas.":`Ayude a mejorar Papilot con código, documentación e ideas.`,"Hide task list":`Ocultar lista de tareas`,"Highlighted in {group}":`Resaltado en {group}`,"Hover over a highlighted key to see what it does.":`Pase el cursor sobre una tecla resaltada para ver su función.`,"I checked it myself":`Lo he comprobado personalmente`,Idea:`Idea`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`Si ya está instalado, defina {variable} con la ruta de su ejecutable en el entorno que inicia Papilot y reinicie Papilot.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`Si el estado en tiempo real aún no coincide con la comprobación, reinicie Papilot con el mismo usuario y entorno donde configuró el agente.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`Si la tarea modifica el manuscrito, aquí aparecerá una comparación de PDF. De lo contrario, lea la respuesta en el chat.`,Ignore:`Ignorar`,"Ignore suggestion {n}":`Ignorar sugerencia {n}`,"Images must be 5 MB or smaller.":`Las imágenes deben ocupar 5 MB o menos.`,"Import a ZIP":`Importar un ZIP`,"Import a separate copy from Overleaf or a ZIP archive.":`Importa una copia independiente desde Overleaf o un archivo ZIP.`,"Import progress":`Progreso de la importación`,"Improve clarity and flow, keeping the meaning":`Mejorar la claridad y la fluidez manteniendo el significado`,"Include note {n} in this task":`Incluir anotación {n} en esta tarea`,"Include suggestion {n} in this task":`Incluir sugerencia {n} en esta tarea`,"Include {key} in the task":`Incluir {key} en la tarea`,"Individual notes":`Anotaciones individuales`,"Input needed":`Se requiere intervención`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Instale TeX Live o MacTeX con latexmk en el equipo que ejecuta Papilot y vuelva a intentarlo.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`Instalar la nueva versión y reiniciar automáticamente cuando las tareas estén inactivas. Sus artículos, tareas y ajustes se conservarán.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Instale {command} en el host que ejecuta Papilot y complete a continuación su inicio de sesión o la configuración del proveedor.`,"Installation & setup":`Instalación y configuración`,"Installation check":`Comprobación de la instalación`,"Installation location":`Ubicación de la instalación`,Instructions:`Instrucciones`,"Instructions for color groups":`Instrucciones para grupos de colores`,"Instructions for {agent}":`Instrucciones para {agent}`,"Instructions for {group} notes":`Instrucciones para las anotaciones {group}`,"Invite link for a new device":`Enlace de invitación para un nuevo dispositivo`,"Invite link for {name}":`Enlace de invitación para {name}`,"Invite someone":`Invitar a alguien`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`Las personas invitadas pueden acceder a todos los archivos legibles por Papilot, incluidos las credenciales y los artículos no compartidos.`,"Invited, not joined yet":`Invitado, aún no se ha unido`,"Join Papilot":`Unirse a Papilot`,Joined:`Se ha unido`,"Jump to the next change that still needs a decision.":`Saltar al siguiente cambio pendiente de decisión.`,"Keep editing":`Seguir editando`,"Keep latest wording and apply":`Mantener la redacción más reciente y aplicar`,"Keep latest wording and commit":`Mantener la redacción más reciente y confirmar`,"Keep on manuscript":`Mantener en el manuscrito`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`Mantener la redacción más reciente en los pasajes superpuestos y guardar los demás cambios aceptados.`,"Kept on manuscript":`Mantenido en el manuscrito`,"Keyboard key {key}: {actions}":`Tecla {key}: {actions}`,"Keyboard shortcuts":`Atajos de teclado`,"LaTeX Git repository · Requires a commit and latexmk":`Repositorio Git de LaTeX · Requiere un commit y latexmk`,"LaTeX engine":`Motor de LaTeX`,"LaTeX installation":`Instalación de LaTeX`,"Label defined more than once":`Etiqueta definida más de una vez`,Language:`Idioma`,"Language for the Papilot interface.":`Idioma de la interfaz de Papilot.`,"Last active {time}":`Última actividad: {time}`,Later:`Más tarde`,"Latest messages":`Últimos mensajes`,"Latest version":`Última versión`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Bibliotecas y fuentes utilizadas por Papilot y su motor de revisión. Cada componente está sujeto a su propia licencia.`,"Libraries, fonts, and the people behind them.":`Bibliotecas, fuentes y las personas detrás de ellas.`,"License text is not included in this package. See the component source for its terms.":`El texto de la licencia no está incluido en este paquete. Consulte el código fuente del componente para ver sus condiciones.`,"Licenses & acknowledgments":`Licencias y agradecimientos`,Light:`Claro`,"Limit reached":`Límite alcanzado`,"Line too wide by {amount}pt":`Línea demasiado ancha por {amount}pt`,Link:`Enlace`,"Loading PDF review…":`Cargando revisión del PDF…`,"Loading conversation…":`Cargando conversación…`,"Loading license notices…":`Cargando avisos de licencia…`,"Loading people…":`Cargando personas…`,"Loading skills…":`Cargando habilidades…`,"Loading the diff…":`Cargando las diferencias…`,"Loading…":`Cargando…`,Location:`Ubicación`,Locked:`Bloqueado`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Busca las entradas en Crossref, DBLP y arXiv. Solo se envían sus títulos, autores, años e identificadores.`,"Made by Cui Chen and the Papilot contributors.":`Creado por Cui Chen y los colaboradores de Papilot.`,"Main TeX file":`Archivo TeX principal`,Manuscript:`Manuscrito`,"Manuscript panels":`Paneles del manuscrito`,"Manuscript view":`Vista del manuscrito`,"Mark a figure or region":`Marcar una figura o región`,"Mark region":`Marcar región`,"Marked on earlier changes.":`Marcado en cambios anteriores.`,"Marked region":`Región marcada`,Math:`Matemáticas`,"Maximize or restore window":`Maximizar o restaurar ventana`,Members:`Miembros`,Merge:`Fusionar`,"Merge in progress":`Fusión en curso`,"Merged {upstream}.":`Se fusionó {upstream}.`,"Merging: no conflicts left":`Fusionando: no quedan conflictos`,"Merging: {n} file has conflicts":`Fusionando: {n} archivo tiene conflictos`,"Merging: {n} files have conflicts":`Fusionando: {n} archivos tienen conflictos`,"Message ({key} to commit on “{branch}”)":`Mensaje ({key} para confirmar en “{branch}”)`,"Minimize window":`Minimizar ventana`,"Missing character":`Carácter faltante`,"Missing file":`Archivo faltante`,"Missing worktree":`Árbol de trabajo faltante`,"Missing: {files}":`Faltan: {files}`,Mode:`Modo`,"Model default":`Predeterminado del modelo`,Models:`Modelos`,Modified:`Modificado`,"More Git actions":`Más acciones de Git`,"More commit actions":`Más acciones de confirmación`,"Move to the next visible change.":`Ir al siguiente cambio visible.`,"Move to the previous visible change.":`Ir al cambio visible anterior.`,"My notes":`Mis anotaciones`,Name:`Nombre`,"Needs attention":`Requiere atención`,"Needs your reply":`Requiere tu respuesta`,"New invite link":`Nuevo enlace de invitación`,"New skill":`Nueva habilidad`,"New task":`Nueva tarea`,"New version":`Nueva versión`,"Next change":`Siguiente cambio`,"Next match":`Siguiente coincidencia`,"Next page":`Siguiente página`,"Next suggestion":`Siguiente sugerencia`,"Next suggestion (→)":`Siguiente sugerencia (→)`,"Next undecided change":`Siguiente cambio sin decidir`,"No GLM API key was found.":`No se encontró ninguna clave API de GLM.`,"No LaTeX installation was detected on this host.":`No se detectó ninguna instalación de LaTeX en este host.`,"No archived tasks":`No hay tareas archivadas`,"No commits yet":`Aún no hay confirmaciones`,"No components match your search.":`Ningún componente coincide con tu búsqueda.`,"No entry has this key.":`Ninguna entrada tiene esta clave.`,"No files found in this folder.":`No se encontraron archivos en esta carpeta.`,"No installation details were returned. Run the checks again to refresh.":`No se obtuvieron detalles de la instalación. Ejecuta las comprobaciones de nuevo para actualizar.`,"No linked change":`Sin cambio vinculado`,"No linked task":`Sin tarea vinculada`,"No manuscript changes":`No hay cambios en el manuscrito`,"No matches":`Sin coincidencias`,"No matching settings":`No hay ajustes coincidentes`,"No matching skills":`No hay habilidades coincidentes`,"No matching tasks":`No hay tareas coincidentes`,"No models match “{query}”":`Ningún modelo coincide con “{query}”`,"No notes yet":`Aún no hay anotaciones`,"No other worktrees in this repository.":`No hay otros árboles de trabajo en este repositorio.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`Aún no se han compartido artículos contigo. Los artículos aparecerán aquí en cuanto {name} los comparta.`,"No papers yet":`Aún no hay artículos`,"No passkey on this device? Ask the person who invited you for a new invite link.":`¿No tienes una llave de acceso en este dispositivo? Pide un nuevo enlace de invitación a la persona que te invitó.`,"No problems found.":`No se encontraron problemas.`,"No problems in the files. Check online to compare the entries with their records.":`No hay problemas en los archivos. Comprueba en línea para comparar las entradas con sus registros.`,"No problems in the last build.":`No hubo problemas en la última compilación.`,"No record in Crossref, DBLP or arXiv matches it.":`Ningún registro en Crossref, DBLP o arXiv coincide.`,"No tasks yet":`Aún no hay tareas`,"No textual changes.":`Sin cambios de texto.`,"No uncommitted changes":`Sin cambios pendientes de confirmar`,"No upstream branch":`Sin rama remota de seguimiento`,"Not assigned":`Sin asignar`,"Not checked":`No comprobado`,"Not cited in the paper.":`No citado en el artículo.`,"Not detected":`No detectado`,"Not found":`No encontrado`,"Note deleted.":`Anotación eliminada.`,"Note for the agent":`Anotación para el agente`,"Note on the PDF":`Anotación en el PDF`,"Note {n}":`Anotación {n}`,"Note {n}: {comment}":`Anotación {n}: {comment}`,"Notes in this task":`Anotaciones en esta tarea`,"Notes stay here unless you add them to a task.":`Las anotaciones permanecen aquí a menos que las añadas a una tarea.`,"Nothing to check":`Nada que comprobar`,Notifications:`Notificaciones`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`Las notificaciones están bloqueadas para este sitio. Permítelas en la configuración de sitios del navegador y luego actívalas aquí.`,"Notifications are on":`Las notificaciones están activadas`,"Notify me about":`Notificarme sobre`,"Notify me when a task fails or stops unexpectedly.":`Notificarme cuando una tarea falle o se detenga inesperadamente.`,"Notify me when an agent asks me a question.":`Notificarme cuando un agente me haga una pregunta.`,"Notify me when an agent finishes without changes to review.":`Notificarme cuando un agente termine sin cambios para revisar.`,"Notify me when an agent needs my approval to continue.":`Notificarme cuando un agente necesite mi aprobación para continuar.`,"Notify me when changes are ready for review.":`Notificarme cuando haya cambios listos para revisión.`,Off:`Desactivado`,"Online checks are off in Settings, so only problems found in the files are shown.":`Las comprobaciones en línea están desactivadas en Configuración, por lo que solo se muestran los problemas detectados en los archivos.`,"Online checks are off in Settings.":`Las comprobaciones en línea están desactivadas en Configuración.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`Solo los cambios en el manuscrito requieren una comparación de PDF. Las respuestas a las preguntas están en el chat.`,"Open PDF":`Abrir PDF`,"Open a branch to commit":`Abrir una rama para confirmar`,"Open a folder":`Abrir una carpeta`,"Open attachment {name}":`Abrir archivo adjunto {name}`,"Open chat":`Abrir chat`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`Ábrelo en el dispositivo desde el que quieras iniciar sesión. Funciona una sola vez, durante 15 minutos.`,"Open paper":`Abrir artículo`,"Open review":`Abrir revisión`,"Open review in new tab":`Abrir revisión en una pestaña nueva`,"Open reviews on":`Abrir revisiones en`,"Open task: {title}":`Abrir tarea: {title}`,"Open the full PDF":`Abrir el PDF completo`,"Open these shortcut settings.":`Abrir esta configuración de atajos.`,"Opening the PDF…":`Abriendo el PDF…`,"Opening your workspace":`Abriendo tu espacio de trabajo`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`Abre una tarea nueva que puedes editar antes de enviarla. El agente informa de lo que encuentra y no modifica nada.`,"Opens in a new tab":`Se abre en una pestaña nueva`,"Or drop a folder or ZIP here":`O suelta una carpeta o un archivo ZIP aquí`,"Or type your own answer":`O escribe tu propia respuesta`,Orange:`Naranja`,Overridden:`Reemplazada`,Owner:`Propietario`,"PDF annotations":`Anotaciones del PDF`,"PDF appearance":`Apariencia del PDF`,"PDF comparison":`Comparación de PDF`,"PDF compilation":`Compilación del PDF`,"PDF compiled successfully.":`PDF compilado correctamente.`,"PDF contents":`Contenido del PDF`,"PDF controls":`Controles del PDF`,"PDF note library":`Biblioteca de anotaciones del PDF`,"PDF note {n}":`Anotación del PDF {n}`,"PDF notes":`Anotaciones del PDF`,"PDF pages":`Páginas del PDF`,"PDF preview":`Vista previa del PDF`,"PDF review":`Revisión del PDF`,"PDF review only":`Solo revisión del PDF`,"Page number":`Número de página`,"Page {n}":`Página {n}`,"Page {pages}":`Página {pages}`,"Page {pages} of {total}":`Página {pages} de {total}`,"Pages typeset":`Páginas compuestas`,Paper:`Artículo`,"Paper name":`Nombre del artículo`,"Paper tools":`Herramientas del artículo`,"Paper: {name}":`Artículo: {name}`,"Papers and tasks":`Artículos y tareas`,"Papers they can open":`Artículos que pueden abrir`,"Papers {name} can open":`Artículos que {name} puede abrir`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot no encuentra npm en este equipo. Las actualizaciones no estarán disponibles hasta que se instale npm.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot no pudo establecer una conexión operativa con este agente. A continuación se muestra el error de conexión más reciente.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot no pudo preparar los archivos para la compilación. Se trata de un error de la aplicación, no de LaTeX.`,"Papilot license":`Licencia de Papilot`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot se comunicó con este agente, pero no pudo confirmar una cuenta con sesión iniciada en este host.`,"Papilot sent the build error to {agent}, {time}":`Papilot envió el error de compilación a {agent}, {time}`,"Papilot will tell you here when a task needs you.":`Papilot te avisará aquí cuando una tarea requiera tu atención.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`Revisado parcialmente`,Passed:`Aprobado`,"Passkey · {label}":`Clave de acceso · {label}`,Pause:`Pausar`,"Pause task":`Pausar tarea`,"Pause this task before deleting it.":`Pausa esta tarea antes de eliminarla.`,"Pause {agent}":`Pausar {agent}`,Paused:`En pausa`,Pen:`Pluma`,"Pending review":`Pendiente de revisión`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`Las personas que invites inician sesión con una clave de acceso en la dirección pública y pueden hacer todo lo que tú haces en los artículos que compartas con ellas, incluido aprobar los comandos que los agentes ejecuten en este host y hacer push con sus credenciales de Git.`,Personal:`Personal`,Polish:`Pulir`,"Position needs confirmation":`La posición requiere confirmación`,"Prepare and compile":`Preparar y compilar`,"Preparing task results":`Preparando los resultados de la tarea`,"Preparing task results…":`Preparando los resultados de la tarea…`,"Preparing version history and compiling the PDF…":`Preparando el historial de versiones y compilando el PDF…`,"Press a key…":`Pulsa una tecla…`,Preview:`Vista previa`,"Previous change":`Cambio anterior`,"Previous match":`Coincidencia anterior`,"Previous page":`Página anterior`,"Previous suggestion":`Sugerencia anterior`,"Previous suggestion (←)":`Sugerencia anterior (←)`,Problems:`Problemas`,"Processing the bibliography…":`Procesando la bibliografía…`,Proofread:`Corregir`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Proporciona CURSOR_API_KEY al proceso o servicio que inicia Papilot y luego reinicia Papilot. El SDK se instala automáticamente al usarse.`,"Publish branch":`Publicar rama`,"Published releases, recommended for everyday use.":`Versiones publicadas, recomendadas para el uso diario.`,Pull:`Pull`,"Pulled the latest commits.":`Se obtuvieron los últimos commits.`,Purple:`Morado`,Push:`Push`,"Pushed to the remote.":`Se hizo push al repositorio remoto.`,"Pushed to {upstream}.":`Se hizo push a {upstream}.`,"Queue instructions for the next turn…":`Poner instrucciones en cola para el siguiente turno…`,Queued:`En cola`,"Quote in chat":`Citar en el chat`,"Quoted text":`Texto citado`,"Raw log":`Registro sin procesar`,"Read folder":`Leer carpeta`,"Read the paper and leave PDF comments without editing the manuscript":`Leer el artículo y dejar comentarios en el PDF sin editar el manuscrito`,"Read, annotate, and revise your papers with AI, all in one place.":`Lee, anota y revisa tus artículos con IA, todo en un mismo lugar.`,"Reading Git status…":`Leyendo el estado de Git…`,"Reading paper files…":`Leyendo archivos del artículo…`,"Reading the bibliography…":`Leyendo la bibliografía…`,"Reading update status…":`Leyendo el estado de la actualización…`,"Reading worktrees and history…":`Leyendo los árboles de trabajo y el historial…`,Ready:`Listo`,"Ready for review":`Listo para revisión`,"Ready to check for updates":`Listo para buscar actualizaciones`,"Reasoning effort":`Esfuerzo de razonamiento`,Recent:`Recientes`,"Recompile PDF":`Recompilar PDF`,"Recompiling; this list will update.":`Recompilando; esta lista se actualizará.`,Reconnect:`Reconectar`,Reconnecting:`Reconectando`,Record:`Registro`,Red:`Rojo`,"Reference check":`Verificación de referencias`,"Refresh changes":`Actualizar cambios`,"Refresh skills":`Actualizar habilidades`,"Refresh worktrees and history":`Actualizar árboles de trabajo e historial`,"Regenerate PDF comparison":`Regenerar comparación de PDF`,"Region note":`Anotación de región`,"Reject change":`Rechazar cambio`,"Reject the current proposal. In Changes, revert it.":`Rechazar la propuesta actual. En Cambios, revertirla.`,Rejected:`Rechazado`,"Reload review":`Recargar revisión`,Remove:`Quitar`,"Remove attachment {name}":`Quitar archivo adjunto {name}`,"Remove from Papilot":`Quitar de Papilot`,"Remove from draft":`Quitar del borrador`,"Remove note {n} from task":`Quitar anotación {n} de la tarea`,"Remove paper":`Quitar artículo`,"Remove paper?":`¿Quitar artículo?`,"Remove suggestion {n} from task":`Quitar sugerencia {n} de la tarea`,"Remove the {name} skill":`Quitar la habilidad {name}`,"Remove this paper and its tasks, conversations and notes from Papilot?":`¿Quitar este artículo y sus tareas, conversaciones y anotaciones de Papilot?`,"Remove {device}":`Quitar {device}`,"Remove {name}":`Quitar {name}`,"Remove…":`Quitar…`,"Removing…":`Quitando…`,"Rename {name}":`Renombrar {name}`,Renamed:`Renombrado`,"Rename…":`Renombrar…`,"Repair summary":`Resumen de reparación`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`Las reparaciones se guardan como cambios sin confirmar. Revísalas en los cambios de archivos del artículo.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`Responde en el chat para continuar. Solo se necesita una comparación de PDF si cambia el manuscrito.`,"Reply to {agent}":`Responder a {agent}`,"Report a bug or suggest an improvement.":`Informa de un error o sugiere una mejora.`,"Reported {n} times":`Notificado {n} veces`,"Repository path":`Ruta del repositorio`,"Request a revision":`Solicitar una revisión`,"Request failed. Please try again.":`Error en la solicitud. Inténtalo de nuevo.`,"Reset appearance":`Restablecer apariencia`,"Resize chat panel":`Redimensionar panel de chat`,"Resize manuscript panel":`Redimensionar panel del manuscrito`,"Resolve undefined references, overfull boxes and other build warnings":`Resolver referencias no definidas, cajas desbordadas y otras advertencias de compilación`,"Resolve with {agent}":`Resolver con {agent}`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Reiniciando Papilot. Esta página se reconectará automáticamente; tus borradores se conservarán.`,"Restarting…":`Reiniciando…`,"Restore default shortcuts":`Restablecer atajos predeterminados`,"Restore task":`Restaurar tarea`,Retry:`Reintentar`,"Retry build":`Reintentar compilación`,"Retry compilation":`Reintentar compilación`,"Retry connection":`Reintentar conexión`,"Retry conversation":`Reintentar conversación`,"Retry deletion":`Reintentar eliminación`,"Retry deletion…":`Reintentar eliminación…`,"Retry linking changes":`Reintentar vinculación de cambios`,"Retry title generation":`Reintentar generación de título`,"Retry update":`Reintentar actualización`,"Retry uploading {name}":`Reintentar subida de {name}`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`Instrucciones reutilizables para tus revisiones. Elige una habilidad del menú / al iniciar una tarea.`,Review:`Revisión`,"Review PDF notes":`Revisar anotaciones del PDF`,"Review and chat side by side":`Revisión y chat en paralelo`,"Review complete":`Revisión completada`,"Review copy":`Copia de revisión`,"Review decisions":`Decisiones de revisión`,"Review feedback":`Comentarios de revisión`,"Review navigation":`Navegación de revisión`,"Review note: {comment}":`Anotación de revisión: {comment}`,"Review notes":`Anotaciones de revisión`,"Review notes ({n})":`Anotaciones de revisión ({n})`,"Review preferences":`Preferencias de revisión`,"Review ready":`Revisión lista`,"Review ready · {n} change to decide":`Revisión lista · {n} cambio por decidir`,"Review ready · {n} changes to decide":`Revisión lista · {n} cambios por decidir`,"Review shortcut keyboard":`Teclado de atajos de revisión`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`Los atajos de revisión funcionan cuando la revisión del PDF tiene el foco. Se pausan mientras escribes o seleccionas texto. Los cambios se guardan en este navegador.`,"Review the merged result":`Revisar el resultado fusionado`,"Review, {n} to decide":`Revisión, {n} por decidir`,"Revise for reviewer comments and draft a point-by-point reply":`Revisar según los comentarios de los revisores y redactar una respuesta punto por punto`,"Revision requested":`Revisión solicitada`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`Ejecuta Papilot y sus agentes en un contenedor aislado como Docker para limitar el acceso; los archivos montados siguen siendo accesibles.`,"Run command":`Ejecutar comando`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`Ejecuta papilot codex login en el host. Instalará una CLI de Codex compatible cuando sea necesario.`,"Run tool":`Ejecutar herramienta`,Running:`En ejecución`,Runtime:`Entorno de ejecución`,"Same DOI as {keys}.":`Mismo DOI que {keys}.`,"Same title as {keys}.":`Mismo título que {keys}.`,Save:`Guardar`,"Save accepted changes":`Guardar los cambios aceptados`,"Save to":`Guardar en`,Saved:`Guardado`,"Saved folder":`Carpeta guardada`,"Saving…":`Guardando…`,Search:`Buscar`,"Search archived tasks…":`Buscar tareas archivadas…`,"Search components or licenses":`Buscar componentes o licencias`,"Search components or licenses…":`Buscar componentes o licencias…`,"Search models":`Buscar modelos`,"Search settings":`Buscar ajustes`,"Search skills":`Buscar habilidades`,"Search task titles and instructions":`Buscar títulos e instrucciones de tareas`,"Search tasks":`Buscar tareas`,"Search tasks…":`Buscar tareas…`,"Search the PDF":`Buscar en el PDF`,"See license notice":`Ver aviso de licencia`,"See what changed in each release.":`Consulta los cambios de cada versión.`,"Select a skill or create your own.":`Selecciona una habilidad o crea la tuya propia.`,"Select all notes for this task":`Seleccionar todas las anotaciones de esta tarea`,"Select all {group} notes for this task":`Seleccionar todas las anotaciones de {group} de esta tarea`,"Send (Enter) · New line (Shift+Enter)":`Enviar (Enter) · Nueva línea (Shift+Enter)`,"Send a test notification":`Enviar una notificación de prueba`,"Send annotations":`Enviar anotaciones`,"Send annotations to the agent":`Enviar anotaciones al agente`,"Send feedback":`Enviar comentarios`,"Send instructions":`Enviar instrucciones`,"Send it to {name} yourself. It works once, within 7 days.":`Envíaselo a {name} directamente. Funciona una sola vez, durante 7 días.`,"Send the review comment being written.":`Enviar el comentario de revisión que se está redactando.`,"Send your review decisions and comments to the agent":`Enviar tus decisiones y comentarios de revisión al agente`,"Send {n} note":`Enviar {n} anotación`,"Send {n} note to the agent":`Enviar {n} anotación al agente`,"Send {n} notes":`Enviar {n} anotaciones`,"Send {n} notes to the agent":`Enviar {n} anotaciones al agente`,"Sending feedback…":`Enviando comentarios…`,"Sending…":`Enviando…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`Enviada. Si no apareció nada, permite las notificaciones de este navegador en los ajustes del sistema.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Define ZHIPU_API_KEY para open.bigmodel.cn, o ZAI_API_KEY para api.z.ai, en el entorno donde se inicia Papilot. Luego reinicia Papilot.`,"Set up on the host":`Configurar en el host`,"Set up sharing":`Configurar el uso compartido`,"Set up this agent":`Configurar este agente`,Settings:`Ajustes`,"Settings categories":`Categorías de ajustes`,"Setup guide":`Guía de configuración`,"Setup required":`Configuración necesaria`,"Several TeX files were found. Check the selected main document before continuing.":`Se encontraron varios archivos TeX. Comprueba el documento principal seleccionado antes de continuar.`,"Share your papers and manage the people you work with.":`Comparte tus artículos y gestiona las personas con las que colaboras.`,Sharing:`Uso compartido`,"Sharing is not sandboxed":`El uso compartido no está aislado (sandbox)`,Shorten:`Acortar`,Show:`Mostrar`,"Show LaTeX source":`Mostrar código fuente LaTeX`,"Show archived tasks":`Mostrar tareas archivadas`,"Show current tasks":`Mostrar tareas actuales`,"Show desktop notifications while Papilot is in the background.":`Mostrar notificaciones de escritorio mientras Papilot está en segundo plano.`,"Show fewer models":`Mostrar menos modelos`,"Show note {n} on the page":`Mostrar anotación {n} en la página`,"Show note {n}: {comment}":`Mostrar anotación {n}: {comment}`,"Show or hide the source for the current change.":`Mostrar u ocultar el código fuente del cambio actual.`,"Show problems":`Mostrar problemas`,"Show suggestion {n} on the page":`Mostrar sugerencia {n} en la página`,"Show task list":`Mostrar lista de tareas`,"Show {n} more models":`Mostrar {n} modelos más`,"Showing the last update.":`Mostrando la última actualización.`,"Showing the latest {n} commits. Older history is not shown.":`Mostrando los últimos {n} commits. No se muestra el historial anterior.`,"Sign in as the user running Papilot, then restart Papilot.":`Inicia sesión como el usuario que ejecuta Papilot y luego reinicia Papilot.`,"Sign in from anywhere":`Iniciar sesión desde cualquier lugar`,"Sign in on the Papilot host to continue.":`Inicia sesión en el host de Papilot para continuar.`,"Sign in to Papilot":`Iniciar sesión en Papilot`,"Sign in to continue.":`Inicia sesión para continuar.`,"Sign in with a passkey":`Iniciar sesión con una clave de acceso (passkey)`,"Sign out":`Cerrar sesión`,"Sign out everywhere":`Cerrar sesión en todos los dispositivos`,"Sign-in required":`Inicio de sesión necesario`,"Signed in":`Sesión iniciada`,"Signed in · {label}":`Sesión iniciada · {label}`,"Signing in was cancelled. Try again when you are ready.":`Se canceló el inicio de sesión. Vuelve a intentarlo cuando estés listo.`,"Skill ID":`ID de la habilidad`,"Skill content (Markdown)":`Contenido de la habilidad (Markdown)`,"Skill content must contain 1–20,000 characters.":`El contenido de la habilidad debe tener entre 1 y 20 000 caracteres.`,"Skill content view":`Vista del contenido de la habilidad`,"Skill icon":`Icono de la habilidad`,"Skill name":`Nombre de la habilidad`,"Skill scope":`Ámbito de la habilidad`,"Skill: {name}":`Habilidad: {name}`,Skills:`Habilidades`,Slate:`Pizarra`,"Slate blue":`Azul pizarra`,"Some note positions need confirmation. Their original text and comments are kept.":`Algunas posiciones de las anotaciones requieren confirmación. Se conservan su texto y comentarios originales.`,Source:`Código fuente`,Sparkles:`Destellos`,Spelling:`Ortografía`,Split:`Dividir`,Stable:`Estable`,"Stage all changes":`Preparar todos los cambios`,"Stage changes":`Preparar cambios`,"Stage {path}":`Preparar {path}`,Staged:`Preparados`,"Staged changes":`Cambios preparados`,"Standard shortcuts":`Atajos estándar`,"Start task":`Iniciar tarea`,"Start task (Enter)":`Iniciar tarea (Enter)`,"Status unavailable":`Estado no disponible`,Stone:`Piedra`,"Submitting…":`Enviando…`,"Suggest an agent":`Sugerir un agente`,"Suggested fix":`Corrección sugerida`,"Suggestion ignored.":`Sugerencia ignorada.`,"Suggestion {n}: {comment}":`Sugerencia {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`Las sugerencias permanecen en esta tarea hasta que las copies al manuscrito`,"Support more":`Admitir más`,System:`Sistema`,"Task actions for {title}":`Acciones de la tarea para {title}`,"Task added: {title}":`Tarea añadida: {title}`,"Task errors":`Errores de tareas`,"Task finished":`Tarea finalizada`,"Task list":`Lista de tareas`,"Task saved. Waiting for an available {agent} session.":`Tarea guardada. Esperando una sesión disponible de {agent}.`,Tasks:`Tareas`,"The PDF could not be opened: {error}":`No se pudo abrir el PDF: {error}`,"The PDF review could not be loaded.":`No se pudo cargar la revisión del PDF.`,"The PDF review is taking longer than expected.":`La revisión del PDF está tardando más de lo esperado.`,"The agent could not connect. Check its setup and try again.":`El agente no pudo conectarse. Comprueba su configuración e inténtalo de nuevo.`,"The assistant is fixing compilation…":`El asistente está corrigiendo la compilación…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`El navegador y el servidor de Papilot pueden ejecutarse en equipos distintos. Los servicios en segundo plano también pueden usar un PATH o una cuenta de usuario diferentes a los de tu terminal.`,"The connection is taking too long. Check your network and try again.":`La conexión está tardando demasiado. Comprueba tu red e inténtalo de nuevo.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`La compilación de desarrollo necesita al menos 2 GB de espacio libre en disco. Libera algo de espacio y vuelve a intentarlo.`,"The diff is too long to show in full.":`Las diferencias son demasiado extensas para mostrarse por completo.`,"The file “{name}” is empty.":`El archivo “{name}” está vacío.`,"The first build is still running.":`La primera compilación aún está en curso.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`El último intento de conexión no encontró una CLI de {command} ejecutable en el entorno del servidor de Papilot. Es posible que esté instalada en otra ubicación o para otro usuario.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`El último intento de conexión no encontró ni CURSOR_API_KEY ni una sesión guardada del SDK de Cursor para el usuario que ejecuta Papilot. Iniciar sesión en la aplicación de escritorio o en la CLI de Cursor no configura este SDK.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`El último intento de conexión no encontró ni Claude Code ni credenciales de API compatibles en el entorno del servidor de Papilot.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`El último intento de conexión no encontró ni ZHIPU_API_KEY ni ZAI_API_KEY en el entorno del servidor de Papilot. Iniciar sesión en Claude o en el sitio web de GLM no proporciona estas claves.`,"The latest changes did not compile. This is the last PDF that did.":`Los últimos cambios no se compilaron. Este es el último PDF que se compiló correctamente.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`La última comprobación de configuración encontró este agente. Vuelve a conectarte para actualizar su estado en vivo.`,"The manuscript did not compile.":`El manuscrito no se compiló.`,"The merge stopped at conflicts.":`La fusión se detuvo debido a conflictos.`,"The merge was abandoned.":`Se abandonó la fusión.`,"The paper needs a little help":`El artículo necesita un poco de ayuda`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`No se pudo confirmar la posición en el nuevo PDF. Se conservan el texto y la anotación originales.`,"The request timed out and may still be processing. Check the task status before retrying.":`La solicitud agotó el tiempo de espera y es posible que siga procesándose. Comprueba el estado de la tarea antes de volver a intentarlo.`,"The skill must contain instructions.":`La habilidad debe contener instrucciones.`,"The update did not finish. Your current version is still available. You can retry here.":`La actualización no finalizó. Tu versión actual sigue disponible. Puedes volver a intentarlo aquí.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`La actualización está lista. Esperando a que finalicen las tareas y las compilaciones del PDF antes de reiniciar.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`La versión actualizada no se inició, por lo que Papilot está usando la versión incluida con la aplicación. Reintente la actualización o descargue la última aplicación de escritorio.`,"Their name, as others will see it":`Su nombre, tal como lo verán los demás`,Theme:`Tema`,"These keep the usual browser and text-editing behavior.":`Conservan el comportamiento habitual del navegador y de edición de texto.`,"Third-party licenses":`Licencias de terceros`,"This PDF has no bookmarks.":`Este PDF no tiene marcadores.`,"This agent has not reported a model list. Its configured default can still be used.":`Este agente no ha informado una lista de modelos. Aún se puede usar su modelo predeterminado configurado.`,"This browser cannot show notifications.":`Este navegador no puede mostrar notificaciones.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`Este navegador no puede usar llaves de acceso. Abre esta página en una versión actual de Safari, Chrome, Edge o Firefox.`,"This browser could not enable notifications.":`Este navegador no pudo activar las notificaciones.`,"This browser could not show the notification.":`Este navegador no pudo mostrar la notificación.`,"This conversation has no manuscript changes.":`Esta conversación no tiene cambios en el manuscrito.`,"This file is not tracked by Git, so it cannot be recovered.":`Este archivo no tiene seguimiento de Git, por lo que no se puede recuperar.`,"This invite link is incomplete. Copy the whole link and open it again.":`Este enlace de invitación está incompleto. Copia el enlace completo y ábrelo de nuevo.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`Esta tecla está reservada para el navegador o la edición de texto. Elige otro atajo.`,"This model uses its own reasoning settings.":`Este modelo usa su propia configuración de razonamiento.`,"This paper":`Este artículo`,"This paper may need XeLaTeX. Change the engine below and retry.":`Es posible que este artículo necesite XeLaTeX. Cambia el motor a continuación y vuelve a intentarlo.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`Este artículo no especifica ningún archivo .bib con {bibliography} ni {addbibresource}.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`Este pasaje incluye ediciones anteriores sin confirmar. Puedes confirmar el resultado revisado en conjunto o aplicarlo sin confirmar.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`Esto elimina permanentemente la tarea de Papilot, incluidos su conversación, árbol de trabajo y archivos de revisión del PDF. Las ediciones no aceptadas y los comentarios guardados se descartarán, y las decisiones de revisión ya no se podrán deshacer.`,"This skill changed on disk. Reload it before deleting.":`Esta habilidad cambió en el disco. Vuelve a cargarla antes de eliminarla.`,"This skill changed on disk. Reload it before saving.":`Esta habilidad cambió en el disco. Vuelve a cargarla antes de guardarla.`,"This skill no longer exists. Refresh the list.":`Esta habilidad ya no existe. Actualiza la lista.`,"This skill was removed on disk. Reload the list before saving.":`Esta habilidad se eliminó del disco. Vuelve a cargar la lista antes de guardar.`,"This step needs attention":`Este paso requiere atención`,"This task did not change the manuscript. Read the answer in the chat.":`Esta tarea no modificó el manuscrito. Lee la respuesta en el chat.`,"This task is being deleted":`Esta tarea se está eliminando`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`Esta tarea está reservada hasta que se confirme la limpieza de su árbol de trabajo. Usa Reintentar eliminación si se interrumpió la conexión.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`Esta versión requiere la última aplicación de escritorio. Descárguela desde GitHub Releases.`,"This worktree’s HEAD is outside the displayed history.":`El HEAD de este árbol de trabajo está fuera del historial mostrado.`,Title:`Título`,Tools:`Herramientas`,Tracking:`Seguimiento`,"Type changed":`Tipo cambiado`,"Typesetting and other remarks":`Composición tipográfica y otras observaciones`,"Typesetting with LaTeX, pass {n}…":`Componiendo con LaTeX, pasada {n}…`,Unavailable:`No disponible`,"Uncommitted changes in the PDF":`Cambios sin confirmar en el PDF`,"Undefined citation":`Cita no definida`,"Undefined reference":`Referencia no definida`,Undo:`Deshacer`,"Undo review decision":`Deshacer decisión de revisión`,"Undo the last review decision or revert.":`Deshacer la última decisión de revisión o revertir.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`Deshacer la escritura, una anotación eliminada o la última decisión de revisión, según dónde esté el foco.`,"Unify terms, notation, spelling and references":`Unificar términos, notación, ortografía y referencias`,Unknown:`Desconocido`,"Unlimited credits":`Créditos ilimitados`,"Unplaced suggestions":`Sugerencias sin ubicar`,"Unsaved changes":`Cambios sin guardar`,"Unstage all changes":`Quitar todos los cambios de preparación`,"Unstage changes":`Quitar cambios de preparación`,"Unstage {path}":`Quitar {path} de preparación`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`Los cambios no preparados se perderán definitivamente y los archivos sin seguimiento se eliminarán. Los cambios preparados se conservan.`,"Unstaged changes are lost for good. Staged changes stay.":`Los cambios no preparados se perderán definitivamente. Los cambios preparados se conservan.`,Untracked:`Sin seguimiento`,"Untracked build output. Add to .gitignore adds:":`Salida de compilación sin seguimiento. Añadir a .gitignore agrega:`,"Up to date":`Actualizado`,"Up to date with the remote.":`Actualizado con el repositorio remoto.`,"Update Papilot":`Actualizar Papilot`,"Update available":`Actualización disponible`,"Update channel":`Canal de actualización`,"Update failed":`Error al actualizar`,"Update now":`Actualizar ahora`,"Update ready":`Actualización lista`,"Update to {version}":`Actualizar a {version}`,Updates:`Actualizaciones`,"Updating…":`Actualizando…`,"Upload failed. Please retry.":`Error al subir. Inténtalo de nuevo.`,"Uploading…":`Subiendo…`,"Usage & limits":`Uso y límites`,"Usage limit":`Límite de uso`,"Usage not reported":`Uso no informado`,"Use a hex color, like #2563EB.":`Usa un color hexadecimal, como #2563EB.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`Usa letras minúsculas, números y guiones. Este también es el nombre del comando /.`,"Use the passkey you created from your invite link.":`Usa la llave de acceso que creaste desde tu enlace de invitación.`,"Used for new tasks. Saved in this browser.":`Se usa para nuevas tareas. Se guarda en este navegador.`,"User guide":`Guía del usuario`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`Usa Claude Code o Claude Agent SDK con ZHIPU_API_KEY o ZAI_API_KEY.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`Usa Claude Code si está instalado, o Claude Agent SDK con credenciales de API.`,"Uses DeepSeek Harness and the providers configured in dsh.":`Usa DeepSeek Harness y los proveedores configurados en dsh.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`Usa GitHub Copilot CLI y su inicio de sesión guardado o el proveedor configurado mediante ACP.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`Usa Grok Build CLI mediante ACP con su inicio de sesión guardado o las credenciales de API configuradas.`,"Uses Kimi Code CLI and its saved login through ACP.":`Usa Kimi Code CLI y su sesión guardada mediante ACP.`,"Uses OpenCode with the providers and models you have connected.":`Usa OpenCode con los proveedores y modelos que hayas conectado.`,"Uses Qwen Code and its saved login through ACP.":`Usa Qwen Code y su sesión guardada mediante ACP.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`Usa una interfaz de línea de comandos local compatible de Codex CLI. Papilot instala su propia copia cuando es necesario.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`Usa Cursor SDK con CURSOR_API_KEY. Papilot instala el SDK en el primer uso.`,"Uses the local Antigravity CLI and its saved Google login.":`Usa Antigravity CLI local y su sesión guardada de Google.`,Verified:`Verificada`,Version:`Versión`,"Version history":`Historial de versiones`,"View & help":`Vista y ayuda`,"View changes for this note":`Ver cambios de esta anotación`,"View changes included in this commit":`Ver los cambios incluidos en esta confirmación`,"View details":`Ver detalles`,"View installation, account, and usage":`Ver instalación, cuenta y uso`,"View {n} review suggestion":`Ver {n} sugerencia de revisión`,"View {n} review suggestions":`Ver {n} sugerencias de revisión`,"Viewed the PDF":`Vio el PDF`,"Viewed the PDF: {places}":`Vio el PDF: {places}`,"Visual style":`Estilo visual`,"Wait for the PDF build to finish before deleting this task.":`Espera a que termine la compilación del PDF antes de eliminar esta tarea.`,"Wait for the PDF to compile.":`Espera a que se compile el PDF.`,"Waiting for your passkey…":`Esperando tu llave de acceso…`,Warning:`Advertencia`,Warnings:`Advertencias`,"Weekly limit":`Límite semanal`,"What are we revising next?":`¿Qué vamos a revisar ahora?`,"What can invited people do?":`¿Qué pueden hacer las personas invitadas?`,"What changed since the last commit, to stage, revert and commit change by change":`Qué cambió desde la última confirmación, para preparar, revertir y confirmar cambio por cambio`,"What does this skill help with?":`¿Con qué ayuda esta habilidad?`,"What is staged, in {n} file:":`Cambios preparados en {n} archivo:`,"What is staged, in {n} files:":`Cambios preparados en {n} archivos:`,"What should change here?":`¿Qué se debe cambiar aquí?`,"What should change in each color group?":`¿Qué se debe cambiar en cada grupo de color?`,"What should change in this group?":`¿Qué se debe cambiar en este grupo?`,"What this task accepted, in {n} file:":`Cambios aceptados en esta tarea, en {n} archivo:`,"What this task accepted, in {n} files:":`Cambios aceptados en esta tarea, en {n} archivos:`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`Cuando un cambio añade o edita una entrada bibliográfica, se buscan su título, autores, año y DOI en Crossref, DBLP y arXiv. No se envía nada más de tu artículo.`,"With review feedback":`Con comentarios de revisión`,Workspace:`Espacio de trabajo`,"Workspace view":`Vista del espacio de trabajo`,Worktrees:`Árboles de trabajo`,"Write a commit message for the chosen files with {agent}":`Escribir un mensaje de commit para los archivos seleccionados con {agent}`,"Write a note…":`Escribe una anotación…`,"Write feedback on the current proposed change.":`Escribir comentarios sobre el cambio propuesto actual.`,"Writing the PDF…":`Escribiendo el PDF…`,Year:`Año`,Yellow:`Amarillo`,"You are offline. Your draft is kept in this browser.":`Estás sin conexión. Tu borrador se conserva en este navegador.`,"You are using the latest version on this channel.":`Estás usando la versión más reciente de este canal.`,"You checked this entry yourself.":`Has verificado esta entrada personalmente.`,"You sent review feedback, {time}":`Enviaste comentarios de revisión, {time}`,"You, {time}":`Tú, {time}`,"Your note":`Tu anotación`,"Your paper compiled successfully. It is ready for editing.":`Tu artículo se compiló correctamente. Está listo para editar.`,"Your review keyboard":`Tu teclado de revisión`,Yours:`Tuyas`,Zoom:`Zoom`,"Zoom in":`Acercar`,"Zoom in (⌘+)":`Acercar (⌘+)`,"Zoom out":`Alejar`,"Zoom out (⌘−)":`Alejar (⌘−)`,"added {time}":`añadido {time}`,"another entry has the same key.":`otra entrada tiene la misma clave.`,"build error":`error de compilación`,clean:`limpio`,detached:`desacoplado`,"detached HEAD":`HEAD desacoplado`,"edited {file}":`editó {file}`,"edited {n} files":`editó {n} archivos`,"from {name}":`de {name}`,"it is not cited.":`no se cita.`,"just now":`ahora mismo`,"no record in Crossref, DBLP or arXiv matches it.":`ningún registro en Crossref, DBLP o arXiv coincide.`,nothing:`nada`,now:`ahora`,"or select text to annotate":`o selecciona texto para anotar`,"p. {page}":`p. {page}`,"possibly the same work as {keys} (same title).":`posiblemente la misma obra que {keys} (mismo título).`,"ran {n} command":`ejecutó {n} comando`,"ran {n} commands":`ejecutó {n} comandos`,"resets in {hours} h {minutes} min":`se restablece en {hours} h {minutes} min`,"resets in {minutes} min":`se restablece en {minutes} min`,"resets now":`se restablece ahora`,"resets {time}":`se restablece {time}`,small:`pequeño`,"the same work as {keys} (same DOI).":`la misma obra que {keys} (mismo DOI).`,"used {n} tool":`usó {n} herramienta`,"used {n} tools":`usó {n} herramientas`,"used {time}":`usado {time}`,"viewed the PDF":`vio el PDF`,"{agent} conversation":`Conversación con {agent}`,"{agent} details":`Detalles de {agent}`,"{agent} finished":`{agent} ha terminado`,"{agent} is requesting permission for this action.":`{agent} solicita permiso para esta acción.`,"{agent} is resolving…":`{agent} está resolviendo…`,"{agent} is unavailable":`{agent} no está disponible`,"{agent} is waiting for your approval":`{agent} espera tu aprobación`,"{agent} is working":`{agent} está trabajando`,"{agent} is working on this task":`{agent} está trabajando en esta tarea`,"{agent} is working · new instructions run next":`{agent} está trabajando · las nuevas instrucciones se ejecutarán a continuación`,"{agent} is writing a commit message…":`{agent} está escribiendo un mensaje de commit…`,"{agent} needs your input":`{agent} necesita tu respuesta`,"{agent} on the merge":`{agent} en la fusión`,"{agent} usage":`Uso de {agent}`,"{agent} usage details":`Detalles de uso de {agent}`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`No se encontró {agent} en este equipo. Instálalo o configúralo y luego selecciona Reconectar.`,"{ahead} ahead · {behind} behind":`{ahead} por delante · {behind} por detrás`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`Tanto {branch} como {upstream} han cambiado. La fusión incorpora los commits remotos.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) no tiene ninguna entrada con esta clave.`,"{command} was not found by Papilot.":`Papilot no encontró {command}.`,"{current} of {total}":`{current} de {total}`,"{differences} (record: {url}).":`{differences} (registro: {url}).`,"{field} is {bib} but {source} has {record}":`{field} es {bib}, pero {source} tiene {record}`,"{field}: {bib} here, {record} in {source}":`{field}: {bib} aquí, {record} en {source}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} te invitó a Papilot. Aparecerás como {name}.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} te invitó a trabajar en {papers}. Aparecerás como {name}.`,"{key} ({place}): {problems}":`{key} ({place}): {problems}`,"{name} (you)":`{name} (tú)`,"{name} sent review feedback, {time}":`{name} envió comentarios de revisión, {time}`,"{name} used":`{name} usado`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n} aceptados`,"{n} active task":`{n} tarea activa`,"{n} active tasks":`{n} tareas activas`,"{n} build file":`{n} archivo de compilación`,"{n} build files":`{n} archivos de compilación`,"{n} change to decide":`{n} cambio por decidir`,"{n} change to review":`{n} cambio por revisar`,"{n} changed":`{n} modificados`,"{n} changes to decide":`{n} cambios por decidir`,"{n} changes to review":`{n} cambios por revisar`,"{n} checked by you":`{n} comprobadas por ti`,"{n} comment":`{n} comentario`,"{n} comments":`{n} comentarios`,"{n} compilation error":`{n} error de compilación`,"{n} compilation errors":`{n} errores de compilación`,"{n} compilation warning":`{n} advertencia de compilación`,"{n} compilation warnings":`{n} advertencias de compilación`,"{n} conflicts":`{n} conflictos`,"{n} could not be checked":`{n} no se pudieron comprobar`,"{n} credits":`{n} créditos`,"{n} differ":`{n} difieren`,"{n} entries":`{n} entradas`,"{n} entry":`{n} entrada`,"{n} failed":`{n} fallidos`,"{n} file staged":`{n} archivo preparado`,"{n} file still has conflicts.":`{n} archivo aún tiene conflictos.`,"{n} files staged":`{n} archivos preparados`,"{n} files still have conflicts.":`{n} archivos aún tienen conflictos.`,"{n} location":`{n} ubicación`,"{n} locations":`{n} ubicaciones`,"{n} new commit on {upstream}.":`{n} nueva confirmación en {upstream}.`,"{n} new commits on {upstream}.":`{n} nuevas confirmaciones en {upstream}.`,"{n} not found":`{n} no encontradas`,"{n} notes on the PDF":`{n} anotaciones en el PDF`,"{n} rejected":`{n} rechazados`,"{n} review update not sent yet":`{n} actualización de revisión aún no enviada`,"{n} review update will be sent with this message":`{n} actualización de revisión se enviará con este mensaje`,"{n} review updates not sent yet":`{n} actualizaciones de revisión aún no enviadas`,"{n} review updates will be sent with this message":`{n} actualizaciones de revisión se enviarán con este mensaje`,"{n} staged":`{n} preparados`,"{n} undone":`{n} deshechos`,"{n} unstaged":`{n} sin preparar`,"{n} untracked":`{n} sin seguimiento`,"{n} verified":`{n} verificadas`,"{n}-day limit":`límite de {n} días`,"{n}-hour limit":`límite de {n} horas`,"{n}-minute limit":`límite de {n} minutos`,"{n}d":`{n}d`,"{n}h":`{n}h`,"{n}m":`{n}m`,"{selected} / {total} locations selected":`{selected} / {total} ubicaciones seleccionadas`,"{shown} of {total} components":`{shown} de {total} componentes`,"{sources} could not be reached.":`No se pudo acceder a {sources}.`,"{time} ago":`hace {time}`,"{title} PDF change review":`Revisión de cambios en el PDF de {title}`,"{used}% used":`{used}% usado`},se={"A commit is already in progress. Wait for it to finish.":`Ya hay una confirmación en curso. Espera a que termine.`,"A commit is in progress. Try again when it finishes.":`Hay una confirmación en curso. Inténtalo de nuevo cuando termine.`,"A review action is already in progress. Wait for it to finish.":`Ya hay una acción de revisión en curso. Espera a que termine.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`Una anotación del PDF seleccionada ya se está enviando. Espera a que termine de crearse esa tarea.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`Una anotación del PDF seleccionada ya no está disponible. Actualiza el manuscrito e inténtalo de nuevo.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`La revisión con IA solo acepta instrucciones de revisión. Inicia una tarea de edición para enviar anotaciones, habilidades o archivos adjuntos.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`La revisión con IA solo crea anotaciones en el PDF. No puede publicar cambios en el manuscrito.`,"AI review has no manuscript changes to apply.":`La revisión de IA no tiene cambios en el manuscrito para aplicar.`,"AI review has no manuscript changes to deliver.":`La revisión con IA no tiene cambios en el manuscrito para entregar.`,"AI review uses manuscript PDF notes, not change decisions.":`La revisión con IA utiliza anotaciones en el PDF del manuscrito, no decisiones sobre cambios.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`La revisión con IA utiliza el PDF del manuscrito. Inicia una tarea de edición independiente para enviar anotaciones o archivos adjuntos.`,"Accepted changes are already in the manuscript.":`Los cambios aceptados ya están en el manuscrito.`,"An AI review comment is invalid. Ask the reviewer to retry.":`Un comentario de la revisión de IA no es válido. Pide al revisor que lo intente de nuevo.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`Un comentario de la revisión de IA enumera las líneas del PDF en orden inverso. Pide al revisor que coloque el inicio antes del final.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`Un comentario de la revisión de IA hace referencia a una ubicación desconocida del PDF. Pide al revisor que lo intente de nuevo usando los ID de línea proporcionados.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`Un comentario de la revisión de IA abarca varias páginas del PDF. Pide al revisor que lo fije en una sola página.`,"Another Papilot instance is already updating.":`Otra instancia de Papilot ya se está actualizando.`,"Answer every question before submitting.":`Responde a todas las preguntas antes de enviar.`,"Attachment not found.":`Archivo adjunto no encontrado.`,"Attachments must total 100 MB or less.":`Los archivos adjuntos deben sumar 100 MB o menos en total.`,"Check for a newer release before updating.":`Busca una versión más reciente antes de actualizar.`,"Check out a branch before pushing.":`Cambia a una rama antes de subir cambios.`,"Check the task status before pausing this turn.":`Comprueba el estado de la tarea antes de pausar este turno.`,"Check the task status before sending more instructions.":`Comprueba el estado de la tarea antes de enviar más instrucciones.`,"Choose Codex, Claude or GLM for AI review.":`Elige Codex, Claude o GLM para la revisión con IA.`,"Choose a ZIP smaller than 64 MB.":`Elige un archivo ZIP de menos de 64 MB.`,"Choose a file with a valid name.":`Elige un archivo con un nombre válido.`,"Choose a folder smaller than 64 MB.":`Elige una carpeta de menos de 64 MB.`,"Choose a supported LaTeX engine.":`Elige un motor de LaTeX compatible.`,"Choose a valid update channel.":`Elige un canal de actualización válido.`,"Choose an available model for this agent.":`Elige un modelo disponible para este agente.`,"Choose an entry to confirm.":`Elige una entrada para confirmar.`,"Choose an existing TeX main file.":`Elige un archivo TeX principal existente.`,"Choose between 1 and 5,000 files.":`Elige entre 1 y 5000 archivos.`,"Choose one folder or ZIP.":`Elige una carpeta o un archivo ZIP.`,"Choose one of the offered answers.":`Elige una de las respuestas ofrecidas.`,"Choose stage, unstage or revert.":`Elige stage, unstage o revert.`,"Choose whether to archive or restore the task.":`Elige si deseas archivar o restaurar la tarea.`,"Claude Code did not list its models.":`Claude Code no mostró sus modelos.`,"Claude Code exited before listing its models.":`Claude Code se cerró antes de mostrar sus modelos.`,"Claude has not reported usage yet.":`Claude aún no ha informado sobre el uso.`,"Codex disconnected. Resume the task before retrying.":`Codex se desconectó. Reanuda la tarea antes de volver a intentarlo.`,"Codex is not connected.":`Codex no está conectado.`,"Commit the task first, then push from Git.":`Confirma la tarea primero y luego haz push desde Git.`,"Confirm permanent task deletion before continuing.":`Confirma la eliminación permanente de la tarea antes de continuar.`,"Could not check for updates.":`No se pudieron buscar actualizaciones.`,"Could not check for updates. Try again when connected.":`No se pudo buscar actualizaciones. Inténtalo de nuevo cuando tengas conexión.`,"Could not complete the environment checks. Please try again.":`No se pudieron completar las comprobaciones del entorno. Vuelve a intentarlo.`,"Could not read the LaTeX installation.":`No se pudo leer la instalación de LaTeX.`,"Could not restart the background service.":`No se pudo reiniciar el servicio en segundo plano.`,"Deletion is already in progress. Wait for it to finish.":`La eliminación ya está en curso. Espera a que termine.`,"Describe the revision, choose a skill, or add a PDF note.":`Describe los cambios, elige una habilidad o añade una anotación al PDF.`,"Describe what to do with each selected color group.":`Describe qué hacer con cada grupo de color seleccionado.`,"Download desktop updates from GitHub Releases.":`Descarga las actualizaciones de escritorio desde GitHub Releases.`,"Enter a folder path.":`Introduce la ruta de una carpeta.`,"Enter a paper name under 120 characters.":`Introduce un nombre de artículo de menos de 120 caracteres.`,"Fast mode is not available for this model.":`El modo rápido no está disponible para este modelo.`,"Files must be 25 MB or smaller.":`Los archivos deben ser de 25 MB o menos.`,"Finish or abort the merge before committing other changes.":`Finaliza o cancela la fusión antes de confirmar otros cambios.`,"Finish or abort the merge before discarding changes.":`Finaliza o cancela la fusión antes de descartar los cambios.`,"Finish or abort the merge before staging other changes.":`Finaliza o cancela la fusión antes de preparar otros cambios.`,"Finish or abort the merge first.":`Finaliza o cancela la fusión primero.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`Finaliza o cancela la fusión en el panel de Git antes de aceptar, rechazar o deshacer cambios.`,"GLM does not report usage to Papilot.":`GLM no informa sobre el uso a Papilot.`,"Group instructions must refer to selected PDF notes.":`Las instrucciones de grupo deben hacer referencia a las anotaciones del PDF seleccionadas.`,"Images must be 5 MB or smaller.":`Las imágenes deben ser de 5 MB o menos.`,"Import not found.":`Importación no encontrada.`,"Invalid annotation group.":`Grupo de anotaciones no válido.`,"Invalid approval decision.":`Decisión de aprobación no válida.`,"Invalid development revision.":`Revisión de desarrollo no válida.`,"Invalid development version.":`Versión de desarrollo no válida.`,"Invalid diagnostic report.":`Informe de diagnóstico no válido.`,"Invalid file path in upload.":`Ruta de archivo no válida en la subida.`,"Invalid file path.":`Ruta de archivo no válida.`,"Invalid model.":`Modelo no válido.`,"Invalid note location.":`Ubicación de la anotación no válida.`,"Invalid reasoning effort.":`Esfuerzo de razonamiento no válido.`,"Invalid release information.":`Información de la versión no válida.`,"Invalid release version.":`Versión de publicación no válida.`,"Invalid save action.":`Acción de guardado no válida.`,"Invalid task ID.":`ID de tarea no válido.`,"Invalid update activation.":`Activación de actualización no válida.`,"Invalid upload data.":`Datos de subida no válidos.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`Gestiona esta sugerencia en su tarea de revisión de IA o cópiala primero al manuscrito.`,"Missing update restart job.":`Falta el trabajo de reinicio de la actualización.`,"No file has conflict markers left. Commit the merge.":`Ningún archivo tiene ya marcadores de conflicto. Confirma la fusión.`,"No merge is in progress.":`No hay ninguna fusión en curso.`,"No such file.":`El archivo no existe.`,"None of the chosen files is build output that can be ignored.":`Ninguno de los archivos elegidos es un resultado de compilación que se pueda ignorar.`,"Not found":`No encontrado`,"Note not found.":`Anotación no encontrada.`,"Only the model and its settings can be changed.":`Solo se pueden cambiar el modelo y su configuración.`,"Only the owner of this Papilot can do this.":`Solo el propietario de este Papilot puede hacer esto.`,"Open Papilot at its public address.":`Abre Papilot en su dirección pública.`,"Paper name is too long.":`El nombre del artículo es demasiado largo.`,"Paper project not found.":`Proyecto de artículo no encontrado.`,"Papilot did not finish shutting down.":`Papilot no terminó de cerrarse.`,"Papilot is restarting after an update. Please wait a moment.":`Papilot se está reiniciando tras una actualización. Espera un momento.`,"Papilot restarted. Retry compilation to continue this import.":`Papilot se reinició. Vuelve a intentar la compilación para continuar con esta importación.`,"Pause Codex before building a review.":`Pausa Codex antes de generar una revisión.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`Pausa la tarea y espera a que termine su trabajo o acción de revisión actual antes de eliminarla. Resuelve primero cualquier acción pendiente de confirmación.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`Pausa la tarea antes de aceptar, rechazar o deshacer cambios. Espera a que termine cualquier compilación del PDF.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`Pausa las tareas activas de este artículo y espera a que termine el trabajo actual antes de cambiar su ruta o eliminarlo. Resuelve primero cualquier acción pendiente de confirmación.`,"Resolve the merge conflicts in the selected files before committing.":`Resuelve los conflictos de fusión en los archivos seleccionados antes de confirmar.`,"Restore this suggestion before copying it.":`Restaura esta sugerencia antes de copiarla.`,"Retry deletion to confirm this task was removed.":`Reintenta la eliminación para confirmar que se eliminó esta tarea.`,"Retry the pending delivery before sending more instructions.":`Reintenta el envío pendiente antes de enviar más instrucciones.`,"Review resource not found.":`No se encontró el recurso de revisión.`,"Select a folder containing the paper.":`Selecciona una carpeta que contenga el artículo.`,"Select a valid paper to check.":`Selecciona un artículo válido para comprobar.`,"Select a valid paper.":`Selecciona un artículo válido.`,"Select an existing review round and either the before or after PDF.":`Selecciona una ronda de revisión existente y el PDF anterior o posterior.`,"Select at least one change.":`Selecciona al menos un cambio.`,"Select at least one changed file to commit.":`Selecciona al menos un archivo modificado para confirmar.`,"Select at least one changed file.":`Selecciona al menos un archivo modificado.`,"Select text or mark a region on the page first.":`Selecciona texto o marca una región en la página primero.`,"Select the root directory of the Git repository.":`Selecciona el directorio raíz del repositorio de Git.`,"Select unsent PDF notes for this task.":`Selecciona anotaciones de PDF no enviadas para esta tarea.`,"Select up to 10 valid attachments.":`Selecciona hasta 10 archivos adjuntos válidos.`,"Select valid PDF notes for this task.":`Selecciona anotaciones de PDF válidas para esta tarea.`,"Select valid review notes.":`Selecciona anotaciones de revisión válidas.`,"Send attachments with a message, separately from review feedback.":`Envía los archivos adjuntos con un mensaje, por separado de los comentarios de la revisión.`,"Service tiers are only available for Codex.":`Los niveles de servicio solo están disponibles para Codex.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`Configura PAPILOT_ACCOUNT_ORIGIN con la URL pública antes de invitar a personas.`,"Sign in to continue.":`Inicia sesión para continuar.`,"Sign-in is not set up on this Papilot.":`El inicio de sesión no está configurado en este Papilot.`,"Stage at least one change to commit.":`Prepara al menos un cambio para confirmar.`,"Stage at least one change.":`Prepara al menos un cambio.`,"Start a new task to run the AI review skill on the current PDF.":`Inicia una nueva tarea para ejecutar la habilidad de revisión con IA en el PDF actual.`,"Start or resume the thread before starting a turn.":`Inicia o reanuda el hilo antes de comenzar un turno.`,"Task not found.":`Tarea no encontrada.`,"That file has no uncommitted changes.":`Ese archivo no tiene cambios sin confirmar.`,"That page is not part of the manuscript.":`Esa página no forma parte del manuscrito.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`La revisión de IA no devolvió anotaciones válidas. Pídele que lo intente de nuevo con el formato JSON requerido.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`La respuesta de la revisión de IA está incompleta o es demasiado larga. Pide al revisor que lo intente de nuevo.`,"The PDF copy for this review is unavailable. Start a new AI review.":`La copia del PDF de esta revisión no está disponible. Inicia una nueva revisión de IA.`,"The PDF is building. Wait for this build to finish.":`El PDF se está compilando. Espera a que termine esta compilación.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`La instantánea del PDF para esta revisión no está disponible. Inicia una nueva revisión con IA.`,"The ZIP expands beyond 64 MB or 5,000 files.":`El archivo ZIP supera los 64 MB o los 5000 archivos al descomprimirse.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`La compilación de desarrollo necesita al menos 2 GB de espacio libre en disco. Libera espacio y vuelve a intentarlo.`,"The development checkout does not match the requested commit.":`La copia de trabajo de desarrollo no coincide con la confirmación solicitada.`,"The development checkout does not match the requested version.":`La copia de trabajo de desarrollo no coincide con la versión solicitada.`,"The downloaded package does not match the requested release.":`El paquete descargado no coincide con la versión solicitada.`,"The downloaded release is incomplete.":`La versión descargada está incompleta.`,"The manuscript changed while copying this suggestion. Try again.":`El manuscrito cambió mientras se copiaba esta sugerencia. Vuelve a intentarlo.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`No se pudo instalar la nueva versión. Comprueba la conexión y el espacio disponible en disco, y vuelve a intentarlo.`,"The new version did not pass its startup check. Your current version is still running.":`La nueva versión no superó la comprobación de inicio. Tu versión actual sigue en ejecución.`,"The new version did not restart successfully.":`La nueva versión no se reinició correctamente.`,"The owner cannot be removed.":`No se puede eliminar al propietario.`,"The owner sees every paper.":`El propietario ve todos los artículos.`,"The paper configuration must contain a JSON object.":`La configuración del artículo debe contener un objeto JSON.`,"The paper configuration must not be a symbolic link.":`La configuración del artículo no debe ser un enlace simbólico.`,"The passkey could not be created. Try again.":`No se pudo crear la llave de acceso. Inténtalo de nuevo.`,"The request origin does not match.":`El origen de la solicitud no coincide.`,"The review action is still being checked. Wait for it to finish.":`La acción de revisión aún se está comprobando. Espera a que termine.`,"The review could not be loaded. Try again.":`No se pudo cargar la revisión. Vuelve a intentarlo.`,"The review engine could not confirm this action. Check again when it is available.":`El motor de revisión no pudo confirmar esta acción. Vuelve a comprobarlo cuando esté disponible.`,"The review engine could not confirm this action. Select Check status before continuing.":`El motor de revisión no pudo confirmar esta acción. Selecciona Comprobar estado antes de continuar.`,"The review engine could not confirm this task’s cleanup status.":`El motor de revisión no pudo confirmar el estado de limpieza de esta tarea.`,"The review engine did not confirm task deletion.":`El motor de revisión no confirmó la eliminación de la tarea.`,"The review engine returned an unexpected response. Select Check status before continuing.":`El motor de revisión devolvió una respuesta inesperada. Selecciona Comprobar estado antes de continuar.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`El repositorio seleccionado no contiene los árboles de trabajo de las tareas de este artículo. Selecciona el repositorio con sus tareas existentes o añádelo como un artículo independiente.`,"The server is shutting down.":`El servidor se está cerrando.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`El servidor se reinició e interrumpió el turno anterior. Continúa en la misma conversación.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`El servidor se reinició antes de que se confirmara una acción de revisión. Selecciona Comprobar estado antes de continuar.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`El servidor se reinició durante la eliminación. Vuelve a intentar la eliminación para confirmar la limpieza.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`El servidor se reinició durante la compilación del PDF. Comprueba la revisión y vuelve a compilarla si es necesario.`,"The task was paused before these instructions were queued. Your draft has been kept.":`La tarea se pausó antes de poner estas instrucciones en cola. Se ha conservado tu borrador.`,"The update download timed out.":`Se agotó el tiempo de espera para descargar la actualización.`,"The update restart helper did not start.":`El asistente de reinicio de la actualización no se inició.`,"The update was interrupted. Your current installation is still available; retry the update.":`La actualización se interrumpió. Tu instalación actual sigue disponible; vuelve a intentar la actualización.`,"There is no compilation log yet.":`Aún no hay ningún registro de compilación.`,"There is no new review feedback to send.":`No hay nuevos comentarios de revisión para enviar.`,"This PDF has no selectable text to review.":`Este PDF no tiene texto seleccionable para revisar.`,"This PDF is too long for one AI review (180,000 characters maximum).":`Este PDF es demasiado largo para una sola revisión con IA (máximo 180 000 caracteres).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`Esta dirección es solo para tu tailnet. Las personas externas inician sesión en PAPILOT_ACCOUNT_ORIGIN.`,"This agent does not report usage.":`Este agente no informa sobre el uso.`,"This attachment is already being sent to another task.":`Este archivo adjunto ya se está enviando a otra tarea.`,"This attachment is not available for this task.":`Este archivo adjunto no está disponible para esta tarea.`,"This branch does not track a remote branch yet.":`Esta rama aún no sigue a ninguna rama remota.`,"This comparison is out of date. Refresh the page.":`Esta comparación está desactualizada. Actualiza la página.`,"This device is no longer signed in.":`Este dispositivo ya no tiene la sesión iniciada.`,"This entry is no longer among the changes. Refresh the page.":`Esta entrada ya no se encuentra entre los cambios. Actualiza la página.`,"This entry is no longer in the bibliography. Refresh the panel.":`Esta entrada ya no está en la bibliografía. Actualiza el panel.`,"This file is empty.":`Este archivo está vacío.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`Esta carpeta pertenece a un repositorio Git superior. Selecciona su carpeta raíz o sube una copia.`,"This image format is not supported.":`Este formato de imagen no es compatible.`,"This invite link has expired or was already used. Ask for a new one.":`Este enlace de invitación ha caducado o ya se ha utilizado. Solicita uno nuevo.`,"This manuscript preview is out of date. Refresh it and try again.":`Esta vista previa del manuscrito está desactualizada. Actualízala y vuelve a intentarlo.`,"This model does not support that reasoning effort.":`Este modelo no admite ese esfuerzo de razonamiento.`,"This note has already been sent.":`Esta anotación ya se ha enviado.`,"This note has been deleted. Undo the deletion first.":`Esta anotación se ha eliminado. Deshaz primero la eliminación.`,"This note is being sent. Wait for the task to finish creating.":`Esta anotación se está enviando. Espera a que termine de crearse la tarea.`,"This page has expired. Refresh it and try again.":`Esta página ha caducado. Actualízala e inténtalo de nuevo.`,"This paper is already added. Open it from the paper list.":`Este artículo ya está añadido. Ábrelo desde la lista de artículos.`,"This paper is being updated. Please retry in a moment.":`Este artículo se está actualizando. Vuelve a intentarlo en un momento.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`No se pudo localizar este pasaje con precisión en el manuscrito actual. La sugerencia permanece en la tarea de revisión.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`No se pudo iniciar sesión con esta llave de acceso. Solicita una nueva invitación al propietario si fue eliminada.`,"This person is no longer in Papilot.":`Esta persona ya no está en Papilot.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`Este repositorio aún no tiene confirmaciones. Realiza una confirmación para comparar cambios posteriores en el PDF.`,"This repository has no remote.":`Este repositorio no tiene un remoto.`,"This repository is already added as another paper.":`Este repositorio ya se ha añadido como otro artículo.`,"This request ID is already in use by another task.":`Este ID de solicitud ya está en uso en otra tarea.`,"This request has ended or the connection has restarted.":`Esta solicitud ha finalizado o la conexión se ha reiniciado.`,"This request has ended.":`Esta solicitud ha finalizado.`,"This review page has expired. Refresh it and try again.":`Esta página de revisión ha caducado. Actualízala e inténtalo de nuevo.`,"This review task does not belong to this workspace.":`Esta tarea de revisión no pertenece a este espacio de trabajo.`,"This suggestion does not belong to this review task.":`Esta sugerencia no pertenece a esta tarea de revisión.`,"This suggestion was ignored while copying. Restore it first.":`Esta sugerencia se ignoró al copiar. Restáurala primero.`,"This task already applies accepted changes to the working directory.":`Esta tarea ya aplica los cambios aceptados al directorio de trabajo.`,"This task already has queued instructions. Wait or pause it first.":`Esta tarea ya tiene instrucciones en cola. Espera o páusala primero.`,"This task has no accepted changes left to commit.":`A esta tarea no le quedan cambios aceptados por confirmar.`,"This task is being created. Refresh in a moment.":`Esta tarea se está creando. Actualiza en un momento.`,"This task is being deleted.":`Esta tarea se está eliminando.`,"This task is being deleted. Retry deletion to finish cleanup.":`Esta tarea se está eliminando. Reintenta la eliminación para finalizar la limpieza.`,"This task is being deleted. Your instructions were not queued.":`Esta tarea se está eliminando. Tus instrucciones no se pusieron en cola.`,"This task is busy. Wait for it to finish or pause it first.":`Esta tarea está ocupada. Espera a que termine o páusala primero.`,"This task is not an AI review.":`Esta tarea no es una revisión de IA.`,"This task was deleted. Create a new task instead.":`Esta tarea se eliminó. Crea una tarea nueva en su lugar.`,"Too many attempts. Wait a minute and try again.":`Demasiados intentos. Espera un minuto e inténtalo de nuevo.`,"Too many open Papilot tabs. Close one and try again.":`Hay demasiadas pestañas de Papilot abiertas. Cierra una e inténtalo de nuevo.`,"Unknown Git action.":`Acción de Git desconocida.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`Los archivos adjuntos sin usar han alcanzado los 500 MB. Elimina archivos adjuntos de tus borradores antes de subir más.`,"Upload a file as binary data.":`Sube un archivo como datos binarios.`,"Wait for repository preparation to finish.":`Espera a que termine la preparación del repositorio.`,"Wait for task creation to finish before deleting it.":`Espera a que termine la creación de la tarea antes de eliminarla.`,"Wait for the current Git operation before sending more instructions.":`Espera a que termine la operación actual de Git antes de enviar más instrucciones.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`Espera a que termine de compilarse el PDF actual y luego ejecuta la habilidad de revisión de IA.`,"Wait for the current delivery before sending more instructions.":`Espera al envío actual antes de enviar más instrucciones.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`Espera a que termine de compilarse el PDF del manuscrito actual y vuelve a copiar la sugerencia.`,"Wait for the current review action before building a review.":`Espera a que termine la acción de revisión actual antes de generar una revisión.`,"Wait for the current review action before committing.":`Espera a que termine la acción de revisión actual antes de confirmar los cambios.`,"Wait for the current update to finish before changing channels.":`Espera a que termine la actualización actual antes de cambiar de canal.`,"Wait for the task and review actions to finish before applying changes.":`Espera a que terminen las acciones de tarea y revisión antes de aplicar los cambios.`,"Wait for the task and review actions to finish before choosing a destination.":`Espera a que terminen las acciones de la tarea y de la revisión antes de elegir un destino.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`Espera a que termine la compilación del PDF de este artículo antes de cambiar su ruta o eliminarlo.`,"ZIP links and special files are not supported.":`No se admiten enlaces ni archivos especiales en el ZIP.`,"npm is unavailable to Papilot.":`npm no está disponible para Papilot.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`No se pudo conectar con el servicio de comparación de PDF. Los cambios están guardados. Selecciona «Comprobar estado» para recuperar la compilación existente.`},V={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`Um pacote, fonte ou arquivo de código-fonte pode estar ausente. Verifique os detalhes abaixo, restaure o arquivo ausente ou peça ajuda.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`Uma chave de acesso inicia sua sessão com o Face ID, Touch ID, Windows Hello ou seu telefone. O Papilot nunca vê uma senha.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`Uma habilidade com o mesmo ID tem prioridade aqui: este artigo, depois global e, por fim, integrada.`,"A skill with this ID already exists in this location.":`Já existe uma habilidade com este ID neste local.`,"A task needs attention":`Uma tarefa precisa de atenção`,"A workspace for your papers.":`Um espaço de trabalho para seus artigos.`,"AI is resolving conflicts…":`A IA está resolvendo conflitos…`,"AI needs your input":`A IA precisa da sua resposta`,"AI review":`Revisão por IA`,"AI suggestion":`Sugestão de IA`,"AI suggestion {n}":`Sugestão de IA {n}`,"AI suggestions":`Sugestões de IA`,"Abort merge":`Interromper mesclagem`,"Aborting…":`Interrompendo…`,"About Papilot":`Sobre o Papilot`,Accent:`Cor de destaque`,"Accept change":`Aceitar alteração`,"Accept the current proposal. In Changes, stage or unstage it.":`Aceite a proposta atual. Em Alterações, prepare-a ou remova-a da preparação.`,Accepted:`Aceita`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`As alterações aceitas no seu manuscrito permanecem no lugar. Outras tarefas não são afetadas.`,"Access to all papers":`Acesso a todos os artigos`,Account:`Conta`,"Add a paper":`Adicionar um artigo`,"Add a passkey":`Adicionar uma chave de acesso`,"Add all to task":`Adicionar tudo à tarefa`,"Add and fix later":`Adicionar e corrigir depois`,"Add files or skills":`Adicionar arquivos ou habilidades`,"Add files…":`Adicionar arquivos…`,"Add instructions to the selected color groups above.":`Adicione instruções aos grupos de cores selecionados acima.`,"Add note":`Adicionar anotação`,"Add overall instructions (optional)":`Adicionar instruções gerais (opcional)`,"Add paper":`Adicionar artigo`,"Add paper…":`Adicionar artigo…`,"Add skill":`Adicionar habilidade`,"Add to .gitignore":`Adicionar ao .gitignore`,"Add to group":`Adicionar ao grupo`,"Add to {group}":`Adicionar a {group}`,"Add your first paper":`Adicione seu primeiro artigo`,Added:`Adicionado`,"Added to task: {n}":`Adicionado à tarefa: {n}`,"Added {n} pattern to .gitignore.":`{n} padrão adicionado ao .gitignore.`,"Added {n} patterns to .gitignore.":`{n} padrões adicionados ao .gitignore.`,"Address reviewers":`Responder aos revisores`,"Address {n} PDF notes":`Resolver {n} anotações do PDF`,Advanced:`Avançado`,"Agent configuration":`Configuração do agente`,"Agent settings":`Configurações do agente`,Agents:`Agentes`,All:`Todas`,"All entries":`Todas as entradas`,"All skills":`Todas as habilidades`,"Allow this action":`Permitir esta ação`,"Already set up?":`Já configurado?`,"Already used for {action}. Choose another shortcut.":`Já usado para {action}. Escolha outro atalho.`,"Always light":`Sempre claro`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`Uma variável de ambiente definida em um novo terminal não alcança um servidor já em execução. Reinicie o Papilot com as credenciais; apenas reconectar não altera seu ambiente.`,"Annotation group color":`Cor do grupo de anotações`,"Annotation groups":`Grupos de anotações`,"Another entry has the same key.":`Outra entrada tem a mesma chave.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`O Antigravity abre imagens por meio de suas ferramentas de arquivo. Para entrada direta de imagem, escolha Codex ou Claude.`,Appearance:`Aparência`,Application:`Aplicativo`,"Applied to manuscript":`Aplicado ao manuscrito`,Apply:`Aplicar`,"Apply file changes":`Aplicar alterações nos arquivos`,"Apply to working directory":`Aplicar ao diretório de trabalho`,"Apply to workspace":`Aplicar ao espaço de trabalho`,"Apply without committing":`Aplicar sem fazer commit`,"Applying…":`Aplicando…`,"Approval requests":`Solicitações de aprovação`,"Approve this action":`Aprovar esta ação`,Archive:`Arquivar`,"Archive task":`Arquivar tarefa`,"Archived task":`Tarefa arquivada`,"Archived tasks":`Tarefas arquivadas`,"Ask a question or request changes…":`Faça uma pergunta ou solicite alterações…`,"Ask an agent to look into {n} problem":`Pedir a um agente para analisar {n} problema`,"Ask an agent to look into {n} problems":`Pedir a um agente para analisar {n} problemas`,"Ask for another review of this PDF version…":`Solicitar outra revisão desta versão do PDF…`,"Attach up to 10 files per message.":`Anexe até 10 arquivos por mensagem.`,Attachments:`Anexos`,"Attachments must total 100 MB or less.":`Os anexos devem somar 100 MB ou menos.`,Authors:`Autores`,"Available levels depend on the selected model.":`Os níveis disponíveis dependem do modelo selecionado.`,"Available models":`Modelos disponíveis`,"Awaiting changes":`Aguardando alterações`,Background:`Plano de fundo`,"Bare repository":`Repositório bare`,"BibTeX cannot read it ({error}).":`O BibTeX não consegue ler ({error}).`,"BibTeX cannot read it: {error}":`O BibTeX não consegue ler: {error}`,Book:`Livro`,Branch:`Ramo`,"Bring your collaborators in":`Traga seus colaboradores`,"Browser default ({language})":`Padrão do navegador ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`Os navegadores exibem notificações apenas em HTTPS ou localhost. Abra o Papilot em um endereço seguro para usá-las.`,"Build failed · sent to {agent}":`Falha na compilação · enviado para {agent}`,"Built-in":`Integrada`,Cancel:`Cancelar`,"Change shortcut: {action}":`Alterar atalho: {action}`,"Change {n}":`Alteração {n}`,"Changed files in {branch}":`Arquivos alterados em {branch}`,Changelog:`Histórico de alterações`,Changes:`Alterações`,"Changes apply to the next turn.":`As alterações se aplicam ao próximo turno.`,"Changes in {path}":`Alterações em {path}`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`Alterações mostra apenas as seções alteradas e abre mais rápido. PDF mostra cada alteração no local em todo o artigo e demora mais para artigos longos. O seletor em uma revisão altera apenas essa revisão.`,"Change…":`Alterar…`,Chart:`Gráfico`,Chat:`Chat`,"Chat (reply needed)":`Chat (resposta necessária)`,"Chat only":`Apenas chat`,"Check again":`Verificar novamente`,"Check for updates":`Verificar atualizações`,"Check for updates to see the latest version.":`Verifique se há atualizações para ver a versão mais recente.`,"Check math":`Verificar matemática`,"Check online":`Verificar online`,"Check references online":`Verificar referências online`,"Check status":`Verificar status`,"Check task status":`Verificar status da tarefa`,"Check task status before deleting this task.":`Verifique o status da tarefa antes de excluí-la.`,"Check task status before sending":`Verifique o status da tarefa antes de enviar`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`Verifique o erro de conexão acima e as configurações de login, provedor e rede do agente neste host. Reinicie o Papilot após alterar credenciais ou caminhos de executáveis.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`Verifique o arquivo principal e o mecanismo de compilação, ou peça ao assistente para corrigir a compilação. Você também pode editar os arquivos salvos e tentar novamente.`,"Check the task status before sending notes.":`Verifique o status da tarefa antes de enviar anotações.`,"Check your connection and try again.":`Verifique sua conexão e tente novamente.`,"Check {n} more online":`Verificar mais {n} online`,"Checked by you":`Verificado por você`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`Verificando alterações no manuscrito. Uma comparação em PDF só é gerada quando necessário.`,"Checking for updates…":`Verificando atualizações…`,"Checking {n}…":`Verificando {n}…`,"Checking…":`Verificando…`,Checklist:`Lista de verificação`,"Choose ZIP":`Escolher ZIP`,"Choose a folder or ZIP, or drag it here.":`Escolha uma pasta ou ZIP, ou arraste para cá.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`Escolha uma pasta para enviar uma cópia. Para usar os arquivos originais, abra-a no aplicativo para desktop.`,"Choose a shortcut to edit:":`Escolha um atalho para editar:`,"Choose an icon":`Escolher um ícone`,"Choose attachments":`Escolher anexos`,"Choose different files":`Escolher outros arquivos`,"Choose folder":`Escolher pasta`,"Choose how paper pages look in dark mode.":`Escolha a aparência das páginas do artigo no modo escuro.`,"Choose the papers to share, then send a personal invite link.":`Escolha os artigos para compartilhar e envie um link de convite pessoal.`,"Choose up to 5,000 files, totaling less than 64 MB.":`Escolha até 5.000 arquivos, totalizando menos de 64 MB.`,"Choose {color} color":`Escolher cor {color}`,"Citations, entries and their records":`Citações, entradas e seus registros`,"Cited {n} time: {places}":`Citado {n} vez: {places}`,"Cited {n} times: {places}":`Citado {n} vezes: {places}`,"Claude Code or API credentials were not detected.":`O Claude Code ou as credenciais da API não foram detectados.`,"Clear selection":`Limpar seleção`,"Clear task search":`Limpar busca de tarefas`,"Click a highlighted key to customize it.":`Clique em uma tecla destacada para personalizá-la.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`Clique em uma tecla para alterá-la e pressione o novo atalho. Escape cancela; Backspace limpa.`,Close:`Fechar`,"Close agent details":`Fechar detalhes do agente`,"Close note":`Fechar anotação`,"Close notes":`Fechar anotações`,"Close review notes":`Fechar anotações de revisão`,"Close search":`Fechar busca`,"Close suggestion":`Fechar sugestão`,"Close task list":`Fechar lista de tarefas`,"Close the current editor or cancel region selection.":`Fecha o editor atual ou cancela a seleção de região.`,"Close window":`Fechar janela`,"Closest record":`Registro mais próximo`,Code:`Código`,"Collapse manuscript panel":`Recolher painel do manuscrito`,"Collapse {group} notes":`Recolher anotações de {group}`,Color:`Cor`,Comments:`Comentários`,Commit:`Confirmar`,"Commit 1 file":`Fazer commit de 1 arquivo`,"Commit all {n} files":`Fazer commit de todos os {n} arquivos`,"Commit and push":`Confirmar e enviar`,"Commit graph":`Grafo de commits`,"Commit merge":`Fazer commit do merge`,"Commit message":`Mensagem de commit`,"Commit staged changes in 1 file":`Fazer commit das alterações preparadas em 1 arquivo`,"Commit staged changes in {n} files":`Fazer commit das alterações preparadas em {n} arquivos`,"Commit to manuscript":`Fazer commit no manuscrito`,"Commit to task branch":`Fazer commit no branch da tarefa`,"Commit to {branch}":`Fazer commit em {branch}`,"Commit together":`Fazer commit em conjunto`,"Commit what is staged":`Fazer commit do que está preparado`,"Commit {chosen} of {n} files":`Fazer commit de {chosen} de {n} arquivos`,Committed:`Commit realizado`,"Committed and pushed":`Commit e push realizados`,"Committed {hash} and pushed.":`Commit {hash} e push realizados.`,"Committed {hash} to {branch}":`Commit {hash} realizado em {branch}`,"Committed {hash}.":`Commit {hash} realizado.`,"Committing and pushing…":`Fazendo commit e push…`,"Committing…":`Fazendo commit…`,"Commit…":`Fazer commit…`,"Compared with {upstream}":`Comparado com {upstream}`,"Compilation details":`Detalhes da compilação`,"Compilation failed. Click to retry.":`Falha na compilação. Clique para tentar novamente.`,"Compilation log":`Log de compilação`,"Compilation problems":`Problemas de compilação`,"Compilation status unavailable.":`Status da compilação indisponível.`,"Compiling the PDF…":`Compilando o PDF…`,Completed:`Concluído`,"Component source":`Código-fonte do componente`,"Confirm and apply":`Confirmar e aplicar`,"Confirm and commit":`Confirmar e fazer commit`,"Confirm whether the task is still running before generating a PDF comparison.":`Confirme se a tarefa ainda está em execução antes de gerar uma comparação de PDF.`,Conflict:`Conflito`,"Conflict resolution paused":`Resolução de conflitos pausada`,"Conflicts resolved. Read the diffs, then commit the merge.":`Conflitos resolvidos. Leia as diferenças e faça o commit do merge.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`Conecte um endereço HTTPS público para convidar pessoas para seus artigos. Elas podem entrar com segurança usando uma chave de acesso.`,"Connect an assistant in Settings to help repair this paper.":`Conecte um assistente nas Configurações para ajudar a reparar este artigo.`,"Connect and sign in to load the model list.":`Conecte-se e entre para carregar a lista de modelos.`,"Connect to view account, models, and usage.":`Conecte-se para ver a conta, os modelos e o uso.`,Connected:`Conectado`,"Connecting to your papers and tasks…":`Conectando aos seus artigos e tarefas…`,"Connecting to {agent}…":`Conectando a {agent}…`,"Connecting…":`Conectando…`,"Connection details":`Detalhes da conexão`,"Connection lost. Showing the last update; your draft is kept.":`Conexão perdida. Exibindo a última atualização; seu rascunho foi mantido.`,Consistency:`Consistência`,Contents:`Sumário`,"Contents will appear when the PDF is ready.":`O sumário aparecerá quando o PDF estiver pronto.`,"Continue later":`Continuar depois`,Contribute:`Contribuir`,"Contribute an integration":`Contribuir com uma integração`,Copied:`Copiado`,"Copied path":`Caminho copiado`,Copy:`Copiar`,"Copy and edit":`Copiar e editar`,"Copy message":`Copiar mensagem`,"Copy path: {path}":`Copiar caminho: {path}`,"Copy selected PDF text":`Copiar texto selecionado do PDF`,"Copy this built-in skill to customize it for all papers or this paper.":`Copie esta habilidade integrada para personalizá-la para todos os artigos ou para este artigo.`,"Could not check":`Não foi possível verificar`,"Could not check for updates":`Não foi possível verificar se há atualizações`,"Could not check for updates. Try again when connected.":`Não foi possível verificar se há atualizações. Tente novamente quando estiver conectado.`,"Could not complete the environment checks. Check the connection and try again.":`Não foi possível concluir as verificações do ambiente. Verifique a conexão e tente novamente.`,"Could not detect a main file. Enter its path relative to the paper folder.":`Não foi possível detectar um arquivo principal. Insira o caminho relativo à pasta do artigo.`,"Could not generate the PDF comparison.":`Não foi possível gerar a comparação de PDF.`,"Could not load the license notices.":`Não foi possível carregar os avisos de licença.`,"Could not prepare the paper":`Não foi possível preparar o artigo`,"Could not read the LaTeX installation. Try again.":`Não foi possível ler a instalação do LaTeX. Tente novamente.`,"Could not read the selected file.":`Não foi possível ler o arquivo selecionado.`,"Could not read this worktree.":`Não foi possível ler esta árvore de trabalho.`,"Could not reconnect. Check the server connection and try again.":`Não foi possível reconectar. Verifique a conexão com o servidor e tente novamente.`,"Could not refresh the repository.":`Não foi possível atualizar o repositório.`,"Could not start the update. Please retry.":`Não foi possível iniciar a atualização. Tente novamente.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Crie uma chave de API do Cursor no painel do Cursor ou configure o login do SDK do Cursor neste host.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Crie um GLM Coding Plan ou uma chave de API com a Zhipu ou Z.ai.`,"Create a passkey":`Criar uma chave de acesso`,"Create a passkey on this device to sign in as {name}.":`Crie uma chave de acesso neste dispositivo para entrar como {name}.`,"Create a passkey to sign in to your Papilot from anywhere.":`Crie uma chave de acesso para entrar no seu Papilot de qualquer lugar.`,"Create invite link":`Criar link de convite`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`A criação da chave de acesso foi cancelada. O link ainda funciona; tente novamente quando estiver pronto.`,"Creating…":`Criando…`,"Credits available":`Créditos disponíveis`,Current:`Atual`,"Current version":`Versão atual`,"Cursor SDK credentials were not detected.":`As credenciais do SDK do Cursor não foram detectadas.`,"Customize shortcuts":`Personalizar atalhos`,Customized:`Personalizado`,"Cut length without losing content":`Reduzir a extensão sem perder conteúdo`,"Daily limit":`Limite diário`,Dark:`Escuro`,Decline:`Recusar`,Declined:`Recusado`,Default:`Padrão`,"Default model":`Modelo padrão`,"Default reasoning effort":`Esforço de raciocínio padrão`,"Delete file":`Excluir arquivo`,"Delete note":`Excluir anotação`,"Delete note {n}":`Excluir anotação {n}`,"Delete review note {n}":`Excluir anotação de revisão {n}`,"Delete skill":`Excluir habilidade`,"Delete task":`Excluir tarefa`,"Delete task?":`Excluir tarefa?`,"Delete task…":`Excluir tarefa…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`Excluir esta habilidade? Apenas o arquivo Markdown será removido; os arquivos de apoio serão mantidos.`,"Delete {name}?":`Excluir {name}?`,Deleted:`Excluído`,"Deleting task":`Excluindo tarefa`,"Deleting…":`Excluindo…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`A exclusão já foi iniciada. Tente novamente para confirmar a limpeza e remover a tarefa.`,"Deletion is in progress":`A exclusão está em andamento`,"Describe the revision":`Descreva a revisão`,"Describe what the agent should do, what to preserve, and how to present the result.":`Descreva o que o agente deve fazer, o que preservar e como apresentar o resultado.`,Description:`Descrição`,"Details (optional)":`Detalhes (opcional)`,"Detect again":`Detectar novamente`,"Detecting LaTeX installation…":`Detectando instalação do LaTeX…`,"Dev (GitHub main)":`Dev (GitHub main)`,Differs:`Diverge`,"Discard all changes":`Descartar todas as alterações`,"Discard changes":`Descartar alterações`,"Discard changes in {name}?":`Descartar alterações em {name}?`,"Discard changes in {n} file?":`Descartar alterações em {n} arquivo?`,"Discard changes in {n} files?":`Descartar alterações em {n} arquivos?`,"Discard changes in {path}":`Descartar alterações em {path}`,"Discard unsaved skill changes?":`Descartar alterações não salvas da habilidade?`,"Discarded changes in {n} file.":`Alterações descartadas em {n} arquivo.`,"Discarded changes in {n} files.":`Alterações descartadas em {n} arquivos.`,"Dismiss error":`Dispensar erro`,Distribution:`Distribuição`,"Download desktop updates":`Baixar atualizações para desktop`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`Baixe a versão mais recente do aplicativo para desktop para o seu sistema no GitHub Releases. Seus artigos e configurações permanecem intactos.`,"Downloading and building the selected GitHub commit…":`Baixando e compilando o commit do GitHub selecionado…`,"Downloading and checking the new version…":`Baixando e verificando a nova versão…`,"Drag to resize · Double-click to reset":`Arraste para redimensionar · Clique duas vezes para redefinir`,"Drop files to attach":`Solte arquivos para anexar`,"Drop one folder or LaTeX ZIP file.":`Solte uma pasta ou um arquivo ZIP do LaTeX.`,"Early updates from GitHub main. May be less stable.":`Atualizações antecipadas do GitHub main. Pode ser menos estável.`,Edit:`Editar`,"Edit note":`Editar anotação`,"Edit note {n}":`Editar anotação {n}`,"Edit note {n}: {comment}":`Editar anotação {n}: {comment}`,"Edit paper":`Editar artigo`,"Edit {name}":`Editar {name}`,"Edited {file}":`{file} editado`,"Edited {n} files":`{n} arquivos editados`,"Editing dark mode colors. Changes are saved automatically.":`Editando cores do modo escuro. As alterações são salvas automaticamente.`,"Editing light mode colors. Changes are saved automatically.":`Editando cores do modo claro. As alterações são salvas automaticamente.`,"Enable shortcut: {action}":`Ativar atalho: {action}`,"Enter a folder path":`Insira o caminho de uma pasta`,"Environment variable":`Variável de ambiente`,Errors:`Erros`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`Expandir alterações em outros locais, como sumário e numeração de referências. Desativado por padrão; edições sem alteração visível na origem, como definições de macros, ainda mostram seus efeitos.`,"Expand indirect changes":`Expandir alterações indiretas`,"Expand manuscript panel":`Expandir painel do manuscrito`,"Expand {group} notes":`Expandir anotações de {group}`,Failed:`Falhou`,Fast:`Rápido`,"Fast mode":`Modo rápido`,"Faster responses; may use more of your limit.":`Respostas mais rápidas; pode consumir mais do seu limite.`,"Feedback & issues":`Feedback e problemas`,"Fetch from the remote":`Buscar do repositório remoto`,"Files must be 25 MB or smaller.":`Os arquivos devem ter 25 MB ou menos.`,"Files on disk, Git history and task worktrees will stay in place.":`Os arquivos em disco, o histórico do Git e as árvores de trabalho de tarefas serão mantidos.`,"Files received":`Arquivos recebidos`,"Find (⌘F)":`Localizar (⌘F)`,"Find errors in notation, equations and proofs":`Encontrar erros em notação, equações e demonstrações`,"Find in PDF":`Localizar no PDF`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`Descubra o que aconteceu com esses problemas de bibliografia e relate os resultados. Não edite nenhum arquivo. Para cada um, verifique se a obra existe e o que diz seu registro publicado (autores, título, ano, veículo, DOI), encontre a origem da entrada ou citação no histórico do Git dos arquivos .bib e .tex e indique o que você sugere. Marque quais conclusões você confirmou em uma fonte e quais são suposições.`,"Fit page":`Ajustar à página`,"Fit width":`Ajustar à largura`,"Fix LaTeX warnings":`Corrigir avisos do LaTeX`,"Fix typos, grammar and punctuation without rewording":`Corrigir erros de digitação, gramática e pontuação sem reformular`,"Fix with an agent…":`Corrigir com um agente…`,"Folder path":`Caminho da pasta`,"Follow mode":`Modo de acompanhamento`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`Para usar o SDK, inicie o Papilot com ANTHROPIC_API_KEY ou um provedor de nuvem compatível configurado. Reinicie o Papilot após alterar seu ambiente.`,Foreground:`Primeiro plano`,"Full PDF":`PDF completo`,General:`Geral`,"Generate PDF comparison":`Gerar comparação de PDF`,"Generate commit message":`Gerar mensagem de commit`,"Generate task title":`Gerar título da tarefa`,"Generating task title…":`Gerando título da tarefa…`,"Get started and make Papilot your own.":`Comece a usar e deixe o Papilot do seu jeito.`,"Git status":`Status do Git`,"Git status of the manuscript":`Status do Git do manuscrito`,"Git, {n} changed":`Git, {n} alterado(s)`,"GitHub repository":`Repositório do GitHub`,"Give your skill a name":`Dê um nome à sua habilidade`,Global:`Global`,Globe:`Globo`,Graphite:`Grafite`,Green:`Verde`,"Help fix compilation":`Ajudar a corrigir a compilação`,"Help improve Papilot with code, docs, and ideas.":`Ajude a melhorar o Papilot com código, documentação e ideias.`,"Hide task list":`Ocultar lista de tarefas`,"Highlighted in {group}":`Destacado em {group}`,"Hover over a highlighted key to see what it does.":`Passe o cursor sobre uma tecla destacada para ver sua função.`,"I checked it myself":`Conferi por conta própria`,Idea:`Ideia`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`Se já estiver instalado, defina {variable} com o caminho do executável no ambiente que inicia o Papilot e reinicie o Papilot.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`Se o status em tempo real ainda divergir da verificação, reinicie o Papilot com o mesmo usuário e ambiente em que você configurou o agente.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`Se a tarefa alterar o manuscrito, uma comparação de PDF aparecerá aqui. Caso contrário, leia a resposta no chat.`,Ignore:`Ignorar`,"Ignore suggestion {n}":`Ignorar sugestão {n}`,"Images must be 5 MB or smaller.":`As imagens devem ter no máximo 5 MB.`,"Import a ZIP":`Importar um ZIP`,"Import a separate copy from Overleaf or a ZIP archive.":`Importe uma cópia separada do Overleaf ou de um arquivo ZIP.`,"Import progress":`Progresso da importação`,"Improve clarity and flow, keeping the meaning":`Melhorar a clareza e a fluidez, mantendo o sentido`,"Include note {n} in this task":`Incluir anotação {n} nesta tarefa`,"Include suggestion {n} in this task":`Incluir sugestão {n} nesta tarefa`,"Include {key} in the task":`Incluir {key} na tarefa`,"Individual notes":`Anotações individuais`,"Input needed":`Ação necessária`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Instale o TeX Live ou o MacTeX com latexmk no computador que executa o Papilot e tente novamente.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`Instale a nova versão e reinicie automaticamente quando as tarefas estiverem ociosas. Seus artigos, tarefas e configurações serão mantidos.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Instale {command} na máquina que executa o Papilot e conclua o login ou a configuração do provedor abaixo.`,"Installation & setup":`Instalação e configuração`,"Installation check":`Verificação da instalação`,"Installation location":`Local de instalação`,Instructions:`Instruções`,"Instructions for color groups":`Instruções para grupos de cores`,"Instructions for {agent}":`Instruções para {agent}`,"Instructions for {group} notes":`Instruções para anotações {group}`,"Invite link for a new device":`Link de convite para um novo dispositivo`,"Invite link for {name}":`Link de convite para {name}`,"Invite someone":`Convidar alguém`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`As pessoas convidadas podem acessar todos os arquivos legíveis pelo Papilot, incluindo credenciais e artigos não compartilhados.`,"Invited, not joined yet":`Convidado, ainda não entrou`,"Join Papilot":`Entrar no Papilot`,Joined:`Entrou`,"Jump to the next change that still needs a decision.":`Ir para a próxima alteração que ainda precisa de uma decisão.`,"Keep editing":`Continuar editando`,"Keep latest wording and apply":`Manter a redação mais recente e aplicar`,"Keep latest wording and commit":`Manter a redação mais recente e fazer commit`,"Keep on manuscript":`Manter no manuscrito`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`Mantenha a redação mais recente nos trechos sobrepostos e salve as demais alterações aceitas.`,"Kept on manuscript":`Mantido no manuscrito`,"Keyboard key {key}: {actions}":`Tecla {key}: {actions}`,"Keyboard shortcuts":`Atalhos de teclado`,"LaTeX Git repository · Requires a commit and latexmk":`Repositório Git LaTeX · Requer um commit e latexmk`,"LaTeX engine":`Mecanismo LaTeX`,"LaTeX installation":`Instalação do LaTeX`,"Label defined more than once":`Rótulo definido mais de uma vez`,Language:`Idioma`,"Language for the Papilot interface.":`Idioma da interface do Papilot.`,"Last active {time}":`Ativo pela última vez {time}`,Later:`Mais tarde`,"Latest messages":`Últimas mensagens`,"Latest version":`Versão mais recente`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Bibliotecas e fontes usadas pelo Papilot e seu mecanismo de revisão. Cada componente é regido por sua própria licença.`,"Libraries, fonts, and the people behind them.":`Bibliotecas, fontes e as pessoas por trás delas.`,"License text is not included in this package. See the component source for its terms.":`O texto da licença não está incluído neste pacote. Consulte o código-fonte do componente para ver seus termos.`,"Licenses & acknowledgments":`Licenças e agradecimentos`,Light:`Claro`,"Limit reached":`Limite atingido`,"Line too wide by {amount}pt":`Linha larga demais em {amount}pt`,Link:`Link`,"Loading PDF review…":`Carregando revisão do PDF…`,"Loading conversation…":`Carregando conversa…`,"Loading license notices…":`Carregando avisos de licença…`,"Loading people…":`Carregando pessoas…`,"Loading skills…":`Carregando habilidades…`,"Loading the diff…":`Carregando as diferenças…`,"Loading…":`Carregando…`,Location:`Localização`,Locked:`Bloqueado`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Consulte as entradas no Crossref, DBLP e arXiv. Apenas títulos, autores, anos e identificadores são enviados.`,"Made by Cui Chen and the Papilot contributors.":`Feito por Cui Chen e pelos colaboradores do Papilot.`,"Main TeX file":`Arquivo TeX principal`,Manuscript:`Manuscrito`,"Manuscript panels":`Painéis do manuscrito`,"Manuscript view":`Visualização do manuscrito`,"Mark a figure or region":`Marcar uma figura ou região`,"Mark region":`Marcar região`,"Marked on earlier changes.":`Marcado em alterações anteriores.`,"Marked region":`Região marcada`,Math:`Matemática`,"Maximize or restore window":`Maximizar ou restaurar janela`,Members:`Membros`,Merge:`Mesclar`,"Merge in progress":`Mesclagem em andamento`,"Merged {upstream}.":`Mesclado com {upstream}.`,"Merging: no conflicts left":`Mesclando: nenhum conflito restante`,"Merging: {n} file has conflicts":`Mesclando: {n} arquivo com conflitos`,"Merging: {n} files have conflicts":`Mesclando: {n} arquivos com conflitos`,"Message ({key} to commit on “{branch}”)":`Mensagem ({key} para confirmar em “{branch}”)`,"Minimize window":`Minimizar janela`,"Missing character":`Caractere ausente`,"Missing file":`Arquivo ausente`,"Missing worktree":`Árvore de trabalho ausente`,"Missing: {files}":`Ausente: {files}`,Mode:`Modo`,"Model default":`Padrão do modelo`,Models:`Modelos`,Modified:`Modificado`,"More Git actions":`Mais ações do Git`,"More commit actions":`Mais ações de confirmação`,"Move to the next visible change.":`Ir para a próxima alteração visível.`,"Move to the previous visible change.":`Ir para a alteração visível anterior.`,"My notes":`Minhas anotações`,Name:`Nome`,"Needs attention":`Requer atenção`,"Needs your reply":`Aguarda sua resposta`,"New invite link":`Novo link de convite`,"New skill":`Nova habilidade`,"New task":`Nova tarefa`,"New version":`Nova versão`,"Next change":`Próxima alteração`,"Next match":`Próxima correspondência`,"Next page":`Próxima página`,"Next suggestion":`Próxima sugestão`,"Next suggestion (→)":`Próxima sugestão (→)`,"Next undecided change":`Próxima alteração não decidida`,"No GLM API key was found.":`Nenhuma chave de API do GLM foi encontrada.`,"No LaTeX installation was detected on this host.":`Nenhuma instalação do LaTeX foi detectada neste host.`,"No archived tasks":`Nenhuma tarefa arquivada`,"No commits yet":`Nenhum commit ainda`,"No components match your search.":`Nenhum componente corresponde à sua pesquisa.`,"No entry has this key.":`Nenhuma entrada possui esta chave.`,"No files found in this folder.":`Nenhum arquivo encontrado nesta pasta.`,"No installation details were returned. Run the checks again to refresh.":`Nenhum detalhe da instalação foi retornado. Execute as verificações novamente para atualizar.`,"No linked change":`Nenhuma alteração vinculada`,"No linked task":`Nenhuma tarefa vinculada`,"No manuscript changes":`Nenhuma alteração no manuscrito`,"No matches":`Nenhuma correspondência`,"No matching settings":`Nenhuma configuração correspondente`,"No matching skills":`Nenhuma habilidade correspondente`,"No matching tasks":`Nenhuma tarefa correspondente`,"No models match “{query}”":`Nenhum modelo corresponde a “{query}”`,"No notes yet":`Nenhuma anotação ainda`,"No other worktrees in this repository.":`Nenhuma outra árvore de trabalho neste repositório.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`Nenhum artigo foi compartilhado com você ainda. Os artigos aparecerão aqui assim que {name} os compartilhar.`,"No papers yet":`Nenhum artigo ainda`,"No passkey on this device? Ask the person who invited you for a new invite link.":`Sem chave de acesso neste dispositivo? Peça um novo link de convite para quem convidou você.`,"No problems found.":`Nenhum problema encontrado.`,"No problems in the files. Check online to compare the entries with their records.":`Nenhum problema nos arquivos. Verifique on-line para comparar as entradas com seus registros.`,"No problems in the last build.":`Nenhum problema na última compilação.`,"No record in Crossref, DBLP or arXiv matches it.":`Nenhum registro no Crossref, DBLP ou arXiv corresponde a ela.`,"No tasks yet":`Nenhuma tarefa ainda`,"No textual changes.":`Sem alterações de texto.`,"No uncommitted changes":`Sem alterações não confirmadas`,"No upstream branch":`Sem branch upstream`,"Not assigned":`Não atribuído`,"Not checked":`Não verificado`,"Not cited in the paper.":`Não citado no artigo.`,"Not detected":`Não detectado`,"Not found":`Não encontrado`,"Note deleted.":`Anotação excluída.`,"Note for the agent":`Anotação para o agente`,"Note on the PDF":`Anotação no PDF`,"Note {n}":`Anotação {n}`,"Note {n}: {comment}":`Anotação {n}: {comment}`,"Notes in this task":`Anotações nesta tarefa`,"Notes stay here unless you add them to a task.":`As anotações permanecem aqui, a menos que você as adicione a uma tarefa.`,"Nothing to check":`Nada para verificar`,Notifications:`Notificações`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`As notificações estão bloqueadas para este site. Permita-as nas configurações do site no navegador e ative-as aqui.`,"Notifications are on":`As notificações estão ativadas`,"Notify me about":`Notificar-me sobre`,"Notify me when a task fails or stops unexpectedly.":`Notificar-me quando uma tarefa falhar ou parar inesperadamente.`,"Notify me when an agent asks me a question.":`Notificar-me quando um agente me fizer uma pergunta.`,"Notify me when an agent finishes without changes to review.":`Notificar-me quando um agente terminar sem alterações para revisão.`,"Notify me when an agent needs my approval to continue.":`Notificar-me quando um agente precisar da minha aprovação para continuar.`,"Notify me when changes are ready for review.":`Notificar-me quando houver alterações prontas para revisão.`,Off:`Desativado`,"Online checks are off in Settings, so only problems found in the files are shown.":`As verificações on-line estão desativadas nas Configurações, portanto apenas os problemas encontrados nos arquivos são exibidos.`,"Online checks are off in Settings.":`As verificações on-line estão desativadas nas Configurações.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`Apenas alterações no manuscrito precisam de uma comparação de PDF. As respostas às perguntas estão no chat.`,"Open PDF":`Abrir PDF`,"Open a branch to commit":`Abrir uma branch para fazer commit`,"Open a folder":`Abrir uma pasta`,"Open attachment {name}":`Abrir anexo {name}`,"Open chat":`Abrir chat`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`Abra no dispositivo em que deseja iniciar sessão. Funciona uma única vez, dentro de 15 minutos.`,"Open paper":`Abrir artigo`,"Open review":`Abrir revisão`,"Open review in new tab":`Abrir revisão em nova aba`,"Open reviews on":`Abrir revisões em`,"Open task: {title}":`Abrir tarefa: {title}`,"Open the full PDF":`Abrir o PDF completo`,"Open these shortcut settings.":`Abrir estas configurações de atalhos.`,"Opening the PDF…":`Abrindo o PDF…`,"Opening your workspace":`Abrindo seu espaço de trabalho`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`Abre uma nova tarefa que você pode editar antes de enviar. O agente relata o que encontrar e não altera nada.`,"Opens in a new tab":`Abre em uma nova aba`,"Or drop a folder or ZIP here":`Ou solte uma pasta ou ZIP aqui`,"Or type your own answer":`Ou digite sua própria resposta`,Orange:`Laranja`,Overridden:`Substituída`,Owner:`Proprietário`,"PDF annotations":`Anotações no PDF`,"PDF appearance":`Aparência do PDF`,"PDF comparison":`Comparação de PDF`,"PDF compilation":`Compilação do PDF`,"PDF compiled successfully.":`PDF compilado com sucesso.`,"PDF contents":`Sumário do PDF`,"PDF controls":`Controles do PDF`,"PDF note library":`Biblioteca de anotações do PDF`,"PDF note {n}":`Anotação do PDF {n}`,"PDF notes":`Anotações do PDF`,"PDF pages":`Páginas do PDF`,"PDF preview":`Pré-visualização do PDF`,"PDF review":`Revisão do PDF`,"PDF review only":`Apenas revisão do PDF`,"Page number":`Número da página`,"Page {n}":`Página {n}`,"Page {pages}":`Página {pages}`,"Page {pages} of {total}":`Página {pages} de {total}`,"Pages typeset":`Páginas diagramadas`,Paper:`Artigo`,"Paper name":`Nome do artigo`,"Paper tools":`Ferramentas do artigo`,"Paper: {name}":`Artigo: {name}`,"Papers and tasks":`Artigos e tarefas`,"Papers they can open":`Artigos que podem abrir`,"Papers {name} can open":`Artigos que {name} pode abrir`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`O Papilot não encontrou o npm neste computador. As atualizações ficam indisponíveis até que o npm seja instalado.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`O Papilot não conseguiu estabelecer uma conexão funcional com este agente. O erro de conexão mais recente é exibido abaixo.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`O Papilot não pôde preparar os arquivos para compilação. Este é um erro do aplicativo, não um erro do LaTeX.`,"Papilot license":`Licença do Papilot`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`O Papilot conectou-se a este agente, mas não conseguiu confirmar uma conta autenticada neste host.`,"Papilot sent the build error to {agent}, {time}":`O Papilot enviou o erro de compilação para {agent}, {time}`,"Papilot will tell you here when a task needs you.":`O Papilot avisará aqui quando uma tarefa precisar de você.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`Parcialmente revisada`,Passed:`Aprovado`,"Passkey · {label}":`Chave de acesso · {label}`,Pause:`Pausar`,"Pause task":`Pausar tarefa`,"Pause this task before deleting it.":`Pause esta tarefa antes de excluí-la.`,"Pause {agent}":`Pausar {agent}`,Paused:`Pausado`,Pen:`Caneta`,"Pending review":`Revisão pendente`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`As pessoas que você convidar entram com uma chave de acesso no endereço público e podem fazer tudo o que você faz nos artigos compartilhados com elas, inclusive aprovar os comandos que os agentes executam neste host e enviar alterações com as credenciais do Git dele.`,Personal:`Pessoal`,Polish:`Refinar`,"Position needs confirmation":`A posição precisa de confirmação`,"Prepare and compile":`Preparar e compilar`,"Preparing task results":`Preparando resultados da tarefa`,"Preparing task results…":`Preparando resultados da tarefa…`,"Preparing version history and compiling the PDF…":`Preparando o histórico de versões e compilando o PDF…`,"Press a key…":`Pressione uma tecla…`,Preview:`Pré-visualizar`,"Previous change":`Alteração anterior`,"Previous match":`Ocorrência anterior`,"Previous page":`Página anterior`,"Previous suggestion":`Sugestão anterior`,"Previous suggestion (←)":`Sugestão anterior (←)`,Problems:`Problemas`,"Processing the bibliography…":`Processando a bibliografia…`,Proofread:`Revisar texto`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Forneça CURSOR_API_KEY ao processo ou serviço que inicia o Papilot e reinicie o Papilot. O SDK é instalado automaticamente quando usado.`,"Publish branch":`Publicar branch`,"Published releases, recommended for everyday use.":`Versões publicadas, recomendadas para o uso diário.`,Pull:`Puxar`,"Pulled the latest commits.":`Os commits mais recentes foram puxados.`,Purple:`Roxo`,Push:`Enviar`,"Pushed to the remote.":`Enviado para o repositório remoto.`,"Pushed to {upstream}.":`Enviado para {upstream}.`,"Queue instructions for the next turn…":`Enfileirar instruções para o próximo turno…`,Queued:`Na fila`,"Quote in chat":`Citar no chat`,"Quoted text":`Texto citado`,"Raw log":`Log bruto`,"Read folder":`Ler pasta`,"Read the paper and leave PDF comments without editing the manuscript":`Ler o artigo e deixar comentários no PDF sem editar o manuscrito`,"Read, annotate, and revise your papers with AI, all in one place.":`Leia, faça anotações e revise seus artigos com IA, tudo em um só lugar.`,"Reading Git status…":`Lendo status do Git…`,"Reading paper files…":`Lendo arquivos do artigo…`,"Reading the bibliography…":`Lendo a bibliografia…`,"Reading update status…":`Lendo status da atualização…`,"Reading worktrees and history…":`Lendo árvores de trabalho e histórico…`,Ready:`Pronto`,"Ready for review":`Pronto para revisão`,"Ready to check for updates":`Pronto para verificar atualizações`,"Reasoning effort":`Esforço de raciocínio`,Recent:`Recentes`,"Recompile PDF":`Recompilar PDF`,"Recompiling; this list will update.":`Recompilando; esta lista será atualizada.`,Reconnect:`Reconectar`,Reconnecting:`Reconectando`,Record:`Registro`,Red:`Vermelho`,"Reference check":`Verificação de referências`,"Refresh changes":`Atualizar alterações`,"Refresh skills":`Atualizar habilidades`,"Refresh worktrees and history":`Atualizar árvores de trabalho e histórico`,"Regenerate PDF comparison":`Regerar comparação de PDF`,"Region note":`Anotação de região`,"Reject change":`Rejeitar alteração`,"Reject the current proposal. In Changes, revert it.":`Rejeitar a proposta atual. Em Alterações, revertê-la.`,Rejected:`Rejeitado`,"Reload review":`Recarregar revisão`,Remove:`Remover`,"Remove attachment {name}":`Remover anexo {name}`,"Remove from Papilot":`Remover do Papilot`,"Remove from draft":`Remover do rascunho`,"Remove note {n} from task":`Remover anotação {n} da tarefa`,"Remove paper":`Remover artigo`,"Remove paper?":`Remover artigo?`,"Remove suggestion {n} from task":`Remover sugestão {n} da tarefa`,"Remove the {name} skill":`Remover a habilidade {name}`,"Remove this paper and its tasks, conversations and notes from Papilot?":`Remover este artigo e suas tarefas, conversas e anotações do Papilot?`,"Remove {device}":`Remover {device}`,"Remove {name}":`Remover {name}`,"Remove…":`Remover…`,"Removing…":`Removendo…`,"Rename {name}":`Renomear {name}`,Renamed:`Renomeado`,"Rename…":`Renomear…`,"Repair summary":`Resumo do reparo`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`Os reparos são salvos como alterações não confirmadas. Revise-os nas alterações de arquivos do artigo.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`Responda no chat para continuar. A comparação de PDF só é necessária se o manuscrito for alterado.`,"Reply to {agent}":`Responder a {agent}`,"Report a bug or suggest an improvement.":`Relate um problema ou sugira uma melhoria.`,"Reported {n} times":`Relatado {n} vezes`,"Repository path":`Caminho do repositório`,"Request a revision":`Solicitar uma revisão`,"Request failed. Please try again.":`Falha na solicitação. Tente novamente.`,"Reset appearance":`Redefinir aparência`,"Resize chat panel":`Redimensionar painel do chat`,"Resize manuscript panel":`Redimensionar painel do manuscrito`,"Resolve undefined references, overfull boxes and other build warnings":`Resolver referências indefinidas, overfull boxes e outros avisos de compilação`,"Resolve with {agent}":`Resolver com {agent}`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Reiniciando o Papilot. Esta página se reconectará automaticamente; seus rascunhos serão mantidos.`,"Restarting…":`Reiniciando…`,"Restore default shortcuts":`Restaurar atalhos padrão`,"Restore task":`Restaurar tarefa`,Retry:`Tentar novamente`,"Retry build":`Tentar compilar novamente`,"Retry compilation":`Tentar compilar novamente`,"Retry connection":`Tentar reconectar`,"Retry conversation":`Tentar conversa novamente`,"Retry deletion":`Tentar excluir novamente`,"Retry deletion…":`Tentar excluir novamente…`,"Retry linking changes":`Tentar vincular alterações novamente`,"Retry title generation":`Tentar gerar título novamente`,"Retry update":`Tentar atualizar novamente`,"Retry uploading {name}":`Tentar enviar {name} novamente`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`Instruções reutilizáveis para suas revisões. Escolha uma habilidade no menu / ao iniciar uma tarefa.`,Review:`Revisão`,"Review PDF notes":`Revisar anotações do PDF`,"Review and chat side by side":`Revisão e chat lado a lado`,"Review complete":`Revisão concluída`,"Review copy":`Revisão de texto`,"Review decisions":`Decisões de revisão`,"Review feedback":`Comentários da revisão`,"Review navigation":`Navegação da revisão`,"Review note: {comment}":`Anotação de revisão: {comment}`,"Review notes":`Anotações de revisão`,"Review notes ({n})":`Anotações de revisão ({n})`,"Review preferences":`Preferências de revisão`,"Review ready":`Revisão pronta`,"Review ready · {n} change to decide":`Revisão pronta · {n} alteração para decidir`,"Review ready · {n} changes to decide":`Revisão pronta · {n} alterações para decidir`,"Review shortcut keyboard":`Teclado de atalhos de revisão`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`Os atalhos de revisão funcionam enquanto a revisão do PDF está em foco. Eles são pausados enquanto você digita ou seleciona texto. As alterações são salvas neste navegador.`,"Review the merged result":`Revise o resultado mesclado`,"Review, {n} to decide":`Revisão, {n} para decidir`,"Revise for reviewer comments and draft a point-by-point reply":`Revisar com base nos comentários dos revisores e redigir uma resposta ponto a ponto`,"Revision requested":`Revisão solicitada`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`Execute o Papilot e seus agentes em um contêiner isolado, como o Docker, para limitar o acesso; os arquivos montados permanecem acessíveis.`,"Run command":`Executar comando`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`Execute papilot codex login no host. Ele instala uma CLI do Codex compatível quando necessário.`,"Run tool":`Executar ferramenta`,Running:`Em execução`,Runtime:`Ambiente de execução`,"Same DOI as {keys}.":`Mesmo DOI que {keys}.`,"Same title as {keys}.":`Mesmo título que {keys}.`,Save:`Salvar`,"Save accepted changes":`Salvar alterações aceitas`,"Save to":`Salvar em`,Saved:`Salvo`,"Saved folder":`Pasta salva`,"Saving…":`Salvando…`,Search:`Pesquisar`,"Search archived tasks…":`Pesquisar tarefas arquivadas…`,"Search components or licenses":`Pesquisar componentes ou licenças`,"Search components or licenses…":`Pesquisar componentes ou licenças…`,"Search models":`Pesquisar modelos`,"Search settings":`Pesquisar configurações`,"Search skills":`Pesquisar habilidades`,"Search task titles and instructions":`Pesquisar títulos e instruções de tarefas`,"Search tasks":`Pesquisar tarefas`,"Search tasks…":`Pesquisar tarefas…`,"Search the PDF":`Pesquisar no PDF`,"See license notice":`Ver aviso de licença`,"See what changed in each release.":`Veja o que mudou em cada versão.`,"Select a skill or create your own.":`Selecione uma habilidade ou crie a sua.`,"Select all notes for this task":`Selecionar todas as anotações desta tarefa`,"Select all {group} notes for this task":`Selecionar todas as anotações de {group} desta tarefa`,"Send (Enter) · New line (Shift+Enter)":`Enviar (Enter) · Nova linha (Shift+Enter)`,"Send a test notification":`Enviar uma notificação de teste`,"Send annotations":`Enviar anotações`,"Send annotations to the agent":`Enviar anotações para o agente`,"Send feedback":`Enviar feedback`,"Send instructions":`Enviar instruções`,"Send it to {name} yourself. It works once, within 7 days.":`Envie para {name} por conta própria. Funciona uma única vez, em até 7 dias.`,"Send the review comment being written.":`Enviar o comentário de revisão que está sendo escrito.`,"Send your review decisions and comments to the agent":`Enviar suas decisões e comentários de revisão para o agente`,"Send {n} note":`Enviar {n} anotação`,"Send {n} note to the agent":`Enviar {n} anotação para o agente`,"Send {n} notes":`Enviar {n} anotações`,"Send {n} notes to the agent":`Enviar {n} anotações para o agente`,"Sending feedback…":`Enviando feedback…`,"Sending…":`Enviando…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`Enviada. Se nada apareceu, permita notificações para este navegador nas configurações do sistema.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Defina ZHIPU_API_KEY para open.bigmodel.cn, ou ZAI_API_KEY para api.z.ai, no ambiente que inicia o Papilot. Em seguida, reinicie o Papilot.`,"Set up on the host":`Configurar no host`,"Set up sharing":`Configurar compartilhamento`,"Set up this agent":`Configurar este agente`,Settings:`Configurações`,"Settings categories":`Categorias de configurações`,"Setup guide":`Guia de configuração`,"Setup required":`Configuração necessária`,"Several TeX files were found. Check the selected main document before continuing.":`Vários arquivos TeX foram encontrados. Verifique o documento principal selecionado antes de continuar.`,"Share your papers and manage the people you work with.":`Compartilhe seus artigos e gerencie as pessoas com quem você trabalha.`,Sharing:`Compartilhamento`,"Sharing is not sandboxed":`O compartilhamento não é isolado em sandbox`,Shorten:`Encurtar`,Show:`Mostrar`,"Show LaTeX source":`Mostrar código-fonte LaTeX`,"Show archived tasks":`Mostrar tarefas arquivadas`,"Show current tasks":`Mostrar tarefas atuais`,"Show desktop notifications while Papilot is in the background.":`Mostrar notificações na área de trabalho enquanto o Papilot estiver em segundo plano.`,"Show fewer models":`Mostrar menos modelos`,"Show note {n} on the page":`Mostrar anotação {n} na página`,"Show note {n}: {comment}":`Mostrar anotação {n}: {comment}`,"Show or hide the source for the current change.":`Mostrar ou ocultar o código-fonte da alteração atual.`,"Show problems":`Mostrar problemas`,"Show suggestion {n} on the page":`Mostrar sugestão {n} na página`,"Show task list":`Mostrar lista de tarefas`,"Show {n} more models":`Mostrar mais {n} modelos`,"Showing the last update.":`Mostrando a última atualização.`,"Showing the latest {n} commits. Older history is not shown.":`Mostrando os {n} commits mais recentes. O histórico anterior não é exibido.`,"Sign in as the user running Papilot, then restart Papilot.":`Entre como o usuário que executa o Papilot e reinicie o Papilot.`,"Sign in from anywhere":`Entrar de qualquer lugar`,"Sign in on the Papilot host to continue.":`Entre no host do Papilot para continuar.`,"Sign in to Papilot":`Entrar no Papilot`,"Sign in to continue.":`Entre para continuar.`,"Sign in with a passkey":`Entrar com uma chave-senha`,"Sign out":`Sair`,"Sign out everywhere":`Sair em todos os dispositivos`,"Sign-in required":`Autenticação necessária`,"Signed in":`Conectado`,"Signed in · {label}":`Conectado · {label}`,"Signing in was cancelled. Try again when you are ready.":`A entrada foi cancelada. Tente novamente quando estiver pronto.`,"Skill ID":`ID da habilidade`,"Skill content (Markdown)":`Conteúdo da habilidade (Markdown)`,"Skill content must contain 1–20,000 characters.":`O conteúdo da habilidade deve conter de 1 a 20.000 caracteres.`,"Skill content view":`Visualização do conteúdo da habilidade`,"Skill icon":`Ícone da habilidade`,"Skill name":`Nome da habilidade`,"Skill scope":`Escopo da habilidade`,"Skill: {name}":`Habilidade: {name}`,Skills:`Habilidades`,Slate:`Ardósia`,"Slate blue":`Azul-ardósia`,"Some note positions need confirmation. Their original text and comments are kept.":`As posições de algumas anotações precisam de confirmação. O texto original e os comentários foram mantidos.`,Source:`Código-fonte`,Sparkles:`Brilhos`,Spelling:`Ortografia`,Split:`Dividir`,Stable:`Estável`,"Stage all changes":`Preparar todas as alterações`,"Stage changes":`Preparar alterações`,"Stage {path}":`Preparar {path}`,Staged:`Preparado`,"Staged changes":`Alterações preparadas`,"Standard shortcuts":`Atalhos padrão`,"Start task":`Iniciar tarefa`,"Start task (Enter)":`Iniciar tarefa (Enter)`,"Status unavailable":`Status indisponível`,Stone:`Pedra`,"Submitting…":`Enviando…`,"Suggest an agent":`Sugerir um agente`,"Suggested fix":`Correção sugerida`,"Suggestion ignored.":`Sugestão ignorada.`,"Suggestion {n}: {comment}":`Sugestão {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`As sugestões permanecem nesta tarefa até que você as copie para o manuscrito`,"Support more":`Suportar mais`,System:`Sistema`,"Task actions for {title}":`Ações da tarefa para {title}`,"Task added: {title}":`Tarefa adicionada: {title}`,"Task errors":`Erros de tarefa`,"Task finished":`Tarefa concluída`,"Task list":`Lista de tarefas`,"Task saved. Waiting for an available {agent} session.":`Tarefa salva. Aguardando uma sessão disponível de {agent}.`,Tasks:`Tarefas`,"The PDF could not be opened: {error}":`Não foi possível abrir o PDF: {error}`,"The PDF review could not be loaded.":`Não foi possível carregar a revisão do PDF.`,"The PDF review is taking longer than expected.":`A revisão do PDF está demorando mais do que o esperado.`,"The agent could not connect. Check its setup and try again.":`Não foi possível conectar ao agente. Verifique a configuração e tente novamente.`,"The assistant is fixing compilation…":`O assistente está corrigindo a compilação…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`O navegador e o servidor Papilot podem ser executados em computadores diferentes. Serviços em segundo plano também podem usar um PATH ou uma conta de usuário diferente do seu terminal.`,"The connection is taking too long. Check your network and try again.":`A conexão está demorando muito. Verifique sua rede e tente novamente.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`A compilação de desenvolvimento precisa de pelo menos 2 GB de espaço livre em disco. Libere espaço e tente novamente.`,"The diff is too long to show in full.":`A diferença é longa demais para ser exibida por completo.`,"The file “{name}” is empty.":`O arquivo “{name}” está vazio.`,"The first build is still running.":`A primeira compilação ainda está em execução.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`A última tentativa de conexão não encontrou uma CLI {command} executável no ambiente do servidor Papilot. Ela ainda pode estar instalada em outro local ou para outro usuário.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`A última tentativa de conexão não encontrou CURSOR_API_KEY nem um login salvo do Cursor SDK para o usuário que executa o Papilot. Entrar no aplicativo para computador ou na CLI do Cursor não configura este SDK.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`A última tentativa de conexão não encontrou o Claude Code nem credenciais de API compatíveis no ambiente do servidor Papilot.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`A última tentativa de conexão não encontrou ZHIPU_API_KEY nem ZAI_API_KEY no ambiente do servidor Papilot. Um login do Claude ou do site GLM não fornece essas chaves.`,"The latest changes did not compile. This is the last PDF that did.":`As alterações mais recentes não compilaram. Este é o último PDF compilado com sucesso.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`A verificação de configuração mais recente encontrou este agente. Reconecte para atualizar seu status em tempo real.`,"The manuscript did not compile.":`O manuscrito não compilou.`,"The merge stopped at conflicts.":`A mesclagem parou devido a conflitos.`,"The merge was abandoned.":`A mesclagem foi abandonada.`,"The paper needs a little help":`O artigo precisa de uma pequena ajuda`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`Não foi possível confirmar a posição no novo PDF. O texto e a anotação originais foram mantidos.`,"The request timed out and may still be processing. Check the task status before retrying.":`A solicitação atingiu o tempo limite e ainda pode estar em processamento. Verifique o status da tarefa antes de tentar novamente.`,"The skill must contain instructions.":`A habilidade deve conter instruções.`,"The update did not finish. Your current version is still available. You can retry here.":`A atualização não foi concluída. Sua versão atual continua disponível. Você pode tentar novamente aqui.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`A atualização está pronta. Aguardando a conclusão das tarefas e das compilações de PDF antes de reiniciar.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`A versão atualizada não foi iniciada, portanto o Papilot está usando a versão incluída no aplicativo. Tente atualizar novamente ou baixe o aplicativo para desktop mais recente.`,"Their name, as others will see it":`O nome da pessoa, como os outros o verão`,Theme:`Tema`,"These keep the usual browser and text-editing behavior.":`Eles mantêm o comportamento habitual do navegador e de edição de texto.`,"Third-party licenses":`Licenças de terceiros`,"This PDF has no bookmarks.":`Este PDF não tem marcadores.`,"This agent has not reported a model list. Its configured default can still be used.":`Este agente não informou uma lista de modelos. O padrão configurado ainda pode ser usado.`,"This browser cannot show notifications.":`Este navegador não pode exibir notificações.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`Este navegador não pode usar chaves de acesso. Abra esta página em uma versão atual do Safari, Chrome, Edge ou Firefox.`,"This browser could not enable notifications.":`Este navegador não pôde ativar as notificações.`,"This browser could not show the notification.":`Este navegador não pôde exibir a notificação.`,"This conversation has no manuscript changes.":`Esta conversa não tem alterações no manuscrito.`,"This file is not tracked by Git, so it cannot be recovered.":`Este arquivo não é monitorado pelo Git e não poderá ser recuperado.`,"This invite link is incomplete. Copy the whole link and open it again.":`Este link de convite está incompleto. Copie o link inteiro e abra-o novamente.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`Esta tecla é reservada para o navegador ou para edição de texto. Escolha outro atalho.`,"This model uses its own reasoning settings.":`Este modelo usa suas próprias configurações de raciocínio.`,"This paper":`Este artigo`,"This paper may need XeLaTeX. Change the engine below and retry.":`Este artigo pode precisar do XeLaTeX. Altere o mecanismo abaixo e tente novamente.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`Este artigo não indica nenhum arquivo .bib com {bibliography} ou {addbibresource}.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`Este trecho inclui edições anteriores sem commit. Você pode fazer commit do resultado revisado em conjunto ou aplicá-lo sem fazer commit.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`Isso remove permanentemente a tarefa do Papilot, incluindo sua conversa, árvore de trabalho e arquivos de revisão do PDF. Edições não aceitas e comentários salvos serão descartados, e as decisões de revisão não poderão mais ser desfeitas.`,"This skill changed on disk. Reload it before deleting.":`Esta habilidade foi alterada no disco. Recarregue-a antes de excluir.`,"This skill changed on disk. Reload it before saving.":`Esta habilidade foi alterada no disco. Recarregue-a antes de salvar.`,"This skill no longer exists. Refresh the list.":`Esta habilidade não existe mais. Atualize a lista.`,"This skill was removed on disk. Reload the list before saving.":`Esta habilidade foi removida do disco. Recarregue a lista antes de salvar.`,"This step needs attention":`Esta etapa precisa de atenção`,"This task did not change the manuscript. Read the answer in the chat.":`Esta tarefa não alterou o manuscrito. Leia a resposta no chat.`,"This task is being deleted":`Esta tarefa está sendo excluída`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`Esta tarefa fica reservada até que a limpeza da sua árvore de trabalho seja confirmada. Use Tentar excluir novamente se a conexão tiver sido interrompida.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`Esta versão requer o aplicativo para desktop mais recente. Baixe-o no GitHub Releases.`,"This worktree’s HEAD is outside the displayed history.":`O HEAD desta árvore de trabalho está fora do histórico exibido.`,Title:`Título`,Tools:`Ferramentas`,Tracking:`Rastreamento`,"Type changed":`Tipo alterado`,"Typesetting and other remarks":`Composição tipográfica e outras observações`,"Typesetting with LaTeX, pass {n}…":`Diagramando com LaTeX, passagem {n}…`,Unavailable:`Indisponível`,"Uncommitted changes in the PDF":`Alterações não confirmadas no PDF`,"Undefined citation":`Citação indefinida`,"Undefined reference":`Referência indefinida`,Undo:`Desfazer`,"Undo review decision":`Desfazer decisão de revisão`,"Undo the last review decision or revert.":`Desfaz a última decisão de revisão ou reverte.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`Desfaz a digitação, uma anotação excluída ou a última decisão de revisão, dependendo do foco.`,"Unify terms, notation, spelling and references":`Unificar termos, notação, ortografia e referências`,Unknown:`Desconhecido`,"Unlimited credits":`Créditos ilimitados`,"Unplaced suggestions":`Sugestões não posicionadas`,"Unsaved changes":`Alterações não salvas`,"Unstage all changes":`Desfazer preparação de todas as alterações`,"Unstage changes":`Desfazer preparação das alterações`,"Unstage {path}":`Desfazer preparação de {path}`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`As alterações não preparadas serão perdidas permanentemente e os arquivos não monitorados serão excluídos. As alterações preparadas serão mantidas.`,"Unstaged changes are lost for good. Staged changes stay.":`As alterações não preparadas serão perdidas permanentemente. As alterações preparadas serão mantidas.`,Untracked:`Não rastreado`,"Untracked build output. Add to .gitignore adds:":`Saída de compilação não rastreada. Adicionar ao .gitignore inclui:`,"Up to date":`Atualizado`,"Up to date with the remote.":`Atualizado com o repositório remoto.`,"Update Papilot":`Atualizar o Papilot`,"Update available":`Atualização disponível`,"Update channel":`Canal de atualização`,"Update failed":`Falha na atualização`,"Update now":`Atualizar agora`,"Update ready":`Atualização pronta`,"Update to {version}":`Atualizar para {version}`,Updates:`Atualizações`,"Updating…":`Atualizando…`,"Upload failed. Please retry.":`Falha no envio. Tente novamente.`,"Uploading…":`Enviando…`,"Usage & limits":`Uso e limites`,"Usage limit":`Limite de uso`,"Usage not reported":`Uso não informado`,"Use a hex color, like #2563EB.":`Use uma cor hexadecimal, como #2563EB.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`Use letras minúsculas, números e hifens. Este também é o nome do comando /.`,"Use the passkey you created from your invite link.":`Use a chave de acesso que você criou a partir do seu link de convite.`,"Used for new tasks. Saved in this browser.":`Usado para novas tarefas. Salvo neste navegador.`,"User guide":`Guia do usuário`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`Usa o Claude Code ou o Claude Agent SDK com ZHIPU_API_KEY ou ZAI_API_KEY.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`Usa o Claude Code quando instalado, ou o Claude Agent SDK com credenciais de API.`,"Uses DeepSeek Harness and the providers configured in dsh.":`Usa o DeepSeek Harness e os provedores configurados no dsh.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`Usa o GitHub Copilot CLI e seu login salvo ou provedor configurado via ACP.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`Usa o Grok Build CLI via ACP com seu login salvo ou credenciais de API configuradas.`,"Uses Kimi Code CLI and its saved login through ACP.":`Usa o Kimi Code CLI e o login salvo via ACP.`,"Uses OpenCode with the providers and models you have connected.":`Usa o OpenCode com os provedores e modelos que você conectou.`,"Uses Qwen Code and its saved login through ACP.":`Usa o Qwen Code e o login salvo via ACP.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`Usa um Codex CLI local compatível. O Papilot instala sua própria cópia quando necessário.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`Usa o Cursor SDK com CURSOR_API_KEY. O Papilot instala o SDK no primeiro uso.`,"Uses the local Antigravity CLI and its saved Google login.":`Usa o Antigravity CLI local e o login do Google salvo.`,Verified:`Verificado`,Version:`Versão`,"Version history":`Histórico de versões`,"View & help":`Exibição e ajuda`,"View changes for this note":`Ver alterações desta anotação`,"View changes included in this commit":`Ver alterações incluídas neste commit`,"View details":`Ver detalhes`,"View installation, account, and usage":`Ver instalação, conta e uso`,"View {n} review suggestion":`Ver {n} sugestão de revisão`,"View {n} review suggestions":`Ver {n} sugestões de revisão`,"Viewed the PDF":`Visualizou o PDF`,"Viewed the PDF: {places}":`Visualizou o PDF: {places}`,"Visual style":`Estilo visual`,"Wait for the PDF build to finish before deleting this task.":`Aguarde a conclusão da compilação do PDF antes de excluir esta tarefa.`,"Wait for the PDF to compile.":`Aguarde a compilação do PDF.`,"Waiting for your passkey…":`Aguardando sua chave de acesso…`,Warning:`Aviso`,Warnings:`Avisos`,"Weekly limit":`Limite semanal`,"What are we revising next?":`O que vamos revisar a seguir?`,"What can invited people do?":`O que as pessoas convidadas podem fazer?`,"What changed since the last commit, to stage, revert and commit change by change":`O que mudou desde o último commit, para preparar, reverter e fazer commit alteração por alteração`,"What does this skill help with?":`Com o que esta habilidade ajuda?`,"What is staged, in {n} file:":`O que está preparado, em {n} arquivo:`,"What is staged, in {n} files:":`O que está preparado, em {n} arquivos:`,"What should change here?":`O que deve mudar aqui?`,"What should change in each color group?":`O que deve mudar em cada grupo de cor?`,"What should change in this group?":`O que deve mudar neste grupo?`,"What this task accepted, in {n} file:":`O que esta tarefa aceitou, em {n} arquivo:`,"What this task accepted, in {n} files:":`O que esta tarefa aceitou, em {n} arquivos:`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`Quando uma alteração adiciona ou edita uma entrada bibliográfica, consulte o título, os autores, o ano e o DOI no Crossref, DBLP e arXiv. Nada mais do seu artigo é enviado.`,"With review feedback":`Com comentários de revisão`,Workspace:`Espaço de trabalho`,"Workspace view":`Visualização do espaço de trabalho`,Worktrees:`Árvores de trabalho`,"Write a commit message for the chosen files with {agent}":`Escrever uma mensagem de commit para os arquivos escolhidos com {agent}`,"Write a note…":`Escrever uma anotação…`,"Write feedback on the current proposed change.":`Escrever comentários sobre a alteração proposta atual.`,"Writing the PDF…":`Gravando o PDF…`,Year:`Ano`,Yellow:`Amarelo`,"You are offline. Your draft is kept in this browser.":`Você está offline. Seu rascunho é mantido neste navegador.`,"You are using the latest version on this channel.":`Você está usando a versão mais recente neste canal.`,"You checked this entry yourself.":`Você mesmo verificou esta entrada.`,"You sent review feedback, {time}":`Você enviou comentários de revisão, {time}`,"You, {time}":`Você, {time}`,"Your note":`Sua anotação`,"Your paper compiled successfully. It is ready for editing.":`Seu artigo foi compilado com sucesso. Ele está pronto para edição.`,"Your review keyboard":`Seu teclado de revisão`,Yours:`Suas`,Zoom:`Zoom`,"Zoom in":`Aumentar zoom`,"Zoom in (⌘+)":`Aumentar zoom (⌘+)`,"Zoom out":`Diminuir zoom`,"Zoom out (⌘−)":`Diminuir zoom (⌘−)`,"added {time}":`adicionado {time}`,"another entry has the same key.":`outra entrada tem a mesma chave.`,"build error":`erro de compilação`,clean:`limpo`,detached:`desanexado`,"detached HEAD":`HEAD desanexado`,"edited {file}":`editou {file}`,"edited {n} files":`editou {n} arquivos`,"from {name}":`de {name}`,"it is not cited.":`não é citado.`,"just now":`agora mesmo`,"no record in Crossref, DBLP or arXiv matches it.":`nenhum registro no Crossref, DBLP ou arXiv corresponde a ela.`,nothing:`nada`,now:`agora`,"or select text to annotate":`ou selecione um texto para fazer uma anotação`,"p. {page}":`p. {page}`,"possibly the same work as {keys} (same title).":`possivelmente o mesmo trabalho que {keys} (mesmo título).`,"ran {n} command":`executou {n} comando`,"ran {n} commands":`executou {n} comandos`,"resets in {hours} h {minutes} min":`redefine em {hours} h {minutes} min`,"resets in {minutes} min":`redefine em {minutes} min`,"resets now":`redefine agora`,"resets {time}":`redefine {time}`,small:`pequeno`,"the same work as {keys} (same DOI).":`o mesmo trabalho que {keys} (mesmo DOI).`,"used {n} tool":`usou {n} ferramenta`,"used {n} tools":`usou {n} ferramentas`,"used {time}":`usado {time}`,"viewed the PDF":`visualizou o PDF`,"{agent} conversation":`Conversa com {agent}`,"{agent} details":`Detalhes de {agent}`,"{agent} finished":`{agent} concluiu`,"{agent} is requesting permission for this action.":`{agent} está solicitando permissão para esta ação.`,"{agent} is resolving…":`{agent} está resolvendo…`,"{agent} is unavailable":`{agent} está indisponível`,"{agent} is waiting for your approval":`{agent} está aguardando sua aprovação`,"{agent} is working":`{agent} está trabalhando`,"{agent} is working on this task":`{agent} está trabalhando nesta tarefa`,"{agent} is working · new instructions run next":`{agent} está trabalhando · novas instruções serão executadas em seguida`,"{agent} is writing a commit message…":`{agent} está escrevendo uma mensagem de commit…`,"{agent} needs your input":`{agent} precisa da sua resposta`,"{agent} on the merge":`{agent} na mesclagem`,"{agent} usage":`Uso de {agent}`,"{agent} usage details":`Detalhes de uso de {agent}`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`{agent} não foi encontrado neste computador. Instale ou configure-o e selecione Reconectar.`,"{ahead} ahead · {behind} behind":`{ahead} à frente · {behind} atrás`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} e {upstream} foram alterados. A mesclagem incorpora os commits remotos.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) não tem nenhuma entrada com esta chave.`,"{command} was not found by Papilot.":`{command} não foi encontrado pelo Papilot.`,"{current} of {total}":`{current} de {total}`,"{differences} (record: {url}).":`{differences} (registro: {url}).`,"{field} is {bib} but {source} has {record}":`{field} é {bib}, mas {source} tem {record}`,"{field}: {bib} here, {record} in {source}":`{field}: {bib} aqui, {record} em {source}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} convidou você para o Papilot. Você aparecerá como {name}.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} convidou você para trabalhar em {papers}. Você aparecerá como {name}.`,"{key} ({place}): {problems}":`{key} ({place}): {problems}`,"{name} (you)":`{name} (você)`,"{name} sent review feedback, {time}":`{name} enviou feedback de revisão, {time}`,"{name} used":`{name} utilizado`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n} aceito(s)`,"{n} active task":`{n} tarefa ativa`,"{n} active tasks":`{n} tarefas ativas`,"{n} build file":`{n} arquivo de compilação`,"{n} build files":`{n} arquivos de compilação`,"{n} change to decide":`{n} alteração para decidir`,"{n} change to review":`{n} alteração para revisar`,"{n} changed":`{n} alterado(s)`,"{n} changes to decide":`{n} alterações para decidir`,"{n} changes to review":`{n} alterações para revisar`,"{n} checked by you":`{n} verificado(s) por você`,"{n} comment":`{n} comentário`,"{n} comments":`{n} comentários`,"{n} compilation error":`{n} erro de compilação`,"{n} compilation errors":`{n} erros de compilação`,"{n} compilation warning":`{n} aviso de compilação`,"{n} compilation warnings":`{n} avisos de compilação`,"{n} conflicts":`{n} conflitos`,"{n} could not be checked":`{n} não pôde/puderam ser verificado(s)`,"{n} credits":`{n} créditos`,"{n} differ":`{n} divergente(s)`,"{n} entries":`{n} entradas`,"{n} entry":`{n} entrada`,"{n} failed":`{n} falhou/falharam`,"{n} file staged":`{n} arquivo preparado`,"{n} file still has conflicts.":`{n} arquivo ainda tem conflitos.`,"{n} files staged":`{n} arquivos preparados`,"{n} files still have conflicts.":`{n} arquivos ainda têm conflitos.`,"{n} location":`{n} local`,"{n} locations":`{n} locais`,"{n} new commit on {upstream}.":`{n} novo commit em {upstream}.`,"{n} new commits on {upstream}.":`{n} novos commits em {upstream}.`,"{n} not found":`{n} não encontrado(s)`,"{n} notes on the PDF":`{n} anotações no PDF`,"{n} rejected":`{n} rejeitado(s)`,"{n} review update not sent yet":`{n} atualização de revisão ainda não enviada`,"{n} review update will be sent with this message":`{n} atualização de revisão será enviada com esta mensagem`,"{n} review updates not sent yet":`{n} atualizações de revisão ainda não enviadas`,"{n} review updates will be sent with this message":`{n} atualizações de revisão serão enviadas com esta mensagem`,"{n} staged":`{n} preparado(s)`,"{n} undone":`{n} desfeito(s)`,"{n} unstaged":`{n} não preparado(s)`,"{n} untracked":`{n} não rastreado(s)`,"{n} verified":`{n} verificado(s)`,"{n}-day limit":`Limite de {n} dias`,"{n}-hour limit":`Limite de {n} horas`,"{n}-minute limit":`Limite de {n} minutos`,"{n}d":`{n} d`,"{n}h":`{n} h`,"{n}m":`{n} min`,"{selected} / {total} locations selected":`{selected} / {total} locais selecionados`,"{shown} of {total} components":`{shown} de {total} componentes`,"{sources} could not be reached.":`Não foi possível acessar {sources}.`,"{time} ago":`há {time}`,"{title} PDF change review":`Revisão de alterações no PDF de {title}`,"{used}% used":`{used}% utilizado`},H={"A commit is already in progress. Wait for it to finish.":`Um commit já está em andamento. Aguarde sua conclusão.`,"A commit is in progress. Try again when it finishes.":`Um commit está em andamento. Tente novamente quando terminar.`,"A review action is already in progress. Wait for it to finish.":`Uma ação de revisão já está em andamento. Aguarde sua conclusão.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`Uma anotação do PDF selecionada já está sendo enviada. Aguarde a conclusão da criação dessa tarefa.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`Uma anotação do PDF selecionada não está mais disponível. Atualize o manuscrito e tente novamente.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`A revisão por IA aceita apenas instruções de revisão. Inicie uma tarefa de edição para enviar anotações, habilidades ou anexos.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`A revisão por IA cria apenas anotações no PDF. Ela não pode publicar alterações no manuscrito.`,"AI review has no manuscript changes to apply.":`A revisão por IA não tem alterações no manuscrito para aplicar.`,"AI review has no manuscript changes to deliver.":`A revisão por IA não tem alterações no manuscrito para entregar.`,"AI review uses manuscript PDF notes, not change decisions.":`A revisão por IA usa anotações no PDF do manuscrito, e não decisões de alteração.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`A revisão por IA usa o PDF do manuscrito. Inicie uma tarefa de edição separada para enviar anotações ou anexos.`,"Accepted changes are already in the manuscript.":`As alterações aceitas já estão no manuscrito.`,"An AI review comment is invalid. Ask the reviewer to retry.":`Um comentário da revisão por IA é inválido. Peça ao revisor para tentar novamente.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`Um comentário da revisão por IA lista as linhas do PDF em ordem inversa. Peça ao revisor para colocar o início antes do fim.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`Um comentário da revisão por IA refere-se a um local desconhecido no PDF. Peça ao revisor para tentar novamente usando os IDs de linha fornecidos.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`Um comentário da revisão por IA abrange várias páginas do PDF. Peça ao revisor para fixá-lo em uma única página.`,"Another Papilot instance is already updating.":`Outra instância do Papilot já está sendo atualizada.`,"Answer every question before submitting.":`Responda a todas as perguntas antes de enviar.`,"Attachment not found.":`Anexo não encontrado.`,"Attachments must total 100 MB or less.":`O total de anexos deve ser de 100 MB ou menos.`,"Check for a newer release before updating.":`Verifique se há uma versão mais recente antes de atualizar.`,"Check out a branch before pushing.":` Faça checkout de uma ramificação antes de enviar.`,"Check the task status before pausing this turn.":`Verifique o status da tarefa antes de pausar este turno.`,"Check the task status before sending more instructions.":`Verifique o status da tarefa antes de enviar mais instruções.`,"Choose Codex, Claude or GLM for AI review.":`Escolha Codex, Claude ou GLM para a revisão por IA.`,"Choose a ZIP smaller than 64 MB.":`Escolha um arquivo ZIP menor que 64 MB.`,"Choose a file with a valid name.":`Escolha um arquivo com um nome válido.`,"Choose a folder smaller than 64 MB.":`Escolha uma pasta menor que 64 MB.`,"Choose a supported LaTeX engine.":`Escolha um mecanismo LaTeX compatível.`,"Choose a valid update channel.":`Escolha um canal de atualização válido.`,"Choose an available model for this agent.":`Escolha um modelo disponível para este agente.`,"Choose an entry to confirm.":`Escolha um item para confirmar.`,"Choose an existing TeX main file.":`Escolha um arquivo TeX principal existente.`,"Choose between 1 and 5,000 files.":`Escolha entre 1 e 5.000 arquivos.`,"Choose one folder or ZIP.":`Escolha uma pasta ou um arquivo ZIP.`,"Choose one of the offered answers.":`Escolha uma das respostas oferecidas.`,"Choose stage, unstage or revert.":`Escolha preparar, desmarcar ou reverter.`,"Choose whether to archive or restore the task.":`Escolha se deseja arquivar ou restaurar a tarefa.`,"Claude Code did not list its models.":`O Claude Code não listou seus modelos.`,"Claude Code exited before listing its models.":`O Claude Code foi encerrado antes de listar seus modelos.`,"Claude has not reported usage yet.":`O Claude ainda não informou o uso.`,"Codex disconnected. Resume the task before retrying.":`O Codex foi desconectado. Retome a tarefa antes de tentar novamente.`,"Codex is not connected.":`O Codex não está conectado.`,"Commit the task first, then push from Git.":`Faça commit da tarefa primeiro e depois faça push pelo Git.`,"Confirm permanent task deletion before continuing.":`Confirme a exclusão permanente da tarefa antes de continuar.`,"Could not check for updates.":`Não foi possível verificar se há atualizações.`,"Could not check for updates. Try again when connected.":`Não foi possível verificar se há atualizações. Tente novamente quando estiver conectado.`,"Could not complete the environment checks. Please try again.":`Não foi possível concluir as verificações do ambiente. Tente novamente.`,"Could not read the LaTeX installation.":`Não foi possível ler a instalação do LaTeX.`,"Could not restart the background service.":`Não foi possível reiniciar o serviço em segundo plano.`,"Deletion is already in progress. Wait for it to finish.":`A exclusão já está em andamento. Aguarde sua conclusão.`,"Describe the revision, choose a skill, or add a PDF note.":`Descreva a revisão, escolha uma habilidade ou adicione uma anotação ao PDF.`,"Describe what to do with each selected color group.":`Descreva o que fazer com cada grupo de cor selecionado.`,"Download desktop updates from GitHub Releases.":`Baixe as atualizações para desktop no GitHub Releases.`,"Enter a folder path.":`Insira um caminho de pasta.`,"Enter a paper name under 120 characters.":`Insira um nome de artigo com menos de 120 caracteres.`,"Fast mode is not available for this model.":`O modo rápido não está disponível para este modelo.`,"Files must be 25 MB or smaller.":`Os arquivos devem ter 25 MB ou menos.`,"Finish or abort the merge before committing other changes.":`Conclua ou cancele a mesclagem antes de confirmar outras alterações.`,"Finish or abort the merge before discarding changes.":`Conclua ou aborte a mesclagem antes de descartar as alterações.`,"Finish or abort the merge before staging other changes.":`Conclua ou cancele a mesclagem antes de preparar outras alterações.`,"Finish or abort the merge first.":`Conclua ou cancele a mesclagem primeiro.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`Conclua ou cancele o merge no painel do Git antes de aceitar, rejeitar ou desfazer alterações.`,"GLM does not report usage to Papilot.":`O GLM não informa o uso ao Papilot.`,"Group instructions must refer to selected PDF notes.":`As instruções de grupo devem se referir às anotações do PDF selecionadas.`,"Images must be 5 MB or smaller.":`As imagens devem ter 5 MB ou menos.`,"Import not found.":`Importação não encontrada.`,"Invalid annotation group.":`Grupo de anotações inválido.`,"Invalid approval decision.":`Decisão de aprovação inválida.`,"Invalid development revision.":`Revisão de desenvolvimento inválida.`,"Invalid development version.":`Versão de desenvolvimento inválida.`,"Invalid diagnostic report.":`Relatório de diagnóstico inválido.`,"Invalid file path in upload.":`Caminho de arquivo inválido no envio.`,"Invalid file path.":`Caminho de arquivo inválido.`,"Invalid model.":`Modelo inválido.`,"Invalid note location.":`Local da anotação inválido.`,"Invalid reasoning effort.":`Esforço de raciocínio inválido.`,"Invalid release information.":`Informações de lançamento inválidas.`,"Invalid release version.":`Versão de lançamento inválida.`,"Invalid save action.":`Ação de salvamento inválida.`,"Invalid task ID.":`ID de tarefa inválido.`,"Invalid update activation.":`Ativação de atualização inválida.`,"Invalid upload data.":`Dados de envio inválidos.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`Gerencie esta sugestão na respectiva tarefa de revisão por IA ou copie-a para o manuscrito primeiro.`,"Missing update restart job.":`Trabalho de reinicialização da atualização ausente.`,"No file has conflict markers left. Commit the merge.":`Nenhum arquivo possui marcadores de conflito restantes. Faça o commit do merge.`,"No merge is in progress.":`Nenhuma mesclagem em andamento.`,"No such file.":`Arquivo inexistente.`,"None of the chosen files is build output that can be ignored.":`Nenhum dos arquivos escolhidos é um resultado de compilação que possa ser ignorado.`,"Not found":`Não encontrado`,"Note not found.":`Anotação não encontrada.`,"Only the model and its settings can be changed.":`Apenas o modelo e suas configurações podem ser alterados.`,"Only the owner of this Papilot can do this.":`Apenas o proprietário deste Papilot pode fazer isso.`,"Open Papilot at its public address.":`Abra o Papilot no endereço público.`,"Paper name is too long.":`O nome do artigo é longo demais.`,"Paper project not found.":`Projeto do artigo não encontrado.`,"Papilot did not finish shutting down.":`O Papilot não concluiu o encerramento.`,"Papilot is restarting after an update. Please wait a moment.":`O Papilot está reiniciando após uma atualização. Aguarde um momento.`,"Papilot restarted. Retry compilation to continue this import.":`O Papilot foi reiniciado. Tente compilar novamente para continuar esta importação.`,"Pause Codex before building a review.":`Pause o Codex antes de gerar uma revisão.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`Pause a tarefa e aguarde a conclusão do trabalho atual ou da ação de revisão antes de excluí-la. Resolva qualquer ação incerta primeiro.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`Pause a tarefa antes de aceitar, rejeitar ou desfazer alterações. Aguarde a conclusão de qualquer compilação de PDF.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`Pause as tarefas ativas deste artigo e aguarde a conclusão do trabalho atual antes de alterar o caminho ou removê-lo. Resolva qualquer ação incerta primeiro.`,"Resolve the merge conflicts in the selected files before committing.":`Resolva os conflitos de mesclagem nos arquivos selecionados antes de confirmar.`,"Restore this suggestion before copying it.":`Restaure esta sugestão antes de copiá-la.`,"Retry deletion to confirm this task was removed.":`Tente excluir novamente para confirmar que esta tarefa foi removida.`,"Retry the pending delivery before sending more instructions.":`Tente reenviar a entrega pendente antes de enviar mais instruções.`,"Review resource not found.":`Recurso de revisão não encontrado.`,"Select a folder containing the paper.":`Selecione uma pasta que contenha o artigo.`,"Select a valid paper to check.":`Selecione um artigo válido para verificar.`,"Select a valid paper.":`Selecione um artigo válido.`,"Select an existing review round and either the before or after PDF.":`Selecione uma rodada de revisão existente e o PDF anterior ou posterior.`,"Select at least one change.":`Selecione pelo menos uma alteração.`,"Select at least one changed file to commit.":`Selecione pelo menos um arquivo alterado para confirmar.`,"Select at least one changed file.":`Selecione pelo menos um arquivo alterado.`,"Select text or mark a region on the page first.":`Selecione um texto ou marque uma região na página primeiro.`,"Select the root directory of the Git repository.":`Selecione o diretório raiz do repositório Git.`,"Select unsent PDF notes for this task.":`Selecione anotações do PDF não enviadas para esta tarefa.`,"Select up to 10 valid attachments.":`Selecione até 10 anexos válidos.`,"Select valid PDF notes for this task.":`Selecione anotações do PDF válidas para esta tarefa.`,"Select valid review notes.":`Selecione anotações de revisão válidas.`,"Send attachments with a message, separately from review feedback.":`Envie anexos com uma mensagem, separadamente dos comentários da revisão.`,"Service tiers are only available for Codex.":`Os níveis de serviço estão disponíveis apenas para o Codex.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`Defina PAPILOT_ACCOUNT_ORIGIN como o URL público antes de convidar pessoas.`,"Sign in to continue.":`Entre para continuar.`,"Sign-in is not set up on this Papilot.":`O acesso não está configurado neste Papilot.`,"Stage at least one change to commit.":`Prepare pelo menos uma alteração para confirmar.`,"Stage at least one change.":`Prepare pelo menos uma alteração.`,"Start a new task to run the AI review skill on the current PDF.":`Inicie uma nova tarefa para executar a habilidade de revisão por IA no PDF atual.`,"Start or resume the thread before starting a turn.":`Inicie ou retome a conversa antes de iniciar um turno.`,"Task not found.":`Tarefa não encontrada.`,"That file has no uncommitted changes.":`Esse arquivo não tem alterações não confirmadas.`,"That page is not part of the manuscript.":`Essa página não faz parte do manuscrito.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`A revisão por IA não retornou anotações válidas. Peça para tentar novamente com o formato JSON exigido.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`A resposta da revisão por IA está incompleta ou é longa demais. Peça ao revisor para tentar novamente.`,"The PDF copy for this review is unavailable. Start a new AI review.":`A cópia em PDF desta revisão não está disponível. Inicie uma nova revisão por IA.`,"The PDF is building. Wait for this build to finish.":`O PDF está sendo gerado. Aguarde a conclusão desta compilação.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`A captura do PDF para esta revisão não está disponível. Inicie uma nova revisão por IA.`,"The ZIP expands beyond 64 MB or 5,000 files.":`O arquivo ZIP ultrapassa 64 MB ou 5.000 arquivos ao ser extraído.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`A compilação de desenvolvimento precisa de pelo menos 2 GB de espaço livre em disco. Libere espaço e tente novamente.`,"The development checkout does not match the requested commit.":`O código de desenvolvimento obtido não corresponde ao commit solicitado.`,"The development checkout does not match the requested version.":`O código de desenvolvimento obtido não corresponde à versão solicitada.`,"The downloaded package does not match the requested release.":`O pacote baixado não corresponde à versão de lançamento solicitada.`,"The downloaded release is incomplete.":`A versão de lançamento baixada está incompleta.`,"The manuscript changed while copying this suggestion. Try again.":`O manuscrito foi alterado durante a cópia desta sugestão. Tente novamente.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`Não foi possível instalar a nova versão. Verifique a conexão e o espaço livre em disco e tente novamente.`,"The new version did not pass its startup check. Your current version is still running.":`A nova versão não passou na verificação de inicialização. A versão atual continua em execução.`,"The new version did not restart successfully.":`A nova versão não foi reiniciada com sucesso.`,"The owner cannot be removed.":`O proprietário não pode ser removido.`,"The owner sees every paper.":`O proprietário vê todos os artigos.`,"The paper configuration must contain a JSON object.":`A configuração do artigo deve conter um objeto JSON.`,"The paper configuration must not be a symbolic link.":`A configuração do artigo não pode ser um link simbólico.`,"The passkey could not be created. Try again.":`Não foi possível criar a chave de acesso. Tente novamente.`,"The request origin does not match.":`A origem da solicitação não corresponde.`,"The review action is still being checked. Wait for it to finish.":`A ação de revisão ainda está sendo verificada. Aguarde sua conclusão.`,"The review could not be loaded. Try again.":`Não foi possível carregar a revisão. Tente novamente.`,"The review engine could not confirm this action. Check again when it is available.":`O mecanismo de revisão não pôde confirmar esta ação. Verifique novamente quando estiver disponível.`,"The review engine could not confirm this action. Select Check status before continuing.":`O mecanismo de revisão não pôde confirmar esta ação. Selecione Verificar status antes de continuar.`,"The review engine could not confirm this task’s cleanup status.":`O mecanismo de revisão não pôde confirmar o status de limpeza desta tarefa.`,"The review engine did not confirm task deletion.":`O mecanismo de revisão não confirmou a exclusão da tarefa.`,"The review engine returned an unexpected response. Select Check status before continuing.":`O mecanismo de revisão retornou uma resposta inesperada. Selecione Verificar status antes de continuar.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`O repositório selecionado não contém as árvores de trabalho das tarefas deste artigo. Selecione o repositório com as tarefas existentes ou adicione-o como um artigo separado.`,"The server is shutting down.":`O servidor está sendo encerrado.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`O servidor foi reiniciado e interrompeu a interação anterior. Continue na mesma conversa.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`O servidor foi reiniciado antes que uma ação de revisão fosse confirmada. Selecione Verificar status antes de continuar.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`O servidor foi reiniciado durante a exclusão. Tente excluir novamente para confirmar a limpeza.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`O servidor foi reiniciado durante a compilação do PDF. Verifique a revisão e recompile se necessário.`,"The task was paused before these instructions were queued. Your draft has been kept.":`A tarefa foi pausada antes que essas instruções entrassem na fila. Seu rascunho foi mantido.`,"The update download timed out.":`O tempo limite para baixar a atualização foi esgotado.`,"The update restart helper did not start.":`O assistente de reinicialização da atualização não foi iniciado.`,"The update was interrupted. Your current installation is still available; retry the update.":`A atualização foi interrompida. A instalação atual continua disponível; tente atualizar novamente.`,"There is no compilation log yet.":`Ainda não há registro de compilação.`,"There is no new review feedback to send.":`Não há novos comentários de revisão para enviar.`,"This PDF has no selectable text to review.":`Este PDF não possui texto selecionável para revisão.`,"This PDF is too long for one AI review (180,000 characters maximum).":`Este PDF é longo demais para uma única revisão por IA (máximo de 180.000 caracteres).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`Este endereço é apenas para a sua tailnet. Pessoas de fora devem entrar em PAPILOT_ACCOUNT_ORIGIN.`,"This agent does not report usage.":`Este agente não informa o uso.`,"This attachment is already being sent to another task.":`Este anexo já está sendo enviado para outra tarefa.`,"This attachment is not available for this task.":`Este anexo não está disponível para esta tarefa.`,"This branch does not track a remote branch yet.":`Esta ramificação ainda não acompanha uma ramificação remota.`,"This comparison is out of date. Refresh the page.":`Esta comparação está desatualizada. Atualize a página.`,"This device is no longer signed in.":`Este dispositivo não está mais conectado.`,"This entry is no longer among the changes. Refresh the page.":`Este item não está mais entre as alterações. Atualize a página.`,"This entry is no longer in the bibliography. Refresh the panel.":`Esta entrada não está mais na bibliografia. Atualize o painel.`,"This file is empty.":`Este arquivo está vazio.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`Esta pasta pertence a um repositório Git superior. Selecione a pasta raiz ou envie uma cópia.`,"This image format is not supported.":`Este formato de imagem não é suportado.`,"This invite link has expired or was already used. Ask for a new one.":`Este link de convite expirou ou já foi usado. Peça um novo.`,"This manuscript preview is out of date. Refresh it and try again.":`Esta pré-visualização do manuscrito está desatualizada. Atualize-a e tente novamente.`,"This model does not support that reasoning effort.":`Este modelo não suporta esse esforço de raciocínio.`,"This note has already been sent.":`Esta anotação já foi enviada.`,"This note has been deleted. Undo the deletion first.":`Esta anotação foi excluída. Desfaça a exclusão primeiro.`,"This note is being sent. Wait for the task to finish creating.":`Esta anotação está sendo enviada. Aguarde a conclusão da criação da tarefa.`,"This page has expired. Refresh it and try again.":`Esta página expirou. Atualize-a e tente novamente.`,"This paper is already added. Open it from the paper list.":`Este artigo já foi adicionado. Abra-o na lista de artigos.`,"This paper is being updated. Please retry in a moment.":`Este artigo está sendo atualizado. Tente novamente em instantes.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`Não foi possível localizar este trecho com segurança no manuscrito atual. A sugestão permanece na tarefa de revisão.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`Não foi possível entrar com esta chave de acesso. Peça um novo convite ao proprietário caso ela tenha sido removida.`,"This person is no longer in Papilot.":`Esta pessoa não está mais no Papilot.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`Este repositório ainda não tem commits. Faça um commit para comparar alterações posteriores no PDF.`,"This repository has no remote.":`Este repositório não tem um repositório remoto.`,"This repository is already added as another paper.":`Este repositório já foi adicionado como outro artigo.`,"This request ID is already in use by another task.":`Este ID de solicitação já está em uso por outra tarefa.`,"This request has ended or the connection has restarted.":`Esta solicitação foi encerrada ou a conexão foi reiniciada.`,"This request has ended.":`Esta solicitação foi encerrada.`,"This review page has expired. Refresh it and try again.":`Esta página de revisão expirou. Atualize-a e tente novamente.`,"This review task does not belong to this workspace.":`Esta tarefa de revisão não pertence a este espaço de trabalho.`,"This suggestion does not belong to this review task.":`Esta sugestão não pertence a esta tarefa de revisão.`,"This suggestion was ignored while copying. Restore it first.":`Esta sugestão foi ignorada ao copiar. Restaure-a primeiro.`,"This task already applies accepted changes to the working directory.":`Esta tarefa já aplica as alterações aceitas ao diretório de trabalho.`,"This task already has queued instructions. Wait or pause it first.":`Esta tarefa já possui instruções na fila. Aguarde ou pause-a primeiro.`,"This task has no accepted changes left to commit.":`Esta tarefa não tem alterações aceitas restantes para commit.`,"This task is being created. Refresh in a moment.":`Esta tarefa está sendo criada. Atualize em instantes.`,"This task is being deleted.":`Esta tarefa está sendo excluída.`,"This task is being deleted. Retry deletion to finish cleanup.":`Esta tarefa está sendo excluída. Tente excluir novamente para concluir a limpeza.`,"This task is being deleted. Your instructions were not queued.":`Esta tarefa está sendo excluída. Suas instruções não foram colocadas na fila.`,"This task is busy. Wait for it to finish or pause it first.":`Esta tarefa está ocupada. Aguarde a conclusão ou pause-a primeiro.`,"This task is not an AI review.":`Esta tarefa não é uma revisão por IA.`,"This task was deleted. Create a new task instead.":`Esta tarefa foi excluída. Crie uma nova tarefa.`,"Too many attempts. Wait a minute and try again.":`Muitas tentativas. Aguarde um minuto e tente novamente.`,"Too many open Papilot tabs. Close one and try again.":`Há muitas abas do Papilot abertas. Feche uma e tente novamente.`,"Unknown Git action.":`Ação do Git desconhecida.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`Os anexos não utilizados atingiram 500 MB. Remova anexos dos rascunhos antes de enviar mais.`,"Upload a file as binary data.":`Envie um arquivo como dados binários.`,"Wait for repository preparation to finish.":`Aguarde a conclusão do preparo do repositório.`,"Wait for task creation to finish before deleting it.":`Aguarde a conclusão da criação da tarefa antes de excluí-la.`,"Wait for the current Git operation before sending more instructions.":`Aguarde a operação Git atual antes de enviar mais instruções.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`Aguarde a conclusão da compilação do PDF atual e, em seguida, execute a habilidade de revisão por IA.`,"Wait for the current delivery before sending more instructions.":`Aguarde a entrega atual antes de enviar mais instruções.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`Aguarde a conclusão da compilação do PDF atual do manuscrito e copie a sugestão novamente.`,"Wait for the current review action before building a review.":`Aguarde a ação de revisão atual antes de gerar uma revisão.`,"Wait for the current review action before committing.":`Aguarde a ação de revisão atual antes de fazer o commit.`,"Wait for the current update to finish before changing channels.":`Aguarde a conclusão da atualização atual antes de mudar de canal.`,"Wait for the task and review actions to finish before applying changes.":`Aguarde a conclusão da tarefa e das ações de revisão antes de aplicar as alterações.`,"Wait for the task and review actions to finish before choosing a destination.":`Aguarde a conclusão da tarefa e das ações de revisão antes de escolher um destino.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`Aguarde a conclusão da compilação do PDF deste artigo antes de alterar o caminho ou removê-lo.`,"ZIP links and special files are not supported.":`Links e arquivos especiais em ZIP não são suportados.`,"npm is unavailable to Papilot.":`O npm não está disponível para o Papilot.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`Não foi possível conectar ao serviço de comparação de PDF. Suas alterações estão salvas. Selecione “Verificar status” para recuperar a compilação existente.`},ce={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`Potrebbe mancare un pacchetto, un font o un file sorgente. Controlla i dettagli di seguito, ripristina il file mancante o chiedi aiuto.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`Una passkey ti consente di accedere con Face ID, Touch ID, Windows Hello o il tuo telefono. Papilot non vede mai alcuna password.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`Un'abilità con lo stesso ID ha la priorità qui: questo articolo, poi globale, infine integrata.`,"A skill with this ID already exists in this location.":`Esiste già un'abilità con questo ID in questa posizione.`,"A task needs attention":`Un'attività richiede attenzione`,"A workspace for your papers.":`Uno spazio di lavoro per i tuoi articoli.`,"AI is resolving conflicts…":`L'IA sta risolvendo i conflitti…`,"AI needs your input":`L'IA richiede il tuo intervento`,"AI review":`Revisione IA`,"AI suggestion":`Suggerimento IA`,"AI suggestion {n}":`Suggerimento IA {n}`,"AI suggestions":`Suggerimenti IA`,"Abort merge":`Annulla unione`,"Aborting…":`Annullamento in corso…`,"About Papilot":`Informazioni su Papilot`,Accent:`Colore di accento`,"Accept change":`Accetta modifica`,"Accept the current proposal. In Changes, stage or unstage it.":`Accetta la proposta attuale. In Modifiche, preparala o rimuovila dall'area di preparazione.`,Accepted:`Accettata`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`Le modifiche accettate nel tuo manoscritto rimangono invariate. Le altre attività non subiscono modifiche.`,"Access to all papers":`Accesso a tutti gli articoli`,Account:`Account`,"Add a paper":`Aggiungi un articolo`,"Add a passkey":`Aggiungi una passkey`,"Add all to task":`Aggiungi tutto all'attività`,"Add and fix later":`Aggiungi e correggi dopo`,"Add files or skills":`Aggiungi file o abilità`,"Add files…":`Aggiungi file…`,"Add instructions to the selected color groups above.":`Aggiungi istruzioni ai gruppi di colore selezionati sopra.`,"Add note":`Aggiungi annotazione`,"Add overall instructions (optional)":`Aggiungi istruzioni generali (facoltativo)`,"Add paper":`Aggiungi articolo`,"Add paper…":`Aggiungi articolo…`,"Add skill":`Aggiungi abilità`,"Add to .gitignore":`Aggiungi a .gitignore`,"Add to group":`Aggiungi al gruppo`,"Add to {group}":`Aggiungi a {group}`,"Add your first paper":`Aggiungi il tuo primo articolo`,Added:`Aggiunto`,"Added to task: {n}":`Aggiunte all'attività: {n}`,"Added {n} pattern to .gitignore.":`Aggiunto {n} modello a .gitignore.`,"Added {n} patterns to .gitignore.":`Aggiunti {n} modelli a .gitignore.`,"Address reviewers":`Rispondi ai revisori`,"Address {n} PDF notes":`Gestisci {n} annotazioni PDF`,Advanced:`Avanzate`,"Agent configuration":`Configurazione agente`,"Agent settings":`Impostazioni agente`,Agents:`Agenti`,All:`Tutte`,"All entries":`Tutte le voci`,"All skills":`Tutte le abilità`,"Allow this action":`Consenti questa azione`,"Already set up?":`Già configurato?`,"Already used for {action}. Choose another shortcut.":`Già in uso per {action}. Scegli un'altra scorciatoia.`,"Always light":`Sempre chiaro`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`Una variabile d'ambiente impostata in un nuovo terminale non raggiunge un server già in esecuzione. Riavvia Papilot con le credenziali; la sola riconnessione non può modificarne l'ambiente.`,"Annotation group color":`Colore del gruppo di annotazioni`,"Annotation groups":`Gruppi di annotazioni`,"Another entry has the same key.":`Un'altra voce ha la stessa chiave.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity apre le immagini tramite i propri strumenti per i file. Per l'inserimento diretto di immagini, scegli Codex o Claude.`,Appearance:`Aspetto`,Application:`Applicazione`,"Applied to manuscript":`Applicato al manoscritto`,Apply:`Applica`,"Apply file changes":`Applica modifiche ai file`,"Apply to working directory":`Applica alla directory di lavoro`,"Apply to workspace":`Applica allo spazio di lavoro`,"Apply without committing":`Applica senza eseguire il commit`,"Applying…":`Applicazione in corso…`,"Approval requests":`Richieste di approvazione`,"Approve this action":`Approva questa azione`,Archive:`Archivia`,"Archive task":`Archivia attività`,"Archived task":`Attività archiviata`,"Archived tasks":`Attività archiviate`,"Ask a question or request changes…":`Fai una domanda o richiedi modifiche…`,"Ask an agent to look into {n} problem":`Chiedi a un agente di esaminare {n} problema`,"Ask an agent to look into {n} problems":`Chiedi a un agente di esaminare {n} problemi`,"Ask for another review of this PDF version…":`Richiedi un'altra revisione di questa versione del PDF…`,"Attach up to 10 files per message.":`Allega fino a 10 file per messaggio.`,Attachments:`Allegati`,"Attachments must total 100 MB or less.":`Il totale degli allegati non deve superare 100 MB.`,Authors:`Autori`,"Available levels depend on the selected model.":`I livelli disponibili dipendono dal modello selezionato.`,"Available models":`Modelli disponibili`,"Awaiting changes":`In attesa di modifiche`,Background:`Sfondo`,"Bare repository":`Repository bare`,"BibTeX cannot read it ({error}).":`BibTeX non riesce a leggerlo ({error}).`,"BibTeX cannot read it: {error}":`BibTeX non riesce a leggerlo: {error}`,Book:`Libro`,Branch:`Ramo`,"Bring your collaborators in":`Invita i tuoi collaboratori`,"Browser default ({language})":`Predefinito del browser ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`I browser mostrano le notifiche solo su HTTPS o localhost. Apri Papilot a un indirizzo sicuro per usarle.`,"Build failed · sent to {agent}":`Compilazione non riuscita · inviato a {agent}`,"Built-in":`Integrata`,Cancel:`Annulla`,"Change shortcut: {action}":`Modifica scorciatoia: {action}`,"Change {n}":`Modifica {n}`,"Changed files in {branch}":`File modificati in {branch}`,Changelog:`Note di rilascio`,Changes:`Modifiche`,"Changes apply to the next turn.":`Le modifiche si applicano al turno successivo.`,"Changes in {path}":`Modifiche in {path}`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`Modifiche mostra solo le sezioni modificate e si apre più rapidamente. PDF mostra ogni modifica nel contesto dell'intero articolo e richiede più tempo per gli articoli lunghi. Il selettore in una revisione modifica solo quella revisione.`,"Change…":`Cambia…`,Chart:`Grafico`,Chat:`Chat`,"Chat (reply needed)":`Chat (risposta richiesta)`,"Chat only":`Solo chat`,"Check again":`Ricontrolla`,"Check for updates":`Controlla aggiornamenti`,"Check for updates to see the latest version.":`Controlla gli aggiornamenti per vedere l'ultima versione.`,"Check math":`Controlla la matematica`,"Check online":`Controlla online`,"Check references online":`Controlla i riferimenti online`,"Check status":`Controlla stato`,"Check task status":`Controlla lo stato dell'attività`,"Check task status before deleting this task.":`Controlla lo stato dell'attività prima di eliminarla.`,"Check task status before sending":`Controlla lo stato dell'attività prima di inviare`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`Controlla l'errore di connessione qui sopra e le impostazioni di accesso, provider e rete dell'agente su questo host. Riavvia Papilot dopo aver modificato le credenziali o i percorsi degli eseguibili.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`Controlla il file principale e il motore di compilazione, oppure chiedi all'assistente di correggere la compilazione. Puoi anche modificare i file salvati e riprovare.`,"Check the task status before sending notes.":`Controlla lo stato dell'attività prima di inviare le annotazioni.`,"Check your connection and try again.":`Controlla la connessione e riprova.`,"Check {n} more online":`Controlla altri {n} online`,"Checked by you":`Verificato da te`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`Controllo delle modifiche al manoscritto in corso. Il confronto PDF viene generato solo se necessario.`,"Checking for updates…":`Controllo degli aggiornamenti…`,"Checking {n}…":`Controllo di {n}…`,"Checking…":`Controllo in corso…`,Checklist:`Lista di controllo`,"Choose ZIP":`Scegli ZIP`,"Choose a folder or ZIP, or drag it here.":`Scegli una cartella o un file ZIP, oppure trascinali qui.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`Scegli una cartella per caricarne una copia. Per usare i file originali, aprila nell'app desktop.`,"Choose a shortcut to edit:":`Scegli una scorciatoia da modificare:`,"Choose an icon":`Scegli un'icona`,"Choose attachments":`Scegli allegati`,"Choose different files":`Scegli file diversi`,"Choose folder":`Scegli cartella`,"Choose how paper pages look in dark mode.":`Scegli l'aspetto delle pagine dell'articolo in modalità scura.`,"Choose the papers to share, then send a personal invite link.":`Scegli gli articoli da condividere, quindi invia un link di invito personale.`,"Choose up to 5,000 files, totaling less than 64 MB.":`Scegli fino a 5.000 file, per un totale inferiore a 64 MB.`,"Choose {color} color":`Scegli il colore {color}`,"Citations, entries and their records":`Citazioni, voci e relativi record`,"Cited {n} time: {places}":`Citato {n} volta: {places}`,"Cited {n} times: {places}":`Citato {n} volte: {places}`,"Claude Code or API credentials were not detected.":`Credenziali di Claude Code o dell'API non rilevate.`,"Clear selection":`Cancella selezione`,"Clear task search":`Cancella ricerca attività`,"Click a highlighted key to customize it.":`Fai clic su un tasto evidenziato per personalizzarlo.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`Fai clic su un tasto per modificarlo, quindi premi la nuova scorciatoia. Esc annulla; Backspace la rimuove.`,Close:`Chiudi`,"Close agent details":`Chiudi dettagli agente`,"Close note":`Chiudi annotazione`,"Close notes":`Chiudi annotazioni`,"Close review notes":`Chiudi annotazioni di revisione`,"Close search":`Chiudi ricerca`,"Close suggestion":`Chiudi suggerimento`,"Close task list":`Chiudi elenco attività`,"Close the current editor or cancel region selection.":`Chiude l'editor corrente o annulla la selezione dell'area.`,"Close window":`Chiudi finestra`,"Closest record":`Record più simile`,Code:`Codice`,"Collapse manuscript panel":`Comprimi pannello manoscritto`,"Collapse {group} notes":`Comprimi le annotazioni di {group}`,Color:`Colore`,Comments:`Commenti`,Commit:`Commit`,"Commit 1 file":`Esegui il commit di 1 file`,"Commit all {n} files":`Esegui il commit di tutti i {n} file`,"Commit and push":`Commit e push`,"Commit graph":`Grafico dei commit`,"Commit merge":`Esegui il commit del merge`,"Commit message":`Messaggio di commit`,"Commit staged changes in 1 file":`Esegui il commit delle modifiche preparate in 1 file`,"Commit staged changes in {n} files":`Esegui il commit delle modifiche preparate in {n} file`,"Commit to manuscript":`Esegui commit nel manoscritto`,"Commit to task branch":`Esegui il commit sul ramo dell'attività`,"Commit to {branch}":`Esegui commit su {branch}`,"Commit together":`Esegui commit insieme`,"Commit what is staged":`Esegui il commit delle modifiche preparate`,"Commit {chosen} of {n} files":`Esegui il commit di {chosen} di {n} file`,Committed:`Commit eseguito`,"Committed and pushed":`Commit e push eseguiti`,"Committed {hash} and pushed.":`Commit {hash} e push eseguiti.`,"Committed {hash} to {branch}":`Commit {hash} eseguito su {branch}`,"Committed {hash}.":`Commit {hash} eseguito.`,"Committing and pushing…":`Commit e push in corso…`,"Committing…":`Commit in corso…`,"Commit…":`Commit…`,"Compared with {upstream}":`Rispetto a {upstream}`,"Compilation details":`Dettagli di compilazione`,"Compilation failed. Click to retry.":`Compilazione non riuscita. Fai clic per riprovare.`,"Compilation log":`Log di compilazione`,"Compilation problems":`Problemi di compilazione`,"Compilation status unavailable.":`Stato della compilazione non disponibile.`,"Compiling the PDF…":`Compilazione del PDF in corso…`,Completed:`Completato`,"Component source":`Sorgente del componente`,"Confirm and apply":`Conferma e applica`,"Confirm and commit":`Conferma ed esegui commit`,"Confirm whether the task is still running before generating a PDF comparison.":`Verifica se l'attività è ancora in esecuzione prima di generare un confronto PDF.`,Conflict:`Conflitto`,"Conflict resolution paused":`Risoluzione dei conflitti in pausa`,"Conflicts resolved. Read the diffs, then commit the merge.":`Conflitti risolti. Esamina le differenze, quindi esegui il commit del merge.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`Collega un indirizzo HTTPS pubblico per invitare persone ai tuoi articoli. Possono accedere in modo sicuro con una passkey.`,"Connect an assistant in Settings to help repair this paper.":`Collega un assistente nelle Impostazioni per aiutare a riparare questo articolo.`,"Connect and sign in to load the model list.":`Connettiti e accedi per caricare l'elenco dei modelli.`,"Connect to view account, models, and usage.":`Connettiti per visualizzare account, modelli e utilizzo.`,Connected:`Connesso`,"Connecting to your papers and tasks…":`Connessione ai tuoi articoli e alle tue attività in corso…`,"Connecting to {agent}…":`Connessione a {agent} in corso…`,"Connecting…":`Connessione in corso…`,"Connection details":`Dettagli di connessione`,"Connection lost. Showing the last update; your draft is kept.":`Connessione persa. Viene mostrato l'ultimo aggiornamento; la bozza è conservata.`,Consistency:`Coerenza`,Contents:`Indice`,"Contents will appear when the PDF is ready.":`L'indice apparirà quando il PDF sarà pronto.`,"Continue later":`Continua più tardi`,Contribute:`Contribuisci`,"Contribute an integration":`Contribuisci con un'integrazione`,Copied:`Copiato`,"Copied path":`Percorso copiato`,Copy:`Copia`,"Copy and edit":`Copia e modifica`,"Copy message":`Copia messaggio`,"Copy path: {path}":`Copia percorso: {path}`,"Copy selected PDF text":`Copia testo PDF selezionato`,"Copy this built-in skill to customize it for all papers or this paper.":`Copia questa abilità integrata per personalizzarla per tutti gli articoli o per questo articolo.`,"Could not check":`Impossibile verificare`,"Could not check for updates":`Impossibile verificare gli aggiornamenti`,"Could not check for updates. Try again when connected.":`Impossibile verificare gli aggiornamenti. Riprova quando sei connesso.`,"Could not complete the environment checks. Check the connection and try again.":`Impossibile completare le verifiche dell'ambiente. Controlla la connessione e riprova.`,"Could not detect a main file. Enter its path relative to the paper folder.":`Impossibile rilevare un file principale. Inserisci il suo percorso relativo alla cartella dell'articolo.`,"Could not generate the PDF comparison.":`Impossibile generare il confronto PDF.`,"Could not load the license notices.":`Impossibile caricare le note di licenza.`,"Could not prepare the paper":`Impossibile preparare l'articolo`,"Could not read the LaTeX installation. Try again.":`Impossibile leggere l'installazione di LaTeX. Riprova.`,"Could not read the selected file.":`Impossibile leggere il file selezionato.`,"Could not read this worktree.":`Impossibile leggere questo albero di lavoro.`,"Could not reconnect. Check the server connection and try again.":`Impossibile riconnettersi. Controlla la connessione al server e riprova.`,"Could not refresh the repository.":`Impossibile aggiornare il repository.`,"Could not start the update. Please retry.":`Impossibile avviare l'aggiornamento. Riprova.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Crea una chiave API di Cursor nella dashboard di Cursor o configura l'accesso all'SDK di Cursor su questo host.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Crea un GLM Coding Plan o una chiave API con Zhipu o Z.ai.`,"Create a passkey":`Crea una passkey`,"Create a passkey on this device to sign in as {name}.":`Crea una passkey su questo dispositivo per accedere come {name}.`,"Create a passkey to sign in to your Papilot from anywhere.":`Crea una passkey per accedere al tuo Papilot da qualsiasi luogo.`,"Create invite link":`Crea link di invito`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`La creazione della passkey è stata annullata. Il link funziona ancora; riprova quando sei pronto.`,"Creating…":`Creazione in corso…`,"Credits available":`Crediti disponibili`,Current:`Attuale`,"Current version":`Versione attuale`,"Cursor SDK credentials were not detected.":`Credenziali di Cursor SDK non rilevate.`,"Customize shortcuts":`Personalizza scorciatoie`,Customized:`Personalizzato`,"Cut length without losing content":`Riduci la lunghezza senza perdere contenuti`,"Daily limit":`Limite giornaliero`,Dark:`Scuro`,Decline:`Rifiuta`,Declined:`Rifiutato`,Default:`Predefinito`,"Default model":`Modello predefinito`,"Default reasoning effort":`Impegno di ragionamento predefinito`,"Delete file":`Elimina file`,"Delete note":`Elimina annotazione`,"Delete note {n}":`Elimina annotazione {n}`,"Delete review note {n}":`Elimina annotazione di revisione {n}`,"Delete skill":`Elimina abilità`,"Delete task":`Elimina attività`,"Delete task?":`Eliminare l'attività?`,"Delete task…":`Elimina attività…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`Eliminare questa abilità? Verrà rimosso solo il file Markdown; i file di supporto rimarranno al loro posto.`,"Delete {name}?":`Eliminare {name}?`,Deleted:`Eliminato`,"Deleting task":`Eliminazione dell'attività`,"Deleting…":`Eliminazione in corso…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`L'eliminazione è già iniziata. Riprova per confermare la pulizia e rimuovere l'attività.`,"Deletion is in progress":`Eliminazione in corso`,"Describe the revision":`Descrivi la revisione`,"Describe what the agent should do, what to preserve, and how to present the result.":`Descrivi cosa deve fare l'agente, cosa preservare e come presentare il risultato.`,Description:`Descrizione`,"Details (optional)":`Dettagli (facoltativo)`,"Detect again":`Rileva di nuovo`,"Detecting LaTeX installation…":`Rilevamento dell'installazione LaTeX in corso…`,"Dev (GitHub main)":`Sviluppo (GitHub main)`,Differs:`Differisce`,"Discard all changes":`Scarta tutte le modifiche`,"Discard changes":`Scarta modifiche`,"Discard changes in {name}?":`Scartare le modifiche in {name}?`,"Discard changes in {n} file?":`Scartare le modifiche in {n} file?`,"Discard changes in {n} files?":`Scartare le modifiche in {n} file?`,"Discard changes in {path}":`Scarta modifiche in {path}`,"Discard unsaved skill changes?":`Scartare le modifiche non salvate all'abilità?`,"Discarded changes in {n} file.":`Modifiche scartate in {n} file.`,"Discarded changes in {n} files.":`Modifiche scartate in {n} file.`,"Dismiss error":`Ignora errore`,Distribution:`Distribuzione`,"Download desktop updates":`Scarica gli aggiornamenti desktop`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`Scarica l'app desktop più recente per il tuo sistema da GitHub Releases. I tuoi articoli e le tue impostazioni resteranno al loro posto.`,"Downloading and building the selected GitHub commit…":`Scaricamento e compilazione del commit GitHub selezionato in corso…`,"Downloading and checking the new version…":`Scaricamento e verifica della nuova versione in corso…`,"Drag to resize · Double-click to reset":`Trascina per ridimensionare · Fai doppio clic per ripristinare`,"Drop files to attach":`Trascina i file per allegarli`,"Drop one folder or LaTeX ZIP file.":`Trascina una cartella o un file ZIP LaTeX.`,"Early updates from GitHub main. May be less stable.":`Aggiornamenti anticipati da GitHub main. Potrebbero essere meno stabili.`,Edit:`Modifica`,"Edit note":`Modifica annotazione`,"Edit note {n}":`Modifica annotazione {n}`,"Edit note {n}: {comment}":`Modifica annotazione {n}: {comment}`,"Edit paper":`Modifica articolo`,"Edit {name}":`Modifica {name}`,"Edited {file}":`Modificato {file}`,"Edited {n} files":`File modificati: {n}`,"Editing dark mode colors. Changes are saved automatically.":`Modifica dei colori della modalità scura. Le modifiche vengono salvate automaticamente.`,"Editing light mode colors. Changes are saved automatically.":`Modifica dei colori della modalità chiara. Le modifiche vengono salvate automaticamente.`,"Enable shortcut: {action}":`Abilita scorciatoia: {action}`,"Enter a folder path":`Inserisci il percorso di una cartella`,"Environment variable":`Variabile d'ambiente`,Errors:`Errori`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`Espandi le modifiche in altri punti, come l'indice e la numerazione dei riferimenti. Disattivato per impostazione predefinita; le modifiche senza variazioni visibili all'origine, come le definizioni di macro, mostrano comunque i loro effetti.`,"Expand indirect changes":`Espandi modifiche indirette`,"Expand manuscript panel":`Espandi pannello del manoscritto`,"Expand {group} notes":`Espandi annotazioni {group}`,Failed:`Non riuscito`,Fast:`Veloce`,"Fast mode":`Modalità veloce`,"Faster responses; may use more of your limit.":`Risposte più rapide; potrebbe consumare una quota maggiore del limite.`,"Feedback & issues":`Feedback e segnalazioni`,"Fetch from the remote":`Recupera dal repository remoto`,"Files must be 25 MB or smaller.":`I file non devono superare i 25 MB.`,"Files on disk, Git history and task worktrees will stay in place.":`I file su disco, la cronologia Git e gli alberi di lavoro delle attività rimarranno al loro posto.`,"Files received":`File ricevuti`,"Find (⌘F)":`Trova (⌘F)`,"Find errors in notation, equations and proofs":`Trova errori nella notazione, nelle equazioni e nelle dimostrazioni`,"Find in PDF":`Trova nel PDF`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`Scopri cosa è successo con questi problemi nella bibliografia e riferisci i risultati. Non modificare alcun file. Per ciascuno, verifica se l'opera esiste e cosa riporta la versione pubblicata (autori, titolo, anno, sede editoriale, DOI), individua l'origine della voce o della citazione nella cronologia Git dei file .bib e .tex e indica cosa suggeriresti. Specifica quali riscontri sono stati confermati da una fonte e quali sono ipotesi.`,"Fit page":`Adatta alla pagina`,"Fit width":`Adatta alla larghezza`,"Fix LaTeX warnings":`Correggi avvisi LaTeX`,"Fix typos, grammar and punctuation without rewording":`Correggi refusi, grammatica e punteggiatura senza riformulare`,"Fix with an agent…":`Correggi con un agente…`,"Folder path":`Percorso della cartella`,"Follow mode":`Modalità di tracciamento`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`Per l'SDK, invece, avvia Papilot con ANTHROPIC_API_KEY o un provider cloud supportato configurato. Riavvia Papilot dopo aver modificato il suo ambiente.`,Foreground:`Primo piano`,"Full PDF":`PDF completo`,General:`Generale`,"Generate PDF comparison":`Genera confronto PDF`,"Generate commit message":`Genera messaggio di commit`,"Generate task title":`Genera titolo dell'attività`,"Generating task title…":`Generazione del titolo dell'attività…`,"Get started and make Papilot your own.":`Inizia e personalizza Papilot.`,"Git status":`Stato di Git`,"Git status of the manuscript":`Stato di Git del manoscritto`,"Git, {n} changed":`Git, {n} modificati`,"GitHub repository":`Repository GitHub`,"Give your skill a name":`Dai un nome alla tua abilità`,Global:`Globale`,Globe:`Globo`,Graphite:`Grafite`,Green:`Verde`,"Help fix compilation":`Aiuta a risolvere errori di compilazione`,"Help improve Papilot with code, docs, and ideas.":`Aiuta a migliorare Papilot con codice, documentazione e idee.`,"Hide task list":`Nascondi elenco delle attività`,"Highlighted in {group}":`Evidenziato in {group}`,"Hover over a highlighted key to see what it does.":`Passa il cursore su un tasto evidenziato per vedere cosa fa.`,"I checked it myself":`L'ho verificato personalmente`,Idea:`Idea`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`Se è già installato, imposta {variable} sul percorso del suo eseguibile nell'ambiente che avvia Papilot, quindi riavvia Papilot.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`Se lo stato in tempo reale non corrisponde ancora alla verifica, riavvia Papilot con lo stesso utente e nello stesso ambiente in cui hai configurato l'agente.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`Se l'attività modifica il manoscritto, qui apparirà un confronto PDF. Altrimenti, leggi la risposta nella chat.`,Ignore:`Ignora`,"Ignore suggestion {n}":`Ignora suggerimento {n}`,"Images must be 5 MB or smaller.":`Le immagini devono avere dimensioni pari o inferiori a 5 MB.`,"Import a ZIP":`Importa un file ZIP`,"Import a separate copy from Overleaf or a ZIP archive.":`Importa una copia separata da Overleaf o da un archivio ZIP.`,"Import progress":`Avanzamento dell'importazione`,"Improve clarity and flow, keeping the meaning":`Migliora chiarezza e scorrevolezza mantenendo il significato`,"Include note {n} in this task":`Includi l'annotazione {n} in questa attività`,"Include suggestion {n} in this task":`Includi il suggerimento {n} in questa attività`,"Include {key} in the task":`Includi {key} nell'attività`,"Individual notes":`Annotazioni singole`,"Input needed":`Intervento richiesto`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Installa TeX Live o MacTeX con latexmk sul computer su cui è in esecuzione Papilot, quindi riprova.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`Installa la nuova versione e riavvia automaticamente quando le attività sono inattive. I tuoi articoli, le attività e le impostazioni rimarranno invariati.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Installa {command} sull'host su cui è in esecuzione Papilot, quindi completa l'accesso o la configurazione del provider qui sotto.`,"Installation & setup":`Installazione e configurazione`,"Installation check":`Verifica dell'installazione`,"Installation location":`Percorso di installazione`,Instructions:`Istruzioni`,"Instructions for color groups":`Istruzioni per i gruppi di colore`,"Instructions for {agent}":`Istruzioni per {agent}`,"Instructions for {group} notes":`Istruzioni per le annotazioni {group}`,"Invite link for a new device":`Link di invito per un nuovo dispositivo`,"Invite link for {name}":`Link di invito per {name}`,"Invite someone":`Invita qualcuno`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`Le persone invitate possono accedere a tutti i file leggibili da Papilot, inclusi le credenziali e gli articoli non condivisi.`,"Invited, not joined yet":`Invitato, non ha ancora accettato`,"Join Papilot":`Unisciti a Papilot`,Joined:`Iscritto`,"Jump to the next change that still needs a decision.":`Vai alla modifica successiva che richiede ancora una decisione.`,"Keep editing":`Continua a modificare`,"Keep latest wording and apply":`Mantieni la formulazione più recente e applica`,"Keep latest wording and commit":`Mantieni la formulazione più recente ed esegui commit`,"Keep on manuscript":`Mantieni nel manoscritto`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`Mantieni la formulazione più recente nei passaggi sovrapposti e salva le altre modifiche accettate.`,"Kept on manuscript":`Mantenuto nel manoscritto`,"Keyboard key {key}: {actions}":`Tasto {key}: {actions}`,"Keyboard shortcuts":`Scorciatoie da tastiera`,"LaTeX Git repository · Requires a commit and latexmk":`Repository Git LaTeX · Richiede un commit e latexmk`,"LaTeX engine":`Motore LaTeX`,"LaTeX installation":`Installazione LaTeX`,"Label defined more than once":`Etichetta definita più di una volta`,Language:`Lingua`,"Language for the Papilot interface.":`Lingua dell'interfaccia di Papilot.`,"Last active {time}":`Ultima attività {time}`,Later:`Più tardi`,"Latest messages":`Ultimi messaggi`,"Latest version":`Ultima versione`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Librerie e font utilizzati da Papilot e dal suo motore di revisione. Ogni componente è coperto dalla propria licenza.`,"Libraries, fonts, and the people behind them.":`Librerie, font e le persone che li hanno creati.`,"License text is not included in this package. See the component source for its terms.":`Il testo della licenza non è incluso in questo pacchetto. Consulta il codice sorgente del componente per i relativi termini.`,"Licenses & acknowledgments":`Licenze e riconoscimenti`,Light:`Chiaro`,"Limit reached":`Limite raggiunto`,"Line too wide by {amount}pt":`Riga troppo larga di {amount}pt`,Link:`Collegamento`,"Loading PDF review…":`Caricamento della revisione PDF…`,"Loading conversation…":`Caricamento della conversazione…`,"Loading license notices…":`Caricamento degli avvisi di licenza…`,"Loading people…":`Caricamento delle persone…`,"Loading skills…":`Caricamento delle abilità…`,"Loading the diff…":`Caricamento del diff…`,"Loading…":`Caricamento…`,Location:`Posizione`,Locked:`Bloccato`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Cerca le voci su Crossref, DBLP e arXiv. Vengono inviati solo titoli, autori, anni e identificatori.`,"Made by Cui Chen and the Papilot contributors.":`Realizzato da Cui Chen e dai collaboratori di Papilot.`,"Main TeX file":`File TeX principale`,Manuscript:`Manoscritto`,"Manuscript panels":`Pannelli del manoscritto`,"Manuscript view":`Vista manoscritto`,"Mark a figure or region":`Contrassegna una figura o una regione`,"Mark region":`Contrassegna regione`,"Marked on earlier changes.":`Contrassegnato su modifiche precedenti.`,"Marked region":`Regione contrassegnata`,Math:`Matematica`,"Maximize or restore window":`Ingrandisci o ripristina finestra`,Members:`Membri`,Merge:`Unisci`,"Merge in progress":`Unione in corso`,"Merged {upstream}.":`Unito {upstream}.`,"Merging: no conflicts left":`Unione: nessun conflitto rimanente`,"Merging: {n} file has conflicts":`Unione: {n} file presenta conflitti`,"Merging: {n} files have conflicts":`Unione: {n} file presentano conflitti`,"Message ({key} to commit on “{branch}”)":`Messaggio ({key} per eseguire il commit su “{branch}”)`,"Minimize window":`Minimizza finestra`,"Missing character":`Carattere mancante`,"Missing file":`File mancante`,"Missing worktree":`Albero di lavoro mancante`,"Missing: {files}":`Mancanti: {files}`,Mode:`Modalità`,"Model default":`Predefinito del modello`,Models:`Modelli`,Modified:`Modificato`,"More Git actions":`Altre azioni Git`,"More commit actions":`Altre azioni di commit`,"Move to the next visible change.":`Passa alla modifica visibile successiva.`,"Move to the previous visible change.":`Passa alla modifica visibile precedente.`,"My notes":`Le mie annotazioni`,Name:`Nome`,"Needs attention":`Richiede attenzione`,"Needs your reply":`Richiede una tua risposta`,"New invite link":`Nuovo link di invito`,"New skill":`Nuova abilità`,"New task":`Nuova attività`,"New version":`Nuova versione`,"Next change":`Modifica successiva`,"Next match":`Corrispondenza successiva`,"Next page":`Pagina successiva`,"Next suggestion":`Suggerimento successivo`,"Next suggestion (→)":`Suggerimento successivo (→)`,"Next undecided change":`Modifica in sospeso successiva`,"No GLM API key was found.":`Nessuna chiave API GLM trovata.`,"No LaTeX installation was detected on this host.":`Nessuna installazione LaTeX rilevata su questo host.`,"No archived tasks":`Nessuna attività archiviata`,"No commits yet":`Ancora nessun commit`,"No components match your search.":`Nessun componente corrisponde alla ricerca.`,"No entry has this key.":`Nessuna voce ha questa chiave.`,"No files found in this folder.":`Nessun file trovato in questa cartella.`,"No installation details were returned. Run the checks again to refresh.":`Non sono stati restituiti dettagli sull'installazione. Esegui nuovamente i controlli per aggiornare.`,"No linked change":`Nessuna modifica collegata`,"No linked task":`Nessuna attività collegata`,"No manuscript changes":`Nessuna modifica al manoscritto`,"No matches":`Nessuna corrispondenza`,"No matching settings":`Nessuna impostazione corrispondente`,"No matching skills":`Nessuna abilità corrispondente`,"No matching tasks":`Nessuna attività corrispondente`,"No models match “{query}”":`Nessun modello corrisponde a “{query}”`,"No notes yet":`Ancora nessuna annotazione`,"No other worktrees in this repository.":`Nessun altro albero di lavoro in questo repository.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`Nessun articolo è stato ancora condiviso con te. Gli articoli appariranno qui non appena {name} li condividerà.`,"No papers yet":`Ancora nessun articolo`,"No passkey on this device? Ask the person who invited you for a new invite link.":`Nessuna passkey su questo dispositivo? Chiedi un nuovo link di invito alla persona che ti ha invitato.`,"No problems found.":`Nessun problema rilevato.`,"No problems in the files. Check online to compare the entries with their records.":`Nessun problema nei file. Controlla online per confrontare le voci con i relativi record.`,"No problems in the last build.":`Nessun problema nell'ultima compilazione.`,"No record in Crossref, DBLP or arXiv matches it.":`Nessun record in Crossref, DBLP o arXiv corrisponde.`,"No tasks yet":`Ancora nessuna attività`,"No textual changes.":`Nessuna modifica testuale.`,"No uncommitted changes":`Nessuna modifica non confermata`,"No upstream branch":`Nessun ramo upstream`,"Not assigned":`Non assegnata`,"Not checked":`Non verificato`,"Not cited in the paper.":`Non citato nell'articolo.`,"Not detected":`Non rilevato`,"Not found":`Non trovato`,"Note deleted.":`Annotazione eliminata.`,"Note for the agent":`Annotazione per l'agente`,"Note on the PDF":`Annotazione sul PDF`,"Note {n}":`Annotazione {n}`,"Note {n}: {comment}":`Annotazione {n}: {comment}`,"Notes in this task":`Annotazioni in questa attività`,"Notes stay here unless you add them to a task.":`Le annotazioni restano qui a meno che non vengano aggiunte a un'attività.`,"Nothing to check":`Nulla da verificare`,Notifications:`Notifiche`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`Le notifiche sono bloccate per questo sito. Consentile nelle impostazioni del sito del browser, quindi attivale qui.`,"Notifications are on":`Le notifiche sono attive`,"Notify me about":`Invia notifiche per`,"Notify me when a task fails or stops unexpectedly.":`Avvisami quando un'attività non riesce o si interrompe in modo imprevisto.`,"Notify me when an agent asks me a question.":`Avvisami quando un agente mi fa una domanda.`,"Notify me when an agent finishes without changes to review.":`Avvisami quando un agente termina senza modifiche da sottoporre a revisione.`,"Notify me when an agent needs my approval to continue.":`Avvisami quando un agente richiede la mia approvazione per continuare.`,"Notify me when changes are ready for review.":`Avvisami quando le modifiche sono pronte per la revisione.`,Off:`Disattivate`,"Online checks are off in Settings, so only problems found in the files are shown.":`I controlli online sono disattivati nelle Impostazioni, quindi vengono mostrati solo i problemi rilevati nei file.`,"Online checks are off in Settings.":`I controlli online sono disattivati nelle Impostazioni.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`Solo le modifiche al manoscritto richiedono un confronto PDF. Le risposte alle domande si trovano nella chat.`,"Open PDF":`Apri PDF`,"Open a branch to commit":`Apri un branch per eseguire il commit`,"Open a folder":`Apri una cartella`,"Open attachment {name}":`Apri allegato {name}`,"Open chat":`Apri chat`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`Aprilo sul dispositivo da cui vuoi accedere. Funziona una sola volta, entro 15 minuti.`,"Open paper":`Apri articolo`,"Open review":`Apri revisione`,"Open review in new tab":`Apri revisione in una nuova scheda`,"Open reviews on":`Apri revisioni su`,"Open task: {title}":`Apri attività: {title}`,"Open the full PDF":`Apri il PDF completo`,"Open these shortcut settings.":`Apri queste impostazioni delle scorciatoie.`,"Opening the PDF…":`Apertura del PDF…`,"Opening your workspace":`Apertura dell'area di lavoro`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`Apre una nuova attività modificabile prima dell'invio. L'agente segnala ciò che rileva senza apportare modifiche.`,"Opens in a new tab":`Si apre in una nuova scheda`,"Or drop a folder or ZIP here":`Oppure trascina qui una cartella o un file ZIP`,"Or type your own answer":`Oppure scrivi la tua risposta`,Orange:`Arancione`,Overridden:`Sovrascritto`,Owner:`Proprietario`,"PDF annotations":`Annotazioni PDF`,"PDF appearance":`Aspetto del PDF`,"PDF comparison":`Confronto PDF`,"PDF compilation":`Compilazione PDF`,"PDF compiled successfully.":`PDF compilato correttamente.`,"PDF contents":`Indice del PDF`,"PDF controls":`Controlli PDF`,"PDF note library":`Libreria di annotazioni PDF`,"PDF note {n}":`Annotazione PDF {n}`,"PDF notes":`Annotazioni PDF`,"PDF pages":`Pagine del PDF`,"PDF preview":`Anteprima PDF`,"PDF review":`Revisione PDF`,"PDF review only":`Solo revisione PDF`,"Page number":`Numero di pagina`,"Page {n}":`Pagina {n}`,"Page {pages}":`Pagina {pages}`,"Page {pages} of {total}":`Pagina {pages} di {total}`,"Pages typeset":`Pagine composte`,Paper:`Articolo`,"Paper name":`Nome dell'articolo`,"Paper tools":`Strumenti dell'articolo`,"Paper: {name}":`Articolo: {name}`,"Papers and tasks":`Articoli e attività`,"Papers they can open":`Articoli che possono aprire`,"Papers {name} can open":`Articoli che {name} può aprire`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot non riesce a trovare npm su questo computer. Gli aggiornamenti non sono disponibili finché npm non viene installato.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot non è riuscito a stabilire una connessione funzionante con questo agente. L'ultimo errore di connessione è mostrato di seguito.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot non è riuscito a preparare i file per la compilazione. Si tratta di un errore dell'applicazione, non di un errore LaTeX.`,"Papilot license":`Licenza di Papilot`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot ha raggiunto questo agente, ma non ha potuto confermare un account con accesso effettuato su questo host.`,"Papilot sent the build error to {agent}, {time}":`Papilot ha inviato l'errore di compilazione a {agent}, {time}`,"Papilot will tell you here when a task needs you.":`Papilot ti avviserà qui quando un'attività richiede il tuo intervento.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`Parzialmente revisionato`,Passed:`Superato`,"Passkey · {label}":`Passkey · {label}`,Pause:`Sospendi`,"Pause task":`Sospendi attività`,"Pause this task before deleting it.":`Sospendi questa attività prima di eliminarla.`,"Pause {agent}":`Sospendi {agent}`,Paused:`In pausa`,Pen:`Penna`,"Pending review":`In attesa di revisione`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`Le persone che inviti accedono con una passkey all'indirizzo pubblico e possono fare tutto ciò che fai tu negli articoli che condividi con loro, inclusa l'approvazione dei comandi eseguiti dagli agenti su questo host e il push con le relative credenziali Git.`,Personal:`Personale`,Polish:`Rifinisci`,"Position needs confirmation":`La posizione richiede conferma`,"Prepare and compile":`Prepara e compila`,"Preparing task results":`Preparazione dei risultati dell'attività`,"Preparing task results…":`Preparazione dei risultati dell'attività…`,"Preparing version history and compiling the PDF…":`Preparazione della cronologia delle versioni e compilazione del PDF…`,"Press a key…":`Premi un tasto…`,Preview:`Anteprima`,"Previous change":`Modifica precedente`,"Previous match":`Corrispondenza precedente`,"Previous page":`Pagina precedente`,"Previous suggestion":`Suggerimento precedente`,"Previous suggestion (←)":`Suggerimento precedente (←)`,Problems:`Problemi`,"Processing the bibliography…":`Elaborazione della bibliografia…`,Proofread:`Correggi bozze`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Fornisci CURSOR_API_KEY al processo o al servizio che avvia Papilot, quindi riavvia Papilot. L'SDK viene installato automaticamente al momento dell'uso.`,"Publish branch":`Pubblica ramo`,"Published releases, recommended for everyday use.":`Versioni pubblicate, consigliate per l'uso quotidiano.`,Pull:`Pull`,"Pulled the latest commits.":`Eseguito il pull degli ultimi commit.`,Purple:`Viola`,Push:`Push`,"Pushed to the remote.":`Eseguito il push sul repository remoto.`,"Pushed to {upstream}.":`Eseguito il push su {upstream}.`,"Queue instructions for the next turn…":`Metti in coda le istruzioni per il turno successivo…`,Queued:`In coda`,"Quote in chat":`Cita nella chat`,"Quoted text":`Testo citato`,"Raw log":`Log grezzo`,"Read folder":`Leggi cartella`,"Read the paper and leave PDF comments without editing the manuscript":`Leggi l'articolo e lascia commenti sul PDF senza modificare il manoscritto`,"Read, annotate, and revise your papers with AI, all in one place.":`Leggi, annota e revisiona i tuoi articoli con l'IA, tutto in un unico posto.`,"Reading Git status…":`Lettura dello stato di Git…`,"Reading paper files…":`Lettura dei file dell'articolo…`,"Reading the bibliography…":`Lettura della bibliografia…`,"Reading update status…":`Lettura dello stato degli aggiornamenti…`,"Reading worktrees and history…":`Lettura degli alberi di lavoro e della cronologia…`,Ready:`Pronto`,"Ready for review":`Pronto per la revisione`,"Ready to check for updates":`Pronto per verificare gli aggiornamenti`,"Reasoning effort":`Impegno di ragionamento`,Recent:`Recenti`,"Recompile PDF":`Ricompila PDF`,"Recompiling; this list will update.":`Ricompilazione in corso; questo elenco si aggiornerà.`,Reconnect:`Riconnetti`,Reconnecting:`Riconnessione in corso`,Record:`Voce bibliografica`,Red:`Rosso`,"Reference check":`Verifica della bibliografia`,"Refresh changes":`Aggiorna modifiche`,"Refresh skills":`Aggiorna abilità`,"Refresh worktrees and history":`Aggiorna alberi di lavoro e cronologia`,"Regenerate PDF comparison":`Rigenera confronto PDF`,"Region note":`Annotazione su area`,"Reject change":`Rifiuta modifica`,"Reject the current proposal. In Changes, revert it.":`Rifiuta la proposta corrente. In Modifiche, annullala.`,Rejected:`Rifiutata`,"Reload review":`Ricarica revisione`,Remove:`Rimuovi`,"Remove attachment {name}":`Rimuovi allegato {name}`,"Remove from Papilot":`Rimuovi da Papilot`,"Remove from draft":`Rimuovi dalla bozza`,"Remove note {n} from task":`Rimuovi l'annotazione {n} dall'attività`,"Remove paper":`Rimuovi articolo`,"Remove paper?":`Rimuovere l'articolo?`,"Remove suggestion {n} from task":`Rimuovi il suggerimento {n} dall'attività`,"Remove the {name} skill":`Rimuovi l'abilità {name}`,"Remove this paper and its tasks, conversations and notes from Papilot?":`Rimuovere questo articolo e le relative attività, conversazioni e annotazioni da Papilot?`,"Remove {device}":`Rimuovi {device}`,"Remove {name}":`Rimuovi {name}`,"Remove…":`Rimuovi…`,"Removing…":`Rimozione in corso…`,"Rename {name}":`Rinomina {name}`,Renamed:`Rinominato`,"Rename…":`Rinomina…`,"Repair summary":`Riepilogo delle riparazioni`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`Le riparazioni sono salvate come modifiche non sottoposte a commit. Esaminale nelle modifiche ai file dell’articolo.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`Rispondi nella chat per continuare. Un confronto dei PDF è necessario solo se il manoscritto cambia.`,"Reply to {agent}":`Rispondi a {agent}`,"Report a bug or suggest an improvement.":`Segnala un bug o suggerisci un miglioramento.`,"Reported {n} times":`Segnalato {n} volte`,"Repository path":`Percorso del repository`,"Request a revision":`Richiedi una modifica`,"Request failed. Please try again.":`Richiesta non riuscita. Riprova.`,"Reset appearance":`Ripristina aspetto`,"Resize chat panel":`Ridimensiona pannello della chat`,"Resize manuscript panel":`Ridimensiona pannello del manoscritto`,"Resolve undefined references, overfull boxes and other build warnings":`Risolvi riferimenti non definiti, box fuori margine e altri avvisi di compilazione`,"Resolve with {agent}":`Risolvi con {agent}`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Riavvio di Papilot in corso. Questa pagina si riconnetterà automaticamente; le bozze vengono conservate.`,"Restarting…":`Riavvio in corso…`,"Restore default shortcuts":`Ripristina scorciatoie predefinite`,"Restore task":`Ripristina attività`,Retry:`Riprova`,"Retry build":`Riprova compilazione`,"Retry compilation":`Riprova compilazione`,"Retry connection":`Riprova connessione`,"Retry conversation":`Riprova conversazione`,"Retry deletion":`Riprova eliminazione`,"Retry deletion…":`Riprova eliminazione…`,"Retry linking changes":`Riprova collegamento delle modifiche`,"Retry title generation":`Riprova generazione del titolo`,"Retry update":`Riprova aggiornamento`,"Retry uploading {name}":`Riprova caricamento di {name}`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`Istruzioni riutilizzabili per le tue modifiche. Scegli un’abilità dal menu / quando avvii un’attività.`,Review:`Revisione`,"Review PDF notes":`Esamina annotazioni PDF`,"Review and chat side by side":`Revisione e chat affiancate`,"Review complete":`Revisione completata`,"Review copy":`Esamina testo`,"Review decisions":`Decisioni di revisione`,"Review feedback":`Feedback della revisione`,"Review navigation":`Navigazione della revisione`,"Review note: {comment}":`Annotazione di revisione: {comment}`,"Review notes":`Annotazioni di revisione`,"Review notes ({n})":`Annotazioni di revisione ({n})`,"Review preferences":`Preferenze di revisione`,"Review ready":`Revisione pronta`,"Review ready · {n} change to decide":`Revisione pronta · {n} modifica da valutare`,"Review ready · {n} changes to decide":`Revisione pronta · {n} modifiche da valutare`,"Review shortcut keyboard":`Tastiera delle scorciatoie di revisione`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`Le scorciatoie di revisione funzionano mentre la revisione PDF è attiva. Si mettono in pausa mentre digiti o selezioni del testo. Le modifiche vengono salvate in questo browser.`,"Review the merged result":`Revisiona il risultato unito`,"Review, {n} to decide":`Revisione, {n} da valutare`,"Revise for reviewer comments and draft a point-by-point reply":`Rivedi il testo in base ai commenti dei revisori e prepara una risposta punto per punto`,"Revision requested":`Modifica richiesta`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`Esegui Papilot e i suoi agenti in un container isolato come Docker per limitare l’accesso; i file montati rimangono accessibili.`,"Run command":`Esegui comando`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`Esegui papilot codex login sull’host. Se necessario, installa una Codex CLI supportata.`,"Run tool":`Esegui strumento`,Running:`In esecuzione`,Runtime:`Ambiente di esecuzione`,"Same DOI as {keys}.":`Stesso DOI di {keys}.`,"Same title as {keys}.":`Stesso titolo di {keys}.`,Save:`Salva`,"Save accepted changes":`Salva le modifiche accettate`,"Save to":`Salva in`,Saved:`Salvato`,"Saved folder":`Cartella salvata`,"Saving…":`Salvataggio in corso…`,Search:`Cerca`,"Search archived tasks…":`Cerca nelle attività archiviate…`,"Search components or licenses":`Cerca componenti o licenze`,"Search components or licenses…":`Cerca componenti o licenze…`,"Search models":`Cerca modelli`,"Search settings":`Cerca nelle impostazioni`,"Search skills":`Cerca abilità`,"Search task titles and instructions":`Cerca titoli e istruzioni delle attività`,"Search tasks":`Cerca attività`,"Search tasks…":`Cerca attività…`,"Search the PDF":`Cerca nel PDF`,"See license notice":`Vedi avviso di licenza`,"See what changed in each release.":`Vedi cosa è cambiato in ogni versione.`,"Select a skill or create your own.":`Seleziona un'abilità o creane una.`,"Select all notes for this task":`Seleziona tutte le annotazioni per questa attività`,"Select all {group} notes for this task":`Seleziona tutte le annotazioni {group} per questa attività`,"Send (Enter) · New line (Shift+Enter)":`Invia (Enter) · Nuova riga (Shift+Enter)`,"Send a test notification":`Invia una notifica di prova`,"Send annotations":`Invia annotazioni`,"Send annotations to the agent":`Invia annotazioni all'agente`,"Send feedback":`Invia feedback`,"Send instructions":`Invia istruzioni`,"Send it to {name} yourself. It works once, within 7 days.":`Invialo personalmente a {name}. Funziona una sola volta, entro 7 giorni.`,"Send the review comment being written.":`Invia il commento di revisione in corso di scrittura.`,"Send your review decisions and comments to the agent":`Invia le tue decisioni e i commenti di revisione all'agente`,"Send {n} note":`Invia {n} annotazione`,"Send {n} note to the agent":`Invia {n} annotazione all'agente`,"Send {n} notes":`Invia {n} annotazioni`,"Send {n} notes to the agent":`Invia {n} annotazioni all'agente`,"Sending feedback…":`Invio del feedback…`,"Sending…":`Invio in corso…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`Inviata. Se non è apparso nulla, consenti le notifiche per questo browser nelle impostazioni di sistema.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Imposta ZHIPU_API_KEY per open.bigmodel.cn, o ZAI_API_KEY per api.z.ai, nell'ambiente che avvia Papilot. Quindi riavvia Papilot.`,"Set up on the host":`Configura sull'host`,"Set up sharing":`Configura la condivisione`,"Set up this agent":`Configura questo agente`,Settings:`Impostazioni`,"Settings categories":`Categorie delle impostazioni`,"Setup guide":`Guida alla configurazione`,"Setup required":`Configurazione richiesta`,"Several TeX files were found. Check the selected main document before continuing.":`Sono stati trovati diversi file TeX. Controlla il documento principale selezionato prima di continuare.`,"Share your papers and manage the people you work with.":`Condividi i tuoi articoli e gestisci le persone con cui collabori.`,Sharing:`Condivisione`,"Sharing is not sandboxed":`La condivisione non è isolata in sandbox`,Shorten:`Abbrevia`,Show:`Mostra`,"Show LaTeX source":`Mostra sorgente LaTeX`,"Show archived tasks":`Mostra attività archiviate`,"Show current tasks":`Mostra attività attuali`,"Show desktop notifications while Papilot is in the background.":`Mostra le notifiche desktop mentre Papilot è in background.`,"Show fewer models":`Mostra meno modelli`,"Show note {n} on the page":`Mostra l'annotazione {n} sulla pagina`,"Show note {n}: {comment}":`Mostra l'annotazione {n}: {comment}`,"Show or hide the source for the current change.":`Mostra o nascondi il sorgente per la modifica attuale.`,"Show problems":`Mostra problemi`,"Show suggestion {n} on the page":`Mostra il suggerimento {n} sulla pagina`,"Show task list":`Mostra elenco attività`,"Show {n} more models":`Mostra altri {n} modelli`,"Showing the last update.":`Visualizzazione dell'ultimo aggiornamento.`,"Showing the latest {n} commits. Older history is not shown.":`Visualizzazione degli ultimi {n} commit. La cronologia precedente non è mostrata.`,"Sign in as the user running Papilot, then restart Papilot.":`Accedi come l'utente che esegue Papilot, quindi riavvia Papilot.`,"Sign in from anywhere":`Accedi da ovunque`,"Sign in on the Papilot host to continue.":`Accedi sull'host di Papilot per continuare.`,"Sign in to Papilot":`Accedi a Papilot`,"Sign in to continue.":`Accedi per continuare.`,"Sign in with a passkey":`Accedi con una passkey`,"Sign out":`Esci`,"Sign out everywhere":`Esci ovunque`,"Sign-in required":`Accesso richiesto`,"Signed in":`Accesso effettuato`,"Signed in · {label}":`Accesso effettuato · {label}`,"Signing in was cancelled. Try again when you are ready.":`L'accesso è stato annullato. Riprova quando sei pronto.`,"Skill ID":`ID abilità`,"Skill content (Markdown)":`Contenuto dell'abilità (Markdown)`,"Skill content must contain 1–20,000 characters.":`Il contenuto dell'abilità deve contenere da 1 a 20.000 caratteri.`,"Skill content view":`Vista del contenuto dell'abilità`,"Skill icon":`Icona dell'abilità`,"Skill name":`Nome dell'abilità`,"Skill scope":`Ambito dell'abilità`,"Skill: {name}":`Abilità: {name}`,Skills:`Abilità`,Slate:`Ardesia`,"Slate blue":`Blu ardesia`,"Some note positions need confirmation. Their original text and comments are kept.":`Alcune posizioni delle annotazioni richiedono conferma. Il testo e i commenti originali vengono mantenuti.`,Source:`Sorgente`,Sparkles:`Scintille`,Spelling:`Ortografia`,Split:`Dividi`,Stable:`Stabile`,"Stage all changes":`Prepara tutte le modifiche`,"Stage changes":`Prepara modifiche`,"Stage {path}":`Prepara {path}`,Staged:`Preparate`,"Staged changes":`Modifiche preparate`,"Standard shortcuts":`Scorciatoie standard`,"Start task":`Avvia attività`,"Start task (Enter)":`Avvia attività (Enter)`,"Status unavailable":`Stato non disponibile`,Stone:`Pietra`,"Submitting…":`Invio in corso…`,"Suggest an agent":`Suggerisci un agente`,"Suggested fix":`Correzione suggerita`,"Suggestion ignored.":`Suggerimento ignorato.`,"Suggestion {n}: {comment}":`Suggerimento {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`I suggerimenti restano in questa attività finché non li copi nel manoscritto`,"Support more":`Supportane altri`,System:`Sistema`,"Task actions for {title}":`Azioni dell'attività per {title}`,"Task added: {title}":`Attività aggiunta: {title}`,"Task errors":`Errori delle attività`,"Task finished":`Attività completata`,"Task list":`Elenco delle attività`,"Task saved. Waiting for an available {agent} session.":`Attività salvata. In attesa di una sessione {agent} disponibile.`,Tasks:`Attività`,"The PDF could not be opened: {error}":`Impossibile aprire il PDF: {error}`,"The PDF review could not be loaded.":`Impossibile caricare la revisione del PDF.`,"The PDF review is taking longer than expected.":`La revisione del PDF sta impiegando più tempo del previsto.`,"The agent could not connect. Check its setup and try again.":`Impossibile connettere l'agente. Controlla la configurazione e riprova.`,"The assistant is fixing compilation…":`L'assistente sta correggendo la compilazione…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`Il browser e il server Papilot potrebbero essere in esecuzione su computer diversi. Anche i servizi in background possono utilizzare un PATH o un account utente diverso rispetto al terminale.`,"The connection is taking too long. Check your network and try again.":`La connessione sta impiegando troppo tempo. Controlla la rete e riprova.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`La build di sviluppo richiede almeno 2 GB di spazio libero su disco. Libera spazio e riprova.`,"The diff is too long to show in full.":`Il diff è troppo lungo per essere mostrato per intero.`,"The file “{name}” is empty.":`Il file “{name}” è vuoto.`,"The first build is still running.":`La prima compilazione è ancora in corso.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`L'ultimo tentativo di connessione non ha trovato una CLI {command} eseguibile nell'ambiente del server Papilot. Potrebbe comunque essere installata in un'altra posizione o per un altro utente.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`L'ultimo tentativo di connessione non ha trovato né CURSOR_API_KEY né un accesso a Cursor SDK salvato per l'utente che esegue Papilot. L'accesso all'app desktop o alla CLI di Cursor non configura questo SDK.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`L'ultimo tentativo di connessione non ha trovato né Claude Code né credenziali API supportate nell'ambiente del server Papilot.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`L'ultimo tentativo di connessione non ha trovato né ZHIPU_API_KEY né ZAI_API_KEY nell'ambiente del server Papilot. Un accesso a Claude o al sito web di GLM non fornisce queste chiavi.`,"The latest changes did not compile. This is the last PDF that did.":`Le ultime modifiche non sono state compilate. Questo è l'ultimo PDF compilato correttamente.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`L'ultimo controllo della configurazione ha rilevato questo agente. Riconnettiti per aggiornarne lo stato in tempo reale.`,"The manuscript did not compile.":`Il manoscritto non è stato compilato.`,"The merge stopped at conflicts.":`L'unione si è interrotta a causa di conflitti.`,"The merge was abandoned.":`L'unione è stata annullata.`,"The paper needs a little help":`L'articolo ha bisogno di un piccolo aiuto`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`Impossibile confermare la posizione nel nuovo PDF. Il testo e l'annotazione originali sono stati mantenuti.`,"The request timed out and may still be processing. Check the task status before retrying.":`La richiesta è scaduta ma potrebbe essere ancora in elaborazione. Controlla lo stato dell'attività prima di riprovare.`,"The skill must contain instructions.":`L'abilità deve contenere delle istruzioni.`,"The update did not finish. Your current version is still available. You can retry here.":`L'aggiornamento non è stato completato. La versione attuale è ancora disponibile. Puoi riprovare qui.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`L'aggiornamento è pronto. In attesa del completamento delle attività e delle compilazioni dei PDF prima del riavvio.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`La versione aggiornata non si è avviata, quindi Papilot sta usando la versione inclusa nell'app. Riprova l'aggiornamento o scarica l'app desktop più recente.`,"Their name, as others will see it":`Il nome come verrà visualizzato dagli altri`,Theme:`Tema`,"These keep the usual browser and text-editing behavior.":`Mantengono il consueto comportamento del browser e di modifica del testo.`,"Third-party licenses":`Licenze di terze parti`,"This PDF has no bookmarks.":`Questo PDF non contiene segnalibri.`,"This agent has not reported a model list. Its configured default can still be used.":`Questo agente non ha fornito un elenco di modelli. È comunque possibile utilizzare il modello predefinito configurato.`,"This browser cannot show notifications.":`Questo browser non può mostrare le notifiche.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`Questo browser non supporta le passkey. Apri questa pagina in una versione aggiornata di Safari, Chrome, Edge o Firefox.`,"This browser could not enable notifications.":`Questo browser non è riuscito ad attivare le notifiche.`,"This browser could not show the notification.":`Questo browser non è riuscito a mostrare la notifica.`,"This conversation has no manuscript changes.":`Questa conversazione non contiene modifiche al manoscritto.`,"This file is not tracked by Git, so it cannot be recovered.":`Questo file non è tracciato da Git, quindi non può essere recuperato.`,"This invite link is incomplete. Copy the whole link and open it again.":`Questo link di invito è incompleto. Copia l'intero link e aprilo di nuovo.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`Questo tasto è riservato al browser o alla modifica del testo. Scegli un'altra scorciatoia.`,"This model uses its own reasoning settings.":`Questo modello utilizza le proprie impostazioni di ragionamento.`,"This paper":`Questo articolo`,"This paper may need XeLaTeX. Change the engine below and retry.":`Questo articolo potrebbe richiedere XeLaTeX. Cambia il motore qui sotto e riprova.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`Questo articolo non indica alcun file .bib con {bibliography} o {addbibresource}.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`Questo passaggio include modifiche precedenti non sottoposte a commit. Puoi eseguire il commit del risultato revisionato insieme, oppure applicarlo senza eseguire il commit.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`Questa operazione rimuove definitivamente l'attività da Papilot, inclusi la conversazione, l'albero di lavoro e i file di revisione del PDF. Le modifiche non accettate e i commenti salvati andranno persi e le decisioni di revisione non potranno più essere annullate.`,"This skill changed on disk. Reload it before deleting.":`Questa abilità è stata modificata su disco. Ricaricala prima di eliminarla.`,"This skill changed on disk. Reload it before saving.":`Questa abilità è stata modificata su disco. Ricaricala prima di salvarla.`,"This skill no longer exists. Refresh the list.":`Questa abilità non esiste più. Aggiorna l'elenco.`,"This skill was removed on disk. Reload the list before saving.":`Questa abilità è stata rimossa dal disco. Ricarica l'elenco prima di salvare.`,"This step needs attention":`Questo passaggio richiede attenzione`,"This task did not change the manuscript. Read the answer in the chat.":`Questa attività non ha modificato il manoscritto. Leggi la risposta nella chat.`,"This task is being deleted":`Questa attività è in fase di eliminazione`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`Questa attività resta riservata fino alla conferma della pulizia del suo albero di lavoro. Usa Riprova eliminazione se la connessione si è interrotta.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`Questa versione richiede l'app desktop più recente. Scaricala da GitHub Releases.`,"This worktree’s HEAD is outside the displayed history.":`Il riferimento HEAD di questo albero di lavoro non rientra nella cronologia visualizzata.`,Title:`Titolo`,Tools:`Strumenti`,Tracking:`Tracciamento`,"Type changed":`Tipo modificato`,"Typesetting and other remarks":`Impaginazione e altre osservazioni`,"Typesetting with LaTeX, pass {n}…":`Composizione con LaTeX, passaggio {n}…`,Unavailable:`Non disponibile`,"Uncommitted changes in the PDF":`Modifiche non sottoposte a commit nel PDF`,"Undefined citation":`Citazione non definita`,"Undefined reference":`Riferimento non definito`,Undo:`Annulla`,"Undo review decision":`Annulla decisione di revisione`,"Undo the last review decision or revert.":`Annulla l'ultima decisione di revisione o ripristina.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`Annulla la digitazione, un'annotazione eliminata o l'ultima decisione di revisione, a seconda dell'elemento attivo.`,"Unify terms, notation, spelling and references":`Uniforma termini, notazione, ortografia e riferimenti`,Unknown:`Sconosciuto`,"Unlimited credits":`Crediti illimitati`,"Unplaced suggestions":`Suggerimenti non posizionati`,"Unsaved changes":`Modifiche non salvate`,"Unstage all changes":`Rimuovi tutte le modifiche dalla preparazione`,"Unstage changes":`Rimuovi modifiche dalla preparazione`,"Unstage {path}":`Rimuovi {path} dalla preparazione`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`Le modifiche non preparate andranno perse definitivamente e i file non tracciati verranno eliminati. Le modifiche preparate vengono mantenute.`,"Unstaged changes are lost for good. Staged changes stay.":`Le modifiche non preparate andranno perse definitivamente. Le modifiche preparate vengono mantenute.`,Untracked:`Non tracciato`,"Untracked build output. Add to .gitignore adds:":`Output di compilazione non tracciato. Aggiungi a .gitignore aggiunge:`,"Up to date":`Aggiornato`,"Up to date with the remote.":`Aggiornato rispetto al repository remoto.`,"Update Papilot":`Aggiorna Papilot`,"Update available":`Aggiornamento disponibile`,"Update channel":`Canale di aggiornamento`,"Update failed":`Aggiornamento non riuscito`,"Update now":`Aggiorna ora`,"Update ready":`Aggiornamento pronto`,"Update to {version}":`Aggiorna alla versione {version}`,Updates:`Aggiornamenti`,"Updating…":`Aggiornamento in corso…`,"Upload failed. Please retry.":`Caricamento non riuscito. Riprova.`,"Uploading…":`Caricamento in corso…`,"Usage & limits":`Utilizzo e limiti`,"Usage limit":`Limite di utilizzo`,"Usage not reported":`Utilizzo non segnalato`,"Use a hex color, like #2563EB.":`Usa un colore esadecimale, ad esempio #2563EB.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`Usa lettere minuscole, numeri e trattini. Questo è anche il nome del comando /.`,"Use the passkey you created from your invite link.":`Usa la passkey che hai creato dal tuo link di invito.`,"Used for new tasks. Saved in this browser.":`Usato per le nuove attività. Salvato in questo browser.`,"User guide":`Guida utente`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`Usa Claude Code o Claude Agent SDK con ZHIPU_API_KEY o ZAI_API_KEY.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`Usa Claude Code se installato, oppure Claude Agent SDK con credenziali API.`,"Uses DeepSeek Harness and the providers configured in dsh.":`Usa DeepSeek Harness e i provider configurati in dsh.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`Usa GitHub Copilot CLI e il relativo accesso salvato o il provider configurato tramite ACP.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`Usa Grok Build CLI tramite ACP con il relativo accesso salvato o le credenziali API configurate.`,"Uses Kimi Code CLI and its saved login through ACP.":`Usa Kimi Code CLI e le relative credenziali di accesso salvate tramite ACP.`,"Uses OpenCode with the providers and models you have connected.":`Usa OpenCode con i provider e i modelli che hai collegato.`,"Uses Qwen Code and its saved login through ACP.":`Usa Qwen Code e le relative credenziali di accesso salvate tramite ACP.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`Usa una Codex CLI locale compatibile. Papilot installa una propria copia quando necessario.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`Usa Cursor SDK con CURSOR_API_KEY. Papilot installa l'SDK al primo utilizzo.`,"Uses the local Antigravity CLI and its saved Google login.":`Usa Antigravity CLI locale e l'accesso Google salvato.`,Verified:`Verificato`,Version:`Versione`,"Version history":`Cronologia versioni`,"View & help":`Visualizzazione e guida`,"View changes for this note":`Visualizza le modifiche per questa annotazione`,"View changes included in this commit":`Visualizza le modifiche incluse in questo commit`,"View details":`Visualizza dettagli`,"View installation, account, and usage":`Visualizza installazione, account e utilizzo`,"View {n} review suggestion":`Visualizza {n} suggerimento di revisione`,"View {n} review suggestions":`Visualizza {n} suggerimenti di revisione`,"Viewed the PDF":`Ha visualizzato il PDF`,"Viewed the PDF: {places}":`Ha visualizzato il PDF: {places}`,"Visual style":`Stile visivo`,"Wait for the PDF build to finish before deleting this task.":`Attendi il completamento della compilazione del PDF prima di eliminare questa attività.`,"Wait for the PDF to compile.":`Attendi la compilazione del PDF.`,"Waiting for your passkey…":`In attesa della passkey…`,Warning:`Avviso`,Warnings:`Avvisi`,"Weekly limit":`Limite settimanale`,"What are we revising next?":`Cosa revisioniamo adesso?`,"What can invited people do?":`Cosa possono fare le persone invitate?`,"What changed since the last commit, to stage, revert and commit change by change":`Cosa è cambiato dall'ultimo commit, per preparare, ripristinare ed eseguire il commit modifica per modifica`,"What does this skill help with?":`In cosa aiuta questa abilità?`,"What is staged, in {n} file:":`Modifiche preparate, in {n} file:`,"What is staged, in {n} files:":`Modifiche preparate, in {n} file:`,"What should change here?":`Cosa dovrebbe cambiare qui?`,"What should change in each color group?":`Cosa dovrebbe cambiare in ciascun gruppo di colore?`,"What should change in this group?":`Cosa dovrebbe cambiare in questo gruppo?`,"What this task accepted, in {n} file:":`Modifiche accettate da questa attività, in {n} file:`,"What this task accepted, in {n} files:":`Modifiche accettate da questa attività, in {n} file:`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`Quando una modifica aggiunge o aggiorna una voce bibliografica, cerca titolo, autori, anno e DOI su Crossref, DBLP e arXiv. Non viene inviato nient'altro del tuo articolo.`,"With review feedback":`Con commenti di revisione`,Workspace:`Area di lavoro`,"Workspace view":`Vista area di lavoro`,Worktrees:`Alberi di lavoro`,"Write a commit message for the chosen files with {agent}":`Scrivi un messaggio di commit per i file scelti con {agent}`,"Write a note…":`Scrivi un'annotazione…`,"Write feedback on the current proposed change.":`Scrivi un commento sulla modifica proposta attuale.`,"Writing the PDF…":`Scrittura del PDF…`,Year:`Anno`,Yellow:`Giallo`,"You are offline. Your draft is kept in this browser.":`Sei offline. La bozza è salvata in questo browser.`,"You are using the latest version on this channel.":`Stai usando l'ultima versione su questo canale.`,"You checked this entry yourself.":`Hai verificato personalmente questa voce.`,"You sent review feedback, {time}":`Hai inviato commenti di revisione, {time}`,"You, {time}":`Tu, {time}`,"Your note":`La tua annotazione`,"Your paper compiled successfully. It is ready for editing.":`Il tuo articolo è stato compilato correttamente ed è pronto per la modifica.`,"Your review keyboard":`La tua tastiera di revisione`,Yours:`Le tue`,Zoom:`Zoom`,"Zoom in":`Ingrandisci`,"Zoom in (⌘+)":`Ingrandisci (⌘+)`,"Zoom out":`Riduci`,"Zoom out (⌘−)":`Riduci (⌘−)`,"added {time}":`aggiunto {time}`,"another entry has the same key.":`un'altra voce ha la stessa chiave.`,"build error":`errore di compilazione`,clean:`pulito`,detached:`scollegato`,"detached HEAD":`HEAD scollegato`,"edited {file}":`ha modificato {file}`,"edited {n} files":`ha modificato {n} file`,"from {name}":`da {name}`,"it is not cited.":`non è citata.`,"just now":`proprio ora`,"no record in Crossref, DBLP or arXiv matches it.":`nessun record in Crossref, DBLP o arXiv corrisponde.`,nothing:`nulla`,now:`ora`,"or select text to annotate":`o seleziona del testo da annotare`,"p. {page}":`p. {page}`,"possibly the same work as {keys} (same title).":`forse la stessa opera di {keys} (stesso titolo).`,"ran {n} command":`ha eseguito {n} comando`,"ran {n} commands":`ha eseguito {n} comandi`,"resets in {hours} h {minutes} min":`si azzera tra {hours} h {minutes} min`,"resets in {minutes} min":`si azzera tra {minutes} min`,"resets now":`si azzera ora`,"resets {time}":`si azzera {time}`,small:`minore`,"the same work as {keys} (same DOI).":`la stessa opera di {keys} (stesso DOI).`,"used {n} tool":`ha usato {n} strumento`,"used {n} tools":`ha usato {n} strumenti`,"used {time}":`usato {time}`,"viewed the PDF":`ha visualizzato il PDF`,"{agent} conversation":`Conversazione con {agent}`,"{agent} details":`Dettagli di {agent}`,"{agent} finished":`{agent} ha terminato`,"{agent} is requesting permission for this action.":`{agent} richiede l'autorizzazione per questa azione.`,"{agent} is resolving…":`{agent} sta risolvendo…`,"{agent} is unavailable":`{agent} non è disponibile`,"{agent} is waiting for your approval":`{agent} è in attesa della tua approvazione`,"{agent} is working":`{agent} è al lavoro`,"{agent} is working on this task":`{agent} sta lavorando a questa attività`,"{agent} is working · new instructions run next":`{agent} è al lavoro · le nuove istruzioni verranno eseguite dopo`,"{agent} is writing a commit message…":`{agent} sta scrivendo un messaggio di commit…`,"{agent} needs your input":`{agent} richiede un tuo intervento`,"{agent} on the merge":`{agent} sul merge`,"{agent} usage":`Utilizzo di {agent}`,"{agent} usage details":`Dettagli di utilizzo di {agent}`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`{agent} non è stato trovato su questo computer. Installalo o configuralo, quindi seleziona Riconnetti.`,"{ahead} ahead · {behind} behind":`{ahead} avanti · {behind} indietro`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`{branch} e {upstream} sono entrambi cambiati. Il merge incorpora i commit remoti.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) non ha alcuna voce con questa chiave.`,"{command} was not found by Papilot.":`{command} non è stato trovato da Papilot.`,"{current} of {total}":`{current} di {total}`,"{differences} (record: {url}).":`{differences} (record: {url}).`,"{field} is {bib} but {source} has {record}":`{field} è {bib} ma {source} riporta {record}`,"{field}: {bib} here, {record} in {source}":`{field}: {bib} qui, {record} in {source}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} ti ha invitato su Papilot. Apparirai come {name}.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} ti ha invitato a lavorare su {papers}. Apparirai come {name}.`,"{key} ({place}): {problems}":`{key} ({place}): {problems}`,"{name} (you)":`{name} (tu)`,"{name} sent review feedback, {time}":`{name} ha inviato feedback di revisione, {time}`,"{name} used":`{name} utilizzato`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n} accettate`,"{n} active task":`{n} attività attiva`,"{n} active tasks":`{n} attività attive`,"{n} build file":`{n} file di build`,"{n} build files":`{n} file di build`,"{n} change to decide":`{n} modifica da decidere`,"{n} change to review":`{n} modifica da revisionare`,"{n} changed":`{n} con modifiche`,"{n} changes to decide":`{n} modifiche da decidere`,"{n} changes to review":`{n} modifiche da revisionare`,"{n} checked by you":`{n} controllate da te`,"{n} comment":`{n} commento`,"{n} comments":`{n} commenti`,"{n} compilation error":`{n} errore di compilazione`,"{n} compilation errors":`{n} errori di compilazione`,"{n} compilation warning":`{n} avviso di compilazione`,"{n} compilation warnings":`{n} avvisi di compilazione`,"{n} conflicts":`{n} conflitti`,"{n} could not be checked":`{n} non controllabili`,"{n} credits":`{n} crediti`,"{n} differ":`{n} con differenze`,"{n} entries":`{n} voci`,"{n} entry":`{n} voce`,"{n} failed":`{n} non riuscite`,"{n} file staged":`{n} file in stage`,"{n} file still has conflicts.":`{n} file ha ancora conflitti.`,"{n} files staged":`{n} file in stage`,"{n} files still have conflicts.":`{n} file hanno ancora conflitti.`,"{n} location":`{n} posizione`,"{n} locations":`{n} posizioni`,"{n} new commit on {upstream}.":`{n} nuovo commit su {upstream}.`,"{n} new commits on {upstream}.":`{n} nuovi commit su {upstream}.`,"{n} not found":`{n} non trovate`,"{n} notes on the PDF":`{n} annotazioni sul PDF`,"{n} rejected":`{n} rifiutate`,"{n} review update not sent yet":`{n} aggiornamento di revisione non ancora inviato`,"{n} review update will be sent with this message":`{n} aggiornamento di revisione verrà inviato con questo messaggio`,"{n} review updates not sent yet":`{n} aggiornamenti di revisione non ancora inviati`,"{n} review updates will be sent with this message":`{n} aggiornamenti di revisione verranno inviati con questo messaggio`,"{n} staged":`{n} in stage`,"{n} undone":`{n} annullate`,"{n} unstaged":`{n} non in stage`,"{n} untracked":`{n} non tracciati`,"{n} verified":`{n} verificate`,"{n}-day limit":`Limite di {n} giorni`,"{n}-hour limit":`Limite di {n} ore`,"{n}-minute limit":`Limite di {n} minuti`,"{n}d":`{n}g`,"{n}h":`{n}h`,"{n}m":`{n}m`,"{selected} / {total} locations selected":`{selected} / {total} posizioni selezionate`,"{shown} of {total} components":`{shown} di {total} componenti`,"{sources} could not be reached.":`Impossibile raggiungere {sources}.`,"{time} ago":`{time} fa`,"{title} PDF change review":`Revisione delle modifiche al PDF di {title}`,"{used}% used":`{used}% utilizzato`},le={"A commit is already in progress. Wait for it to finish.":`Un commit è già in corso. Attendi il completamento.`,"A commit is in progress. Try again when it finishes.":`È in corso un commit. Riprova al termine.`,"A review action is already in progress. Wait for it to finish.":`Un'azione di revisione è già in corso. Attendi il completamento.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`Un'annotazione PDF selezionata è già in fase di invio. Attendi il completamento della creazione di tale attività.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`Un'annotazione PDF selezionata non è più disponibile. Aggiorna il manoscritto e riprova.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`La revisione IA accetta solo istruzioni di revisione. Avvia un'attività di modifica per inviare annotazioni, abilità o allegati.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`La revisione IA crea solo annotazioni PDF. Non può pubblicare modifiche al manoscritto.`,"AI review has no manuscript changes to apply.":`La revisione IA non ha modifiche al manoscritto da applicare.`,"AI review has no manuscript changes to deliver.":`La revisione IA non ha modifiche al manoscritto da consegnare.`,"AI review uses manuscript PDF notes, not change decisions.":`La revisione IA utilizza le annotazioni PDF del manoscritto, non le decisioni sulle modifiche.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`La revisione IA utilizza il PDF del manoscritto. Avvia un'attività di modifica separata per inviare annotazioni o allegati.`,"Accepted changes are already in the manuscript.":`Le modifiche accettate sono già presenti nel manoscritto.`,"An AI review comment is invalid. Ask the reviewer to retry.":`Un commento della revisione IA non è valido. Chiedi al revisore di riprovare.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`Un commento della revisione IA elenca le righe del PDF in ordine inverso. Chiedi al revisore di inserire l'inizio prima della fine.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`Un commento della revisione IA fa riferimento a una posizione PDF sconosciuta. Chiedi al revisore di riprovare usando gli ID di riga forniti.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`Un commento della revisione IA si estende su più pagine del PDF. Chiedi al revisore di ancorarlo a una singola pagina.`,"Another Papilot instance is already updating.":`Un'altra istanza di Papilot è già in fase di aggiornamento.`,"Answer every question before submitting.":`Rispondi a tutte le domande prima di inviare.`,"Attachment not found.":`Allegato non trovato.`,"Attachments must total 100 MB or less.":`Il totale degli allegati non deve superare 100 MB.`,"Check for a newer release before updating.":`Verifica la presenza di una versione più recente prima di aggiornare.`,"Check out a branch before pushing.":`Effettua il checkout di un branch prima di eseguire il push.`,"Check the task status before pausing this turn.":`Controlla lo stato dell'attività prima di mettere in pausa questo turno.`,"Check the task status before sending more instructions.":`Controlla lo stato dell'attività prima di inviare altre istruzioni.`,"Choose Codex, Claude or GLM for AI review.":`Scegli Codex, Claude o GLM per la revisione IA.`,"Choose a ZIP smaller than 64 MB.":`Scegli un file ZIP inferiore a 64 MB.`,"Choose a file with a valid name.":`Scegli un file con un nome valido.`,"Choose a folder smaller than 64 MB.":`Scegli una cartella inferiore a 64 MB.`,"Choose a supported LaTeX engine.":`Scegli un motore LaTeX supportato.`,"Choose a valid update channel.":`Scegli un canale di aggiornamento valido.`,"Choose an available model for this agent.":`Scegli un modello disponibile per questo agente.`,"Choose an entry to confirm.":`Scegli una voce da confermare.`,"Choose an existing TeX main file.":`Scegli un file TeX principale esistente.`,"Choose between 1 and 5,000 files.":`Scegli tra 1 e 5.000 file.`,"Choose one folder or ZIP.":`Scegli una cartella o un file ZIP.`,"Choose one of the offered answers.":`Scegli una delle risposte proposte.`,"Choose stage, unstage or revert.":`Scegli tra stage, unstage o revert.`,"Choose whether to archive or restore the task.":`Scegli se archiviare o ripristinare l'attività.`,"Claude Code did not list its models.":`Claude Code non ha elencato i suoi modelli.`,"Claude Code exited before listing its models.":`Claude Code si è chiuso prima di elencare i suoi modelli.`,"Claude has not reported usage yet.":`Claude non ha ancora segnalato l'utilizzo.`,"Codex disconnected. Resume the task before retrying.":`Codex si è disconnesso. Riprendi l'attività prima di riprovare.`,"Codex is not connected.":`Codex non è connesso.`,"Commit the task first, then push from Git.":`Esegui prima il commit dell'attività, poi il push da Git.`,"Confirm permanent task deletion before continuing.":`Conferma l'eliminazione definitiva dell'attività prima di continuare.`,"Could not check for updates.":`Impossibile verificare la disponibilità di aggiornamenti.`,"Could not check for updates. Try again when connected.":`Impossibile verificare la presenza di aggiornamenti. Riprova quando sei connesso.`,"Could not complete the environment checks. Please try again.":`Impossibile completare i controlli dell'ambiente. Riprova.`,"Could not read the LaTeX installation.":`Impossibile leggere l'installazione di LaTeX.`,"Could not restart the background service.":`Impossibile riavviare il servizio in background.`,"Deletion is already in progress. Wait for it to finish.":`L'eliminazione è già in corso. Attendi il completamento.`,"Describe the revision, choose a skill, or add a PDF note.":`Descrivi le modifiche, scegli un'abilità o aggiungi un'annotazione PDF.`,"Describe what to do with each selected color group.":`Descrivi cosa fare con ciascun gruppo di colori selezionato.`,"Download desktop updates from GitHub Releases.":`Scarica gli aggiornamenti desktop da GitHub Releases.`,"Enter a folder path.":`Inserisci il percorso di una cartella.`,"Enter a paper name under 120 characters.":`Inserisci un nome per l'articolo con meno di 120 caratteri.`,"Fast mode is not available for this model.":`La modalità veloce non è disponibile per questo modello.`,"Files must be 25 MB or smaller.":`I file non devono superare 25 MB.`,"Finish or abort the merge before committing other changes.":`Completa o annulla il merge prima di eseguire il commit di altre modifiche.`,"Finish or abort the merge before discarding changes.":`Completa o annulla l'unione prima di scartare le modifiche.`,"Finish or abort the merge before staging other changes.":`Completa o annulla il merge prima di preparare altre modifiche.`,"Finish or abort the merge first.":`Completa o annulla prima il merge.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`Completa o interrompi il merge nel pannello Git prima di accettare, rifiutare o annullare le modifiche.`,"GLM does not report usage to Papilot.":`GLM non segnala l'utilizzo a Papilot.`,"Group instructions must refer to selected PDF notes.":`Le istruzioni di gruppo devono fare riferimento alle annotazioni PDF selezionate.`,"Images must be 5 MB or smaller.":`Le immagini non devono superare 5 MB.`,"Import not found.":`Importazione non trovata.`,"Invalid annotation group.":`Gruppo di annotazioni non valido.`,"Invalid approval decision.":`Decisione di approvazione non valida.`,"Invalid development revision.":`Revisione di sviluppo non valida.`,"Invalid development version.":`Versione di sviluppo non valida.`,"Invalid diagnostic report.":`Rapporto diagnostico non valido.`,"Invalid file path in upload.":`Percorso del file non valido nel caricamento.`,"Invalid file path.":`Percorso del file non valido.`,"Invalid model.":`Modello non valido.`,"Invalid note location.":`Posizione dell'annotazione non valida.`,"Invalid reasoning effort.":`Sforzo di ragionamento non valido.`,"Invalid release information.":`Informazioni sulla versione di rilascio non valide.`,"Invalid release version.":`Versione di rilascio non valida.`,"Invalid save action.":`Azione di salvataggio non valida.`,"Invalid task ID.":`ID attività non valido.`,"Invalid update activation.":`Attivazione dell'aggiornamento non valida.`,"Invalid upload data.":`Dati di caricamento non validi.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`Gestisci questo suggerimento nella relativa attività di revisione IA oppure copialo prima nel manoscritto.`,"Missing update restart job.":`Job di riavvio dell'aggiornamento mancante.`,"No file has conflict markers left. Commit the merge.":`Nessun file presenta più indicatori di conflitto. Esegui il commit del merge.`,"No merge is in progress.":`Nessun merge in corso.`,"No such file.":`File inesistente.`,"None of the chosen files is build output that can be ignored.":`Nessuno dei file scelti è un output di compilazione che può essere ignorato.`,"Not found":`Non trovato`,"Note not found.":`Annotazione non trovata.`,"Only the model and its settings can be changed.":`È possibile modificare solo il modello e le relative impostazioni.`,"Only the owner of this Papilot can do this.":`Solo il proprietario di questo Papilot può eseguire questa operazione.`,"Open Papilot at its public address.":`Apri Papilot al suo indirizzo pubblico.`,"Paper name is too long.":`Il nome dell'articolo è troppo lungo.`,"Paper project not found.":`Progetto dell'articolo non trovato.`,"Papilot did not finish shutting down.":`Papilot non ha completato l'arresto.`,"Papilot is restarting after an update. Please wait a moment.":`Papilot si sta riavviando dopo un aggiornamento. Attendi un momento.`,"Papilot restarted. Retry compilation to continue this import.":`Papilot si è riavviato. Riprova la compilazione per continuare questa importazione.`,"Pause Codex before building a review.":`Metti in pausa Codex prima di generare una revisione.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`Metti in pausa l'attività e attendi il completamento del lavoro o dell'azione di revisione in corso prima di eliminarla. Risolvi prima eventuali azioni in sospeso.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`Metti in pausa l'attività prima di accettare, rifiutare o annullare le modifiche. Attendi il completamento di eventuali generazioni del PDF.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`Metti in pausa le attività attive di questo articolo e attendi il completamento del lavoro in corso prima di modificarne il percorso o rimuoverlo. Risolvi prima eventuali azioni in sospeso.`,"Resolve the merge conflicts in the selected files before committing.":`Risolvi i conflitti di merge nei file selezionati prima di eseguire il commit.`,"Restore this suggestion before copying it.":`Ripristina questo suggerimento prima di copiarlo.`,"Retry deletion to confirm this task was removed.":`Riprova l'eliminazione per confermare la rimozione di questa attività.`,"Retry the pending delivery before sending more instructions.":`Riprova l'invio in sospeso prima di inviare altre istruzioni.`,"Review resource not found.":`Risorsa di revisione non trovata.`,"Select a folder containing the paper.":`Seleziona una cartella contenente l'articolo.`,"Select a valid paper to check.":`Seleziona un articolo valido da controllare.`,"Select a valid paper.":`Seleziona un articolo valido.`,"Select an existing review round and either the before or after PDF.":`Seleziona un ciclo di revisione esistente e il PDF precedente o successivo.`,"Select at least one change.":`Seleziona almeno una modifica.`,"Select at least one changed file to commit.":`Seleziona almeno un file modificato per il commit.`,"Select at least one changed file.":`Seleziona almeno un file modificato.`,"Select text or mark a region on the page first.":`Seleziona prima del testo o traccia un'area sulla pagina.`,"Select the root directory of the Git repository.":`Seleziona la directory principale del repository Git.`,"Select unsent PDF notes for this task.":`Seleziona annotazioni PDF non inviate per questa attività.`,"Select up to 10 valid attachments.":`Seleziona fino a 10 allegati validi.`,"Select valid PDF notes for this task.":`Seleziona annotazioni PDF valide per questa attività.`,"Select valid review notes.":`Seleziona annotazioni di revisione valide.`,"Send attachments with a message, separately from review feedback.":`Invia gli allegati con un messaggio, separatamente dal feedback di revisione.`,"Service tiers are only available for Codex.":`I livelli di servizio sono disponibili solo per Codex.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`Imposta PAPILOT_ACCOUNT_ORIGIN sull'URL pubblico prima di invitare altre persone.`,"Sign in to continue.":`Accedi per continuare.`,"Sign-in is not set up on this Papilot.":`L'accesso non è configurato su questo Papilot.`,"Stage at least one change to commit.":`Prepara almeno una modifica per il commit.`,"Stage at least one change.":`Prepara per il commit almeno una modifica.`,"Start a new task to run the AI review skill on the current PDF.":`Avvia una nuova attività per eseguire l'abilità di revisione IA sul PDF corrente.`,"Start or resume the thread before starting a turn.":`Avvia o riprendi la conversazione prima di iniziare un turno.`,"Task not found.":`Attività non trovata.`,"That file has no uncommitted changes.":`Quel file non presenta modifiche senza commit.`,"That page is not part of the manuscript.":`Quella pagina non fa parte del manoscritto.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`La revisione IA non ha restituito annotazioni valide. Chiedi di riprovare con il formato JSON richiesto.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`La risposta della revisione IA è incompleta o troppo lunga. Chiedi al revisore di riprovare.`,"The PDF copy for this review is unavailable. Start a new AI review.":`La copia PDF per questa revisione non è disponibile. Avvia una nuova revisione IA.`,"The PDF is building. Wait for this build to finish.":`Il PDF è in fase di generazione. Attendi il completamento di questa generazione.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`L'istantanea PDF per questa revisione non è disponibile. Avvia una nuova revisione IA.`,"The ZIP expands beyond 64 MB or 5,000 files.":`Il file ZIP estratto supera 64 MB o 5.000 file.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`La build di sviluppo richiede almeno 2 GB di spazio libero su disco. Libera spazio e riprova.`,"The development checkout does not match the requested commit.":`Il checkout di sviluppo non corrisponde al commit richiesto.`,"The development checkout does not match the requested version.":`Il checkout di sviluppo non corrisponde alla versione richiesta.`,"The downloaded package does not match the requested release.":`Il pacchetto scaricato non corrisponde alla versione di rilascio richiesta.`,"The downloaded release is incomplete.":`La versione di rilascio scaricata è incompleta.`,"The manuscript changed while copying this suggestion. Try again.":`Il manoscritto è stato modificato durante la copia di questo suggerimento. Riprova.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`Impossibile installare la nuova versione. Controlla la connessione e lo spazio disponibile su disco, quindi riprova.`,"The new version did not pass its startup check. Your current version is still running.":`La nuova versione non ha superato il controllo di avvio. La versione attuale è ancora in esecuzione.`,"The new version did not restart successfully.":`La nuova versione non si è riavviata correttamente.`,"The owner cannot be removed.":`Il proprietario non può essere rimosso.`,"The owner sees every paper.":`Il proprietario vede ogni articolo.`,"The paper configuration must contain a JSON object.":`La configurazione dell'articolo deve contenere un oggetto JSON.`,"The paper configuration must not be a symbolic link.":`La configurazione dell'articolo non deve essere un collegamento simbolico.`,"The passkey could not be created. Try again.":`Impossibile creare la passkey. Riprova.`,"The request origin does not match.":`L'origine della richiesta non corrisponde.`,"The review action is still being checked. Wait for it to finish.":`L'azione di revisione è ancora in fase di verifica. Attendi il completamento.`,"The review could not be loaded. Try again.":`Impossibile caricare la revisione. Riprova.`,"The review engine could not confirm this action. Check again when it is available.":`Il motore di revisione non ha potuto confermare questa azione. Ricontrolla quando sarà disponibile.`,"The review engine could not confirm this action. Select Check status before continuing.":`Il motore di revisione non ha potuto confermare questa azione. Seleziona Controlla stato prima di continuare.`,"The review engine could not confirm this task’s cleanup status.":`Il motore di revisione non ha potuto confermare lo stato di pulizia di questa attività.`,"The review engine did not confirm task deletion.":`Il motore di revisione non ha confermato l'eliminazione dell'attività.`,"The review engine returned an unexpected response. Select Check status before continuing.":`Il motore di revisione ha restituito una risposta imprevista. Seleziona Controlla stato prima di continuare.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`Il repository selezionato non contiene gli alberi di lavoro delle attività di questo articolo. Seleziona il repository con le attività esistenti o aggiungilo come articolo separato.`,"The server is shutting down.":`Il server è in fase di arresto.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`Il server si è riavviato interrompendo il turno precedente. Continua nella stessa conversazione.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`Il server si è riavviato prima della conferma di un'azione di revisione. Seleziona Controlla stato prima di continuare.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`Il server si è riavviato durante l'eliminazione. Riprova l'eliminazione per confermare la pulizia.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`Il server si è riavviato durante la generazione del PDF. Controlla la revisione e ricompilala se necessario.`,"The task was paused before these instructions were queued. Your draft has been kept.":`L'attività è stata messa in pausa prima che queste istruzioni venissero messe in coda. La bozza è stata conservata.`,"The update download timed out.":`Il download dell'aggiornamento è scaduto.`,"The update restart helper did not start.":`L'assistente di riavvio per l'aggiornamento non si è avviato.`,"The update was interrupted. Your current installation is still available; retry the update.":`L'aggiornamento è stato interrotto. L'installazione attuale è ancora disponibile; riprova l'aggiornamento.`,"There is no compilation log yet.":`Non è ancora presente alcun log di compilazione.`,"There is no new review feedback to send.":`Non ci sono nuovi commenti di revisione da inviare.`,"This PDF has no selectable text to review.":`Questo PDF non contiene testo selezionabile da sottoporre a revisione.`,"This PDF is too long for one AI review (180,000 characters maximum).":`Questo PDF è troppo lungo per una singola revisione IA (massimo 180.000 caratteri).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`Questo indirizzo è riservato alla tua tailnet. Chi si trova all'esterno effettua l'accesso su PAPILOT_ACCOUNT_ORIGIN.`,"This agent does not report usage.":`Questo agente non segnala l'utilizzo.`,"This attachment is already being sent to another task.":`Questo allegato è già in fase di invio a un'altra attività.`,"This attachment is not available for this task.":`Questo allegato non è disponibile per questa attività.`,"This branch does not track a remote branch yet.":`Questo branch non traccia ancora un branch remoto.`,"This comparison is out of date. Refresh the page.":`Questo confronto non è aggiornato. Aggiorna la pagina.`,"This device is no longer signed in.":`Questo dispositivo non ha più effettuato l'accesso.`,"This entry is no longer among the changes. Refresh the page.":`Questa voce non è più presente tra le modifiche. Aggiorna la pagina.`,"This entry is no longer in the bibliography. Refresh the panel.":`Questa voce non è più presente nella bibliografia. Aggiorna il pannello.`,"This file is empty.":`Questo file è vuoto.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`Questa cartella appartiene a un repository Git principale. Seleziona la cartella radice o carica una copia.`,"This image format is not supported.":`Questo formato di immagine non è supportato.`,"This invite link has expired or was already used. Ask for a new one.":`Questo link di invito è scaduto o è già stato utilizzato. Richiedine uno nuovo.`,"This manuscript preview is out of date. Refresh it and try again.":`Questa anteprima del manoscritto non è aggiornata. Aggiornala e riprova.`,"This model does not support that reasoning effort.":`Questo modello non supporta tale sforzo di ragionamento.`,"This note has already been sent.":`Questa annotazione è già stata inviata.`,"This note has been deleted. Undo the deletion first.":`Questa annotazione è stata eliminata. Annulla prima l'eliminazione.`,"This note is being sent. Wait for the task to finish creating.":`Questa annotazione è in fase di invio. Attendi il completamento della creazione dell'attività.`,"This page has expired. Refresh it and try again.":`Questa pagina è scaduta. Aggiornala e riprova.`,"This paper is already added. Open it from the paper list.":`Questo articolo è già stato aggiunto. Aprilo dall'elenco degli articoli.`,"This paper is being updated. Please retry in a moment.":`Questo articolo è in fase di aggiornamento. Riprova tra poco.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`Non è stato possibile individuare con certezza questo passaggio nel manoscritto corrente. Il suggerimento rimane nell'attività di revisione.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`Impossibile accedere con questa passkey. Se è stata rimossa, chiedi un nuovo invito al proprietario.`,"This person is no longer in Papilot.":`Questa persona non è più in Papilot.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`Questo repository non ha ancora alcun commit. Esegui un commit per confrontare le modifiche successive nel PDF.`,"This repository has no remote.":`Questo repository non ha un repository remoto.`,"This repository is already added as another paper.":`Questo repository è già stato aggiunto come un altro articolo.`,"This request ID is already in use by another task.":`Questo ID richiesta è già in uso da un'altra attività.`,"This request has ended or the connection has restarted.":`Questa richiesta è terminata o la connessione è stata riavviata.`,"This request has ended.":`Questa richiesta è terminata.`,"This review page has expired. Refresh it and try again.":`Questa pagina di revisione è scaduta. Aggiornala e riprova.`,"This review task does not belong to this workspace.":`Questa attività di revisione non appartiene a questo spazio di lavoro.`,"This suggestion does not belong to this review task.":`Questo suggerimento non appartiene a questa attività di revisione.`,"This suggestion was ignored while copying. Restore it first.":`Questo suggerimento è stato ignorato durante la copia. Ripristinalo prima.`,"This task already applies accepted changes to the working directory.":`Questa attività applica già le modifiche accettate alla directory di lavoro.`,"This task already has queued instructions. Wait or pause it first.":`Questa attività ha già istruzioni in coda. Attendi o mettila prima in pausa.`,"This task has no accepted changes left to commit.":`Questa attività non ha altre modifiche accettate di cui eseguire il commit.`,"This task is being created. Refresh in a moment.":`Questa attività è in fase di creazione. Aggiorna tra poco.`,"This task is being deleted.":`Questa attività è in fase di eliminazione.`,"This task is being deleted. Retry deletion to finish cleanup.":`Questa attività è in fase di eliminazione. Riprova l'eliminazione per completare la pulizia.`,"This task is being deleted. Your instructions were not queued.":`Questa attività è in fase di eliminazione. Le tue istruzioni non sono state messe in coda.`,"This task is busy. Wait for it to finish or pause it first.":`Questa attività è occupata. Attendi che termini o mettila prima in pausa.`,"This task is not an AI review.":`Questa attività non è una revisione IA.`,"This task was deleted. Create a new task instead.":`Questa attività è stata eliminata. Crea invece una nuova attività.`,"Too many attempts. Wait a minute and try again.":`Troppi tentativi. Attendi un minuto e riprova.`,"Too many open Papilot tabs. Close one and try again.":`Troppe schede di Papilot aperte. Chiudine una e riprova.`,"Unknown Git action.":`Azione Git sconosciuta.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`Gli allegati non utilizzati hanno raggiunto 500 MB. Rimuovi gli allegati dalle bozze prima di caricarne altri.`,"Upload a file as binary data.":`Carica un file come dati binari.`,"Wait for repository preparation to finish.":`Attendi il completamento della preparazione del repository.`,"Wait for task creation to finish before deleting it.":`Attendi il completamento della creazione dell'attività prima di eliminarla.`,"Wait for the current Git operation before sending more instructions.":`Attendi il completamento dell'operazione Git in corso prima di inviare altre istruzioni.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`Attendi il completamento della compilazione del PDF attuale, quindi avvia l'abilità di revisione IA.`,"Wait for the current delivery before sending more instructions.":`Attendi il completamento dell'invio in corso prima di inviare altre istruzioni.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`Attendi il completamento della compilazione del PDF del manoscritto corrente, quindi copia di nuovo il suggerimento.`,"Wait for the current review action before building a review.":`Attendi il completamento dell'azione di revisione in corso prima di generare una revisione.`,"Wait for the current review action before committing.":`Attendi il completamento dell'azione di revisione in corso prima di eseguire il commit.`,"Wait for the current update to finish before changing channels.":`Attendi il completamento dell'aggiornamento in corso prima di cambiare canale.`,"Wait for the task and review actions to finish before applying changes.":`Attendi il completamento dell'attività e delle azioni di revisione prima di applicare le modifiche.`,"Wait for the task and review actions to finish before choosing a destination.":`Attendi il completamento dell'attività e delle azioni di revisione prima di scegliere una destinazione.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`Attendi il completamento della generazione del PDF di questo articolo prima di modificarne il percorso o rimuoverlo.`,"ZIP links and special files are not supported.":`I collegamenti e i file speciali negli archivi ZIP non sono supportati.`,"npm is unavailable to Papilot.":`npm non è disponibile per Papilot.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`Il servizio di confronto PDF non è raggiungibile. Le modifiche sono salvate. Seleziona «Verifica stato» per recuperare la compilazione esistente.`},ue={", ":`, `,"/Users/you/papers/my-paper":`/Users/you/papers/my-paper`,"A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.":`Ett paket, ett typsnitt eller en källfil kan saknas. Kontrollera detaljerna nedan, återställ den saknade filen eller be om hjälp.`,"A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.":`En lösenordsnyckel loggar in dig med Face ID, Touch ID, Windows Hello eller din telefon. Papilot ser aldrig något lösenord.`,"A skill with the same ID takes priority here: this paper, then global, then built-in.":`En färdighet med samma ID har företräde här: denna artikel, sedan global, sedan inbyggd.`,"A skill with this ID already exists in this location.":`En färdighet med detta ID finns redan på den här platsen.`,"A task needs attention":`En uppgift kräver uppmärksamhet`,"A workspace for your papers.":`En arbetsyta för dina artiklar.`,"AI is resolving conflicts…":`AI löser konflikter…`,"AI needs your input":`AI behöver din input`,"AI review":`AI-granskning`,"AI suggestion":`AI-förslag`,"AI suggestion {n}":`AI-förslag {n}`,"AI suggestions":`AI-förslag`,"Abort merge":`Avbryt sammanslagning`,"Aborting…":`Avbryter…`,"About Papilot":`Om Papilot`,Accent:`Accentfärg`,"Accept change":`Godkänn ändring`,"Accept the current proposal. In Changes, stage or unstage it.":`Godkänn det aktuella förslaget. Under Ändringar, köa eller avköa det.`,Accepted:`Godkänd`,"Accepted changes in your manuscript stay in place. Other tasks are not affected.":`Godkända ändringar i ditt manuskript ligger kvar. Andra uppgifter påverkas inte.`,"Access to all papers":`Åtkomst till alla artiklar`,Account:`Konto`,"Add a paper":`Lägg till en artikel`,"Add a passkey":`Lägg till en lösenordsnyckel`,"Add all to task":`Lägg till alla i uppgift`,"Add and fix later":`Lägg till och åtgärda senare`,"Add files or skills":`Lägg till filer eller färdigheter`,"Add files…":`Lägg till filer…`,"Add instructions to the selected color groups above.":`Lägg till instruktioner för de valda färggrupperna ovan.`,"Add note":`Lägg till anteckning`,"Add overall instructions (optional)":`Lägg till övergripande instruktioner (valfritt)`,"Add paper":`Lägg till artikel`,"Add paper…":`Lägg till artikel…`,"Add skill":`Lägg till färdighet`,"Add to .gitignore":`Lägg till i .gitignore`,"Add to group":`Lägg till i grupp`,"Add to {group}":`Lägg till i {group}`,"Add your first paper":`Lägg till din första artikel`,Added:`Tillagd`,"Added to task: {n}":`Tillagda i uppgift: {n}`,"Added {n} pattern to .gitignore.":`Lade till {n} mönster i .gitignore.`,"Added {n} patterns to .gitignore.":`Lade till {n} mönster i .gitignore.`,"Address reviewers":`Bemöt granskare`,"Address {n} PDF notes":`Åtgärda {n} PDF-anteckningar`,Advanced:`Avancerat`,"Agent configuration":`Agentkonfiguration`,"Agent settings":`Agentinställningar`,Agents:`Agenter`,All:`Alla`,"All entries":`Alla poster`,"All skills":`Alla färdigheter`,"Allow this action":`Tillåt denna åtgärd`,"Already set up?":`Redan konfigurerad?`,"Already used for {action}. Choose another shortcut.":`Används redan för {action}. Välj ett annat kortkommando.`,"Always light":`Alltid ljust`,"An environment variable set in a new terminal does not reach an already running server. Restart Papilot with the credentials; Reconnect alone cannot change its environment.":`En miljövariabel som anges i en ny terminal når inte en server som redan körs. Starta om Papilot med autentiseringsuppgifterna; det räcker inte att bara återansluta för att ändra dess miljö.`,"Annotation group color":`Färg för anteckningsgrupp`,"Annotation groups":`Anteckningsgrupper`,"Another entry has the same key.":`En annan post har samma nyckel.`,"Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.":`Antigravity öppnar bilder via sina filverktyg. För direkt bildinmatning, välj Codex eller Claude.`,Appearance:`Utseende`,Application:`Program`,"Applied to manuscript":`Tillämpat på manuskriptet`,Apply:`Tillämpa`,"Apply file changes":`Tillämpa filändringar`,"Apply to working directory":`Tillämpa på arbetskatalogen`,"Apply to workspace":`Tillämpa på arbetsytan`,"Apply without committing":`Tillämpa utan att checka in`,"Applying…":`Tillämpar…`,"Approval requests":`Förfrågningar om godkännande`,"Approve this action":`Godkänn denna åtgärd`,Archive:`Arkivera`,"Archive task":`Arkivera uppgift`,"Archived task":`Arkiverad uppgift`,"Archived tasks":`Arkiverade uppgifter`,"Ask a question or request changes…":`Ställ en fråga eller begär ändringar…`,"Ask an agent to look into {n} problem":`Be en agent att undersöka {n} problem`,"Ask an agent to look into {n} problems":`Be en agent att undersöka {n} problem`,"Ask for another review of this PDF version…":`Begär en ny granskning av denna PDF-version…`,"Attach up to 10 files per message.":`Bifoga upp till 10 filer per meddelande.`,Attachments:`Bilagor`,"Attachments must total 100 MB or less.":`Bilagor får sammanlagt vara högst 100 MB.`,Authors:`Författare`,"Available levels depend on the selected model.":`Tillgängliga nivåer beror på den valda modellen.`,"Available models":`Tillgängliga modeller`,"Awaiting changes":`Inväntar ändringar`,Background:`Bakgrund`,"Bare repository":`Bart arkiv`,"BibTeX cannot read it ({error}).":`BibTeX kan inte läsa den ({error}).`,"BibTeX cannot read it: {error}":`BibTeX kan inte läsa den: {error}`,Book:`Bok`,Branch:`Gren`,"Bring your collaborators in":`Bjud in dina medarbetare`,"Browser default ({language})":`Webbläsarens standard ({language})`,"Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.":`Webbläsare visar bara aviseringar via HTTPS eller localhost. Öppna Papilot på en säker adress för att använda dem.`,"Build failed · sent to {agent}":`Bygge misslyckades · skickat till {agent}`,"Built-in":`Inbyggd`,Cancel:`Avbryt`,"Change shortcut: {action}":`Ändra genväg: {action}`,"Change {n}":`Ändring {n}`,"Changed files in {branch}":`Ändrade filer i {branch}`,Changelog:`Ändringslogg`,Changes:`Ändringar`,"Changes apply to the next turn.":`Ändringar tillämpas vid nästa tur.`,"Changes in {path}":`Ändringar i {path}`,"Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.":`Ändringar visar endast de ändrade avsnitten och öppnas snabbast. PDF visar varje ändring på plats i hela artikeln och tar längre tid för långa artiklar. Växeln i en granskning ändrar endast den granskningen.`,"Change…":`Ändra…`,Chart:`Diagram`,Chat:`Chatt`,"Chat (reply needed)":`Chatt (svar krävs)`,"Chat only":`Endast chatt`,"Check again":`Kontrollera igen`,"Check for updates":`Sök efter uppdateringar`,"Check for updates to see the latest version.":`Sök efter uppdateringar för att se den senaste versionen.`,"Check math":`Kontrollera matematik`,"Check online":`Kontrollera online`,"Check references online":`Kontrollera referenser online`,"Check status":`Kontrollera status`,"Check task status":`Kontrollera uppgiftsstatus`,"Check task status before deleting this task.":`Kontrollera uppgiftsstatus innan du tar bort den här uppgiften.`,"Check task status before sending":`Kontrollera uppgiftsstatus innan du skickar`,"Check the connection error above and the agent’s login, provider, and network settings on this host. Restart Papilot after changing credentials or executable paths.":`Kontrollera anslutningsfelet ovan samt agentens inloggnings-, leverantörs- och nätverksinställningar på den här värden. Starta om Papilot efter att ha ändrat inloggningsuppgifter eller sökvägar till körbara filer.`,"Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.":`Kontrollera huvudfilen och motorn, eller be assistenten att åtgärda kompileringen. Du kan också redigera de sparade filerna och försöka igen.`,"Check the task status before sending notes.":`Kontrollera uppgiftsstatus innan du skickar anteckningar.`,"Check your connection and try again.":`Kontrollera din anslutning och försök igen.`,"Check {n} more online":`Kontrollera {n} till online`,"Checked by you":`Kontrollerad av dig`,"Checking for manuscript changes. A PDF comparison is generated only when needed.":`Söker efter ändringar i manuskriptet. En PDF-jämförelse genereras endast vid behov.`,"Checking for updates…":`Söker efter uppdateringar…`,"Checking {n}…":`Kontrollerar {n}…`,"Checking…":`Kontrollerar…`,Checklist:`Checklista`,"Choose ZIP":`Välj ZIP`,"Choose a folder or ZIP, or drag it here.":`Välj en mapp eller ZIP-fil, eller dra den hit.`,"Choose a folder to upload a copy. To use original files, open it in the desktop app.":`Välj en mapp för att ladda upp en kopia. Öppna den i skrivbordsappen om du vill använda originalfilerna.`,"Choose a shortcut to edit:":`Välj en genväg att redigera:`,"Choose an icon":`Välj en ikon`,"Choose attachments":`Välj bilagor`,"Choose different files":`Välj andra filer`,"Choose folder":`Välj mapp`,"Choose how paper pages look in dark mode.":`Välj hur artikelsidor ser ut i mörkt läge.`,"Choose the papers to share, then send a personal invite link.":`Välj vilka artiklar som ska delas och skicka sedan en personlig inbjudningslänk.`,"Choose up to 5,000 files, totaling less than 64 MB.":`Välj upp till 5 000 filer på totalt mindre än 64 MB.`,"Choose {color} color":`Välj färgen {color}`,"Citations, entries and their records":`Hänvisningar, poster och deras källposter`,"Cited {n} time: {places}":`Citerad {n} gång: {places}`,"Cited {n} times: {places}":`Citerad {n} gånger: {places}`,"Claude Code or API credentials were not detected.":`Claude Code eller API-inloggningsuppgifter hittades inte.`,"Clear selection":`Rensa markering`,"Clear task search":`Rensa uppgiftssökning`,"Click a highlighted key to customize it.":`Klicka på en markerad tangent för att anpassa den.`,"Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.":`Klicka på en tangent för att ändra den och tryck sedan på den nya genvägen. Escape avbryter; Backsteg rensar den.`,Close:`Stäng`,"Close agent details":`Stäng agentdetaljer`,"Close note":`Stäng anteckning`,"Close notes":`Stäng anteckningar`,"Close review notes":`Stäng granskningsanteckningar`,"Close search":`Stäng sökning`,"Close suggestion":`Stäng förslag`,"Close task list":`Stäng uppgiftslista`,"Close the current editor or cancel region selection.":`Stäng den aktuella redigeraren eller avbryt områdesmarkering.`,"Close window":`Stäng fönster`,"Closest record":`Närmaste post`,Code:`Kod`,"Collapse manuscript panel":`Fäll ihop manuskriptpanelen`,"Collapse {group} notes":`Fäll ihop anteckningar för {group}`,Color:`Färg`,Comments:`Kommentarer`,Commit:`Checka in`,"Commit 1 file":`Checka in 1 fil`,"Commit all {n} files":`Checka in alla {n} filer`,"Commit and push":`Checka in och skicka`,"Commit graph":`Incheckningsgraf`,"Commit merge":`Checka in sammanslagning`,"Commit message":`Incheckningsmeddelande`,"Commit staged changes in 1 file":`Checka in förberedda ändringar i 1 fil`,"Commit staged changes in {n} files":`Checka in förberedda ändringar i {n} filer`,"Commit to manuscript":`Checka in till manuskriptet`,"Commit to task branch":`Checka in till uppgiftsgren`,"Commit to {branch}":`Checka in till {branch}`,"Commit together":`Checka in tillsammans`,"Commit what is staged":`Checka in det som är förberett`,"Commit {chosen} of {n} files":`Checka in {chosen} av {n} filer`,Committed:`Incheckat`,"Committed and pushed":`Incheckat och pushat`,"Committed {hash} and pushed.":`Checkade in {hash} och pushade.`,"Committed {hash} to {branch}":`Checkade in {hash} till {branch}`,"Committed {hash}.":`Checkade in {hash}.`,"Committing and pushing…":`Checkar in och pushar…`,"Committing…":`Checkar in…`,"Commit…":`Checka in…`,"Compared with {upstream}":`Jämfört med {upstream}`,"Compilation details":`Kompileringsdetaljer`,"Compilation failed. Click to retry.":`Kompileringen misslyckades. Klicka för att försöka igen.`,"Compilation log":`Kompileringslogg`,"Compilation problems":`Kompileringsproblem`,"Compilation status unavailable.":`Kompileringsstatus är inte tillgänglig.`,"Compiling the PDF…":`Kompilerar PDF-filen…`,Completed:`Slutförd`,"Component source":`Komponentkälla`,"Confirm and apply":`Bekräfta och tillämpa`,"Confirm and commit":`Bekräfta och checka in`,"Confirm whether the task is still running before generating a PDF comparison.":`Bekräfta om uppgiften fortfarande körs innan du skapar en PDF-jämförelse.`,Conflict:`Konflikt`,"Conflict resolution paused":`Konfliktlösning pausad`,"Conflicts resolved. Read the diffs, then commit the merge.":`Konflikter lösta. Granska ändringarna och checka sedan in sammanslagningen.`,"Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.":`Anslut en publik HTTPS-adress för att bjuda in personer till dina artiklar. De kan logga in säkert med en lösenordsnyckel.`,"Connect an assistant in Settings to help repair this paper.":`Anslut en assistent under Inställningar för att få hjälp att reparera den här artikeln.`,"Connect and sign in to load the model list.":`Anslut och logga in för att läsa in modellistan.`,"Connect to view account, models, and usage.":`Anslut för att visa konto, modeller och användning.`,Connected:`Ansluten`,"Connecting to your papers and tasks…":`Ansluter till dina artiklar och uppgifter…`,"Connecting to {agent}…":`Ansluter till {agent}…`,"Connecting…":`Ansluter…`,"Connection details":`Anslutningsdetaljer`,"Connection lost. Showing the last update; your draft is kept.":`Anslutningen bröts. Visar den senaste uppdateringen; ditt utkast är sparat.`,Consistency:`Konsekvens`,Contents:`Innehåll`,"Contents will appear when the PDF is ready.":`Innehållet visas när PDF-filen är klar.`,"Continue later":`Fortsätt senare`,Contribute:`Bidra`,"Contribute an integration":`Bidra med en integration`,Copied:`Kopierad`,"Copied path":`Kopierade sökväg`,Copy:`Kopiera`,"Copy and edit":`Kopiera och redigera`,"Copy message":`Kopiera meddelande`,"Copy path: {path}":`Kopiera sökväg: {path}`,"Copy selected PDF text":`Kopiera markerad PDF-text`,"Copy this built-in skill to customize it for all papers or this paper.":`Kopiera den här inbyggda färdigheten för att anpassa den för alla artiklar eller den här artikeln.`,"Could not check":`Kunde inte kontrollera`,"Could not check for updates":`Kunde inte söka efter uppdateringar`,"Could not check for updates. Try again when connected.":`Kunde inte söka efter uppdateringar. Försök igen när du är ansluten.`,"Could not complete the environment checks. Check the connection and try again.":`Kunde inte slutföra miljökontrollerna. Kontrollera anslutningen och försök igen.`,"Could not detect a main file. Enter its path relative to the paper folder.":`Kunde inte hitta en huvudfil. Ange dess sökväg relativt till artikelmappen.`,"Could not generate the PDF comparison.":`Kunde inte skapa PDF-jämförelsen.`,"Could not load the license notices.":`Kunde inte läsa in licensinformationen.`,"Could not prepare the paper":`Kunde inte förbereda artikeln`,"Could not read the LaTeX installation. Try again.":`Kunde inte läsa LaTeX-installationen. Försök igen.`,"Could not read the selected file.":`Kunde inte läsa den valda filen.`,"Could not read this worktree.":`Kunde inte läsa den här arbetskatalogen.`,"Could not reconnect. Check the server connection and try again.":`Kunde inte återansluta. Kontrollera serveranslutningen och försök igen.`,"Could not refresh the repository.":`Kunde inte uppdatera arkivet.`,"Could not start the update. Please retry.":`Kunde inte starta uppdateringen. Försök igen.`,"Create a Cursor API key in the Cursor dashboard, or configure the Cursor SDK login on this host.":`Skapa en Cursor API-nyckel i Cursor-panelen, eller konfigurera Cursor SDK-inloggning på den här värden.`,"Create a GLM Coding Plan or API key with Zhipu or Z.ai.":`Skapa en GLM Coding Plan eller API-nyckel hos Zhipu eller Z.ai.`,"Create a passkey":`Skapa en lösenordsnyckel`,"Create a passkey on this device to sign in as {name}.":`Skapa en lösenordsnyckel på den här enheten för att logga in som {name}.`,"Create a passkey to sign in to your Papilot from anywhere.":`Skapa en lösenordsnyckel för att logga in på ditt Papilot var som helst.`,"Create invite link":`Skapa inbjudningslänk`,"Creating the passkey was cancelled. The link still works; try again when you are ready.":`Skapandet av lösenordsnyckeln avbröts. Länken fungerar fortfarande; försök igen när du är redo.`,"Creating…":`Skapar…`,"Credits available":`Tillgängliga krediter`,Current:`Aktuell`,"Current version":`Aktuell version`,"Cursor SDK credentials were not detected.":`Inloggningsuppgifter för Cursor SDK hittades inte.`,"Customize shortcuts":`Anpassa genvägar`,Customized:`Anpassad`,"Cut length without losing content":`Korta ned utan att förlora innehåll`,"Daily limit":`Daglig gräns`,Dark:`Mörkt`,Decline:`Avböj`,Declined:`Avböjd`,Default:`Standard`,"Default model":`Standardmodell`,"Default reasoning effort":`Standardnivå för resonemang`,"Delete file":`Ta bort fil`,"Delete note":`Ta bort anteckning`,"Delete note {n}":`Ta bort anteckning {n}`,"Delete review note {n}":`Ta bort granskningsanteckning {n}`,"Delete skill":`Ta bort färdighet`,"Delete task":`Ta bort uppgift`,"Delete task?":`Ta bort uppgift?`,"Delete task…":`Ta bort uppgift…`,"Delete this skill? Only its Markdown file is removed; supporting files stay in place.":`Ta bort denna färdighet? Endast dess Markdown-fil tas bort; tillhörande filer lämnas kvar.`,"Delete {name}?":`Ta bort {name}?`,Deleted:`Borttagen`,"Deleting task":`Tar bort uppgift`,"Deleting…":`Tar bort…`,"Deletion has already started. Retry to confirm the cleanup and remove the task.":`Borttagningen har redan påbörjats. Försök igen för att bekräfta rensningen och ta bort uppgiften.`,"Deletion is in progress":`Borttagning pågår`,"Describe the revision":`Beskriv revideringen`,"Describe what the agent should do, what to preserve, and how to present the result.":`Beskriv vad agenten ska göra, vad som ska bevaras och hur resultatet ska presenteras.`,Description:`Beskrivning`,"Details (optional)":`Detaljer (valfritt)`,"Detect again":`Identifiera igen`,"Detecting LaTeX installation…":`Identifierar LaTeX-installation…`,"Dev (GitHub main)":`Utvecklingsversion (GitHub main)`,Differs:`Avviker`,"Discard all changes":`Förkasta alla ändringar`,"Discard changes":`Förkasta ändringar`,"Discard changes in {name}?":`Förkasta ändringar i {name}?`,"Discard changes in {n} file?":`Förkasta ändringar i {n} fil?`,"Discard changes in {n} files?":`Förkasta ändringar i {n} filer?`,"Discard changes in {path}":`Förkasta ändringar i {path}`,"Discard unsaved skill changes?":`Ignorera osparade ändringar i färdigheten?`,"Discarded changes in {n} file.":`Förkastade ändringar i {n} fil.`,"Discarded changes in {n} files.":`Förkastade ändringar i {n} filer.`,"Dismiss error":`Stäng felmeddelande`,Distribution:`Distribution`,"Download desktop updates":`Ladda ner uppdateringar för skrivbordsappen`,"Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.":`Ladda ner den senaste skrivbordsappen för ditt system från GitHub Releases. Dina artiklar och inställningar finns kvar.`,"Downloading and building the selected GitHub commit…":`Laddar ned och bygger vald GitHub-commit…`,"Downloading and checking the new version…":`Laddar ned och kontrollerar den nya versionen…`,"Drag to resize · Double-click to reset":`Dra för att ändra storlek · Dubbelklicka för att återställa`,"Drop files to attach":`Släpp filer för att bifoga`,"Drop one folder or LaTeX ZIP file.":`Släpp en mapp eller en LaTeX-ZIP-fil.`,"Early updates from GitHub main. May be less stable.":`Tidiga uppdateringar från GitHub main. Kan vara mindre stabila.`,Edit:`Redigera`,"Edit note":`Redigera anteckning`,"Edit note {n}":`Redigera anteckning {n}`,"Edit note {n}: {comment}":`Redigera anteckning {n}: {comment}`,"Edit paper":`Redigera artikel`,"Edit {name}":`Redigera {name}`,"Edited {file}":`Redigerade {file}`,"Edited {n} files":`Redigerade {n} filer`,"Editing dark mode colors. Changes are saved automatically.":`Redigerar färger för mörkt läge. Ändringar sparas automatiskt.`,"Editing light mode colors. Changes are saved automatically.":`Redigerar färger för ljust läge. Ändringar sparas automatiskt.`,"Enable shortcut: {action}":`Aktivera genväg: {action}`,"Enter a folder path":`Ange en mappsökväg`,"Environment variable":`Miljövariabel`,Errors:`Fel`,"Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.":`Expandera ändringar på andra ställen, såsom innehållsförteckning och referensnumrering. Av som standard; redigeringar utan synlig ändring vid källan, såsom makrodefinitioner, visar ändå sina effekter.`,"Expand indirect changes":`Expandera indirekta ändringar`,"Expand manuscript panel":`Expandera manuskriptpanelen`,"Expand {group} notes":`Expandera {group}-anteckningar`,Failed:`Misslyckades`,Fast:`Snabb`,"Fast mode":`Snabbläge`,"Faster responses; may use more of your limit.":`Snabbare svar; kan förbruka mer av din gräns.`,"Feedback & issues":`Feedback och problem`,"Fetch from the remote":`Hämta från fjärrarkiv`,"Files must be 25 MB or smaller.":`Filer får vara högst 25 MB.`,"Files on disk, Git history and task worktrees will stay in place.":`Filer på disk, Git-historik och uppgifters arbetskataloger lämnas kvar.`,"Files received":`Mottagna filer`,"Find (⌘F)":`Sök (⌘F)`,"Find errors in notation, equations and proofs":`Hitta fel i notation, ekvationer och bevis`,"Find in PDF":`Sök i PDF`,"Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.":`Ta reda på vad som hände med dessa bibliografiproblem och rapportera tillbaka. Redigera ingen fil. För varje problem, kontrollera om verket finns och vad dess publicerade uppgifter anger (författare, titel, år, publiceringsställe, DOI), hitta var posten eller citeringen kom ifrån i Git-historiken för .bib- och .tex-filerna, och ange vad du föreslår. Markera vilka uppgifter du har bekräftat i en källa och vilka som är gissningar.`,"Fit page":`Anpassa till sida`,"Fit width":`Anpassa till bredd`,"Fix LaTeX warnings":`Åtgärda LaTeX-varningar`,"Fix typos, grammar and punctuation without rewording":`Rätta stavfel, grammatik och skiljetecken utan att omformulera`,"Fix with an agent…":`Åtgärda med en agent…`,"Folder path":`Mappsökväg`,"Follow mode":`Följläge`,"For the SDK instead, start Papilot with ANTHROPIC_API_KEY or a supported cloud provider configured. Restart Papilot after changing its environment.":`För SDK:n i stället, starta Papilot med ANTHROPIC_API_KEY eller en molnleverantör som stöds konfigurerad. Starta om Papilot efter att ha ändrat dess miljö.`,Foreground:`Förgrund`,"Full PDF":`Hela PDF:en`,General:`Allmänt`,"Generate PDF comparison":`Generera PDF-jämförelse`,"Generate commit message":`Generera incheckningsmeddelande`,"Generate task title":`Generera uppgiftstitel`,"Generating task title…":`Genererar uppgiftstitel…`,"Get started and make Papilot your own.":`Kom igång och gör Papilot till ditt eget.`,"Git status":`Git-status`,"Git status of the manuscript":`Manuskriptets Git-status`,"Git, {n} changed":`Git, {n} ändrade`,"GitHub repository":`GitHub-arkiv`,"Give your skill a name":`Ge din färdighet ett namn`,Global:`Global`,Globe:`Jordglob`,Graphite:`Grafit`,Green:`Grön`,"Help fix compilation":`Hjälp till att åtgärda kompilering`,"Help improve Papilot with code, docs, and ideas.":`Hjälp till att förbättra Papilot med kod, dokumentation och idéer.`,"Hide task list":`Dölj uppgiftslista`,"Highlighted in {group}":`Markerad i {group}`,"Hover over a highlighted key to see what it does.":`Håll muspekaren över en markerad tangent för att se vad den gör.`,"I checked it myself":`Jag kontrollerade det själv`,Idea:`Idé`,"If it is already installed, set {variable} to its executable path in the environment that starts Papilot, then restart Papilot.":`Om det redan är installerat anger du {variable} till sökvägen för dess körbara fil i miljön som startar Papilot och startar sedan om Papilot.`,"If the live status still disagrees with the check, restart Papilot under the same user and environment where you configured the agent.":`Om aktuell status fortfarande inte stämmer överens med kontrollen startar du om Papilot som samma användare och i samma miljö där du konfigurerade agenten.`,"If the task changes the manuscript, a PDF comparison will appear here. Otherwise, read the answer in the chat.":`Om uppgiften ändrar manuskriptet visas en PDF-jämförelse här. Läs annars svaret i chatten.`,Ignore:`Ignorera`,"Ignore suggestion {n}":`Ignorera förslag {n}`,"Images must be 5 MB or smaller.":`Bilder får vara högst 5 MB.`,"Import a ZIP":`Importera en ZIP-fil`,"Import a separate copy from Overleaf or a ZIP archive.":`Importera en separat kopia från Overleaf eller ett ZIP-arkiv.`,"Import progress":`Importförlopp`,"Improve clarity and flow, keeping the meaning":`Förbättra tydlighet och flyt med bibehållen betydelse`,"Include note {n} in this task":`Inkludera anteckning {n} i denna uppgift`,"Include suggestion {n} in this task":`Inkludera förslag {n} i denna uppgift`,"Include {key} in the task":`Inkludera {key} i uppgiften`,"Individual notes":`Enskilda anteckningar`,"Input needed":`Inmatning krävs`,"Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.":`Installera TeX Live eller MacTeX med latexmk på datorn som kör Papilot och försök sedan igen.`,"Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.":`Installera den nya versionen och starta om automatiskt när inga uppgifter körs. Dina artiklar, uppgifter och inställningar finns kvar.`,"Install {command} on the host running Papilot, then complete its login or provider setup below.":`Installera {command} på värddatorn som kör Papilot och slutför sedan dess inloggning eller leverantörskonfiguration nedan.`,"Installation & setup":`Installation och konfiguration`,"Installation check":`Installationskontroll`,"Installation location":`Installationsplats`,Instructions:`Instruktioner`,"Instructions for color groups":`Instruktioner för färggrupper`,"Instructions for {agent}":`Instruktioner för {agent}`,"Instructions for {group} notes":`Instruktioner för {group}-anteckningar`,"Invite link for a new device":`Inbjudningslänk för en ny enhet`,"Invite link for {name}":`Inbjudningslänk för {name}`,"Invite someone":`Bjud in någon`,"Invited people can access all files readable by Papilot, including credentials and unshared papers.":`Inbjudna personer har åtkomst till alla filer som kan läsas av Papilot, inklusive inloggningsuppgifter och odelade artiklar.`,"Invited, not joined yet":`Inbjuden, har inte gått med än`,"Join Papilot":`Gå med i Papilot`,Joined:`Har gått med`,"Jump to the next change that still needs a decision.":`Gå till nästa ändring som fortfarande kräver ett beslut.`,"Keep editing":`Fortsätt redigera`,"Keep latest wording and apply":`Behåll senaste formulering och tillämpa`,"Keep latest wording and commit":`Behåll senaste formulering och checka in`,"Keep on manuscript":`Behåll i manuskriptet`,"Keep the latest wording in overlapping passages and save the other accepted changes.":`Behåll den senaste formuleringen i överlappande avsnitt och spara övriga godkända ändringar.`,"Kept on manuscript":`Behållen i manuskriptet`,"Keyboard key {key}: {actions}":`Tangentbordstangent {key}: {actions}`,"Keyboard shortcuts":`Kortkommandon`,"LaTeX Git repository · Requires a commit and latexmk":`LaTeX Git-arkiv · Kräver en commit och latexmk`,"LaTeX engine":`LaTeX-motor`,"LaTeX installation":`LaTeX-installation`,"Label defined more than once":`Etikett definierad mer än en gång`,Language:`Språk`,"Language for the Papilot interface.":`Språk för Papilots gränssnitt.`,"Last active {time}":`Senast aktiv {time}`,Later:`Senare`,"Latest messages":`Senaste meddelanden`,"Latest version":`Senaste versionen`,"Libraries and fonts used by Papilot and its review engine. Each component is covered by its own license.":`Bibliotek och typsnitt som används av Papilot och dess granskningsmotor. Varje komponent omfattas av sin egen licens.`,"Libraries, fonts, and the people behind them.":`Bibliotek, typsnitt och personerna bakom dem.`,"License text is not included in this package. See the component source for its terms.":`Licenstext ingår inte i detta paket. Se komponentens källkod för dess villkor.`,"Licenses & acknowledgments":`Licenser och erkännanden`,Light:`Ljus`,"Limit reached":`Gräns uppnådd`,"Line too wide by {amount}pt":`Raden är {amount}pt för bred`,Link:`Länk`,"Loading PDF review…":`Läser in PDF-granskning…`,"Loading conversation…":`Läser in konversation…`,"Loading license notices…":`Läser in licensmeddelanden…`,"Loading people…":`Läser in personer…`,"Loading skills…":`Läser in färdigheter…`,"Loading the diff…":`Läser in diffen…`,"Loading…":`Läser in…`,Location:`Plats`,Locked:`Låst`,"Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.":`Slå upp posterna i Crossref, DBLP och arXiv. Endast titlar, författare, årtal och identifierare skickas.`,"Made by Cui Chen and the Papilot contributors.":`Skapad av Cui Chen och Papilot-bidragsgivarna.`,"Main TeX file":`Huvud-TeX-fil`,Manuscript:`Manuskript`,"Manuscript panels":`Manuskriptpaneler`,"Manuscript view":`Manuskriptvy`,"Mark a figure or region":`Markera en figur eller ett område`,"Mark region":`Markera område`,"Marked on earlier changes.":`Markerat i tidigare ändringar.`,"Marked region":`Markerat område`,Math:`Matematik`,"Maximize or restore window":`Maximera eller återställ fönster`,Members:`Medlemmar`,Merge:`Slå samman`,"Merge in progress":`Sammanslagning pågår`,"Merged {upstream}.":`Slog samman {upstream}.`,"Merging: no conflicts left":`Slår samman: inga konflikter kvar`,"Merging: {n} file has conflicts":`Slår samman: {n} fil har konflikter`,"Merging: {n} files have conflicts":`Slår samman: {n} filer har konflikter`,"Message ({key} to commit on “{branch}”)":`Meddelande ({key} för att checka in på “{branch}”)`,"Minimize window":`Minimera fönster`,"Missing character":`Saknat tecken`,"Missing file":`Saknad fil`,"Missing worktree":`Saknad arbetskatalog`,"Missing: {files}":`Saknas: {files}`,Mode:`Läge`,"Model default":`Modellens standard`,Models:`Modeller`,Modified:`Ändrad`,"More Git actions":`Fler Git-åtgärder`,"More commit actions":`Fler incheckningsåtgärder`,"Move to the next visible change.":`Gå till nästa synliga ändring.`,"Move to the previous visible change.":`Gå till föregående synliga ändring.`,"My notes":`Mina anteckningar`,Name:`Namn`,"Needs attention":`Kräver åtgärd`,"Needs your reply":`Kräver ditt svar`,"New invite link":`Ny inbjudningslänk`,"New skill":`Ny färdighet`,"New task":`Ny uppgift`,"New version":`Ny version`,"Next change":`Nästa ändring`,"Next match":`Nästa träff`,"Next page":`Nästa sida`,"Next suggestion":`Nästa förslag`,"Next suggestion (→)":`Nästa förslag (→)`,"Next undecided change":`Nästa obeslutade ändring`,"No GLM API key was found.":`Ingen GLM API-nyckel hittades.`,"No LaTeX installation was detected on this host.":`Ingen LaTeX-installation hittades på den här värden.`,"No archived tasks":`Inga arkiverade uppgifter`,"No commits yet":`Inga commits ännu`,"No components match your search.":`Inga komponenter matchar din sökning.`,"No entry has this key.":`Ingen post har den här nyckeln.`,"No files found in this folder.":`Inga filer hittades i den här mappen.`,"No installation details were returned. Run the checks again to refresh.":`Inga installationsdetaljer returnerades. Kör kontrollerna igen för att uppdatera.`,"No linked change":`Ingen länkad ändring`,"No linked task":`Ingen länkad uppgift`,"No manuscript changes":`Inga manuskriptändringar`,"No matches":`Inga träffar`,"No matching settings":`Inga matchande inställningar`,"No matching skills":`Inga matchande färdigheter`,"No matching tasks":`Inga matchande uppgifter`,"No models match “{query}”":`Inga modeller matchar ”{query}”`,"No notes yet":`Inga anteckningar ännu`,"No other worktrees in this repository.":`Inga andra arbetskataloger i det här arkivet.`,"No papers have been shared with you yet. Papers appear here as soon as {name} shares them.":`Inga artiklar har delats med dig ännu. Artiklar visas här så snart {name} delar dem.`,"No papers yet":`Inga artiklar ännu`,"No passkey on this device? Ask the person who invited you for a new invite link.":`Ingen lösenordsnyckel på den här enheten? Be personen som bjöd in dig om en ny inbjudningslänk.`,"No problems found.":`Inga problem hittades.`,"No problems in the files. Check online to compare the entries with their records.":`Inga problem i filerna. Kontrollera online för att jämföra posterna med deras registeruppgifter.`,"No problems in the last build.":`Inga problem vid senaste kompileringen.`,"No record in Crossref, DBLP or arXiv matches it.":`Ingen post i Crossref, DBLP eller arXiv matchar den.`,"No tasks yet":`Inga uppgifter ännu`,"No textual changes.":`Inga textändringar.`,"No uncommitted changes":`Inga oincheckade ändringar`,"No upstream branch":`Ingen uppströmsgren`,"Not assigned":`Inte tilldelad`,"Not checked":`Inte kontrollerad`,"Not cited in the paper.":`Inte citerad i artikeln.`,"Not detected":`Upptäcktes inte`,"Not found":`Hittades inte`,"Note deleted.":`Anteckning borttagen.`,"Note for the agent":`Anteckning till agenten`,"Note on the PDF":`Anteckning i PDF:en`,"Note {n}":`Anteckning {n}`,"Note {n}: {comment}":`Anteckning {n}: {comment}`,"Notes in this task":`Anteckningar i denna uppgift`,"Notes stay here unless you add them to a task.":`Anteckningar stannar här om du inte lägger till dem i en uppgift.`,"Nothing to check":`Inget att kontrollera`,Notifications:`Aviseringar`,"Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.":`Aviseringar är blockerade för den här webbplatsen. Tillåt dem i webbläsarens webbplatsinställningar och aktivera dem sedan här.`,"Notifications are on":`Aviseringar är på`,"Notify me about":`Avisera mig om`,"Notify me when a task fails or stops unexpectedly.":`Avisera mig när en uppgift misslyckas eller stoppas oväntat.`,"Notify me when an agent asks me a question.":`Avisera mig när en agent ställer en fråga till mig.`,"Notify me when an agent finishes without changes to review.":`Avisera mig när en agent är klar utan ändringar för granskning.`,"Notify me when an agent needs my approval to continue.":`Avisera mig när en agent behöver mitt godkännande för att fortsätta.`,"Notify me when changes are ready for review.":`Avisera mig när ändringar är redo för granskning.`,Off:`Av`,"Online checks are off in Settings, so only problems found in the files are shown.":`Onlinekontroller är avstängda i Inställningar, så endast problem som hittas i filerna visas.`,"Online checks are off in Settings.":`Onlinekontroller är avstängda i Inställningar.`,"Only manuscript changes need a PDF comparison. Answers to questions are in the chat.":`Endast ändringar i manuskriptet kräver en PDF-jämförelse. Svar på frågor finns i chatten.`,"Open PDF":`Öppna PDF`,"Open a branch to commit":`Öppna en gren för att checka in`,"Open a folder":`Öppna en mapp`,"Open attachment {name}":`Öppna bilaga {name}`,"Open chat":`Öppna chatt`,"Open it on the device you want to sign in from. It works once, within 15 minutes.":`Öppna den på enheten du vill logga in från. Den fungerar en gång, inom 15 minuter.`,"Open paper":`Öppna artikel`,"Open review":`Öppna granskning`,"Open review in new tab":`Öppna granskning i ny flik`,"Open reviews on":`Öppna granskningar i`,"Open task: {title}":`Öppna uppgift: {title}`,"Open the full PDF":`Öppna hela PDF:en`,"Open these shortcut settings.":`Öppna dessa genvägsinställningar.`,"Opening the PDF…":`Öppnar PDF:en…`,"Opening your workspace":`Öppnar din arbetsyta`,"Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.":`Öppnar en ny uppgift som du kan redigera innan du skickar. Agenten rapporterar vad den hittar och ändrar ingenting.`,"Opens in a new tab":`Öppnas i en ny flik`,"Or drop a folder or ZIP here":`Eller släpp en mapp eller ZIP-fil här`,"Or type your own answer":`Eller skriv ditt eget svar`,Orange:`Orange`,Overridden:`Åsidosatt`,Owner:`Ägare`,"PDF annotations":`PDF-annoteringar`,"PDF appearance":`PDF-utseende`,"PDF comparison":`PDF-jämförelse`,"PDF compilation":`PDF-kompilering`,"PDF compiled successfully.":`PDF-kompileringen lyckades.`,"PDF contents":`PDF-innehåll`,"PDF controls":`PDF-kontroller`,"PDF note library":`Bibliotek för PDF-anteckningar`,"PDF note {n}":`PDF-anteckning {n}`,"PDF notes":`PDF-anteckningar`,"PDF pages":`PDF-sidor`,"PDF preview":`PDF-förhandsvisning`,"PDF review":`PDF-granskning`,"PDF review only":`Endast PDF-granskning`,"Page number":`Sidnummer`,"Page {n}":`Sida {n}`,"Page {pages}":`Sida {pages}`,"Page {pages} of {total}":`Sida {pages} av {total}`,"Pages typeset":`Typsatta sidor`,Paper:`Artikel`,"Paper name":`Artikelnamn`,"Paper tools":`Artikelverktyg`,"Paper: {name}":`Artikel: {name}`,"Papers and tasks":`Artiklar och uppgifter`,"Papers they can open":`Artiklar de kan öppna`,"Papers {name} can open":`Artiklar som {name} kan öppna`,"Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.":`Papilot kan inte hitta npm på den här datorn. Uppdateringar är inte tillgängliga förrän npm har installerats.`,"Papilot could not establish a working connection to this agent. The latest connection error is shown below.":`Papilot kunde inte upprätta en fungerande anslutning till den här agenten. Det senaste anslutningsfelet visas nedan.`,"Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.":`Papilot kunde inte förbereda filerna för kompilering. Detta är ett programfel, inte ett LaTeX-fel.`,"Papilot license":`Papilot-licens`,"Papilot reached this agent, but could not confirm a signed-in account on this host.":`Papilot nådde den här agenten, men kunde inte bekräfta ett inloggat konto på den här värden.`,"Papilot sent the build error to {agent}, {time}":`Papilot skickade kompileringsfelet till {agent}, {time}`,"Papilot will tell you here when a task needs you.":`Papilot meddelar dig här när en uppgift behöver dig.`,"Papilot {version}":`Papilot {version}`,"Partly reviewed":`Delvis granskad`,Passed:`Godkänd`,"Passkey · {label}":`Nyckel · {label}`,Pause:`Pausa`,"Pause task":`Pausa uppgift`,"Pause this task before deleting it.":`Pausa den här uppgiften innan du tar bort den.`,"Pause {agent}":`Pausa {agent}`,Paused:`Pausad`,Pen:`Penna`,"Pending review":`Väntar på granskning`,"People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.":`Personer du bjuder in loggar in med en nyckel på den offentliga adressen och kan göra allt du kan i de artiklar du delar med dem, inklusive att godkänna kommandon som agenter kör på den här värden och skicka (push) med dess Git-uppgifter.`,Personal:`Personligt`,Polish:`Finslipa`,"Position needs confirmation":`Positionen behöver bekräftas`,"Prepare and compile":`Förbered och kompilera`,"Preparing task results":`Förbereder uppgiftsresultat`,"Preparing task results…":`Förbereder uppgiftsresultat…`,"Preparing version history and compiling the PDF…":`Förbereder versionshistorik och kompilerar PDF-filen…`,"Press a key…":`Tryck på en tangent…`,Preview:`Förhandsgranska`,"Previous change":`Föregående ändring`,"Previous match":`Föregående träff`,"Previous page":`Föregående sida`,"Previous suggestion":`Föregående förslag`,"Previous suggestion (←)":`Föregående förslag (←)`,Problems:`Problem`,"Processing the bibliography…":`Bearbetar bibliografin…`,Proofread:`Korrekturläs`,"Provide CURSOR_API_KEY to the process or service that starts Papilot, then restart Papilot. The SDK is installed automatically when used.":`Ange CURSOR_API_KEY för den process eller tjänst som startar Papilot och starta sedan om Papilot. SDK:t installeras automatiskt när det används.`,"Publish branch":`Publicera gren`,"Published releases, recommended for everyday use.":`Publicerade versioner, rekommenderas för dagligt bruk.`,Pull:`Hämta (pull)`,"Pulled the latest commits.":`Hämtade de senaste ändringarna.`,Purple:`Lila`,Push:`Skicka (push)`,"Pushed to the remote.":`Skickade till fjärrlagret.`,"Pushed to {upstream}.":`Skickade till {upstream}.`,"Queue instructions for the next turn…":`Köa instruktioner för nästa tur…`,Queued:`I kö`,"Quote in chat":`Citera i chatt`,"Quoted text":`Citerad text`,"Raw log":`Rålogg`,"Read folder":`Läs mapp`,"Read the paper and leave PDF comments without editing the manuscript":`Läs artikeln och lämna PDF-kommentarer utan att redigera manuskriptet`,"Read, annotate, and revise your papers with AI, all in one place.":`Läs, kommentera och revidera dina artiklar med AI, allt på ett ställe.`,"Reading Git status…":`Läser Git-status…`,"Reading paper files…":`Läser artikelfiler…`,"Reading the bibliography…":`Läser bibliografin…`,"Reading update status…":`Läser uppdateringsstatus…`,"Reading worktrees and history…":`Läser arbetskataloger och historik…`,Ready:`Redo`,"Ready for review":`Redo för granskning`,"Ready to check for updates":`Redo att söka efter uppdateringar`,"Reasoning effort":`Resonemangsnivå`,Recent:`Senaste`,"Recompile PDF":`Kompilera om PDF`,"Recompiling; this list will update.":`Kompilerar om; den här listan kommer att uppdateras.`,Reconnect:`Återanslut`,Reconnecting:`Återansluter`,Record:`Spela in`,Red:`Röd`,"Reference check":`Referenskontroll`,"Refresh changes":`Uppdatera ändringar`,"Refresh skills":`Uppdatera färdigheter`,"Refresh worktrees and history":`Uppdatera arbetskataloger och historik`,"Regenerate PDF comparison":`Återskapa PDF-jämförelse`,"Region note":`Områdesanteckning`,"Reject change":`Avvisa ändring`,"Reject the current proposal. In Changes, revert it.":`Avvisa det aktuella förslaget. Under Ändringar återställer du det.`,Rejected:`Avvisad`,"Reload review":`Läs in granskning igen`,Remove:`Ta bort`,"Remove attachment {name}":`Ta bort bilaga {name}`,"Remove from Papilot":`Ta bort från Papilot`,"Remove from draft":`Ta bort från utkast`,"Remove note {n} from task":`Ta bort anteckning {n} från uppgift`,"Remove paper":`Ta bort artikel`,"Remove paper?":`Ta bort artikel?`,"Remove suggestion {n} from task":`Ta bort förslag {n} från uppgift`,"Remove the {name} skill":`Ta bort färdigheten {name}`,"Remove this paper and its tasks, conversations and notes from Papilot?":`Ta bort den här artikeln och dess uppgifter, konversationer och anteckningar från Papilot?`,"Remove {device}":`Ta bort {device}`,"Remove {name}":`Ta bort {name}`,"Remove…":`Ta bort…`,"Removing…":`Tar bort…`,"Rename {name}":`Byt namn på {name}`,Renamed:`Namn ändrat`,"Rename…":`Byt namn…`,"Repair summary":`Sammanfattning av reparation`,"Repairs are saved as uncommitted changes. Review them in the paper’s file changes.":`Reparationer sparas som ej incheckade ändringar. Granska dem i artikelns filändringar.`,"Reply in the chat to continue. A PDF comparison is needed only if the manuscript changes.":`Svara i chatten för att fortsätta. En PDF-jämförelse behövs bara om manuskriptet ändras.`,"Reply to {agent}":`Svara {agent}`,"Report a bug or suggest an improvement.":`Rapportera en bugg eller föreslå en förbättring.`,"Reported {n} times":`Rapporterad {n} gånger`,"Repository path":`Sökväg till arkiv`,"Request a revision":`Begär en revidering`,"Request failed. Please try again.":`Begäran misslyckades. Försök igen.`,"Reset appearance":`Återställ utseende`,"Resize chat panel":`Ändra storlek på chattpanelen`,"Resize manuscript panel":`Ändra storlek på manuskriptpanelen`,"Resolve undefined references, overfull boxes and other build warnings":`Åtgärda odefinierade referenser, överfulla rutor och andra byggvarningar`,"Resolve with {agent}":`Åtgärda med {agent}`,"Restarting Papilot. This page will reconnect automatically; your drafts are kept.":`Startar om Papilot. Den här sidan återansluter automatiskt och dina utkast behålls.`,"Restarting…":`Startar om…`,"Restore default shortcuts":`Återställ standardgenvägar`,"Restore task":`Återställ uppgift`,Retry:`Försök igen`,"Retry build":`Försök bygga igen`,"Retry compilation":`Försök kompilera igen`,"Retry connection":`Försök ansluta igen`,"Retry conversation":`Försök konversationen igen`,"Retry deletion":`Försök ta bort igen`,"Retry deletion…":`Försök ta bort igen…`,"Retry linking changes":`Försök länka ändringar igen`,"Retry title generation":`Försök generera titel igen`,"Retry update":`Försök uppdatera igen`,"Retry uploading {name}":`Försök ladda upp {name} igen`,"Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.":`Återanvändbara instruktioner för dina revideringar. Välj en färdighet från /-menyn när du startar en uppgift.`,Review:`Granskning`,"Review PDF notes":`Granska PDF-anteckningar`,"Review and chat side by side":`Granskning och chatt sida vid sida`,"Review complete":`Granskning slutförd`,"Review copy":`Granskningskopia`,"Review decisions":`Granskningsbeslut`,"Review feedback":`Granskningsåterkoppling`,"Review navigation":`Granskningsnavigering`,"Review note: {comment}":`Granskningsanteckning: {comment}`,"Review notes":`Granskningsanteckningar`,"Review notes ({n})":`Granskningsanteckningar ({n})`,"Review preferences":`Granskningsinställningar`,"Review ready":`Granskning redo`,"Review ready · {n} change to decide":`Granskning redo · {n} ändring att ta ställning till`,"Review ready · {n} changes to decide":`Granskning redo · {n} ändringar att ta ställning till`,"Review shortcut keyboard":`Tangentbordsgenvägar för granskning`,"Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.":`Granskningsgenvägar fungerar när PDF-granskningen är i fokus. De pausas medan du skriver eller markerar text. Ändringar sparas i den här webbläsaren.`,"Review the merged result":`Granska det sammanfogade resultatet`,"Review, {n} to decide":`Granskning, {n} att ta ställning till`,"Revise for reviewer comments and draft a point-by-point reply":`Revidera utifrån granskarkommentarer och utforma ett svar punkt för punkt`,"Revision requested":`Revidering begärd`,"Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.":`Kör Papilot och dess agenter i en isolerad container som Docker för att begränsa åtkomsten; monterade filer förblir tillgängliga.`,"Run command":`Kör kommando`,"Run papilot codex login on the host. It installs a supported Codex CLI when needed.":`Kör papilot codex login på värddatorn. Det installerar ett Codex CLI som stöds vid behov.`,"Run tool":`Kör verktyg`,Running:`Körs`,Runtime:`Körmiljö`,"Same DOI as {keys}.":`Samma DOI som {keys}.`,"Same title as {keys}.":`Samma titel som {keys}.`,Save:`Spara`,"Save accepted changes":`Spara godkända ändringar`,"Save to":`Spara i`,Saved:`Sparad`,"Saved folder":`Sparad mapp`,"Saving…":`Sparar…`,Search:`Sök`,"Search archived tasks…":`Sök i arkiverade uppgifter…`,"Search components or licenses":`Sök komponenter eller licenser`,"Search components or licenses…":`Sök komponenter eller licenser…`,"Search models":`Sök modeller`,"Search settings":`Sök i inställningar`,"Search skills":`Sök färdigheter`,"Search task titles and instructions":`Sök i uppgiftstitlar och instruktioner`,"Search tasks":`Sök uppgifter`,"Search tasks…":`Sök uppgifter…`,"Search the PDF":`Sök i PDF:en`,"See license notice":`Se licensmeddelande`,"See what changed in each release.":`Se vad som har ändrats i varje version.`,"Select a skill or create your own.":`Välj en färdighet eller skapa en egen.`,"Select all notes for this task":`Markera alla anteckningar för denna uppgift`,"Select all {group} notes for this task":`Markera alla {group}-anteckningar för denna uppgift`,"Send (Enter) · New line (Shift+Enter)":`Skicka (Enter) · Ny rad (Shift+Enter)`,"Send a test notification":`Skicka en testavisering`,"Send annotations":`Skicka annoteringar`,"Send annotations to the agent":`Skicka annoteringar till agenten`,"Send feedback":`Skicka återkoppling`,"Send instructions":`Skicka instruktioner`,"Send it to {name} yourself. It works once, within 7 days.":`Skicka den till {name} själv. Den fungerar en gång inom 7 dagar.`,"Send the review comment being written.":`Skicka granskningskommentaren som skrivs.`,"Send your review decisions and comments to the agent":`Skicka dina granskningsbeslut och kommentarer till agenten`,"Send {n} note":`Skicka {n} anteckning`,"Send {n} note to the agent":`Skicka {n} anteckning till agenten`,"Send {n} notes":`Skicka {n} anteckningar`,"Send {n} notes to the agent":`Skicka {n} anteckningar till agenten`,"Sending feedback…":`Skickar återkoppling…`,"Sending…":`Skickar…`,"Sent. If nothing appeared, allow notifications for this browser in your system settings.":`Skickat. Om inget visades, tillåt aviseringar för den här webbläsaren i systeminställningarna.`,"Set ZHIPU_API_KEY for open.bigmodel.cn, or ZAI_API_KEY for api.z.ai, in the environment that starts Papilot. Then restart Papilot.":`Ange ZHIPU_API_KEY för open.bigmodel.cn, eller ZAI_API_KEY för api.z.ai, i miljön som startar Papilot. Starta sedan om Papilot.`,"Set up on the host":`Konfigurera på värden`,"Set up sharing":`Konfigurera delning`,"Set up this agent":`Konfigurera denna agent`,Settings:`Inställningar`,"Settings categories":`Inställningskategorier`,"Setup guide":`Konfigurationsguide`,"Setup required":`Konfiguration krävs`,"Several TeX files were found. Check the selected main document before continuing.":`Flera TeX-filer hittades. Kontrollera det valda huvuddokumentet innan du fortsätter.`,"Share your papers and manage the people you work with.":`Dela dina artiklar och hantera personerna du samarbetar med.`,Sharing:`Delning`,"Sharing is not sandboxed":`Delning körs inte i sandlåda`,Shorten:`Korta ned`,Show:`Visa`,"Show LaTeX source":`Visa LaTeX-källkod`,"Show archived tasks":`Visa arkiverade uppgifter`,"Show current tasks":`Visa aktuella uppgifter`,"Show desktop notifications while Papilot is in the background.":`Visa skrivbordsaviseringar när Papilot är i bakgrunden.`,"Show fewer models":`Visa färre modeller`,"Show note {n} on the page":`Visa anteckning {n} på sidan`,"Show note {n}: {comment}":`Visa anteckning {n}: {comment}`,"Show or hide the source for the current change.":`Visa eller dölj källkoden för den aktuella ändringen.`,"Show problems":`Visa problem`,"Show suggestion {n} on the page":`Visa förslag {n} på sidan`,"Show task list":`Visa uppgiftslista`,"Show {n} more models":`Visa {n} modeller till`,"Showing the last update.":`Visar den senaste uppdateringen.`,"Showing the latest {n} commits. Older history is not shown.":`Visar de {n} senaste commits. Äldre historik visas inte.`,"Sign in as the user running Papilot, then restart Papilot.":`Logga in som den användare som kör Papilot och starta sedan om Papilot.`,"Sign in from anywhere":`Logga in varifrån som helst`,"Sign in on the Papilot host to continue.":`Logga in på Papilot-värden för att fortsätta.`,"Sign in to Papilot":`Logga in på Papilot`,"Sign in to continue.":`Logga in för att fortsätta.`,"Sign in with a passkey":`Logga in med en lösenordsnyckel`,"Sign out":`Logga ut`,"Sign out everywhere":`Logga ut överallt`,"Sign-in required":`Inloggning krävs`,"Signed in":`Inloggad`,"Signed in · {label}":`Inloggad · {label}`,"Signing in was cancelled. Try again when you are ready.":`Inloggningen avbröts. Försök igen när du är redo.`,"Skill ID":`Färdighets-ID`,"Skill content (Markdown)":`Färdighetsinnehåll (Markdown)`,"Skill content must contain 1–20,000 characters.":`Färdighetsinnehållet måste innehålla 1–20 000 tecken.`,"Skill content view":`Vy för färdighetsinnehåll`,"Skill icon":`Färdighetsikon`,"Skill name":`Färdighetsnamn`,"Skill scope":`Färdighetens omfattning`,"Skill: {name}":`Färdighet: {name}`,Skills:`Färdigheter`,Slate:`Skiffer`,"Slate blue":`Skifferblå`,"Some note positions need confirmation. Their original text and comments are kept.":`Vissa anteckningspositioner behöver bekräftas. Deras ursprungliga text och kommentarer behålls.`,Source:`Källkod`,Sparkles:`Gnistor`,Spelling:`Stavning`,Split:`Delad`,Stable:`Stabil`,"Stage all changes":`Köa alla ändringar`,"Stage changes":`Förbered ändringar`,"Stage {path}":`Köa {path}`,Staged:`Förberedda`,"Staged changes":`Förberedda ändringar`,"Standard shortcuts":`Standardgenvägar`,"Start task":`Starta uppgift`,"Start task (Enter)":`Starta uppgift (Enter)`,"Status unavailable":`Status inte tillgänglig`,Stone:`Sten`,"Submitting…":`Skickar…`,"Suggest an agent":`Föreslå en agent`,"Suggested fix":`Föreslagen åtgärd`,"Suggestion ignored.":`Förslag ignorerat.`,"Suggestion {n}: {comment}":`Förslag {n}: {comment}`,"Suggestions stay in this task until you copy them to the manuscript":`Förslag stannar i den här uppgiften tills du kopierar dem till manuskriptet`,"Support more":`Stöd fler`,System:`System`,"Task actions for {title}":`Uppgiftsåtgärder för {title}`,"Task added: {title}":`Uppgift tillagd: {title}`,"Task errors":`Uppgiftsfel`,"Task finished":`Uppgift slutförd`,"Task list":`Uppgiftslista`,"Task saved. Waiting for an available {agent} session.":`Uppgift sparad. Väntar på en ledig {agent}-session.`,Tasks:`Uppgifter`,"The PDF could not be opened: {error}":`PDF-filen kunde inte öppnas: {error}`,"The PDF review could not be loaded.":`PDF-granskningen kunde inte läsas in.`,"The PDF review is taking longer than expected.":`PDF-granskningen tar längre tid än väntat.`,"The agent could not connect. Check its setup and try again.":`Agenten kunde inte ansluta. Kontrollera konfigurationen och försök igen.`,"The assistant is fixing compilation…":`Assistenten åtgärdar kompileringen…`,"The browser and the Papilot server may run on different computers. Background services can also use a different PATH or user account from your terminal.":`Webbläsaren och Papilot-servern kan köras på olika datorer. Bakgrundstjänster kan också använda en annan PATH eller ett annat användarkonto än din terminal.`,"The connection is taking too long. Check your network and try again.":`Anslutningen tar för lång tid. Kontrollera ditt nätverk och försök igen.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`Utvecklingsbygget kräver minst 2 GB ledigt diskutrymme. Frigör utrymme och försök igen.`,"The diff is too long to show in full.":`Diffen är för lång för att visas i sin helhet.`,"The file “{name}” is empty.":`Filen ”{name}” är tom.`,"The first build is still running.":`Det första bygget körs fortfarande.`,"The last connection attempt could not find a runnable {command} CLI in the Papilot server environment. It may still be installed in another location or for another user.":`Det senaste anslutningsförsöket kunde inte hitta ett körbart {command}-CLI i Papilot-servermiljön. Det kan ändå vara installerat på en annan plats eller för en annan användare.`,"The last connection attempt found neither CURSOR_API_KEY nor a saved Cursor SDK login for the user running Papilot. Signing in to the Cursor desktop app or CLI does not configure this SDK.":`Det senaste anslutningsförsöket hittade varken CURSOR_API_KEY eller en sparad Cursor SDK-inloggning för användaren som kör Papilot. Att logga in i skrivbordsappen eller CLI för Cursor konfigurerar inte detta SDK.`,"The last connection attempt found neither Claude Code nor supported API credentials in the Papilot server environment.":`Det senaste anslutningsförsöket hittade varken Claude Code eller API-inloggningsuppgifter som stöds i Papilot-servermiljön.`,"The last connection attempt found neither ZHIPU_API_KEY nor ZAI_API_KEY in the Papilot server environment. A Claude login or a GLM website login does not supply these keys.":`Det senaste anslutningsförsöket hittade varken ZHIPU_API_KEY eller ZAI_API_KEY i Papilot-servermiljön. En Claude-inloggning eller en inloggning på GLM-webbplatsen tillhandahåller inte dessa nycklar.`,"The latest changes did not compile. This is the last PDF that did.":`De senaste ändringarna kunde inte kompileras. Det här är den senaste PDF-filen som kunde det.`,"The latest configuration check found this agent. Reconnect to refresh its live status.":`Den senaste konfigurationskontrollen hittade den här agenten. Anslut igen för att uppdatera dess aktuella status.`,"The manuscript did not compile.":`Manuskriptet kunde inte kompileras.`,"The merge stopped at conflicts.":`Sammanslagningen stoppades vid konflikter.`,"The merge was abandoned.":`Sammanslagningen avbröts.`,"The paper needs a little help":`Artikeln behöver lite hjälp`,"The position in the new PDF could not be confirmed. The original text and note are kept.":`Positionen i den nya PDF-filen kunde inte bekräftas. Den ursprungliga texten och anteckningen behålls.`,"The request timed out and may still be processing. Check the task status before retrying.":`Begäran tog för lång tid och bearbetas eventuellt fortfarande. Kontrollera uppgiftens status innan du försöker igen.`,"The skill must contain instructions.":`Färdigheten måste innehålla instruktioner.`,"The update did not finish. Your current version is still available. You can retry here.":`Uppdateringen slutfördes inte. Din nuvarande version är fortfarande tillgänglig. Du kan försöka igen här.`,"The update is ready. Waiting for tasks and PDF builds to finish before restarting.":`Uppdateringen är klar. Väntar på att uppgifter och PDF-byggen ska slutföras före omstart.`,"The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.":`Den uppdaterade versionen startade inte, så Papilot använder versionen som ingår i appen. Försök att uppdatera igen eller ladda ner den senaste skrivbordsappen.`,"Their name, as others will see it":`Deras namn, som andra kommer att se det`,Theme:`Tema`,"These keep the usual browser and text-editing behavior.":`Dessa behåller det vanliga beteendet för webbläsare och textredigering.`,"Third-party licenses":`Tredjepartslicenser`,"This PDF has no bookmarks.":`Den här PDF-filen har inga bokmärken.`,"This agent has not reported a model list. Its configured default can still be used.":`Den här agenten har inte rapporterat någon modellista. Dess konfigurerade standardval kan fortfarande användas.`,"This browser cannot show notifications.":`Den här webbläsaren kan inte visa aviseringar.`,"This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.":`Den här webbläsaren kan inte använda lösenordsnycklar. Öppna den här sidan i en aktuell version av Safari, Chrome, Edge eller Firefox.`,"This browser could not enable notifications.":`Den här webbläsaren kunde inte aktivera aviseringar.`,"This browser could not show the notification.":`Den här webbläsaren kunde inte visa aviseringen.`,"This conversation has no manuscript changes.":`Den här konversationen har inga manuskriptändringar.`,"This file is not tracked by Git, so it cannot be recovered.":`Den här filen spåras inte av Git, så den kan inte återställas.`,"This invite link is incomplete. Copy the whole link and open it again.":`Den här inbjudningslänken är ofullständig. Kopiera hela länken och öppna den igen.`,"This key is reserved for the browser or text editing. Choose another shortcut.":`Den här tangenten är reserverad för webbläsaren eller textredigering. Välj en annan genväg.`,"This model uses its own reasoning settings.":`Den här modellen använder sina egna resonemangsinställningar.`,"This paper":`Den här artikeln`,"This paper may need XeLaTeX. Change the engine below and retry.":`Den här artikeln kan behöva XeLaTeX. Byt motor nedan och försök igen.`,"This paper names no .bib file with {bibliography} or {addbibresource}.":`Den här artikeln anger ingen .bib-fil med {bibliography} eller {addbibresource}.`,"This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.":`Det här avsnittet innehåller tidigare redigeringar som inte har checkats in. Du kan checka in det granskade resultatet tillsammans eller tillämpa det utan att checka in.`,"This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.":`Detta tar permanent bort uppgiften från Papilot, inklusive dess konversation, arbetskatalog och PDF-granskningsfiler. Oaccepterade ändringar och sparade kommentarer kasseras, och granskningsbeslut kan inte längre ångras.`,"This skill changed on disk. Reload it before deleting.":`Den här färdigheten ändrades på disken. Läs in den igen innan du tar bort den.`,"This skill changed on disk. Reload it before saving.":`Den här färdigheten ändrades på disken. Läs in den igen innan du sparar.`,"This skill no longer exists. Refresh the list.":`Den här färdigheten finns inte längre. Uppdatera listan.`,"This skill was removed on disk. Reload the list before saving.":`Den här färdigheten togs bort på disken. Läs in listan igen innan du sparar.`,"This step needs attention":`Det här steget kräver uppmärksamhet`,"This task did not change the manuscript. Read the answer in the chat.":`Den här uppgiften ändrade inte manuskriptet. Läs svaret i chatten.`,"This task is being deleted":`Den här uppgiften tas bort`,"This task is reserved until its worktree cleanup is confirmed. Use Retry deletion if the connection was interrupted.":`Den här uppgiften är reserverad tills rensningen av dess arbetskatalog har bekräftats. Använd Försök ta bort igen om anslutningen bröts.`,"This version needs the latest desktop app. Download it from GitHub Releases.":`Den här versionen kräver den senaste skrivbordsappen. Ladda ner den från GitHub Releases.`,"This worktree’s HEAD is outside the displayed history.":`Den här arbetskatalogens HEAD ligger utanför den visade historiken.`,Title:`Titel`,Tools:`Verktyg`,Tracking:`Spårning`,"Type changed":`Typ ändrad`,"Typesetting and other remarks":`Typsättning och övriga anmärkningar`,"Typesetting with LaTeX, pass {n}…":`Typsätter med LaTeX, omgång {n}…`,Unavailable:`Inte tillgänglig`,"Uncommitted changes in the PDF":`Ej committade ändringar i PDF:en`,"Undefined citation":`Odefinierad citering`,"Undefined reference":`Odefinierad referens`,Undo:`Ångra`,"Undo review decision":`Ångra granskningsbeslut`,"Undo the last review decision or revert.":`Ångra det senaste granskningsbeslutet eller återställ.`,"Undo typing, a deleted note, or the last review decision, depending on focus.":`Ångra inmatning, en borttagen anteckning eller det senaste granskningsbeslutet, beroende på fokus.`,"Unify terms, notation, spelling and references":`Gör termer, notation, stavning och referenser enhetliga`,Unknown:`Okänd`,"Unlimited credits":`Obegränsade krediter`,"Unplaced suggestions":`Oplacerade förslag`,"Unsaved changes":`Osparade ändringar`,"Unstage all changes":`Ångra förberedning av alla ändringar`,"Unstage changes":`Ångra förberedning av ändringar`,"Unstage {path}":`Ångra förberedning av {path}`,"Unstaged changes are lost for good and untracked files are deleted. Staged changes stay.":`Oförberedda ändringar går förlorade för gott och ospårade filer tas bort. Förberedda ändringar finns kvar.`,"Unstaged changes are lost for good. Staged changes stay.":`Oförberedda ändringar går förlorade för gott. Förberedda ändringar finns kvar.`,Untracked:`Ospårad`,"Untracked build output. Add to .gitignore adds:":`Ospårad byggutdata. Lägg till i .gitignore lägger till:`,"Up to date":`Uppdaterad`,"Up to date with the remote.":`Uppdaterad mot fjärrarkivet.`,"Update Papilot":`Uppdatera Papilot`,"Update available":`Uppdatering tillgänglig`,"Update channel":`Uppdateringskanal`,"Update failed":`Uppdatering misslyckades`,"Update now":`Uppdatera nu`,"Update ready":`Uppdatering klar`,"Update to {version}":`Uppdatera till {version}`,Updates:`Uppdateringar`,"Updating…":`Uppdaterar…`,"Upload failed. Please retry.":`Uppladdningen misslyckades. Försök igen.`,"Uploading…":`Laddar upp…`,"Usage & limits":`Användning och gränser`,"Usage limit":`Användningsgräns`,"Usage not reported":`Användning rapporteras inte`,"Use a hex color, like #2563EB.":`Använd en hexfärg, t.ex. #2563EB.`,"Use lowercase letters, numbers and hyphens. This is also the / command name.":`Använd små bokstäver, siffror och bindestreck. Detta är även namnet på /-kommandot.`,"Use the passkey you created from your invite link.":`Använd inloggningsnyckeln som du skapade via din inbjudningslänk.`,"Used for new tasks. Saved in this browser.":`Används för nya uppgifter. Sparas i den här webbläsaren.`,"User guide":`Användarguide`,"Uses Claude Code or the Claude Agent SDK with ZHIPU_API_KEY or ZAI_API_KEY.":`Använder Claude Code eller Claude Agent SDK med ZHIPU_API_KEY eller ZAI_API_KEY.`,"Uses Claude Code when installed, or the Claude Agent SDK with API credentials.":`Använder Claude Code om det är installerat, eller Claude Agent SDK med API-inloggningsuppgifter.`,"Uses DeepSeek Harness and the providers configured in dsh.":`Använder DeepSeek Harness och de leverantörer som konfigurerats i dsh.`,"Uses GitHub Copilot CLI and its saved login or configured provider through ACP.":`Använder GitHub Copilot CLI och dess sparade inloggning eller konfigurerade leverantör via ACP.`,"Uses Grok Build CLI through ACP with its saved login or configured API credentials.":`Använder Grok Build CLI via ACP med dess sparade inloggning eller konfigurerade API-uppgifter.`,"Uses Kimi Code CLI and its saved login through ACP.":`Använder Kimi Code CLI och dess sparade inloggning via ACP.`,"Uses OpenCode with the providers and models you have connected.":`Använder OpenCode med de leverantörer och modeller du har anslutit.`,"Uses Qwen Code and its saved login through ACP.":`Använder Qwen Code och dess sparade inloggning via ACP.`,"Uses a compatible local Codex CLI. Papilot installs its own copy when needed.":`Använder ett kompatibelt lokalt Codex CLI. Papilot installerar en egen kopia vid behov.`,"Uses the Cursor SDK with CURSOR_API_KEY. Papilot installs the SDK on first use.":`Använder Cursor SDK med CURSOR_API_KEY. Papilot installerar SDK:t vid första användningen.`,"Uses the local Antigravity CLI and its saved Google login.":`Använder det lokala Antigravity CLI och dess sparade Google-inloggning.`,Verified:`Verifierad`,Version:`Version`,"Version history":`Versionshistorik`,"View & help":`Vy och hjälp`,"View changes for this note":`Visa ändringar för denna anteckning`,"View changes included in this commit":`Visa ändringar som ingår i den här incheckningen`,"View details":`Visa detaljer`,"View installation, account, and usage":`Visa installation, konto och användning`,"View {n} review suggestion":`Visa {n} granskningsförslag`,"View {n} review suggestions":`Visa {n} granskningsförslag`,"Viewed the PDF":`Visade PDF:en`,"Viewed the PDF: {places}":`Visade PDF:en: {places}`,"Visual style":`Visuell stil`,"Wait for the PDF build to finish before deleting this task.":`Vänta tills PDF-bygget är klart innan du tar bort denna uppgift.`,"Wait for the PDF to compile.":`Vänta tills PDF:en har kompilerats.`,"Waiting for your passkey…":`Väntar på din inloggningsnyckel…`,Warning:`Varning`,Warnings:`Varningar`,"Weekly limit":`Veckogräns`,"What are we revising next?":`Vad reviderar vi härnäst?`,"What can invited people do?":`Vad kan inbjudna personer göra?`,"What changed since the last commit, to stage, revert and commit change by change":`Vad som har ändrats sedan senaste incheckningen, för att köa, återställa och checka in ändring för ändring`,"What does this skill help with?":`Vad hjälper denna färdighet till med?`,"What is staged, in {n} file:":`Vad som har köats, i {n} fil:`,"What is staged, in {n} files:":`Vad som har köats, i {n} filer:`,"What should change here?":`Vad ska ändras här?`,"What should change in each color group?":`Vad ska ändras i varje färggrupp?`,"What should change in this group?":`Vad ska ändras i denna grupp?`,"What this task accepted, in {n} file:":`Vad denna uppgift godkände, i {n} fil:`,"What this task accepted, in {n} files:":`Vad denna uppgift godkände, i {n} filer:`,"When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.":`När en ändring lägger till eller redigerar en referenspost slås dess titel, författare, år och DOI upp i Crossref, DBLP och arXiv. Ingenting annat från din artikel skickas.`,"With review feedback":`Med granskningsåterkoppling`,Workspace:`Arbetsyta`,"Workspace view":`Arbetsytevy`,Worktrees:`Arbetskataloger`,"Write a commit message for the chosen files with {agent}":`Skriv ett commit-meddelande för de valda filerna med {agent}`,"Write a note…":`Skriv en anteckning…`,"Write feedback on the current proposed change.":`Skriv återkoppling på den aktuella föreslagna ändringen.`,"Writing the PDF…":`Skriver PDF-filen…`,Year:`År`,Yellow:`Gul`,"You are offline. Your draft is kept in this browser.":`Du är offline. Ditt utkast sparas i den här webbläsaren.`,"You are using the latest version on this channel.":`Du använder den senaste versionen på den här kanalen.`,"You checked this entry yourself.":`Du kontrollerade den här posten själv.`,"You sent review feedback, {time}":`Du skickade granskningsåterkoppling, {time}`,"You, {time}":`Du, {time}`,"Your note":`Din anteckning`,"Your paper compiled successfully. It is ready for editing.":`Din artikel kompilerades utan problem. Den är redo att redigeras.`,"Your review keyboard":`Ditt granskningstangentbord`,Yours:`Dina`,Zoom:`Zooma`,"Zoom in":`Zooma in`,"Zoom in (⌘+)":`Zooma in (⌘+)`,"Zoom out":`Zooma ut`,"Zoom out (⌘−)":`Zooma ut (⌘−)`,"added {time}":`lades till {time}`,"another entry has the same key.":`en annan post har samma nyckel.`,"build error":`kompileringsfel`,clean:`ren`,detached:`frånkopplad`,"detached HEAD":`frånkopplad HEAD`,"edited {file}":`redigerade {file}`,"edited {n} files":`redigerade {n} filer`,"from {name}":`från {name}`,"it is not cited.":`den är inte citerad.`,"just now":`nyss`,"no record in Crossref, DBLP or arXiv matches it.":`ingen post i Crossref, DBLP eller arXiv matchar den.`,nothing:`ingenting`,now:`nu`,"or select text to annotate":`eller markera text för att kommentera`,"p. {page}":`s. {page}`,"possibly the same work as {keys} (same title).":`möjligen samma verk som {keys} (samma titel).`,"ran {n} command":`körde {n} kommando`,"ran {n} commands":`körde {n} kommandon`,"resets in {hours} h {minutes} min":`återställs om {hours} tim {minutes} min`,"resets in {minutes} min":`återställs om {minutes} min`,"resets now":`återställs nu`,"resets {time}":`återställs {time}`,small:`liten`,"the same work as {keys} (same DOI).":`samma verk som {keys} (samma DOI).`,"used {n} tool":`använde {n} verktyg`,"used {n} tools":`använde {n} verktyg`,"used {time}":`användes {time}`,"viewed the PDF":`visade PDF:en`,"{agent} conversation":`{agent}-konversation`,"{agent} details":`Detaljer för {agent}`,"{agent} finished":`{agent} är klar`,"{agent} is requesting permission for this action.":`{agent} begär behörighet för den här åtgärden.`,"{agent} is resolving…":`{agent} löser…`,"{agent} is unavailable":`{agent} är inte tillgänglig`,"{agent} is waiting for your approval":`{agent} väntar på ditt godkännande`,"{agent} is working":`{agent} arbetar`,"{agent} is working on this task":`{agent} arbetar med den här uppgiften`,"{agent} is working · new instructions run next":`{agent} arbetar · nya instruktioner körs härnäst`,"{agent} is writing a commit message…":`{agent} skriver ett commit-meddelande…`,"{agent} needs your input":`{agent} behöver ditt svar`,"{agent} on the merge":`{agent} för sammanslagningen`,"{agent} usage":`{agent}-användning`,"{agent} usage details":`Användningsdetaljer för {agent}`,"{agent} was not found on this computer. Install or set it up, then select Reconnect.":`{agent} hittades inte på den här datorn. Installera eller konfigurera den och välj sedan Återanslut.`,"{ahead} ahead · {behind} behind":`{ahead} före · {behind} efter`,"{branch} and {upstream} have both changed. Merge brings in the remote commits.":`Både {branch} och {upstream} har ändrats. Sammanslagning hämtar in fjärr-commits.`,"{cite} ({places}) has no entry with this key.":`{cite} ({places}) saknar post med den här nyckeln.`,"{command} was not found by Papilot.":`{command} hittades inte av Papilot.`,"{current} of {total}":`{current} av {total}`,"{differences} (record: {url}).":`{differences} (post: {url}).`,"{field} is {bib} but {source} has {record}":`{field} är {bib} men {source} har {record}`,"{field}: {bib} here, {record} in {source}":`{field}: {bib} här, {record} i {source}`,"{inviter} invited you to Papilot. You will appear as {name}.":`{inviter} bjöd in dig till Papilot. Du kommer att visas som {name}.`,"{inviter} invited you to work on {papers}. You will appear as {name}.":`{inviter} bjöd in dig att arbeta med {papers}. Du kommer att visas som {name}.`,"{key} ({place}): {problems}":`{key} ({place}): {problems}`,"{name} (you)":`{name} (du)`,"{name} sent review feedback, {time}":`{name} skickade granskningsåterkoppling, {time}`,"{name} used":`{name} använde`,"{name}, {time}":`{name}, {time}`,"{n} accepted":`{n} godkända`,"{n} active task":`{n} aktiv uppgift`,"{n} active tasks":`{n} aktiva uppgifter`,"{n} build file":`{n} byggfil`,"{n} build files":`{n} byggfiler`,"{n} change to decide":`{n} ändring att ta ställning till`,"{n} change to review":`{n} ändring att granska`,"{n} changed":`{n} ändrade`,"{n} changes to decide":`{n} ändringar att ta ställning till`,"{n} changes to review":`{n} ändringar att granska`,"{n} checked by you":`{n} kontrollerade av dig`,"{n} comment":`{n} kommentar`,"{n} comments":`{n} kommentarer`,"{n} compilation error":`{n} kompileringsfel`,"{n} compilation errors":`{n} kompileringsfel`,"{n} compilation warning":`{n} kompileringsvarning`,"{n} compilation warnings":`{n} kompileringsvarningar`,"{n} conflicts":`{n} konflikter`,"{n} could not be checked":`{n} kunde inte kontrolleras`,"{n} credits":`{n} krediter`,"{n} differ":`{n} skiljer sig åt`,"{n} entries":`{n} poster`,"{n} entry":`{n} post`,"{n} failed":`{n} misslyckades`,"{n} file staged":`{n} fil köad för commit`,"{n} file still has conflicts.":`{n} fil har fortfarande konflikter.`,"{n} files staged":`{n} filer köade för commit`,"{n} files still have conflicts.":`{n} filer har fortfarande konflikter.`,"{n} location":`{n} plats`,"{n} locations":`{n} platser`,"{n} new commit on {upstream}.":`{n} ny commit på {upstream}.`,"{n} new commits on {upstream}.":`{n} nya commits på {upstream}.`,"{n} not found":`{n} hittades inte`,"{n} notes on the PDF":`{n} anteckningar i PDF-filen`,"{n} rejected":`{n} avvisade`,"{n} review update not sent yet":`{n} granskningsuppdatering har inte skickats än`,"{n} review update will be sent with this message":`{n} granskningsuppdatering skickas med detta meddelande`,"{n} review updates not sent yet":`{n} granskningsuppdateringar har inte skickats än`,"{n} review updates will be sent with this message":`{n} granskningsuppdateringar skickas med detta meddelande`,"{n} staged":`{n} köade för commit`,"{n} undone":`{n} ångrade`,"{n} unstaged":`{n} ej köade för commit`,"{n} untracked":`{n} ospårade`,"{n} verified":`{n} verifierade`,"{n}-day limit":`{n}-dagarsgräns`,"{n}-hour limit":`{n}-timmarsgräns`,"{n}-minute limit":`{n}-minutersgräns`,"{n}d":`{n} d`,"{n}h":`{n} tim`,"{n}m":`{n} min`,"{selected} / {total} locations selected":`{selected} / {total} platser valda`,"{shown} of {total} components":`{shown} av {total} komponenter`,"{sources} could not be reached.":`{sources} kunde inte nås.`,"{time} ago":`för {time} sedan`,"{title} PDF change review":`Granskning av PDF-ändringar för {title}`,"{used}% used":`{used} % använt`},de={"A commit is already in progress. Wait for it to finish.":`En commit pågår redan. Vänta tills den är klar.`,"A commit is in progress. Try again when it finishes.":`En commit pågår. Försök igen när den är klar.`,"A review action is already in progress. Wait for it to finish.":`En granskningsåtgärd pågår redan. Vänta tills den är klar.`,"A selected PDF note is already being sent. Wait for that task to finish creating.":`En vald PDF-anteckning skickas redan. Vänta tills den uppgiften har skapats.`,"A selected PDF note is no longer available. Refresh the manuscript and try again.":`En vald PDF-anteckning är inte längre tillgänglig. Uppdatera manuskriptet och försök igen.`,"AI review accepts review instructions only. Start an editing task to send notes, skills or attachments.":`AI-granskning tar endast emot granskningsinstruktioner. Starta en redigeringsuppgift för att skicka anteckningar, färdigheter eller bilagor.`,"AI review creates PDF notes only. It cannot publish manuscript changes.":`AI-granskning skapar endast PDF-anteckningar. Den kan inte publicera ändringar i manuskriptet.`,"AI review has no manuscript changes to apply.":`AI-granskningen har inga manuskriptändringar att tillämpa.`,"AI review has no manuscript changes to deliver.":`AI-granskning har inga manuskriptändringar att leverera.`,"AI review uses manuscript PDF notes, not change decisions.":`AI-granskning använder PDF-anteckningar i manuskriptet, inte ändringsbeslut.`,"AI review uses the manuscript PDF. Start a separate editing task to send notes or attachments.":`AI-granskning använder manuskriptets PDF. Starta en separat redigeringsuppgift för att skicka anteckningar eller bilagor.`,"Accepted changes are already in the manuscript.":`Accepterade ändringar finns redan i manuskriptet.`,"An AI review comment is invalid. Ask the reviewer to retry.":`En kommentar i AI-granskningen är ogiltig. Be granskaren att försöka igen.`,"An AI review comment lists its PDF lines in reverse order. Ask the reviewer to put the start before the end.":`En kommentar i AI-granskningen anger sina PDF-rader i omvänd ordning. Be granskaren att placera början före slutet.`,"An AI review comment refers to an unknown PDF location. Ask the reviewer to retry using the supplied line IDs.":`En kommentar i AI-granskningen hänvisar till en okänd plats i PDF-filen. Be granskaren att försöka igen med de angivna rad-ID:na.`,"An AI review comment spans multiple PDF pages. Ask the reviewer to anchor it on a single page.":`En kommentar i AI-granskningen sträcker sig över flera PDF-sidor. Be granskaren att förankra den på en enda sida.`,"Another Papilot instance is already updating.":`En annan instans av Papilot uppdateras redan.`,"Answer every question before submitting.":`Besvara alla frågor innan du skickar in.`,"Attachment not found.":`Bilagan hittades inte.`,"Attachments must total 100 MB or less.":`Bilagor får totalt vara högst 100 MB.`,"Check for a newer release before updating.":`Sök efter en nyare version innan du uppdaterar.`,"Check out a branch before pushing.":`Checka ut en gren innan du pushar.`,"Check the task status before pausing this turn.":`Kontrollera uppgiftens status innan du pausar den här omgången.`,"Check the task status before sending more instructions.":`Kontrollera uppgiftens status innan du skickar fler instruktioner.`,"Choose Codex, Claude or GLM for AI review.":`Välj Codex, Claude eller GLM för AI-granskning.`,"Choose a ZIP smaller than 64 MB.":`Välj en ZIP-fil som är mindre än 64 MB.`,"Choose a file with a valid name.":`Välj en fil med ett giltigt namn.`,"Choose a folder smaller than 64 MB.":`Välj en mapp som är mindre än 64 MB.`,"Choose a supported LaTeX engine.":`Välj en LaTeX-motor som stöds.`,"Choose a valid update channel.":`Välj en giltig uppdateringskanal.`,"Choose an available model for this agent.":`Välj en tillgänglig modell för den här agenten.`,"Choose an entry to confirm.":`Välj en post att bekräfta.`,"Choose an existing TeX main file.":`Välj en befintlig TeX-huvudfil.`,"Choose between 1 and 5,000 files.":`Välj mellan 1 och 5 000 filer.`,"Choose one folder or ZIP.":`Välj en mapp eller en ZIP-fil.`,"Choose one of the offered answers.":`Välj ett av de givna svarsalternativen.`,"Choose stage, unstage or revert.":`Välj köa, avköa eller återställ.`,"Choose whether to archive or restore the task.":`Välj om du vill arkivera eller återställa uppgiften.`,"Claude Code did not list its models.":`Claude Code listade inte sina modeller.`,"Claude Code exited before listing its models.":`Claude Code avslutades innan modellerna listades.`,"Claude has not reported usage yet.":`Claude har inte rapporterat användning än.`,"Codex disconnected. Resume the task before retrying.":`Codex kopplades från. Återuppta uppgiften innan du försöker igen.`,"Codex is not connected.":`Codex är inte anslutet.`,"Commit the task first, then push from Git.":`Gör en commit för uppgiften först och pusha sedan från Git.`,"Confirm permanent task deletion before continuing.":`Bekräfta permanent borttagning av uppgiften innan du fortsätter.`,"Could not check for updates.":`Det gick inte att söka efter uppdateringar.`,"Could not check for updates. Try again when connected.":`Kunde inte söka efter uppdateringar. Försök igen när du är ansluten.`,"Could not complete the environment checks. Please try again.":`Det gick inte att slutföra miljökontrollerna. Försök igen.`,"Could not read the LaTeX installation.":`Det gick inte att läsa LaTeX-installationen.`,"Could not restart the background service.":`Det gick inte att starta om bakgrundstjänsten.`,"Deletion is already in progress. Wait for it to finish.":`Borttagning pågår redan. Vänta tills den är klar.`,"Describe the revision, choose a skill, or add a PDF note.":`Beskriv revideringen, välj en färdighet eller lägg till en PDF-anteckning.`,"Describe what to do with each selected color group.":`Beskriv vad som ska göras med varje vald färggrupp.`,"Download desktop updates from GitHub Releases.":`Ladda ner skrivbordsuppdateringar från GitHub Releases.`,"Enter a folder path.":`Ange en mappsökväg.`,"Enter a paper name under 120 characters.":`Ange ett artikelnamn med färre än 120 tecken.`,"Fast mode is not available for this model.":`Snabbläge är inte tillgängligt för den här modellen.`,"Files must be 25 MB or smaller.":`Filer får vara högst 25 MB.`,"Finish or abort the merge before committing other changes.":`Slutför eller avbryt sammanslagningen innan du checkar in andra ändringar.`,"Finish or abort the merge before discarding changes.":`Slutför eller avbryt sammanslagningen innan du förkastar ändringar.`,"Finish or abort the merge before staging other changes.":`Slutför eller avbryt sammanslagningen innan du förbereder andra ändringar.`,"Finish or abort the merge first.":`Slutför eller avbryt sammanslagningen först.`,"Finish or abort the merge in the Git panel before accepting, rejecting, or undoing changes.":`Slutför eller avbryt sammanslagningen i Git-panelen innan du godkänner, avvisar eller ångrar ändringar.`,"GLM does not report usage to Papilot.":`GLM rapporterar inte användning till Papilot.`,"Group instructions must refer to selected PDF notes.":`Gruppinstruktioner måste hänvisa till valda PDF-anteckningar.`,"Images must be 5 MB or smaller.":`Bilder får vara högst 5 MB.`,"Import not found.":`Importen hittades inte.`,"Invalid annotation group.":`Ogiltig anteckningsgrupp.`,"Invalid approval decision.":`Ogiltigt godkännandebeslut.`,"Invalid development revision.":`Ogiltig utvecklingsrevision.`,"Invalid development version.":`Ogiltig utvecklingsversion.`,"Invalid diagnostic report.":`Ogiltig diagnostikrapport.`,"Invalid file path in upload.":`Ogiltig filsökväg i uppladdningen.`,"Invalid file path.":`Ogiltig filsökväg.`,"Invalid model.":`Ogiltig modell.`,"Invalid note location.":`Ogiltig plats för anteckning.`,"Invalid reasoning effort.":`Ogiltig resonemangsnivå.`,"Invalid release information.":`Ogiltig utgåveinformation.`,"Invalid release version.":`Ogiltig utgåveversion.`,"Invalid save action.":`Ogiltig sparåtgärd.`,"Invalid task ID.":`Ogiltigt uppgifts-ID.`,"Invalid update activation.":`Ogiltig aktivering av uppdatering.`,"Invalid upload data.":`Ogiltiga uppladdningsdata.`,"Manage this suggestion in its AI review task, or copy it to the manuscript first.":`Hantera det här förslaget i dess AI-granskningsuppgift, eller kopiera det till manuskriptet först.`,"Missing update restart job.":`Omstartsjobb för uppdatering saknas.`,"No file has conflict markers left. Commit the merge.":`Ingen fil har konfliktmarkörer kvar. Commita sammanslagningen.`,"No merge is in progress.":`Ingen sammanslagning pågår.`,"No such file.":`Filen finns inte.`,"None of the chosen files is build output that can be ignored.":`Ingen av de valda filerna är byggutdata som kan ignoreras.`,"Not found":`Hittades inte`,"Note not found.":`Anteckningen hittades inte.`,"Only the model and its settings can be changed.":`Endast modellen och dess inställningar kan ändras.`,"Only the owner of this Papilot can do this.":`Endast ägaren av denna Papilot kan göra detta.`,"Open Papilot at its public address.":`Öppna Papilot på dess offentliga adress.`,"Paper name is too long.":`Artikelnamnet är för långt.`,"Paper project not found.":`Artikelprojektet hittades inte.`,"Papilot did not finish shutting down.":`Papilot avslutade inte nedstängningen.`,"Papilot is restarting after an update. Please wait a moment.":`Papilot startar om efter en uppdatering. Vänta ett ögonblick.`,"Papilot restarted. Retry compilation to continue this import.":`Papilot startades om. Försök kompilera igen för att fortsätta importen.`,"Pause Codex before building a review.":`Pausa Codex innan du bygger en granskning.`,"Pause the task and wait for its current work or review action to finish before deleting it. Resolve any uncertain action first.":`Pausa uppgiften och vänta tills dess pågående arbete eller granskningsåtgärd är klar innan du tar bort den. Åtgärda eventuella oklara åtgärder först.`,"Pause the task before accepting, rejecting, or undoing changes. Wait for any PDF build to finish.":`Pausa uppgiften innan du godkänner, avvisar eller ångrar ändringar. Vänta tills eventuella PDF-byggen är klara.`,"Pause this paper’s active tasks and wait for current work to finish before changing its path or removing it. Resolve any uncertain action first.":`Pausa artikelns aktiva uppgifter och vänta tills pågående arbete är klart innan du ändrar dess sökväg eller tar bort den. Åtgärda eventuella oklara åtgärder först.`,"Resolve the merge conflicts in the selected files before committing.":`Lös sammanslagningskonflikterna i de valda filerna innan du checkar in.`,"Restore this suggestion before copying it.":`Återställ det här förslaget innan du kopierar det.`,"Retry deletion to confirm this task was removed.":`Försök ta bort igen för att bekräfta att uppgiften har tagits bort.`,"Retry the pending delivery before sending more instructions.":`Försök igen med den väntande leveransen innan du skickar fler instruktioner.`,"Review resource not found.":`Granskningsresursen hittades inte.`,"Select a folder containing the paper.":`Välj en mapp som innehåller artikeln.`,"Select a valid paper to check.":`Välj en giltig artikel att kontrollera.`,"Select a valid paper.":`Välj en giltig artikel.`,"Select an existing review round and either the before or after PDF.":`Välj en befintlig granskningsomgång och antingen före- eller efter-PDF-filen.`,"Select at least one change.":`Välj minst en ändring.`,"Select at least one changed file to commit.":`Välj minst en ändrad fil att checka in.`,"Select at least one changed file.":`Välj minst en ändrad fil.`,"Select text or mark a region on the page first.":`Markera text eller ett område på sidan först.`,"Select the root directory of the Git repository.":`Välj rotkatalogen för Git-arkivet.`,"Select unsent PDF notes for this task.":`Välj oskickade PDF-anteckningar för den här uppgiften.`,"Select up to 10 valid attachments.":`Välj upp till 10 giltiga bilagor.`,"Select valid PDF notes for this task.":`Välj giltiga PDF-anteckningar för den här uppgiften.`,"Select valid review notes.":`Välj giltiga granskningsanteckningar.`,"Send attachments with a message, separately from review feedback.":`Skicka bilagor med ett meddelande, separat från granskningsåterkoppling.`,"Service tiers are only available for Codex.":`Tjänstenivåer är endast tillgängliga för Codex.`,"Set PAPILOT_ACCOUNT_ORIGIN to the public URL before inviting people.":`Ange PAPILOT_ACCOUNT_ORIGIN till den offentliga webbadressen innan du bjuder in personer.`,"Sign in to continue.":`Logga in för att fortsätta.`,"Sign-in is not set up on this Papilot.":`Inloggning är inte konfigurerad på denna Papilot.`,"Stage at least one change to commit.":`Förbered minst en ändring att checka in.`,"Stage at least one change.":`Förbered minst en ändring.`,"Start a new task to run the AI review skill on the current PDF.":`Starta en ny uppgift för att köra färdigheten för AI-granskning på den aktuella PDF-filen.`,"Start or resume the thread before starting a turn.":`Starta eller återuppta tråden innan du påbörjar en tur.`,"Task not found.":`Uppgiften hittades inte.`,"That file has no uncommitted changes.":`Den filen har inga icke incheckade ändringar.`,"That page is not part of the manuscript.":`Den sidan ingår inte i manuskriptet.`,"The AI review did not return valid annotations. Ask it to retry with the required JSON format.":`AI-granskningen returnerade inte giltiga anteckningar. Be den försöka igen med det begärda JSON-formatet.`,"The AI review response is incomplete or too long. Ask the reviewer to retry.":`Svaret från AI-granskningen är ofullständigt eller för långt. Be granskaren att försöka igen.`,"The PDF copy for this review is unavailable. Start a new AI review.":`PDF-kopian för den här granskningen är inte tillgänglig. Starta en ny AI-granskning.`,"The PDF is building. Wait for this build to finish.":`PDF-filen byggs. Vänta tills bygget är klart.`,"The PDF snapshot for this review is unavailable. Start a new AI review.":`PDF-ögonblicksbilden för den här granskningen är inte tillgänglig. Starta en ny AI-granskning.`,"The ZIP expands beyond 64 MB or 5,000 files.":`ZIP-filen packas upp till mer än 64 MB eller 5 000 filer.`,"The dev build needs at least 2 GB of free disk space. Free some space and retry.":`Utvecklingsbygget kräver minst 2 GB ledigt diskutrymme. Frigör utrymme och försök igen.`,"The development checkout does not match the requested commit.":`Utvecklingsutcheckningen matchar inte den begärda incheckningen.`,"The development checkout does not match the requested version.":`Utvecklingsutcheckningen matchar inte den begärda versionen.`,"The downloaded package does not match the requested release.":`Det nedladdade paketet matchar inte den begärda utgåvan.`,"The downloaded release is incomplete.":`Den nedladdade utgåvan är ofullständig.`,"The manuscript changed while copying this suggestion. Try again.":`Manuskriptet ändrades medan förslaget kopierades. Försök igen.`,"The new version could not be installed. Check the connection and available disk space, then retry.":`Den nya versionen kunde inte installeras. Kontrollera anslutningen och ledigt diskutrymme och försök sedan igen.`,"The new version did not pass its startup check. Your current version is still running.":`Den nya versionen klarade inte startkontrollen. Din nuvarande version körs fortfarande.`,"The new version did not restart successfully.":`Den nya versionen kunde inte startas om.`,"The owner cannot be removed.":`Ägaren kan inte tas bort.`,"The owner sees every paper.":`Ägaren ser varje artikel.`,"The paper configuration must contain a JSON object.":`Artikelkonfigurationen måste innehålla ett JSON-objekt.`,"The paper configuration must not be a symbolic link.":`Artikelkonfigurationen får inte vara en symbolisk länk.`,"The passkey could not be created. Try again.":`Lösenordsnyckeln kunde inte skapas. Försök igen.`,"The request origin does not match.":`Begärans ursprung stämmer inte överens.`,"The review action is still being checked. Wait for it to finish.":`Granskningsåtgärden kontrolleras fortfarande. Vänta tills den är klar.`,"The review could not be loaded. Try again.":`Granskningen kunde inte läsas in. Försök igen.`,"The review engine could not confirm this action. Check again when it is available.":`Granskningsmotorn kunde inte bekräfta den här åtgärden. Kontrollera igen när den är tillgänglig.`,"The review engine could not confirm this action. Select Check status before continuing.":`Granskningsmotorn kunde inte bekräfta den här åtgärden. Välj Kontrollera status innan du fortsätter.`,"The review engine could not confirm this task’s cleanup status.":`Granskningsmotorn kunde inte bekräfta rensningsstatusen för den här uppgiften.`,"The review engine did not confirm task deletion.":`Granskningsmotorn bekräftade inte borttagningen av uppgiften.`,"The review engine returned an unexpected response. Select Check status before continuing.":`Granskningsmotorn returnerade ett oväntat svar. Välj Kontrollera status innan du fortsätter.`,"The selected repository does not contain this paper’s task worktrees. Select the repository with its existing tasks, or add it as a separate paper.":`Det valda arkivet innehåller inte arbetskatalogerna för den här artikelns uppgifter. Välj arkivet med dess befintliga uppgifter eller lägg till det som en separat artikel.`,"The server is shutting down.":`Servern stängs ned.`,"The server restarted and interrupted the previous turn. Continue in the same conversation.":`Servern startades om och avbröt föregående tur. Fortsätt i samma konversation.`,"The server restarted before a review action was confirmed. Select Check status before continuing.":`Servern startades om innan en granskningsåtgärd bekräftades. Välj Kontrollera status innan du fortsätter.`,"The server restarted during deletion. Retry deletion to confirm cleanup.":`Servern startades om under borttagningen. Försök ta bort igen för att bekräfta rensningen.`,"The server restarted during the PDF build. Check the review and rebuild it if needed.":`Servern startades om under PDF-bygget. Kontrollera granskningen och bygg om den vid behov.`,"The task was paused before these instructions were queued. Your draft has been kept.":`Uppgiften pausades innan dessa instruktioner lades i kö. Ditt utkast har sparats.`,"The update download timed out.":`Tidsgränsen för nedladdning av uppdateringen överskreds.`,"The update restart helper did not start.":`Omstartsverktyget för uppdateringen startade inte.`,"The update was interrupted. Your current installation is still available; retry the update.":`Uppdateringen avbröts. Din nuvarande installation är fortfarande tillgänglig; försök uppdatera igen.`,"There is no compilation log yet.":`Det finns ingen kompileringslogg ännu.`,"There is no new review feedback to send.":`Det finns ingen ny granskningsåterkoppling att skicka.`,"This PDF has no selectable text to review.":`Den här PDF-filen har ingen markerbar text att granska.`,"This PDF is too long for one AI review (180,000 characters maximum).":`Den här PDF-filen är för lång för en enskild AI-granskning (högst 180 000 tecken).`,"This address is only for your tailnet. People outside it sign in at PAPILOT_ACCOUNT_ORIGIN.":`Den här adressen är endast för ditt tailnet. Personer utanför det loggar in på PAPILOT_ACCOUNT_ORIGIN.`,"This agent does not report usage.":`Den här agenten rapporterar inte användning.`,"This attachment is already being sent to another task.":`Den här bilagan skickas redan till en annan uppgift.`,"This attachment is not available for this task.":`Den här bilagan är inte tillgänglig för den här uppgiften.`,"This branch does not track a remote branch yet.":`Den här grenen spårar inte någon fjärrgren ännu.`,"This comparison is out of date. Refresh the page.":`Den här jämförelsen är inaktuell. Uppdatera sidan.`,"This device is no longer signed in.":`Den här enheten är inte längre inloggad.`,"This entry is no longer among the changes. Refresh the page.":`Den här posten finns inte längre bland ändringarna. Uppdatera sidan.`,"This entry is no longer in the bibliography. Refresh the panel.":`Den här posten finns inte längre i bibliografin. Uppdatera panelen.`,"This file is empty.":`Den här filen är tom.`,"This folder belongs to a parent Git repository. Select its root folder, or upload a copy.":`Den här mappen tillhör ett överordnat Git-arkiv. Välj dess rotmapp eller ladda upp en kopia.`,"This image format is not supported.":`Det här bildformatet stöds inte.`,"This invite link has expired or was already used. Ask for a new one.":`Den här inbjudningslänken har gått ut eller har redan använts. Be om en ny.`,"This manuscript preview is out of date. Refresh it and try again.":`Förhandsgranskningen av manuskriptet är inaktuell. Uppdatera den och försök igen.`,"This model does not support that reasoning effort.":`Den här modellen stöder inte den resonemangsnivån.`,"This note has already been sent.":`Den här anteckningen har redan skickats.`,"This note has been deleted. Undo the deletion first.":`Den här anteckningen har tagits bort. Ångra borttagningen först.`,"This note is being sent. Wait for the task to finish creating.":`Den här anteckningen skickas. Vänta tills uppgiften har skapats klart.`,"This page has expired. Refresh it and try again.":`Den här sidan har gått ut. Uppdatera den och försök igen.`,"This paper is already added. Open it from the paper list.":`Den här artikeln är redan tillagd. Öppna den från artikellistan.`,"This paper is being updated. Please retry in a moment.":`Den här artikeln uppdateras. Försök igen om en stund.`,"This passage could not be located reliably in the current manuscript. The suggestion remains in the review task.":`Det här stycket kunde inte hittas tillförlitligt i det aktuella manuskriptet. Förslaget finns kvar i granskningsuppgiften.`,"This passkey could not sign you in. Ask the owner for a new invite if it was removed.":`Den här lösenordsnyckeln kunde inte logga in dig. Be ägaren om en ny inbjudan om den har tagits bort.`,"This person is no longer in Papilot.":`Den här personen finns inte längre i Papilot.`,"This repository has no commits yet. Commit once to compare later changes in the PDF.":`Det här arkivet har inga incheckningar än. Gör en incheckning först för att kunna jämföra senare ändringar i PDF-filen.`,"This repository has no remote.":`Det här arkivet har inget fjärrarkiv.`,"This repository is already added as another paper.":`Det här arkivet har redan lagts till som en annan artikel.`,"This request ID is already in use by another task.":`Det här begärans-ID:t används redan av en annan uppgift.`,"This request has ended or the connection has restarted.":`Den här begäran har avslutats eller så har anslutningen startats om.`,"This request has ended.":`Den här begäran har avslutats.`,"This review page has expired. Refresh it and try again.":`Den här granskningssidan har gått ut. Uppdatera den och försök igen.`,"This review task does not belong to this workspace.":`Den här granskningsuppgiften tillhör inte den här arbetsytan.`,"This suggestion does not belong to this review task.":`Det här förslaget tillhör inte den här granskningsuppgiften.`,"This suggestion was ignored while copying. Restore it first.":`Det här förslaget ignorerades vid kopiering. Återställ det först.`,"This task already applies accepted changes to the working directory.":`Den här uppgiften tillämpar redan godkända ändringar i arbetskatalogen.`,"This task already has queued instructions. Wait or pause it first.":`Den här uppgiften har redan instruktioner i kö. Vänta eller pausa den först.`,"This task has no accepted changes left to commit.":`Den här uppgiften har inga godkända ändringar kvar att commita.`,"This task is being created. Refresh in a moment.":`Den här uppgiften håller på att skapas. Uppdatera om en stund.`,"This task is being deleted.":`Den här uppgiften håller på att tas bort.`,"This task is being deleted. Retry deletion to finish cleanup.":`Den här uppgiften håller på att tas bort. Försök ta bort den igen för att slutföra rensningen.`,"This task is being deleted. Your instructions were not queued.":`Den här uppgiften håller på att tas bort. Dina instruktioner lades inte i kö.`,"This task is busy. Wait for it to finish or pause it first.":`Den här uppgiften är upptagen. Vänta tills den är klar eller pausa den först.`,"This task is not an AI review.":`Den här uppgiften är inte en AI-granskning.`,"This task was deleted. Create a new task instead.":`Den här uppgiften har tagits bort. Skapa en ny uppgift i stället.`,"Too many attempts. Wait a minute and try again.":`För många försök. Vänta en minut och försök igen.`,"Too many open Papilot tabs. Close one and try again.":`För många öppna Papilot-flikar. Stäng en och försök igen.`,"Unknown Git action.":`Okänd Git-åtgärd.`,"Unused attachments have reached 500 MB. Remove attachments from your drafts before uploading more.":`Oanvända bilagor har nått 500 MB. Ta bort bilagor från dina utkast innan du laddar upp fler.`,"Upload a file as binary data.":`Ladda upp en fil som binärdata.`,"Wait for repository preparation to finish.":`Vänta tills förberedelsen av arkivet är klar.`,"Wait for task creation to finish before deleting it.":`Vänta tills uppgiften har skapats innan du tar bort den.`,"Wait for the current Git operation before sending more instructions.":`Vänta på den pågående Git-åtgärden innan du skickar fler instruktioner.`,"Wait for the current PDF to finish compiling, then run the AI review skill.":`Vänta tills den aktuella PDF-filen har kompilerats klart och kör sedan färdigheten för AI-granskning.`,"Wait for the current delivery before sending more instructions.":`Vänta på den pågående leveransen innan du skickar fler instruktioner.`,"Wait for the current manuscript PDF to finish compiling, then copy the suggestion again.":`Vänta tills den aktuella PDF-filen för manuskriptet har kompilerats klart och kopiera sedan förslaget igen.`,"Wait for the current review action before building a review.":`Vänta på den pågående granskningsåtgärden innan du bygger en granskning.`,"Wait for the current review action before committing.":`Vänta på den pågående granskningsåtgärden innan du gör en commit.`,"Wait for the current update to finish before changing channels.":`Vänta tills den pågående uppdateringen är klar innan du byter kanal.`,"Wait for the task and review actions to finish before applying changes.":`Vänta tills uppgiften och granskningsåtgärderna är klara innan du tillämpar ändringar.`,"Wait for the task and review actions to finish before choosing a destination.":`Vänta tills uppgiften och granskningsåtgärderna är klara innan du väljer ett mål.`,"Wait for this paper’s PDF build to finish before changing its path or removing it.":`Vänta tills PDF-bygget för den här artikeln är klart innan du ändrar dess sökväg eller tar bort den.`,"ZIP links and special files are not supported.":`Länkar och specialfiler i ZIP-arkiv stöds inte.`,"npm is unavailable to Papilot.":`npm är inte tillgängligt för Papilot.`,"The PDF comparison service could not be reached. Your edits are saved. Select Check status to recover the existing build.":`Det gick inte att ansluta till tjänsten för PDF-jämförelse. Dina ändringar är sparade. Välj ”Kontrollera status” för att återställa den befintliga kompileringen.`},fe={en:{},"zh-Hans":{...F,...P},"zh-Hant":I,ja:ee,ko:B,de:ne,fr:ie,es:oe,pt:V,it:ce,sv:ue},pe={en:{},"zh-Hans":L,"zh-Hant":R,ja:z,ko:te,de:re,fr:ae,es:se,pt:H,it:le,sv:de},me=`papilot:language`;function he(e=typeof window>`u`?[]:navigator.languages?.length?navigator.languages:[navigator.language]){for(let t of e){let e=k(t);if(e)return e}return`en`}function ge(){return k(D.getItem(me))||`system`}var _e={choice:ge(),language:`en`};_e.language=_e.choice===`system`?he():_e.choice;var ve=new Set;function ye(e){let t=e===`system`?he():e;(e!==_e.choice||t!==_e.language)&&(_e={choice:e,language:t},ve.forEach(e=>e())),typeof document<`u`&&(document.documentElement.lang=t)}ye(_e.choice),typeof window<`u`&&(window.addEventListener(`languagechange`,()=>ye(_e.choice)),window.addEventListener(`storage`,e=>{(e.key===me||e.key===null)&&ye(ge())}));function be(e){e===`system`?D.removeItem(me):D.setItem(me,e),ye(e)}var xe=()=>_e.language,Se=()=>_e.language;function Ce(){return(0,S.useSyncExternalStore)(e=>(ve.add(e),()=>{ve.delete(e)}),()=>_e)}function U(e,t){return N(Object.hasOwn(fe[_e.language],e)?fe[_e.language][e]:e,_e.language,t)}function we(e){return Object.hasOwn(pe[_e.language],e)?pe[_e.language][e]:U(e)}function Te(e,t,n,r){return U(j(_e.language,e)?t:n,{n:e,...r})}var Ee=e=>U(g[e]),De=e=>e?{"--note-color":h[e],"--note-ink":d(e)===`yellow`?`#422f00`:`#fff`}:{};function Oe({group:e}){return e?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`group-dot`,style:De(e),"aria-hidden":`true`}),U(`Add to group`)]}):U(`Add note`)}function ke({value:e,onChange:t,disabled:n}){let r=(0,S.useId)(),i=(0,S.useRef)(null),a=(0,S.useRef)(null),[o,s]=(0,S.useState)(!1);(0,S.useEffect)(()=>{n&&a.current?.hidePopover()},[n]),(0,S.useEffect)(()=>{if(!o)return;let e=()=>a.current?.hidePopover(),t=t=>{t.target instanceof Node&&t.target.contains(i.current)&&e()};return window.addEventListener(`resize`,e),document.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,e),document.removeEventListener(`scroll`,t,!0)}},[o]);function c(){return Array.from(a.current.querySelectorAll(`[role="menuitemradio"]`))}function l(){let e=a.current,t=i.current.getBoundingClientRect();e.showPopover(),e.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-e.offsetWidth-8))}px`,e.style.top=`${Math.max(8,Math.min(t.bottom+6,window.innerHeight-e.offsetHeight-8))}px`,(c().find(e=>e.getAttribute(`aria-checked`)===`true`)||c()[0])?.focus()}function f(e){a.current?.hidePopover(),i.current?.focus(),t(e)}return(0,C.jsxs)(`div`,{className:`group-picker`,style:De(e||void 0),children:[(0,C.jsx)(`button`,{ref:i,type:`button`,className:`icon-button group-select`,"data-group":e||void 0,"aria-label":U(`Annotation group color`),title:U(`Annotation groups`),"aria-haspopup":`menu`,"aria-expanded":o,popoverTarget:r,disabled:n,onClick:e=>{e.preventDefault(),a.current?.matches(`:popover-open`)?a.current.hidePopover():l()},onKeyDown:e=>{(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),l())},children:(0,C.jsx)(`span`,{className:`group-highlight`,"aria-hidden":`true`,children:(0,C.jsx)(T,{name:`pen`,size:18})})}),(0,C.jsxs)(`div`,{ref:a,id:r,popover:`auto`,role:`menu`,"aria-label":U(`Annotation group color`),className:`group-palette`,onToggle:e=>s(e.nativeEvent.newState===`open`),onKeyDown:e=>{if(e.key===`Tab`)a.current?.hidePopover(),i.current?.focus();else if(e.stopPropagation(),e.key===`Escape`)e.preventDefault(),a.current?.hidePopover(),i.current?.focus();else if([`ArrowLeft`,`ArrowRight`,`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key)){e.preventDefault();let t=c(),n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:(n+([`ArrowRight`,`ArrowDown`].includes(e.key)?1:-1)+t.length)%t.length]?.focus()}},children:[(0,C.jsx)(`div`,{className:`group-palette-label`,children:U(`Color`)}),(0,C.jsx)(`div`,{className:`group-swatches`,children:u.map(t=>(0,C.jsx)(`button`,{type:`button`,className:`group-swatch`,role:`menuitemradio`,"aria-label":Ee(t),"aria-checked":!!(e&&d(e)===t),style:De(t),onClick:()=>f(t),children:(0,C.jsx)(`span`,{"aria-hidden":`true`})},t))}),(0,C.jsxs)(`button`,{type:`button`,className:`group-individual`,role:`menuitemradio`,"aria-checked":!e,onClick:()=>f(null),children:[(0,C.jsx)(T,{name:`notes`,size:16}),(0,C.jsx)(`span`,{children:U(`Individual notes`)}),!e&&(0,C.jsx)(T,{name:`check`,size:14})]})]})]})}function Ae({group:e,value:t,disabled:n,onChange:r}){let i=(0,S.useRef)(null),a=()=>{let e=i.current;e&&e.clientWidth&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight+e.offsetHeight-e.clientHeight,160)}px`)};return(0,S.useLayoutEffect)(a,[t]),(0,S.useEffect)(()=>{let e=i.current,t=e.clientWidth,n=new ResizeObserver(()=>{e.clientWidth!==t&&(t=e.clientWidth,a())});return n.observe(e),()=>n.disconnect()},[]),(0,C.jsxs)(`div`,{className:`group-instruction-input`,children:[(0,C.jsx)(`textarea`,{ref:i,rows:1,maxLength:4e3,"aria-label":U(`Instructions for {group} notes`,{group:Ee(e)}),placeholder:U(`What should change in this group?`),value:t,disabled:n,onChange:e=>r(e.target.value)}),(0,C.jsx)(T,{name:`pencil`,size:13})]})}function je({group:e,count:t,active:n,selection:r,children:i}){let[a,o]=(0,S.useState)(!0),s=(0,S.useId)(),c=(0,S.useId)(),l=r?r.count===t?!0:r.count?`mixed`:!1:void 0,u=r?U(`{selected} / {total} locations selected`,{selected:r.count,total:t}):Te(t,`{n} location`,`{n} locations`);return(0,S.useEffect)(()=>{n&&o(!0)},[n]),(0,C.jsxs)(`div`,{className:`annotation-group`+(n?` active`:``),role:`group`,"aria-label":`${Ee(e)} · ${u}`,"data-selected":l,style:De(e),children:[(0,C.jsxs)(`div`,{className:`group-header`,children:[r?(0,C.jsxs)(`button`,{type:`button`,className:`group-selection-toggle`,"aria-label":U(`Select all {group} notes for this task`,{group:Ee(e)}),"aria-describedby":s,"aria-pressed":l,disabled:r.disabled,onClick:r.toggle,children:[(0,C.jsx)(`span`,{className:`group-dot`,"aria-hidden":`true`}),(0,C.jsx)(`strong`,{id:s,children:u})]}):(0,C.jsxs)(`div`,{className:`group-heading`,children:[(0,C.jsx)(`span`,{className:`group-dot`,"aria-hidden":`true`}),(0,C.jsx)(`strong`,{children:u})]}),(0,C.jsx)(`button`,{type:`button`,className:`group-disclosure`,"aria-label":U(a?`Collapse {group} notes`:`Expand {group} notes`,{group:Ee(e)}),"aria-expanded":a,"aria-controls":c,onClick:()=>o(e=>!e),children:(0,C.jsx)(T,{name:`chevronDown`,size:12})})]}),(0,C.jsx)(`div`,{id:c,className:`group-locations`,hidden:!a,children:i})]})}var Me=`papilot:selected-notes`;function Ne(){try{let e=JSON.parse(D.getItem(Me)||`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>Array.isArray(e[1])&&e[1].every(e=>typeof e==`string`)))}catch{return{}}}function Pe(e,t){let[n,r]=(0,S.useState)(Ne);(0,S.useEffect)(()=>{Object.keys(n).length?D.setItem(Me,JSON.stringify(n)):D.removeItem(Me)},[n]);let i=new Set(n[e]||[]),a=e=>i.has(e);return{selected:t.filter(e=>a(e.id)),has:a,set(t,n){r(r=>{let i=new Set(r[e]||[]);for(let e of t)n?i.add(e):i.delete(e);let a={...r};return i.size?a[e]=[...i]:delete a[e],a})},reset(e){r(t=>{let n={...t};return delete n[e],n})}}}var Fe=`papilot:group-instructions`;function Ie(){let e={};try{let t=JSON.parse(D.getItem(Fe)||`{}`);if(!t||typeof t!=`object`||Array.isArray(t))return e;for(let[n,r]of Object.entries(t))try{e[n]=p(r)}catch{}}catch{}return e}function Le(e){let[t,n]=(0,S.useState)(Ie);return(0,S.useEffect)(()=>{Object.keys(t).length?D.setItem(Fe,JSON.stringify(t)):D.removeItem(Fe)},[t]),{get:n=>t[e]?.[d(n)]||``,set(t,r){n(n=>({...n,[e]:{...n[e],[d(t)]:r}}))},forNotes(n){return Object.fromEntries(_(n).flatMap(({group:n})=>t[e]?.[n]?.trim()?[[n,t[e][n].trim()]]:[]))},sent(e,t,r){n(n=>{let i={...n},a={...i[e]},o=new Set(t.map(e=>e.id));for(let{group:e}of _(t))r.some(t=>!o.has(t.id)&&t.group&&d(t.group)===e)||delete a[e];return Object.keys(a).length?i[e]=a:delete i[e],i})}}}function Re({text:e}){return(0,C.jsx)(`div`,{className:`note-quote`,children:(0,C.jsx)(`blockquote`,{className:`note-quote-text`,"aria-label":U(`Quoted text`),children:e||U(`Marked region`)})})}function ze({children:e}){return(0,C.jsx)(`div`,{className:`note-body`,role:`group`,"aria-label":U(`Your note`),children:e})}function Be(e){let t=e.review;if(e.status!==`reviewing`||!t||e.reconciliation||e.pendingReview||e.delivery?.pending||t.counts?.pending||t.state===`build_failed`)return!1;let n=t.unsent??[`accepted`,`rejected`,`commented`].reduce((e,n)=>e+(t.counts?.[n]||0),0);return(t.comments??n)>0||n>0&&!t.counts?.accepted?!1:t.round===null||t.state===`done`&&(!e.deferred||t.files?.length===0&&e.delivery?.mode!==`branch`)}var Ve=[`codex`,`claude`,`cursor`,`copilot`,`grok`,`antigravity`,`kimi`,`glm`,`deepseek`,`qwen`,`opencode`],He={codex:`Codex`,claude:`Claude`,cursor:`Cursor`,copilot:`Copilot`,grok:`Grok`,antigravity:`Antigravity`,kimi:`Kimi`,glm:`GLM`,deepseek:`DeepSeek`,qwen:`Qwen`,opencode:`OpenCode`},Ue=e=>Ve.includes(e);function We(e){let t={errors:0,warnings:0,minor:0},n=new Set;for(let r of e){if(r.kind===`label`&&r.key){if(n.has(r.key))continue;n.add(r.key)}t[r.severity===`error`?`errors`:r.severity===`warning`?`warnings`:`minor`]++}return t}var Ge=e=>e===`Continue this task using the decisions and comments from this review round. Preserve accepted changes and do not reintroduce rejected edits. Address any remaining revision requests; if no revision is needed, summarize the result.`||e===`Address the comments from this review round. Preserve accepted changes and do not reintroduce rejected edits.`;function Ke(e){return e.split(/\n\n1\. \*\*Page \d+\*\* — /,1)[0].trimEnd()}var qe=e=>e?.unsent??[`accepted`,`rejected`,`commented`].reduce((t,n)=>t+(e?.counts?.[n]||0),0),Je=class{key;storage;newId;text;sending=!1;sendingSource=null;revision=0;requestKeys;listeners=new Set;snapshot;subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.snapshot;changed(){this.snapshot={text:this.text,sending:this.sending,sendingSource:this.sendingSource};for(let e of this.listeners)e()}constructor(e,t,n){this.key=e,this.storage=t,this.newId=n,this.text=t.getItem(e)||``,this.requestKeys={draft:n(),feedback:n()},this.snapshot={text:this.text,sending:this.sending,sendingSource:this.sendingSource}}edit(e){this.text=e,this.revision++,this.requestKeys.draft=this.newId(),this.storage.setItem(this.key,e),this.changed()}async submit(e,t,n,r=[]){let i=e===`draft`?this.text:``;if(this.sending||e===`draft`&&!i.trim()&&!n&&!r.length)return!1;let a=this.key+`:request`;if(e===`draft`){let e=JSON.stringify([i.trim(),n||``,r]),t={};try{t=JSON.parse(this.storage.getItem(a)||`{}`)}catch{}this.requestKeys.draft=t?.signature===e&&t.id?t.id:this.newId(),this.storage.setItem(a,JSON.stringify({signature:e,id:this.requestKeys.draft}))}this.sending=!0,this.sendingSource=e,this.changed();let o=this.revision,s=this.requestKeys[e],c=this.storage.getItem(a);try{if(await t({text:i.trim(),requestKey:s,...e===`feedback`?{feedback:!0}:{},...n?{skill:n}:{},...e===`draft`&&r.length?{attachments:r}:{}}),e===`draft`&&this.storage.getItem(a)===c&&this.storage.removeItem(a),e===`draft`&&this.revision===o){let e=this.storage.getItem(this.key);e===i||e===null?(this.text=``,this.storage.removeItem(this.key)):this.text=e}return(e===`feedback`||this.revision===o)&&(this.requestKeys[e]=this.newId()),!0}finally{this.sending=!1,this.sendingSource=null,this.changed()}}};function Ye(e){let t=(e.split(`
3
3
  `).find(e=>e.trim())||``).replace(/^[\s#>*+-]+/,``).replace(/\s+/g,` `).trim().replace(/\.$/,``);if(!t)return`Untitled task`;if(t.length<=80)return t;let n=t.slice(0,80),r=n.lastIndexOf(` `);return(r>40?n.slice(0,r):n).replace(/[\s,.;:]+$/,``)+`…`}function Xe(e,t){return e.key!==`Enter`||e.isComposing||e.keyCode===229?!1:e.metaKey||e.ctrlKey||!t&&!e.shiftKey&&!e.altKey}function Ze(e,t,n=280,r=!0){(0,S.useLayoutEffect)(()=>{if(!r)return;let i=e.current,a=i.closest(`.note-layer`),o=i.closest(`.pdf-container`),s=0,c=()=>{let e=a.getBoundingClientRect(),r=o.getBoundingClientRect(),s=Math.max(e.left,r.left)+8,c=Math.min(e.right,r.right)-8,l=Math.max(e.top,r.top)+8,u=Math.min(e.bottom,r.bottom)-8,d={left:e.left+t[0]*e.width,right:e.left+t[2]*e.width,top:e.top+t[1]*e.height,bottom:e.top+t[3]*e.height},f=c>s&&u>l&&d.bottom>=l&&d.top<=u&&d.right>=s&&d.left<=c;if(i.style.visibility=f?`visible`:`hidden`,!f)return;let p=Math.min(n,c-s);i.style.width=`${p}px`,i.style.maxHeight=`${u-l}px`;let m=i.getBoundingClientRect().height,h=c-d.right>=p+12,g=h?d.right+12:Math.max(s,Math.min(d.left,c-p)),_=u-d.bottom,v=d.top-l,y=h?d.top:_>=m+10||_>=v?d.bottom+10:d.top-m-10;i.style.left=`${g-e.left}px`,i.style.top=`${Math.max(l,Math.min(y,u-m))-e.top}px`},l=()=>{cancelAnimationFrame(s),s=requestAnimationFrame(c)},u=new ResizeObserver(l);return u.observe(a),u.observe(o),u.observe(i),o.addEventListener(`scroll`,l),window.addEventListener(`resize`,l),c(),()=>{u.disconnect(),cancelAnimationFrame(s),o.removeEventListener(`scroll`,l),window.removeEventListener(`resize`,l)}},[e,r,n,t[0],t[1],t[2],t[3]])}function Qe({number:e,ai:t=!1,selected:n,disabled:r,destination:i,onClick:a}){let o=i?U(n?`Kept on manuscript`:`Keep on manuscript`):U(t?`Include suggestion {n} in this task`:`Include note {n} in this task`,{n:e});return(0,C.jsx)(`button`,{type:`button`,className:`icon-button pdf-note-attach`,"aria-label":o,"aria-pressed":i?void 0:n,title:i?o:U(n?`Remove from draft`:`Quote in chat`),disabled:r||!!(i&&n),onClick:a,children:(0,C.jsx)(T,{name:i?n?`bookmarkFilled`:`bookmark`:`arrowRightSolid`,size:i?16:18})})}function $e({note:e,number:t,index:n,total:r,selected:i,busy:a,error:o,draft:s,onDraftChange:c,onToggle:l,onDismiss:u,onClose:d,onPrevious:f,onNext:p,onSave:m,onEditing:h,destination:g,inline:_=!1,header:v,children:y}){let b=(0,S.useRef)(null),x=(0,S.useRef)(!1),w=(0,S.useRef)(null),E=(0,S.useRef)(null),D=s!==null,O=!!e.aiReview;(0,S.useEffect)(()=>(h?.(D),()=>h?.(!1)),[D,h]);function k(){c(null),requestAnimationFrame(()=>w.current?.focus({preventScroll:!0}))}function A(){a||c(e.comment)}function j(e=!0){_?(c(null),e&&requestAnimationFrame(()=>w.current?.focus({preventScroll:!0}))):d?.(e)}async function M(t=`keep`,n=!0){if(a||x.current)return;let r=s?.trim();if(D&&!r)t===`close`&&j(n);else{if(D&&r!==e.comment){x.current=!0;try{if(!await m(r,t))return}finally{x.current=!1}}else t===`quote`&&l?.();t===`close`?(c(null),j(n)):D&&k()}}(0,S.useEffect)(()=>{if(_&&!D)return;let e=b.current,t=t=>{t.button===0&&!t.composedPath().includes(e)&&M(`close`,!1)},n=t=>{if(_&&!e.contains(document.activeElement)||t.key!==`Escape`||t.defaultPrevented||t.isComposing||t.keyCode===229)return;let n=t.target instanceof Element?t.target.closest(`dialog,[role="dialog"],[role="menu"],[role="listbox"]`):null;n&&n!==e||(t.preventDefault(),t.stopPropagation(),M(`close`,e.contains(document.activeElement)))};return document.addEventListener(`pointerdown`,t,!0),document.addEventListener(`keydown`,n,!0),()=>{document.removeEventListener(`pointerdown`,t,!0),document.removeEventListener(`keydown`,n,!0)}},[_,D,s,a,e.comment,d,m,l,c]),(0,S.useLayoutEffect)(()=>{let e=E.current;e&&(e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))},[D]),(0,S.useLayoutEffect)(()=>{let e=E.current;e&&(e.style.height=`0`,e.style.height=`${e.scrollHeight}px`)},[s]),Ze(b,e.rect,e.aiReview?330:280,!_);let N=!_&&!g&&!i?`quote`:`keep`;return(0,S.useLayoutEffect)(()=>{_||E.current&&!E.current.disabled||b.current?.focus({preventScroll:!0})},[_,e.id]),(0,C.jsxs)(`section`,{ref:b,className:`pdf-note-card `+(O?`pdf-suggestion`:`pdf-personal-note`)+(_?` pdf-note-inline`:``),role:_?`group`:`dialog`,"aria-modal":_?void 0:!1,"aria-label":U(O?`AI suggestion {n}`:`PDF note {n}`,{n:t}),tabIndex:_?void 0:-1,children:[v,(0,C.jsxs)(`div`,{className:`pdf-note-content`,children:[(0,C.jsx)(`div`,{className:`pdf-suggestion-body`,children:D?(0,C.jsx)(`textarea`,{ref:E,className:`pdf-note-input`,"aria-label":U(`Edit note {n}`,{n:t}),placeholder:U(`Write a note…`),value:s,rows:1,maxLength:4e3,readOnly:a,onChange:e=>c(e.target.value),onKeyDown:e=>{Xe(e.nativeEvent,window.matchMedia(`(pointer: coarse)`).matches)&&(e.preventDefault(),M(N))}}):O?(0,C.jsx)(`p`,{children:e.comment}):(0,C.jsx)(`p`,{ref:w,className:`pdf-note-text note-edit-trigger`,role:`button`,tabIndex:a?-1:0,"aria-disabled":a,"aria-label":U(`Edit note {n}: {comment}`,{n:t,comment:e.comment}),title:U(`Edit note`),onClick:()=>{let e=window.getSelection();e&&!e.isCollapsed&&w.current?.contains(e.anchorNode)||A()},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),A())},children:e.comment||(e.group?U(`Highlighted in {group}`,{group:Ee(e.group)}):``)})}),!_&&(0,C.jsx)(`button`,{type:`button`,className:`icon-button pdf-note-close`,"aria-label":U(O?`Close suggestion`:`Close note`),title:U(O?`Close suggestion`:`Close note`),disabled:a,onClick:()=>void M(`close`),children:a?(0,C.jsx)(`span`,{className:`spinner`}):(0,C.jsx)(T,{name:`close`,size:14})})]}),y,o&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:o}),(0,C.jsxs)(`div`,{className:`pdf-note-tools`,children:[e.aiReview&&!g&&(0,C.jsx)(`span`,{className:`pdf-note-origin`,title:U(`AI suggestion`),children:He[e.aiReview.agent]}),(0,C.jsx)(`button`,{type:`button`,className:`icon-button pdf-note-delete`,"aria-label":U(O?`Ignore suggestion {n}`:`Delete note {n}`,{n:t}),title:U(O?`Ignore`:`Delete note`),disabled:a,onClick:u,children:(0,C.jsx)(T,{name:`trash`,size:14})}),(0,C.jsx)(`span`,{className:`pdf-note-tools-space`}),O&&r>1&&(0,C.jsxs)(`div`,{className:`pdf-suggestion-navigation`,children:[(0,C.jsx)(`button`,{type:`button`,className:`icon-button`,"aria-label":U(`Previous suggestion`),title:U(`Previous suggestion (←)`),"aria-keyshortcuts":`ArrowLeft`,disabled:a||n<=0,onClick:f,children:(0,C.jsx)(T,{name:`chevronLeft`,size:14})}),(0,C.jsxs)(`span`,{"aria-label":U(`{current} of {total}`,{current:n+1,total:r}),children:[n+1,`/`,r]}),(0,C.jsx)(`button`,{type:`button`,className:`icon-button`,"aria-label":U(`Next suggestion`),title:U(`Next suggestion (→)`),"aria-keyshortcuts":`ArrowRight`,disabled:a||n>=r-1,onClick:p,children:(0,C.jsx)(T,{name:`chevronRight`,size:14})})]}),(0,C.jsx)(Qe,{number:t,ai:O,selected:i,disabled:a||D&&!s.trim(),destination:g,onClick:()=>{g&&!_&&b.current?.focus({preventScroll:!0}),M(`quote`)}})]})]})}var et=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),tt=o(((e,t)=>{t.exports=et()})),nt=o((e=>{var t=y();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),o=Symbol.for(`react.recoverable`),s=Symbol.for(`react.optimistic_key`);function c(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===s?s:``+r,children:e,containerInfo:t,implementation:n}}var l=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:o,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return c(e,t,null,r)},e.flushSync=function(e){var t=l.T,n=i.p;try{if(l.T=null,i.p=2,e)return e()}finally{l.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return l.H.useFormState(e,t,n)},e.useFormStatus=function(){return l.H.useHostTransitionStatus()},e.version=`19.3.1`})),rt=o(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=nt()})),it=o((e=>{var t=tt(),n=y(),r=rt();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function d(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=d(e),t!==null)return t;e=e.sibling}return null}function f(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&f(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function p(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function m(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function h(e){var t=[null,null],n=p(e);return n===null||g(t,e,n.child,{foundSelf:!1}),t}function g(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&g(e,t,n.child,r))return!0;n=n.sibling}return!1}function _(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var v=null,b=null;function x(e,t,n){return e===n||e===t&&(v=e,!0)}function S(e,t,n){return e===n?(b=e,!1):e===t&&(b!==null&&(v=e),!0)}function C(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function w(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var T=Object.assign,E=Symbol.for(`react.element`),D=Symbol.for(`react.transitional.element`),O=Symbol.for(`react.portal`),k=Symbol.for(`react.fragment`),A=Symbol.for(`react.strict_mode`),j=Symbol.for(`react.profiler`),M=Symbol.for(`react.consumer`),N=Symbol.for(`react.context`),P=Symbol.for(`react.forward_ref`),F=Symbol.for(`react.suspense`),I=Symbol.for(`react.suspense_list`),L=Symbol.for(`react.memo`),R=Symbol.for(`react.lazy`),ee=Symbol.for(`react.activity`),z=Symbol.for(`react.legacy_hidden`),B=Symbol.for(`react.memo_cache_sentinel`),te=Symbol.for(`react.view_transition`),ne=Symbol.for(`react.recoverable`),re=Symbol.iterator;function ie(e){return typeof e!=`object`||!e?null:(e=re&&e[re]||e[`@@iterator`],typeof e==`function`?e:null)}var ae=Symbol.for(`react.client.reference`);function oe(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===ae?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case k:return`Fragment`;case j:return`Profiler`;case A:return`StrictMode`;case F:return`Suspense`;case I:return`SuspenseList`;case ee:return`Activity`;case te:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case O:return`Portal`;case N:return e.displayName||`Context`;case M:return(e._context.displayName||`Context`)+`.Consumer`;case P:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case L:return t=e.displayName||null,t===null?oe(e.type)||`Memo`:t;case R:t=e._payload,e=e._init;try{return oe(e(t))}catch{}}return null}var se=Array.isArray,V=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ce={pending:!1,data:null,method:null,action:null},le=[],ue=-1;function de(e){return{current:e}}function fe(e){0>ue||(e.current=le[ue],le[ue]=null,ue--)}function pe(e,t){ue++,le[ue]=e.current,e.current=t}var me=de(null),he=de(null),ge=de(null),_e=de(null);function ve(e,t){switch(pe(ge,t),pe(he,e),pe(me,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?dp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=dp(t),e=fp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}fe(me),pe(me,e)}function ye(){fe(me),fe(he),fe(ge)}function be(e){var t=e.memoizedState;t!==null&&(ch._currentValue=t.memoizedState,pe(_e,e)),t=me.current;var n=fp(t,e.type);t!==n&&(pe(he,e),pe(me,n))}function xe(e){he.current===e&&(fe(me),fe(he)),_e.current===e&&(fe(_e),ch._currentValue=ce)}var Se,Ce;function U(e){if(Se===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Se=t&&t[1]||``,Ce=-1<e.stack.indexOf(`
4
4
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
@@ -190,10 +190,10 @@ Error generating stack: `+e.message+`
190
190
  :root[data-papilot-toolbar-stacked] .bar .bar-end{margin-left:auto}
191
191
  @container review-bar (max-width:340px){.bar .batch-label{display:none}.bar .accept-all,.bar .reject-all{padding:0 8px}.bar .bar-end{gap:4px}}
192
192
  :root{--icon-history:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 12a9 9 0 1 0 2.6-6.4L3 8'/><path d='M3 3v5h5M12 7v5l3 2'/></svg>")}
193
- `,bn(window.document.documentElement,e.documentElement),i.textContent+=qt,e.head.append(i)}function dr(e){let t=1,n=0;for(let r of e.querySelectorAll(`.pdf-strip`)){let e=r.getBoundingClientRect();if(e.width)for(let i of r.querySelectorAll(`.pdf-text-line`)){let r=i.firstElementChild?.getBoundingClientRect(),a=i.lastElementChild?.getBoundingClientRect();r?.width&&a?.width&&(t=Math.min(t,(r.left-e.left)/e.width),n=Math.max(n,(a.right-e.left)/e.width))}}let r=e.documentElement.style,i=n-t+.04;n<=t||i>=.95?(r.removeProperty(`--pdf-crop-scale`),r.removeProperty(`--pdf-crop-shift`)):(r.setProperty(`--pdf-crop-scale`,(1/i).toFixed(4)),r.setProperty(`--pdf-crop-shift`,Math.max(0,t-.02).toFixed(4)))}function fr({task:e,changesOf:t,tools:n,lead:r,completion:i,onSendNotes:a,onDecided:o}){let s=Un(),c=$n(),l=e?`review-view:`+e.id:``,u=sr(),[d,f]=(0,S.useState)(()=>l&&K(l)||u),[p,m]=(0,S.useState)(!1),h=(0,S.useRef)(u);(0,S.useEffect)(()=>{h.current!==u&&(h.current=u,f(u),l&&Wt(l,void 0))},[u,l]);let g=e=>{f(e),l&&Wt(l,e)},_=e&&p?(0,C.jsx)(Kt,{mode:d===`paper`?`pdf`:`changes`,onMode:e=>g(e===`pdf`?`paper`:`changes`),changesTitle:U(`Changes`)}):null,v=Sn(),y=(0,S.useRef)(v);y.current=v;let b=e?v?.focus?.change.round:void 0,x=b===e?.review?.round?v?.focus?.change.stop:void 0,w=e?v?.focus?.sequence:void 0,[T,E]=(0,S.useState)(null),D=(0,S.useRef)(null),O=(0,S.useRef)(null),k=(0,S.useRef)(null),A=(0,S.useRef)(null),[j,M]=(0,S.useState)(0),[N,P]=(0,S.useState)(0),F=(0,S.useRef)(o);F.current=o;let I=(0,S.useRef)(null),L=(0,S.useRef)(null),[R,ee]=(0,S.useState)(0),[z,B]=(0,S.useState)(`loading`),te=Ce().language;(0,S.useEffect)(()=>{if(T&&D.current)return Kn(D.current,T)},[T]),(0,S.useEffect)(()=>{let e=T?.defaultView;e&&e.dispatchEvent(new CustomEvent(On,{detail:s}))},[T,s]),(0,S.useEffect)(()=>{T?.defaultView?.dispatchEvent(new CustomEvent(Jn,{detail:c}))},[T,c]),(0,S.useEffect)(()=>{T?.defaultView?.dispatchEvent(new CustomEvent(tr,{detail:d}))},[T,d]),(0,S.useEffect)(()=>{if(!T){m(!1);return}let e=T.documentElement,t=()=>m(e.dataset.fullPaper===`available`);t();let n=new MutationObserver(t);return n.observe(e,{attributes:!0,attributeFilter:[`data-full-paper`]}),()=>n.disconnect()},[T]),(0,S.useEffect)(()=>{let e=T?.defaultView;if(!e)return;let t=e=>{e.preventDefault(),window.dispatchEvent(new Event(`papilot:open-shortcuts`))};return e.addEventListener(`latex-review:help`,t),()=>e.removeEventListener(`latex-review:help`,t)},[T]),(0,S.useEffect)(()=>{B(`loading`);let e=setTimeout(()=>B(e=>e===`loading`?`slow`:e),15e3);return()=>{clearTimeout(e),I.current?.disconnect(),L.current?.disconnect()}},[R,te,b,w]),(0,S.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>M(Math.ceil(e.offsetWidth)));return t.observe(e),()=>t.disconnect()},[!!n]),(0,S.useEffect)(()=>{let e=k.current;if(!e){P(0);return}let t=new ResizeObserver(()=>P(Math.ceil(e.offsetWidth)));return t.observe(e),()=>t.disconnect()},[!!(r||_)]),(0,S.useEffect)(()=>{if(!T||!D.current||!A.current)return;let e=T.documentElement,t=T.querySelector(`.bar`),n=window.matchMedia(`(max-width: 520px)`),r=D.current,i=A.current,a=()=>{if(!r.isConnected||!i.isConnected)return;e.toggleAttribute(`data-papilot-phone`,n.matches),e.style.setProperty(`--papilot-tools`,`${j}px`),e.style.setProperty(`--papilot-lead`,`${N}px`),e.style.setProperty(`--papilot-bar-height`,`${i.offsetHeight}px`),e.toggleAttribute(`data-papilot-toolbar-stacked`,r.clientWidth-j-N<220);let a=O.current?.querySelector(`.icon-button`);a&&e.style.setProperty(`--papilot-button-size`,`${a.offsetWidth}px`),t&&e.style.setProperty(`--papilot-review-bar-height`,`${t.offsetHeight}px`)},o=new ResizeObserver(a);return o.observe(r),o.observe(i),t&&o.observe(t),n.addEventListener(`change`,a),a(),()=>{o.disconnect(),n.removeEventListener(`change`,a)}},[j,N,T]);function ne(){I.current?.disconnect();try{let e=D.current?.contentDocument;if(!e||!e.getElementById(`root`)&&!e.getElementById(`paper`)){B(`error`);return}ur(e,j,N,!!t),E(e),D.current?.contentWindow?.addEventListener(`latex-review:decided`,()=>{F.current?.(),y.current?.reload()});let n=e.getElementById(`root`);e.addEventListener(`scroll`,t=>{let r=t.target===e?e.scrollingElement:t.target===n?n:null;r&&(r.scrollTop||r.scrollLeft)&&r.scrollTo(0,0)},!0);let r;L.current?.disconnect(),L.current=new MutationObserver(()=>{clearTimeout(r),r=setTimeout(()=>dr(e),150)}),L.current.observe(e.body,{childList:!0,subtree:!0});let i=()=>{let n=e.getElementById(`paper`);n&&(n.querySelector(`[role="alert"]`)?B(`error`):(t||!n.querySelector(`.waiting`))&&(B(`ready`),I.current?.disconnect(),dr(e)))};I.current=new MutationObserver(i),I.current.observe(e.body,{childList:!0,subtree:!0}),i()}catch{B(`error`)}}(0,S.useEffect)(()=>{if(!T)return;let e=window.document.documentElement,t=()=>bn(e,T.documentElement);t();let n=new MutationObserver(t);return n.observe(e,{attributes:!0,attributeFilter:[`data-theme`,`style`]}),()=>n.disconnect()},[T]),(0,S.useEffect)(()=>{let e=window.visualViewport;if(!T||!e)return;let t=()=>{let t=D.current?.getBoundingClientRect();t&&T.documentElement.style.setProperty(`--keyboard`,`${Math.max(0,Math.round(t.bottom-e.offsetTop-e.height))}px`)};return t(),e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`resize`,t),e.removeEventListener(`scroll`,t),window.removeEventListener(`resize`,t)}},[T]);let re=z===`ready`,[ie,ae]=(0,S.useState)(null);return(0,S.useEffect)(()=>{if(!T||!re){ae(null);return}let e=()=>ae(T.querySelector(`.review-complete-actions`));e();let t=new MutationObserver(e);return t.observe(T.body,{childList:!0,subtree:!0}),()=>t.disconnect()},[T,re]),(0,S.useEffect)(()=>{let e=T?.getElementById(`paper`),t=T?.documentElement;if(!e||!t||!ie)return;let n=()=>t.toggleAttribute(`data-papilot-scrolled`,e.scrollTop>0);return n(),e.addEventListener(`scroll`,n,{passive:!0}),()=>{e.removeEventListener(`scroll`,n),t.removeAttribute(`data-papilot-scrolled`)}},[T,ie]),(0,C.jsxs)(`div`,{className:`review-viewport`+(re?``:` review-pending`),"aria-busy":!re,children:[(0,C.jsx)(`iframe`,{ref:D,title:e?U(`{title} PDF change review`,{title:e.title}):U(`Uncommitted changes in the PDF`),src:e?cr(e,b,x):lr(t),onLoad:ne,onError:()=>B(`error`),className:`review-frame`,"aria-hidden":!re,tabIndex:re?0:-1},`${R}:${te}:${b||``}:${w||``}`),e&&re&&(0,C.jsx)(En,{doc:T,round:b||e.review?.round||0}),(0,C.jsxs)(`div`,{ref:A,className:`review-host-bar`,children:[(r||_)&&(0,C.jsxs)(`div`,{ref:k,className:`review-lead`,children:[r,_]}),(0,C.jsxs)(`div`,{ref:O,className:`review-tools`,children:[e&&a&&(0,C.jsx)(cn,{doc:re?T:null,task:e,onSend:a}),n]})]}),ie&&i?(0,ot.createPortal)(i,ie):null,!re&&(0,C.jsxs)(`div`,{className:`review-loading`,children:[(0,C.jsx)(`p`,{role:z===`error`?`alert`:`status`,children:U(z===`error`?`The PDF review could not be loaded.`:z===`slow`?`The PDF review is taking longer than expected.`:`Loading PDF review…`)}),z!==`loading`&&(0,C.jsx)(`button`,{className:`button secondary`,onClick:()=>{B(`loading`),ee(e=>e+1)},children:U(`Reload review`)})]})]})}var pr=`modulepreload`,mr=function(e){return`/`+e},hr={},gr=function(e){return e.pathname.endsWith(`.css`)},_r=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},vr=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=mr(t,n);let r=s(t),i=gr(r);return _r(hr,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:pr,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},yr=(0,S.lazy)(()=>vr(()=>import(`./pdf-view-AYTS7kdA.js`).then(e=>({default:e.PdfView})),[])),br=()=>{};function xr({task:e,api:t,lead:n,tools:r,onCopied:i}){let[a,o]=(0,S.useState)(null),[s,c]=(0,S.useState)(``),[l,u]=(0,S.useState)(0),[d,f]=(0,S.useState)(``),[p,m]=(0,S.useState)([]),[h,g]=(0,S.useState)(0),_=(0,S.useRef)(null),v=`/tasks/${e.id}/ai-review`;(0,S.useEffect)(()=>{let e=new AbortController;return t(v,void 0,e.signal).then(e=>{o(e),c(``)},t=>{e.signal.aborted||c(t.message)}),()=>e.abort()},[v,e.updatedAt,e.aiReview?.revision,l,t]);let y=e=>o(t=>t&&{...t,notes:t.notes.map(t=>t.id===e.id?e:t)});return(0,C.jsxs)(`div`,{className:`ai-review-view`,children:[s&&(0,C.jsxs)(`div`,{className:`connection-banner`,role:`alert`,children:[(0,C.jsx)(`span`,{children:s}),(0,C.jsx)(`button`,{onClick:()=>u(e=>e+1),children:U(`Retry`)})]}),a?(0,C.jsx)(S.Suspense,{fallback:(0,C.jsx)(`div`,{className:`review-loading`,children:(0,C.jsx)(`p`,{children:U(`Opening the PDF…`)})}),children:(0,C.jsx)(yr,{ref:_,readOnly:!0,place:`pdf:review:`+e.id,url:`/api${v}/pdf?key=${a.key}`,words:`/api${v}/words?key=${a.key}`,notes:a.notes.filter(e=>e.key===a.key).map((e,t)=>({note:e,number:t+1})),active:d,onSelect:e=>{f(e.id),_.current?.goToNote(e)},onDeselect:()=>f(``),region:!1,setRegion:br,onCreate:async()=>{},outline:p,section:h,onOutline:m,onSection:g,lead:n,tools:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`review-copy-label`,title:U(`Suggestions stay in this task until you copy them to the manuscript`),children:U(`Review copy`)}),r,(0,C.jsx)(`a`,{className:`icon-button`,href:`/api${v}/pdf`,target:`_blank`,rel:`noreferrer`,"aria-label":U(`Open PDF`),title:U(`Open PDF`),children:(0,C.jsx)(T,{name:`external`,size:16})})]}),noteActions:{has:e=>!!a.notes.find(t=>t.id===e)?.aiReview?.copiedTo,toggle:br,onEditing:br,onBusy:br,disabled:!1,edit:async()=>{},copy:async e=>{let n=await t(`${v}/${e.id}/copy`,{});y(n.note),i()},remove:async e=>{await t(`${v}/${e.id}/delete`,{}),o(t=>t&&{...t,notes:t.notes.filter(t=>t.id!==e.id)})},restore:async e=>{let n=await t(`${v}/${e.id}/restore`,{});o(e=>e&&{...e,notes:[...e.notes.filter(e=>e.id!==n.id),n].sort((e,t)=>e.createdAt-t.createdAt||e.id.localeCompare(t.id))}),f(n.id)}}})}):!s&&(0,C.jsx)(`div`,{className:`review-loading`,children:(0,C.jsx)(`p`,{role:`status`,children:U(`Opening the PDF…`)})})]})}function Sr(e){if(e.key!==`Tab`)return;let t=Array.from(e.currentTarget.querySelectorAll(`a[href], button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), summary, [tabindex="0"]`)).filter(e=>e.getClientRects().length>0&&!e.closest(`[inert]`)),n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}function Cr({task:e,submit:t,onClose:n,onDeleted:r,refresh:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(!1),[s,c]=(0,S.useState)(!1),[l,u]=(0,S.useState)(``),d=[`running`,`waiting_input`,`queued`].includes(e.status)?U(`Pause this task before deleting it.`):e.status===`building`?U(`Wait for the PDF build to finish before deleting this task.`):e.status===`uncertain`?U(`Check task status before deleting this task.`):``;(0,S.useEffect)(()=>{let e=document.activeElement,t=a.current;return t.showModal(),t.querySelector(`[data-cancel]`)?.focus(),()=>{t.close(),e?.isConnected&&e.getClientRects().length&&!e.closest(`[inert]`)?e.focus():Array.from(document.querySelectorAll(`.sidebar .new-task, .sidebar-toggle`)).find(e=>e.getClientRects().length&&!e.closest(`[inert]`))?.focus()}},[]);async function f(){if(!(o.current||d)){o.current=!0,c(!0),u(``);try{await t(),r()}catch(e){u(e instanceof Error?e.message:String(e)),i()}finally{o.current=!1,c(!1)}}}return(0,C.jsx)(`dialog`,{ref:a,className:`modal-backdrop`,"aria-labelledby":`delete-title`,"aria-describedby":`delete-description`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),s||n()},onClick:e=>{e.target===e.currentTarget&&!s&&n()},children:(0,C.jsxs)(`section`,{className:`modal delete-dialog`,children:[(0,C.jsx)(`h2`,{id:`delete-title`,children:U(`Delete task?`)}),(0,C.jsx)(`p`,{className:`delete-task-name`,children:e.title}),(0,C.jsx)(`p`,{id:`delete-description`,children:U(`This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.`)}),(0,C.jsx)(`p`,{children:U(`Accepted changes in your manuscript stay in place. Other tasks are not affected.`)}),e.status===`deleting`&&(0,C.jsx)(`p`,{className:`muted`,children:U(`Deletion has already started. Retry to confirm the cleanup and remove the task.`)}),d&&(0,C.jsx)(`p`,{className:`inline-error`,role:`status`,children:d}),l&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:l}),(0,C.jsxs)(`div`,{className:`button-row`,children:[(0,C.jsx)(`button`,{"data-cancel":!0,className:`button secondary`,disabled:s,onClick:n,children:U(`Cancel`)}),(0,C.jsx)(`button`,{className:`button danger`,disabled:s||!!d,onClick:()=>void f(),children:s?U(`Deleting…`):e.status===`deleting`?U(`Retry deletion`):U(`Delete task`)})]})]})})}function wr({label:e,value:t,options:n,onChange:r,disabled:i,icon:a,className:o=``}){return(0,C.jsxs)(`label`,{className:`chip-select `+o,title:e,children:[a&&(0,C.jsx)(T,{name:a,size:14}),(0,C.jsx)(`span`,{className:`chip-value`,children:n.find(e=>e.value===t)?.label??t}),(0,C.jsx)(`select`,{"aria-label":e,disabled:i,value:t,onChange:e=>r(e.target.value),children:n.map(e=>(0,C.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})}var Tr=!!window.papilotDesktop;Tr&&(document.documentElement.dataset.desktop=window.papilotDesktop.platform);var Er=!!window.papilotDesktop?.chooseDirectory,Dr=()=>window.papilotDesktop.chooseDirectory();function Or(){if(!Tr)return null;let e=window.papilotDesktop;return(0,C.jsx)(`div`,{className:`desktop-window-drag`,children:e.platform!==`darwin`&&(0,C.jsxs)(`div`,{className:`desktop-window-buttons`,children:[(0,C.jsx)(`button`,{className:`desktop-window-close`,"aria-label":U(`Close window`),title:U(`Close window`),onClick:()=>e.close(),children:(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,children:(0,C.jsx)(`path`,{d:`m4 4 8 8M12 4l-8 8`})})}),(0,C.jsx)(`button`,{"aria-label":U(`Minimize window`),title:U(`Minimize window`),onClick:()=>e.minimize(),children:(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,children:(0,C.jsx)(`path`,{d:`M3 8h10`})})}),(0,C.jsx)(`button`,{"aria-label":U(`Maximize or restore window`),title:U(`Maximize or restore window`),onClick:()=>e.maximize(),children:(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,children:(0,C.jsx)(`rect`,{x:`3.5`,y:`3.5`,width:`9`,height:`9`,rx:`1`})})})]})})}var kr=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20fill='none'%3e%3crect%20x='18'%20y='48'%20width='14'%20height='10'%20fill='%23F0F4F8'%20stroke='%23000000'%20stroke-width='2'/%3e%3crect%20x='32'%20y='48'%20width='14'%20height='10'%20fill='%23C6D5E5'%20stroke='%23000000'%20stroke-width='2'/%3e%3cpath%20d='M32%206L12%2034L18%2048H32V6Z'%20fill='%23FFFFFF'/%3e%3cpath%20d='M32%206L52%2034L46%2048H32V6Z'%20fill='%23356AA0'/%3e%3cpath%20d='M32%206L52%2034L46%2048H18L12%2034L32%206Z'%20stroke='%23000000'%20stroke-width='2'%20stroke-linejoin='miter'%20stroke-miterlimit='2'/%3e%3cpath%20d='M32%206V20'%20stroke='%23000000'%20stroke-width='2'/%3e%3cpath%20d='M32%2020Q35%2031%2046%2034Q35%2037%2032%2048Q29%2037%2018%2034Q29%2031%2032%2020Z'%20fill='%23FFFFFF'%20stroke='%23000000'%20stroke-width='2'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Ar=e=>[`installing`,`waiting`,`restarting`].includes(e.phase),jr=!1,Mr=e=>e.replace(/(-dev\.[a-f0-9]{7})[a-f0-9]{33}$/,`$1`);function Nr(e){return e===`The dev build needs at least 2 GB of free disk space. Free some space and retry.`?U(`The dev build needs at least 2 GB of free disk space. Free some space and retry.`):e===`Could not check for updates. Try again when connected.`?U(`Could not check for updates. Try again when connected.`):e===`This version needs the latest desktop app. Download it from GitHub Releases.`?U(`This version needs the latest desktop app. Download it from GitHub Releases.`):e===`The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.`?U(`The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.`):e}function Pr(e,t){let[n,r]=(0,S.useState)(null),i=(0,S.useRef)(0),a=e=>{i.current++,r(e)},o=(0,S.useRef)(t),s=(0,S.useRef)(n);return s.current=n,(0,S.useEffect)(()=>{let t=!1,n=!1,a,c=async()=>{if(n)return;n=!0;let l=++i.current;try{let n=await e(`/updates`);if(t||l!==i.current||!n?.currentVersion)return;o.current??=n.currentVersion,r(n),n.phase===`updated`&&n.currentVersion!==o.current&&!jr&&(jr=!0,location.reload())}catch{}finally{n=!1,t||(a=setTimeout(c,s.current&&Ar(s.current)?2e3:3e4))}};c();let l=()=>{clearTimeout(a),c()};return window.addEventListener(`online`,l),window.addEventListener(`focus`,l),window.addEventListener(`papilot:updates`,l),()=>{t=!0,clearTimeout(a),window.removeEventListener(`online`,l),window.removeEventListener(`focus`,l),window.removeEventListener(`papilot:updates`,l)}},[e,n?.phase]),{status:n,setStatus:a}}function Fr({api:e,version:t}){let{status:n,setStatus:r}=Pr(e,t),[i,a]=(0,S.useState)(!1),[o,s]=(0,S.useState)(!1),[c,l]=(0,S.useState)(``),u=(0,S.useRef)(null);(0,S.useEffect)(()=>{if(!i)return;let e=document.activeElement,t=u.current;return t.showModal(),()=>{t.close(),e?.isConnected&&e.focus()}},[i]);let d=(0,C.jsxs)(`span`,{className:`brand-version`,title:U(`Papilot {version}`,{version:t}),children:[`v`,Mr(t)]});if(!n)return d;let f=Ar(n),p=n.latestVersion&&n.latestVersion!==n.currentVersion;if(!i&&!f&&n.phase!==`failed`&&(!p||n.phase===`idle`))return d;let m=n.phase===`installing`?U(`Updating…`):n.phase===`waiting`?U(`Update ready`):n.phase===`restarting`?U(`Restarting…`):n.phase===`failed`?U(`Update failed`):U(`New version`),h=`${U(`Papilot {version}`,{version:Mr(t)})} · ${m}${n.latestVersion?` · v${Mr(n.latestVersion)}`:``}`;async function g(){if(n&&!o){s(!0),l(``);try{r(await e(`/updates/install`,{version:n.latestVersion}))}catch(e){l(e instanceof Error?e.message:U(`Could not start the update. Please retry.`))}finally{s(!1)}}}return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{type:`button`,className:`brand-version update-badge`+(n.phase===`failed`?` failed`:``),"aria-label":h,"aria-haspopup":`dialog`,"aria-expanded":i,"aria-busy":f||void 0,title:h,onClick:()=>a(!0),children:[`v`,Mr(t),(0,C.jsx)(`span`,{className:`update-dot`,"aria-hidden":`true`})]}),i&&(0,C.jsxs)(`dialog`,{ref:u,className:`update-dialog`,"aria-labelledby":`update-title`,onCancel:e=>{e.preventDefault(),a(!1)},onKeyDown:Sr,onClick:e=>{e.target===e.currentTarget&&a(!1)},children:[(0,C.jsxs)(`div`,{className:`update-heading`,children:[(0,C.jsx)(`h2`,{id:`update-title`,children:U(`Update Papilot`)}),(0,C.jsx)(`button`,{className:`icon-button`,"aria-label":U(`Close`),onClick:()=>a(!1),children:(0,C.jsx)(T,{name:`close`,size:16})})]}),(0,C.jsxs)(`p`,{className:`update-versions`,children:[(0,C.jsx)(`span`,{children:Mr(n.currentVersion)}),(0,C.jsx)(T,{name:`arrowRight`,size:14}),(0,C.jsx)(`strong`,{children:Mr(n.latestVersion||n.currentVersion)})]}),(0,C.jsx)(`p`,{role:`status`,children:n.downloadUrl?U(`Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.`):n.phase===`installing`?U(`Downloading and checking the new version…`):n.phase===`waiting`?U(`The update is ready. Waiting for tasks and PDF builds to finish before restarting.`):n.phase===`restarting`?U(`Restarting Papilot. This page will reconnect automatically; your drafts are kept.`):n.phase===`failed`?U(`The update did not finish. Your current version is still available. You can retry here.`):U(`Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.`)}),!n.canUpdate&&!n.downloadUrl&&(0,C.jsx)(`p`,{className:`inline-error`,children:U(`Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.`)}),(c||n.error)&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:Nr(c||n.error)}),(0,C.jsxs)(`div`,{className:`update-actions`,children:[(0,C.jsx)(`button`,{className:`button ghost`,onClick:()=>a(!1),children:U(f?`Close`:`Later`)}),n.downloadUrl?(0,C.jsx)(`a`,{className:`button primary`,href:n.downloadUrl,target:`_blank`,rel:`noreferrer`,children:U(`Download desktop updates`)}):!f&&(0,C.jsx)(`button`,{className:`button primary`,disabled:o||!n.canUpdate||!p,onClick:()=>void g(),children:o?U(`Updating…`):n.phase===`failed`?U(`Retry update`):U(`Update to {version}`,{version:Mr(n.latestVersion||``)})})]})]})]})}function Ir({api:e}){let{status:t,setStatus:n}=Pr(e),[r,i]=(0,S.useState)(!1),[a,o]=(0,S.useState)(``);async function s(t,r={}){i(!0),o(``);try{n(await e(t,r)),window.dispatchEvent(new Event(`papilot:updates`))}catch(e){o(e instanceof Error?e.message:U(`Could not check for updates. Try again when connected.`))}finally{i(!1)}}if(!t)return(0,C.jsx)(`div`,{className:`update-settings settings-page`,children:(0,C.jsxs)(`section`,{className:`settings-card update-summary update-loading`,children:[(0,C.jsx)(`p`,{role:`status`,children:U(`Reading update status…`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:r,onClick:()=>void s(`/updates/check`),children:U(`Check for updates`)}),a&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:Nr(a)})]})});let c=Ar(t),l=t.latestVersion&&t.latestVersion!==t.currentVersion&&t.phase!==`idle`&&t.phase!==`checking`,u=t.phase===`checking`,d=a||t.error,f=!!d&&!c&&!u&&t.phase!==`failed`,p=t.phase===`installing`?U(`Updating…`):t.phase===`waiting`?U(`Update ready`):t.phase===`restarting`?U(`Restarting…`):u?U(`Checking for updates…`):t.phase===`failed`?U(`Update failed`):f?U(`Could not check for updates`):l?U(`Update available`):t.latestVersion?U(`Up to date`):U(`Ready to check for updates`),m=t.phase===`failed`?`failed`:f?`warning`:c||u?`active`:l?`available`:t.latestVersion?`current`:`idle`,h=m===`failed`||m===`warning`?`alert`:c||u?`refresh`:l?`arrowUp`:t.latestVersion?`check`:`refresh`;return(0,C.jsx)(`div`,{className:`update-settings settings-page`,children:(0,C.jsxs)(`section`,{className:`settings-card update-summary`,"aria-label":U(`Update Papilot`),children:[(0,C.jsxs)(`div`,{className:`update-product-row`,children:[(0,C.jsxs)(`div`,{className:`update-product`,children:[(0,C.jsx)(`span`,{className:`update-product-mark`,children:(0,C.jsx)(`img`,{src:kr,width:`34`,height:`34`,alt:``})}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Papilot`}),(0,C.jsxs)(`p`,{className:`update-current-version`,children:[(0,C.jsx)(`span`,{children:U(`Current version`)}),(0,C.jsx)(`code`,{title:t.currentVersion,children:Mr(t.currentVersion)})]})]})]}),(0,C.jsxs)(`button`,{className:`button secondary update-check`,disabled:r||c||u,onClick:()=>void s(`/updates/check`),children:[(0,C.jsx)(T,{name:`refresh`,size:14}),U(`Check for updates`)]})]}),(0,C.jsxs)(`div`,{className:`update-status `+m,children:[(0,C.jsxs)(`div`,{className:`update-summary-heading`,role:`status`,children:[(0,C.jsx)(`span`,{className:`update-summary-icon`,children:(0,C.jsx)(T,{name:h,size:17})}),(0,C.jsx)(`h4`,{id:`update-settings-title`,children:p})]}),!f&&(0,C.jsx)(`p`,{className:`update-status-description`,children:t.phase===`installing`?t.channel===`dev`&&!Tr?U(`Downloading and building the selected GitHub commit…`):U(`Downloading and checking the new version…`):t.phase===`waiting`?U(`The update is ready. Waiting for tasks and PDF builds to finish before restarting.`):t.phase===`restarting`?U(`Restarting Papilot. This page will reconnect automatically; your drafts are kept.`):u?null:t.phase===`failed`?U(`The update did not finish. Your current version is still available. You can retry here.`):l?t.downloadUrl?U(`Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.`):U(`Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.`):t.latestVersion?U(`You are using the latest version on this channel.`):U(`Check for updates to see the latest version.`)}),d&&(0,C.jsx)(`p`,{className:`update-status-error`,role:`alert`,children:d===`Could not check for updates. Try again when connected.`?U(`Check your connection and try again.`):Nr(d)}),t.latestVersion&&t.latestVersion!==t.currentVersion&&(0,C.jsxs)(`div`,{className:`update-release`,children:[(0,C.jsxs)(`p`,{id:`update-latest-version`,children:[(0,C.jsx)(`span`,{children:U(`Latest version`)}),(0,C.jsx)(`code`,{title:t.latestVersion,children:Mr(t.latestVersion)})]}),l&&!c&&(t.downloadUrl?(0,C.jsx)(`a`,{className:`button primary`,href:t.downloadUrl,target:`_blank`,rel:`noreferrer`,children:U(`Download desktop updates`)}):(0,C.jsxs)(`button`,{className:`button primary`,"aria-describedby":`update-latest-version`,disabled:r||!t.canUpdate,onClick:()=>void s(`/updates/install`,{version:t.latestVersion}),children:[(0,C.jsx)(T,{name:`arrowUp`,size:15}),t.phase===`failed`?U(`Retry update`):U(`Update now`)]}))]})]}),!t.canUpdate&&!t.downloadUrl&&(0,C.jsxs)(`p`,{className:`update-settings-notice`,children:[(0,C.jsx)(T,{name:`info`,size:15}),(0,C.jsx)(`span`,{children:U(`Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.`)})]}),(t.channel||!t.downloadUrl)&&(0,C.jsxs)(`div`,{className:`update-channel`,children:[(0,C.jsxs)(`div`,{className:`update-channel-copy`,children:[(0,C.jsx)(`h4`,{children:U(`Update channel`)}),(0,C.jsx)(`p`,{children:t.channel===`dev`?U(`Early updates from GitHub main. May be less stable.`):U(`Published releases, recommended for everyday use.`)})]}),(0,C.jsx)(wr,{label:U(`Update channel`),icon:t.channel===`dev`?`branch`:void 0,value:t.channel||`stable`,disabled:r||c,onChange:e=>void s(`/updates/channel`,{channel:e}),options:[{value:`stable`,label:U(`Stable`)},{value:`dev`,label:U(`Dev (GitHub main)`)}]})]})]})})}function Lr({name:e,candidates:t,open:n,onClose:r}){let i=(0,S.useRef)(null),a=(0,S.useRef)(!1),[o,s]=(0,S.useState)(t[0]),[c,l]=(0,S.useState)(!1),[u,d]=(0,S.useState)(``);(0,S.useEffect)(()=>{let e=i.current,t=document.activeElement;return e.showModal(),e.querySelector(`select`)?.focus(),()=>{e.close(),t?.isConnected&&t.focus()}},[]);async function f(){if(!a.current){a.current=!0,l(!0),d(``);try{await n(o)}catch(e){d(e instanceof Error?e.message:String(e))}finally{a.current=!1,l(!1)}}}function p(){c||r()}return(0,C.jsx)(`dialog`,{ref:i,className:`modal-backdrop`,"aria-labelledby":`main-file-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),p()},onClick:e=>{e.target===e.currentTarget&&p()},children:(0,C.jsxs)(`section`,{className:`modal`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),disabled:c,onClick:p,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`main-file-title`,children:e}),(0,C.jsx)(`p`,{className:`modal-description`,children:U(`Several TeX files were found. Check the selected main document before continuing.`)}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),f()},children:[(0,C.jsxs)(`label`,{children:[U(`Main TeX file`),(0,C.jsx)(`select`,{value:o,disabled:c,onChange:e=>s(e.target.value),children:t.map(e=>(0,C.jsx)(`option`,{value:e,children:e},e))})]}),u&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:u}),(0,C.jsxs)(`div`,{className:`button-row`,children:[(0,C.jsx)(`button`,{type:`button`,className:`button secondary`,disabled:c,onClick:p,children:U(`Cancel`)}),(0,C.jsx)(`button`,{className:`button primary`,disabled:c,children:U(`Open paper`)})]})]})]})})}function Rr({paper:e,canManage:t,save:n,remove:r,onClose:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(!1),[s,c]=(0,S.useState)({name:e.name,path:e.path}),[l,u]=(0,S.useState)(!1),[d,f]=(0,S.useState)(!1),[p,m]=(0,S.useState)(``),h=(0,S.useId)(),g=Math.max(0,s.path.replace(/\/+$/,``).lastIndexOf(`/`));(0,S.useEffect)(()=>{let e=a.current;e.showModal();let t=e.querySelector(`[name="name"]`);return t?.focus(),t?.select(),()=>{e.close(),document.querySelector(`.project-switcher, .add-project, .sidebar-toggle`)?.focus()}},[]),(0,S.useEffect)(()=>{l&&a.current?.querySelector(`[data-cancel]`)?.focus()},[l]);function _(){d||(l?(u(!1),m(``),requestAnimationFrame(()=>a.current?.querySelector(`[data-remove]`)?.focus())):i())}async function v(){if(!o.current){o.current=!0,f(!0),m(``);try{l?await r():await n({name:s.name.trim().replace(/\s+/g,` `),path:s.path.trim()}),i()}catch(e){m(e instanceof Error?e.message:String(e))}finally{o.current=!1,f(!1)}}}return(0,C.jsx)(`dialog`,{ref:a,className:`modal-backdrop`,"aria-labelledby":`paper-dialog-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),_()},onClick:e=>{e.target===e.currentTarget&&_()},children:(0,C.jsxs)(`section`,{className:`modal paper-dialog`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),disabled:d,onClick:i,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`paper-dialog-title`,children:U(l?`Remove paper?`:`Edit paper`)}),l?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`paper-dialog-name`,children:e.name}),(0,C.jsx)(`p`,{children:U(`Remove this paper and its tasks, conversations and notes from Papilot?`)}),(0,C.jsx)(`p`,{children:U(`Files on disk, Git history and task worktrees will stay in place.`)})]}):!Er&&(0,C.jsx)(`p`,{className:`modal-description`,children:U(`LaTeX Git repository · Requires a commit and latexmk`)}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),v()},children:[!l&&(Er?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[U(`Paper name`),(0,C.jsx)(`input`,{name:`name`,value:s.name,onChange:e=>c({...s,name:e.target.value}),required:!0,maxLength:120,disabled:d,autoComplete:`off`})]}),(0,C.jsxs)(`div`,{className:`modal-field`,role:`group`,"aria-labelledby":h,children:[(0,C.jsx)(`span`,{id:h,children:U(`Location`)}),(0,C.jsxs)(`div`,{className:`paper-location`,title:s.path,children:[(0,C.jsx)(T,{name:`folder`,size:16}),(0,C.jsxs)(`span`,{className:`paper-location-path`,children:[(0,C.jsx)(`span`,{className:`paper-location-parent`,children:s.path.slice(0,g)}),(0,C.jsx)(`span`,{className:`paper-location-name`,children:s.path.slice(g)})]}),(0,C.jsx)(`button`,{type:`button`,className:`button ghost compact`,disabled:d||!t,onClick:()=>void Dr().then(e=>{e&&c(t=>({...t,path:e}))}),children:U(`Change…`)})]})]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[U(`Repository path`),(0,C.jsx)(`input`,{name:`path`,value:s.path,onChange:e=>c({...s,path:e.target.value}),required:!0,maxLength:4e3,disabled:d||!t,spellCheck:!1,autoComplete:`off`})]}),(0,C.jsxs)(`label`,{children:[U(`Paper name`),(0,C.jsx)(`input`,{name:`name`,value:s.name,onChange:e=>c({...s,name:e.target.value}),required:!0,maxLength:120,disabled:d,autoComplete:`off`})]})]})),p&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:p}),(0,C.jsxs)(`div`,{className:`button-row paper-dialog-actions`,children:[!l&&t&&(0,C.jsxs)(`button`,{type:`button`,"data-remove":!0,className:`button ghost danger-text paper-remove`,disabled:d,onClick:()=>{m(``),u(!0)},children:[(0,C.jsx)(T,{name:`trash`,size:15}),U(`Remove paper`)]}),(0,C.jsx)(`button`,{type:`button`,"data-cancel":!0,className:`button secondary`,disabled:d,onClick:_,children:U(`Cancel`)}),(0,C.jsx)(`button`,{className:`button `+(l?`danger`:`primary`),type:`submit`,disabled:d||!l&&(!s.name.trim()||!s.path.trim()),children:U(d?l?`Removing…`:`Saving…`:l?`Remove from Papilot`:`Save`)})]})]})]})})}var zr=e=>e.split(`/`).some(e=>[`.git`,`__macosx`,`.ds_store`,`node_modules`,`.papilot`].includes(e.toLowerCase())||e.startsWith(`._`));function Br(e,t){if(e>5e3||t>67108864)throw Error(U(`Choose up to 5,000 files, totaling less than 64 MB.`))}async function Vr(e){let t=[],n=[e],r=0;for(;n.length;){let e=n.pop(),i=e.fullPath.replace(/^\//,``);if(!zr(i)){if(e.isDirectory){let t=e.createReader();for(;;){let e=await new Promise((e,n)=>t.readEntries(e,n));if(!e.length)break;n.push(...e)}}else if(e.isFile){let n=await new Promise((t,n)=>e.file(t,n));r+=n.size,Br(t.length+1,r),t.push({file:n,path:i})}}}return t}var Hr=`papilot:paper-import`;function Ur(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(U(`Could not read the selected file.`))),r.onload=()=>t(String(r.result).split(`,`)[1]),r.readAsDataURL(e)})}var Wr=e=>{let t=Math.max(0,Math.floor(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`};function Gr({draft:e}){let[t,n]=(0,S.useState)(Date.now());(0,S.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(e)},[]);let r=e.phase===`repairing`?void 0:e.progress,i=r?.step===`tex`&&r.pass>0?r:void 0,a=e.phase===`repairing`?U(`The assistant is fixing compilation…`):r?.step===`bibliography`?U(`Processing the bibliography…`):r?.step===`pdf`?U(`Writing the PDF…`):i?U(`Typesetting with LaTeX, pass {n}…`,{n:i.pass}):U(`Preparing version history and compiling the PDF…`),o=i?.total?Math.max(i.total,i.pages):null;return(0,C.jsxs)(`div`,{className:`import-status`,children:[(0,C.jsx)(`span`,{className:`spinner`}),(0,C.jsxs)(`div`,{className:`import-status-body`,children:[(0,C.jsxs)(`div`,{className:`import-status-line`,children:[(0,C.jsx)(`span`,{role:`status`,children:a}),e.startedAt?(0,C.jsx)(`span`,{className:`import-elapsed`,children:Wr(t-e.startedAt)}):null]}),i&&(0,C.jsxs)(`div`,{className:`import-progress`,children:[(0,C.jsx)(`div`,{className:`import-progress-track`,role:`progressbar`,"aria-label":U(`Pages typeset`),"aria-valuemin":0,"aria-valuenow":i.pages,...o?{"aria-valuemax":o}:{},children:(0,C.jsx)(`span`,{className:o?``:`indeterminate`,style:o?{width:`${100*i.pages/o}%`}:void 0})}),(0,C.jsx)(`span`,{className:`import-pages`,children:o?U(`Page {pages} of {total}`,{pages:i.pages,total:o}):U(`Page {pages}`,{pages:i.pages})})]})]})]})}function Kr({api:e,agent:t,canRepair:n,onDone:r,onClose:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(null),s=(0,S.useRef)(null),c=(0,S.useRef)(!1),[l,u]=(0,S.useState)(null),[d,f]=(0,S.useState)({name:``,path:``,main:``,engine:`pdflatex`}),[p,m]=(0,S.useState)(!1),[h,g]=(0,S.useState)(``),[_,v]=(0,S.useState)(!1),y=l?.phase===`building`||l?.phase===`repairing`,b=p||y;function x(e){u(e),f(t=>({...t,name:e.name,main:e.main,engine:e.engine})),D.setItem(Hr,e.id)}(0,S.useEffect)(()=>{let t=a.current,n=document.activeElement;t.showModal(),o.current?.setAttribute(`webkitdirectory`,``),t.querySelector(`[data-choose-folder]`)?.focus();let r=D.getItem(Hr),i=!0;return r&&(m(!0),e(`/imports/`+r).then(e=>{i&&x(e)},()=>D.removeItem(Hr)).finally(()=>{i&&m(!1)})),()=>{i=!1,t.close(),n?.isConnected&&n.focus()}},[]),(0,S.useEffect)(()=>{if(!l||!y)return;let t=!0,n;async function r(){try{let n=await e(`/imports/`+l.id);t&&(x(n),g(``))}catch(e){t&&g(e.message)}t&&(n=setTimeout(r,1e3))}return n=setTimeout(r,500),()=>{t=!1,clearTimeout(n)}},[l?.id,y]);async function w(e){if(!c.current){c.current=!0,m(!0),g(``);try{await e()}catch(e){g(e instanceof Error?e.message:String(e))}finally{c.current=!1,m(!1)}}}async function E(t){x(t),t.copied&&t.main&&!t.error&&t.phase===`choose`&&x(await e(`/imports/${t.id}/build`,{main:t.main,engine:t.engine,name:t.name}))}async function O(t,n){let r=t.filter(e=>!zr(e.path));if(!r.length)throw Error(U(`No files found in this folder.`));if(Br(r.length,r.reduce((e,t)=>e+t.file.size,0)),n&&(r.length!==1||!/\.zip$/i.test(r[0].file.name)))throw Error(U(`Drop one folder or LaTeX ZIP file.`));let i=n?r[0].file.name.replace(/\.zip$/i,``):r[0].path.split(`/`)[0];await E(await e(`/imports`,n?{zip:await Ur(r[0].file),name:i.slice(0,120)}:{files:await Promise.all(r.map(async e=>({path:e.path,data:await Ur(e.file)}))),name:i.slice(0,120)},void 0,12e4))}let k=(e,t)=>w(()=>O(e.map(e=>({file:e,path:e.webkitRelativePath||e.name})),t)),A=async t=>E(await e(`/imports`,{path:t},void 0,12e4));function j(e){let t=Array.from(e.files),n=Array.from(e.items).filter(e=>e.kind===`file`).map(e=>e.webkitGetAsEntry?.());w(async()=>{if(t.length!==1||n.length>1)throw Error(U(`Drop one folder or LaTeX ZIP file.`));let e=n[0];e?.isDirectory?await O(await Vr(e),!1):await O(t.map(e=>({file:e,path:e.name})),!0)})}let M=(n=!1)=>w(async()=>x(await e(`/imports/${l.id}/${n?`repair`:`build`}`,{name:d.name,main:d.main,engine:d.engine,agent:t}))),N=()=>w(async()=>{let t=await e(`/imports/${l.id}/finish`,{});D.removeItem(Hr),await r(t)}),P=l?.error||``,F=/ENOBUFS|ERR_CHILD_PROCESS_STDIO_MAXBUFFER|Git snapshot export/i.test(P),I=F?U(`Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.`):/not found|ENOENT|not installed/i.test(P)&&/latexmk|pdflatex|xelatex|lualatex/i.test(P)?U(`Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.`):/fontspec|Unicode character|xeCJK/i.test(P)?U(`This paper may need XeLaTeX. Change the engine below and retry.`):/not found|missing|cannot find/i.test(P)?U(`A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.`):U(`Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.`);function L(){p||i()}return(0,C.jsx)(`dialog`,{ref:a,className:`modal-backdrop`,"aria-labelledby":`import-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),L()},onClick:e=>{e.target===e.currentTarget&&L()},children:(0,C.jsxs)(`section`,{className:`modal import-dialog`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),disabled:p,onClick:L,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`import-title`,children:U(`Add a paper`)}),(0,C.jsx)(`p`,{className:`modal-description`,children:U(`Choose a folder or ZIP, or drag it here.`)}),l?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`ol`,{className:`import-steps`,"aria-label":U(`Import progress`),children:[(0,C.jsx)(`li`,{className:`done`,children:U(`Files received`)}),(0,C.jsx)(`li`,{className:l.versioned?`done`:``,children:U(`Version history`)}),(0,C.jsx)(`li`,{className:l.phase===`ready`?`done`:``,children:U(`PDF compilation`)})]}),(0,C.jsxs)(`p`,{className:`import-location`,children:[U(`Saved folder`),(0,C.jsx)(`br`,{}),(0,C.jsx)(`code`,{children:l.path})]}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),M()},children:[(0,C.jsxs)(`label`,{children:[U(`Paper name`),(0,C.jsx)(`input`,{required:!0,maxLength:120,value:d.name,disabled:b,onChange:e=>f({...d,name:e.target.value})})]}),(0,C.jsxs)(`div`,{className:`import-settings`,children:[(0,C.jsxs)(`label`,{children:[U(`Main TeX file`),(0,C.jsx)(`input`,{"aria-label":U(`Main TeX file`),list:`import-main-files`,value:d.main,disabled:b,onChange:e=>f({...d,main:e.target.value}),placeholder:`main.tex`,spellCheck:!1}),(0,C.jsx)(`datalist`,{id:`import-main-files`,children:l.candidates.map(e=>(0,C.jsx)(`option`,{value:e},e))})]}),(0,C.jsxs)(`label`,{children:[U(`LaTeX engine`),(0,C.jsxs)(`select`,{"aria-label":U(`LaTeX engine`),value:d.engine,disabled:b,onChange:e=>f({...d,engine:e.target.value}),children:[(0,C.jsx)(`option`,{value:`pdflatex`,children:`pdfLaTeX`}),(0,C.jsx)(`option`,{value:`xelatex`,children:`XeLaTeX`}),(0,C.jsx)(`option`,{value:`lualatex`,children:`LuaLaTeX`})]})]})]}),!l.candidates.length&&(0,C.jsx)(`p`,{role:`alert`,children:U(`Could not detect a main file. Enter its path relative to the paper folder.`)}),l.candidates.length>1&&l.phase===`choose`&&(0,C.jsx)(`p`,{children:U(`Several TeX files were found. Check the selected main document before continuing.`)}),y&&(0,C.jsx)(Gr,{draft:l}),l.phase===`ready`&&(0,C.jsx)(`p`,{className:`import-success`,role:`status`,children:U(`Your paper compiled successfully. It is ready for editing.`)}),(P||l.phase===`failed`)&&(0,C.jsxs)(`div`,{className:`import-problem`,role:`alert`,children:[(0,C.jsx)(`strong`,{children:U(F?`Could not prepare the paper`:`The paper needs a little help`)}),(0,C.jsx)(`p`,{children:I}),(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:U(`Compilation details`)}),(0,C.jsx)(`pre`,{children:P})]})]}),l.summary&&(0,C.jsxs)(`div`,{className:`import-summary`,children:[(0,C.jsx)(`strong`,{children:U(`Repair summary`)}),(0,C.jsx)(`p`,{children:l.summary}),(0,C.jsx)(`p`,{children:U(`Repairs are saved as uncommitted changes. Review them in the paper’s file changes.`)})]}),(0,C.jsxs)(`div`,{className:`button-row import-actions`,children:[l.phase===`failed`&&!F&&(0,C.jsx)(`button`,{type:`button`,className:`button secondary`,disabled:b||!n||!d.main,onClick:()=>void M(!0),children:U(`Help fix compilation`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:b||!d.main||!d.name.trim(),type:`submit`,children:l.phase===`choose`?U(`Prepare and compile`):U(`Retry compilation`)}),l.versioned&&!y&&(0,C.jsx)(`button`,{type:`button`,className:`button primary`,disabled:p||d.main!==l.main||d.engine!==l.engine||d.name!==l.name,onClick:()=>void N(),children:l.phase===`ready`?U(`Open paper`):U(`Add and fix later`)})]}),l.phase===`failed`&&!F&&!n&&(0,C.jsx)(`p`,{className:`modal-description`,children:U(`Connect an assistant in Settings to help repair this paper.`)})]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`import-drop`+(_?` dragging`:``),onDragOver:e=>{e.preventDefault(),v(!0)},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||v(!1)},onDrop:e=>{e.preventDefault(),v(!1),b||j(e.dataTransfer)},children:[(0,C.jsxs)(`div`,{className:`import-options`,children:[(0,C.jsxs)(`div`,{className:`import-option`,children:[(0,C.jsx)(T,{name:`folder`,size:28}),(0,C.jsx)(`strong`,{children:U(`Open a folder`)}),(0,C.jsx)(`p`,{children:U(`Choose a folder to upload a copy. To use original files, open it in the desktop app.`)}),(0,C.jsx)(`button`,{"data-choose-folder":!0,className:`button secondary`,disabled:b,onClick:()=>o.current?.click(),children:U(`Choose folder`)})]}),(0,C.jsxs)(`div`,{className:`import-option`,children:[(0,C.jsx)(T,{name:`file`,size:28}),(0,C.jsx)(`strong`,{children:U(`Import a ZIP`)}),(0,C.jsx)(`p`,{children:U(`Import a separate copy from Overleaf or a ZIP archive.`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:b,onClick:()=>s.current?.click(),children:U(`Choose ZIP`)})]})]}),(0,C.jsx)(`span`,{children:U(`Or drop a folder or ZIP here`)})]}),(0,C.jsx)(`input`,{hidden:!0,webkitdirectory:``,ref:o,type:`file`,multiple:!0,"aria-label":U(`Choose folder`),onChange:e=>{k(Array.from(e.target.files||[]),!1),e.target.value=``}}),(0,C.jsx)(`input`,{hidden:!0,ref:s,type:`file`,accept:`.zip,application/zip`,"aria-label":U(`Choose ZIP`),onChange:e=>{k(Array.from(e.target.files||[]),!0),e.target.value=``}}),(0,C.jsxs)(`details`,{className:`import-path`,children:[(0,C.jsx)(`summary`,{children:U(`Enter a folder path`)}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),w(()=>A(d.path))},children:[(0,C.jsxs)(`label`,{children:[U(`Folder path`),(0,C.jsx)(`input`,{value:d.path,required:!0,disabled:b,maxLength:4e3,onChange:e=>f({...d,path:e.target.value}),placeholder:U(`/Users/you/papers/my-paper`),spellCheck:!1})]}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:b,children:U(`Read folder`)})]})]}),p&&(0,C.jsx)(`p`,{role:`status`,children:U(`Reading paper files…`)})]}),h&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:h}),(0,C.jsxs)(`div`,{className:`button-row import-footer`,children:[l&&!y&&(0,C.jsx)(`button`,{type:`button`,className:`button ghost`,disabled:p,onClick:()=>{D.removeItem(Hr),u(null),g(``)},children:U(`Choose different files`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:p,onClick:L,children:U(l?`Continue later`:`Cancel`)})]})]})})}function qr({status:e,label:t,disabled:n,className:r=``,onCompile:i}){let a=(0,S.useRef)(!1),[o,s]=(0,S.useState)(!1),c=o?`building`:e,l=U(c===`building`?`Compiling the PDF…`:c===`failed`?`Compilation failed. Click to retry.`:c===`ready`?`PDF compiled successfully.`:`Compilation status unavailable.`);async function u(){if(!(a.current||n||c===`building`)){a.current=!0,s(!0);try{await i()}finally{a.current=!1,s(!1)}}}return(0,C.jsx)(`button`,{type:`button`,className:`icon-button compile-button ${r}`,"data-state":c,"aria-label":t,"aria-description":l,title:`${t} · ${l}`,"aria-busy":c===`building`,disabled:n||c===`building`,onClick:()=>void u(),children:c===`building`?(0,C.jsx)(`span`,{className:`spinner`,"aria-hidden":`true`}):(0,C.jsx)(T,{name:`compile`,size:24})})}function Jr(e){switch(e.kind){case`reference`:return U(`Undefined reference`);case`citation`:return U(`Undefined citation`);case`label`:return U(`Label defined more than once`);case`missing-file`:return U(`Missing file`);case`glyph`:return U(`Missing character`);case`overfull`:return U(`Line too wide by {amount}pt`,{amount:e.amount??0});default:return e.message}}var Yr=e=>e.key&&[`reference`,`citation`,`label`,`missing-file`,`glyph`].includes(e.kind),Xr=e=>{let t=We(e);return t.errors+t.warnings+t.minor},Zr=e=>e.file?`${e.file}${e.line?`:${e.line}${e.end?`–${e.end}`:``}`:``}`:``,Qr=e=>{let t={reference:`Undefined reference \`${e.key}\``,citation:`Undefined citation \`${e.key}\``,label:`Label \`${e.key}\` defined more than once`,"missing-file":`Missing file \`${e.key}\``,glyph:`Missing character ${e.key}`,overfull:`Overfull line, ${e.amount}pt too wide`}[e.kind]||e.message,n=Zr(e);return`- ${n?n+` — `:``}${t}`};function $r(e,t=40){let n=e.filter(e=>e.kind!==`other`),r=n.slice(0,t).map(Qr);return n.length>t&&r.push(`- …and ${n.length-t} more in the build log`),`Fix these problems from the last compilation:\n${r.join(`
193
+ `,bn(window.document.documentElement,e.documentElement),i.textContent+=qt,e.head.append(i)}function dr(e){let t=1,n=0;for(let r of e.querySelectorAll(`.pdf-strip`)){let e=r.getBoundingClientRect();if(e.width)for(let i of r.querySelectorAll(`.pdf-text-line`)){let r=i.firstElementChild?.getBoundingClientRect(),a=i.lastElementChild?.getBoundingClientRect();r?.width&&a?.width&&(t=Math.min(t,(r.left-e.left)/e.width),n=Math.max(n,(a.right-e.left)/e.width))}}let r=e.documentElement.style,i=n-t+.04;n<=t||i>=.95?(r.removeProperty(`--pdf-crop-scale`),r.removeProperty(`--pdf-crop-shift`)):(r.setProperty(`--pdf-crop-scale`,(1/i).toFixed(4)),r.setProperty(`--pdf-crop-shift`,Math.max(0,t-.02).toFixed(4)))}function fr({task:e,changesOf:t,tools:n,lead:r,completion:i,onSendNotes:a,onDecided:o}){let s=Un(),c=$n(),l=e?`review-view:`+e.id:``,u=sr(),[d,f]=(0,S.useState)(()=>l&&K(l)||u),[p,m]=(0,S.useState)(!1),h=(0,S.useRef)(u);(0,S.useEffect)(()=>{h.current!==u&&(h.current=u,f(u),l&&Wt(l,void 0))},[u,l]);let g=e=>{f(e),l&&Wt(l,e)},_=e&&p?(0,C.jsx)(Kt,{mode:d===`paper`?`pdf`:`changes`,onMode:e=>g(e===`pdf`?`paper`:`changes`),changesTitle:U(`Changes`)}):null,v=Sn(),y=(0,S.useRef)(v);y.current=v;let b=e?v?.focus?.change.round:void 0,x=b===e?.review?.round?v?.focus?.change.stop:void 0,w=e?v?.focus?.sequence:void 0,[T,E]=(0,S.useState)(null),D=(0,S.useRef)(null),O=(0,S.useRef)(null),k=(0,S.useRef)(null),A=(0,S.useRef)(null),[j,M]=(0,S.useState)(0),[N,P]=(0,S.useState)(0),F=(0,S.useRef)(o);F.current=o;let I=(0,S.useRef)(null),L=(0,S.useRef)(null),[R,ee]=(0,S.useState)(0),[z,B]=(0,S.useState)(`loading`),te=Ce().language;(0,S.useEffect)(()=>{if(T&&D.current)return Kn(D.current,T)},[T]),(0,S.useEffect)(()=>{let e=T?.defaultView;e&&e.dispatchEvent(new CustomEvent(On,{detail:s}))},[T,s]),(0,S.useEffect)(()=>{T?.defaultView?.dispatchEvent(new CustomEvent(Jn,{detail:c}))},[T,c]),(0,S.useEffect)(()=>{T?.defaultView?.dispatchEvent(new CustomEvent(tr,{detail:d}))},[T,d]),(0,S.useEffect)(()=>{if(!T){m(!1);return}let e=T.documentElement,t=()=>m(e.dataset.fullPaper===`available`);t();let n=new MutationObserver(t);return n.observe(e,{attributes:!0,attributeFilter:[`data-full-paper`]}),()=>n.disconnect()},[T]),(0,S.useEffect)(()=>{let e=T?.defaultView;if(!e)return;let t=e=>{e.preventDefault(),window.dispatchEvent(new Event(`papilot:open-shortcuts`))};return e.addEventListener(`latex-review:help`,t),()=>e.removeEventListener(`latex-review:help`,t)},[T]),(0,S.useEffect)(()=>{B(`loading`);let e=setTimeout(()=>B(e=>e===`loading`?`slow`:e),15e3);return()=>{clearTimeout(e),I.current?.disconnect(),L.current?.disconnect()}},[R,te,b,w]),(0,S.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>M(Math.ceil(e.offsetWidth)));return t.observe(e),()=>t.disconnect()},[!!n]),(0,S.useEffect)(()=>{let e=k.current;if(!e){P(0);return}let t=new ResizeObserver(()=>P(Math.ceil(e.offsetWidth)));return t.observe(e),()=>t.disconnect()},[!!(r||_)]),(0,S.useEffect)(()=>{if(!T||!D.current||!A.current)return;let e=T.documentElement,t=T.querySelector(`.bar`),n=window.matchMedia(`(max-width: 520px)`),r=D.current,i=A.current,a=()=>{if(!r.isConnected||!i.isConnected)return;e.toggleAttribute(`data-papilot-phone`,n.matches),e.style.setProperty(`--papilot-tools`,`${j}px`),e.style.setProperty(`--papilot-lead`,`${N}px`),e.style.setProperty(`--papilot-bar-height`,`${i.offsetHeight}px`),e.toggleAttribute(`data-papilot-toolbar-stacked`,r.clientWidth-j-N<220);let a=O.current?.querySelector(`.icon-button`);a&&e.style.setProperty(`--papilot-button-size`,`${a.offsetWidth}px`),t&&e.style.setProperty(`--papilot-review-bar-height`,`${t.offsetHeight}px`)},o=new ResizeObserver(a);return o.observe(r),o.observe(i),t&&o.observe(t),n.addEventListener(`change`,a),a(),()=>{o.disconnect(),n.removeEventListener(`change`,a)}},[j,N,T]);function ne(){I.current?.disconnect();try{let e=D.current?.contentDocument;if(!e||!e.getElementById(`root`)&&!e.getElementById(`paper`)){B(`error`);return}ur(e,j,N,!!t),E(e),D.current?.contentWindow?.addEventListener(`latex-review:decided`,()=>{F.current?.(),y.current?.reload()});let n=e.getElementById(`root`);e.addEventListener(`scroll`,t=>{let r=t.target===e?e.scrollingElement:t.target===n?n:null;r&&(r.scrollTop||r.scrollLeft)&&r.scrollTo(0,0)},!0);let r;L.current?.disconnect(),L.current=new MutationObserver(()=>{clearTimeout(r),r=setTimeout(()=>dr(e),150)}),L.current.observe(e.body,{childList:!0,subtree:!0});let i=()=>{let n=e.getElementById(`paper`);n&&(n.querySelector(`[role="alert"]`)?B(`error`):(t||!n.querySelector(`.waiting`))&&(B(`ready`),I.current?.disconnect(),dr(e)))};I.current=new MutationObserver(i),I.current.observe(e.body,{childList:!0,subtree:!0}),i()}catch{B(`error`)}}(0,S.useEffect)(()=>{if(!T)return;let e=window.document.documentElement,t=()=>bn(e,T.documentElement);t();let n=new MutationObserver(t);return n.observe(e,{attributes:!0,attributeFilter:[`data-theme`,`style`]}),()=>n.disconnect()},[T]),(0,S.useEffect)(()=>{let e=window.visualViewport;if(!T||!e)return;let t=()=>{let t=D.current?.getBoundingClientRect();t&&T.documentElement.style.setProperty(`--keyboard`,`${Math.max(0,Math.round(t.bottom-e.offsetTop-e.height))}px`)};return t(),e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t),window.addEventListener(`resize`,t),()=>{e.removeEventListener(`resize`,t),e.removeEventListener(`scroll`,t),window.removeEventListener(`resize`,t)}},[T]);let re=z===`ready`,[ie,ae]=(0,S.useState)(null);return(0,S.useEffect)(()=>{if(!T||!re){ae(null);return}let e=()=>ae(T.querySelector(`.review-complete-actions`));e();let t=new MutationObserver(e);return t.observe(T.body,{childList:!0,subtree:!0}),()=>t.disconnect()},[T,re]),(0,S.useEffect)(()=>{let e=T?.getElementById(`paper`),t=T?.documentElement;if(!e||!t||!ie)return;let n=()=>t.toggleAttribute(`data-papilot-scrolled`,e.scrollTop>0);return n(),e.addEventListener(`scroll`,n,{passive:!0}),()=>{e.removeEventListener(`scroll`,n),t.removeAttribute(`data-papilot-scrolled`)}},[T,ie]),(0,C.jsxs)(`div`,{className:`review-viewport`+(re?``:` review-pending`),"aria-busy":!re,children:[(0,C.jsx)(`iframe`,{ref:D,title:e?U(`{title} PDF change review`,{title:e.title}):U(`Uncommitted changes in the PDF`),src:e?cr(e,b,x):lr(t),onLoad:ne,onError:()=>B(`error`),className:`review-frame`,"aria-hidden":!re,tabIndex:re?0:-1},`${R}:${te}:${b||``}:${w||``}`),e&&re&&(0,C.jsx)(En,{doc:T,round:b||e.review?.round||0}),(0,C.jsxs)(`div`,{ref:A,className:`review-host-bar`,children:[(r||_)&&(0,C.jsxs)(`div`,{ref:k,className:`review-lead`,children:[r,_]}),(0,C.jsxs)(`div`,{ref:O,className:`review-tools`,children:[e&&a&&(0,C.jsx)(cn,{doc:re?T:null,task:e,onSend:a}),n]})]}),ie&&i?(0,ot.createPortal)(i,ie):null,!re&&(0,C.jsxs)(`div`,{className:`review-loading`,children:[(0,C.jsx)(`p`,{role:z===`error`?`alert`:`status`,children:U(z===`error`?`The PDF review could not be loaded.`:z===`slow`?`The PDF review is taking longer than expected.`:`Loading PDF review…`)}),z!==`loading`&&(0,C.jsx)(`button`,{className:`button secondary`,onClick:()=>{B(`loading`),ee(e=>e+1)},children:U(`Reload review`)})]})]})}var pr=`modulepreload`,mr=function(e){return`/`+e},hr={},gr=function(e){return e.pathname.endsWith(`.css`)},_r=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},vr=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=mr(t,n);let r=s(t),i=gr(r);return _r(hr,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:pr,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},yr=(0,S.lazy)(()=>vr(()=>import(`./pdf-view-B2xQuHmI.js`).then(e=>({default:e.PdfView})),[])),br=()=>{};function xr({task:e,api:t,lead:n,tools:r,onCopied:i}){let[a,o]=(0,S.useState)(null),[s,c]=(0,S.useState)(``),[l,u]=(0,S.useState)(0),[d,f]=(0,S.useState)(``),[p,m]=(0,S.useState)([]),[h,g]=(0,S.useState)(0),_=(0,S.useRef)(null),v=`/tasks/${e.id}/ai-review`;(0,S.useEffect)(()=>{let e=new AbortController;return t(v,void 0,e.signal).then(e=>{o(e),c(``)},t=>{e.signal.aborted||c(t.message)}),()=>e.abort()},[v,e.updatedAt,e.aiReview?.revision,l,t]);let y=e=>o(t=>t&&{...t,notes:t.notes.map(t=>t.id===e.id?e:t)});return(0,C.jsxs)(`div`,{className:`ai-review-view`,children:[s&&(0,C.jsxs)(`div`,{className:`connection-banner`,role:`alert`,children:[(0,C.jsx)(`span`,{children:s}),(0,C.jsx)(`button`,{onClick:()=>u(e=>e+1),children:U(`Retry`)})]}),a?(0,C.jsx)(S.Suspense,{fallback:(0,C.jsx)(`div`,{className:`review-loading`,children:(0,C.jsx)(`p`,{children:U(`Opening the PDF…`)})}),children:(0,C.jsx)(yr,{ref:_,readOnly:!0,place:`pdf:review:`+e.id,url:`/api${v}/pdf?key=${a.key}`,words:`/api${v}/words?key=${a.key}`,notes:a.notes.filter(e=>e.key===a.key).map((e,t)=>({note:e,number:t+1})),active:d,onSelect:e=>{f(e.id),_.current?.goToNote(e)},onDeselect:()=>f(``),region:!1,setRegion:br,onCreate:async()=>{},outline:p,section:h,onOutline:m,onSection:g,lead:n,tools:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`review-copy-label`,title:U(`Suggestions stay in this task until you copy them to the manuscript`),children:U(`Review copy`)}),r,(0,C.jsx)(`a`,{className:`icon-button`,href:`/api${v}/pdf`,target:`_blank`,rel:`noreferrer`,"aria-label":U(`Open PDF`),title:U(`Open PDF`),children:(0,C.jsx)(T,{name:`external`,size:16})})]}),noteActions:{has:e=>!!a.notes.find(t=>t.id===e)?.aiReview?.copiedTo,toggle:br,onEditing:br,onBusy:br,disabled:!1,edit:async()=>{},copy:async e=>{let n=await t(`${v}/${e.id}/copy`,{});y(n.note),i()},remove:async e=>{await t(`${v}/${e.id}/delete`,{}),o(t=>t&&{...t,notes:t.notes.filter(t=>t.id!==e.id)})},restore:async e=>{let n=await t(`${v}/${e.id}/restore`,{});o(e=>e&&{...e,notes:[...e.notes.filter(e=>e.id!==n.id),n].sort((e,t)=>e.createdAt-t.createdAt||e.id.localeCompare(t.id))}),f(n.id)}}})}):!s&&(0,C.jsx)(`div`,{className:`review-loading`,children:(0,C.jsx)(`p`,{role:`status`,children:U(`Opening the PDF…`)})})]})}function Sr(e){if(e.key!==`Tab`)return;let t=Array.from(e.currentTarget.querySelectorAll(`a[href], button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), summary, [tabindex="0"]`)).filter(e=>e.getClientRects().length>0&&!e.closest(`[inert]`)),n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}function Cr({task:e,submit:t,onClose:n,onDeleted:r,refresh:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(!1),[s,c]=(0,S.useState)(!1),[l,u]=(0,S.useState)(``),d=[`running`,`waiting_input`,`queued`].includes(e.status)?U(`Pause this task before deleting it.`):e.status===`building`?U(`Wait for the PDF build to finish before deleting this task.`):e.status===`uncertain`?U(`Check task status before deleting this task.`):``;(0,S.useEffect)(()=>{let e=document.activeElement,t=a.current;return t.showModal(),t.querySelector(`[data-cancel]`)?.focus(),()=>{t.close(),e?.isConnected&&e.getClientRects().length&&!e.closest(`[inert]`)?e.focus():Array.from(document.querySelectorAll(`.sidebar .new-task, .sidebar-toggle`)).find(e=>e.getClientRects().length&&!e.closest(`[inert]`))?.focus()}},[]);async function f(){if(!(o.current||d)){o.current=!0,c(!0),u(``);try{await t(),r()}catch(e){u(e instanceof Error?e.message:String(e)),i()}finally{o.current=!1,c(!1)}}}return(0,C.jsx)(`dialog`,{ref:a,className:`modal-backdrop`,"aria-labelledby":`delete-title`,"aria-describedby":`delete-description`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),s||n()},onClick:e=>{e.target===e.currentTarget&&!s&&n()},children:(0,C.jsxs)(`section`,{className:`modal delete-dialog`,children:[(0,C.jsx)(`h2`,{id:`delete-title`,children:U(`Delete task?`)}),(0,C.jsx)(`p`,{className:`delete-task-name`,children:e.title}),(0,C.jsx)(`p`,{id:`delete-description`,children:U(`This permanently removes the task from Papilot, including its conversation, worktree, and PDF review files. Unaccepted edits and saved comments will be discarded, and review decisions can no longer be undone.`)}),(0,C.jsx)(`p`,{children:U(`Accepted changes in your manuscript stay in place. Other tasks are not affected.`)}),e.status===`deleting`&&(0,C.jsx)(`p`,{className:`muted`,children:U(`Deletion has already started. Retry to confirm the cleanup and remove the task.`)}),d&&(0,C.jsx)(`p`,{className:`inline-error`,role:`status`,children:d}),l&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:l}),(0,C.jsxs)(`div`,{className:`button-row`,children:[(0,C.jsx)(`button`,{"data-cancel":!0,className:`button secondary`,disabled:s,onClick:n,children:U(`Cancel`)}),(0,C.jsx)(`button`,{className:`button danger`,disabled:s||!!d,onClick:()=>void f(),children:s?U(`Deleting…`):e.status===`deleting`?U(`Retry deletion`):U(`Delete task`)})]})]})})}function wr({label:e,value:t,options:n,onChange:r,disabled:i,icon:a,className:o=``}){return(0,C.jsxs)(`label`,{className:`chip-select `+o,title:e,children:[a&&(0,C.jsx)(T,{name:a,size:14}),(0,C.jsx)(`span`,{className:`chip-value`,children:n.find(e=>e.value===t)?.label??t}),(0,C.jsx)(`select`,{"aria-label":e,disabled:i,value:t,onChange:e=>r(e.target.value),children:n.map(e=>(0,C.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})}var Tr=!!window.papilotDesktop;Tr&&(document.documentElement.dataset.desktop=window.papilotDesktop.platform);var Er=!!window.papilotDesktop?.chooseDirectory,Dr=()=>window.papilotDesktop.chooseDirectory();function Or(){if(!Tr)return null;let e=window.papilotDesktop;return(0,C.jsx)(`div`,{className:`desktop-window-drag`,children:e.platform!==`darwin`&&(0,C.jsxs)(`div`,{className:`desktop-window-buttons`,children:[(0,C.jsx)(`button`,{className:`desktop-window-close`,"aria-label":U(`Close window`),title:U(`Close window`),onClick:()=>e.close(),children:(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,children:(0,C.jsx)(`path`,{d:`m4 4 8 8M12 4l-8 8`})})}),(0,C.jsx)(`button`,{"aria-label":U(`Minimize window`),title:U(`Minimize window`),onClick:()=>e.minimize(),children:(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,children:(0,C.jsx)(`path`,{d:`M3 8h10`})})}),(0,C.jsx)(`button`,{"aria-label":U(`Maximize or restore window`),title:U(`Maximize or restore window`),onClick:()=>e.maximize(),children:(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,children:(0,C.jsx)(`rect`,{x:`3.5`,y:`3.5`,width:`9`,height:`9`,rx:`1`})})})]})})}var kr=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20fill='none'%3e%3crect%20x='18'%20y='48'%20width='14'%20height='10'%20fill='%23F0F4F8'%20stroke='%23000000'%20stroke-width='2'/%3e%3crect%20x='32'%20y='48'%20width='14'%20height='10'%20fill='%23C6D5E5'%20stroke='%23000000'%20stroke-width='2'/%3e%3cpath%20d='M32%206L12%2034L18%2048H32V6Z'%20fill='%23FFFFFF'/%3e%3cpath%20d='M32%206L52%2034L46%2048H32V6Z'%20fill='%23356AA0'/%3e%3cpath%20d='M32%206L52%2034L46%2048H18L12%2034L32%206Z'%20stroke='%23000000'%20stroke-width='2'%20stroke-linejoin='miter'%20stroke-miterlimit='2'/%3e%3cpath%20d='M32%206V20'%20stroke='%23000000'%20stroke-width='2'/%3e%3cpath%20d='M32%2020Q35%2031%2046%2034Q35%2037%2032%2048Q29%2037%2018%2034Q29%2031%2032%2020Z'%20fill='%23FFFFFF'%20stroke='%23000000'%20stroke-width='2'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Ar=e=>[`installing`,`waiting`,`restarting`].includes(e.phase),jr=!1,Mr=e=>e.replace(/(-dev\.[a-f0-9]{7})[a-f0-9]{33}$/,`$1`);function Nr(e){return e===`The dev build needs at least 2 GB of free disk space. Free some space and retry.`?U(`The dev build needs at least 2 GB of free disk space. Free some space and retry.`):e===`Could not check for updates. Try again when connected.`?U(`Could not check for updates. Try again when connected.`):e===`This version needs the latest desktop app. Download it from GitHub Releases.`?U(`This version needs the latest desktop app. Download it from GitHub Releases.`):e===`The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.`?U(`The updated version did not start, so Papilot is using the version included with the app. Retry the update or download the latest desktop app.`):e}function Pr(e,t){let[n,r]=(0,S.useState)(null),i=(0,S.useRef)(0),a=e=>{i.current++,r(e)},o=(0,S.useRef)(t),s=(0,S.useRef)(n);return s.current=n,(0,S.useEffect)(()=>{let t=!1,n=!1,a,c=async()=>{if(n)return;n=!0;let l=++i.current;try{let n=await e(`/updates`);if(t||l!==i.current||!n?.currentVersion)return;o.current??=n.currentVersion,r(n),n.phase===`updated`&&n.currentVersion!==o.current&&!jr&&(jr=!0,location.reload())}catch{}finally{n=!1,t||(a=setTimeout(c,s.current&&Ar(s.current)?2e3:3e4))}};c();let l=()=>{clearTimeout(a),c()};return window.addEventListener(`online`,l),window.addEventListener(`focus`,l),window.addEventListener(`papilot:updates`,l),()=>{t=!0,clearTimeout(a),window.removeEventListener(`online`,l),window.removeEventListener(`focus`,l),window.removeEventListener(`papilot:updates`,l)}},[e,n?.phase]),{status:n,setStatus:a}}function Fr({api:e,version:t}){let{status:n,setStatus:r}=Pr(e,t),[i,a]=(0,S.useState)(!1),[o,s]=(0,S.useState)(!1),[c,l]=(0,S.useState)(``),u=(0,S.useRef)(null);(0,S.useEffect)(()=>{if(!i)return;let e=document.activeElement,t=u.current;return t.showModal(),()=>{t.close(),e?.isConnected&&e.focus()}},[i]);let d=(0,C.jsxs)(`span`,{className:`brand-version`,title:U(`Papilot {version}`,{version:t}),children:[`v`,Mr(t)]});if(!n)return d;let f=Ar(n),p=n.latestVersion&&n.latestVersion!==n.currentVersion;if(!i&&!f&&n.phase!==`failed`&&(!p||n.phase===`idle`))return d;let m=n.phase===`installing`?U(`Updating…`):n.phase===`waiting`?U(`Update ready`):n.phase===`restarting`?U(`Restarting…`):n.phase===`failed`?U(`Update failed`):U(`New version`),h=`${U(`Papilot {version}`,{version:Mr(t)})} · ${m}${n.latestVersion?` · v${Mr(n.latestVersion)}`:``}`;async function g(){if(n&&!o){s(!0),l(``);try{r(await e(`/updates/install`,{version:n.latestVersion}))}catch(e){l(e instanceof Error?e.message:U(`Could not start the update. Please retry.`))}finally{s(!1)}}}return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{type:`button`,className:`brand-version update-badge`+(n.phase===`failed`?` failed`:``),"aria-label":h,"aria-haspopup":`dialog`,"aria-expanded":i,"aria-busy":f||void 0,title:h,onClick:()=>a(!0),children:[`v`,Mr(t),(0,C.jsx)(`span`,{className:`update-dot`,"aria-hidden":`true`})]}),i&&(0,C.jsxs)(`dialog`,{ref:u,className:`update-dialog`,"aria-labelledby":`update-title`,onCancel:e=>{e.preventDefault(),a(!1)},onKeyDown:Sr,onClick:e=>{e.target===e.currentTarget&&a(!1)},children:[(0,C.jsxs)(`div`,{className:`update-heading`,children:[(0,C.jsx)(`h2`,{id:`update-title`,children:U(`Update Papilot`)}),(0,C.jsx)(`button`,{className:`icon-button`,"aria-label":U(`Close`),onClick:()=>a(!1),children:(0,C.jsx)(T,{name:`close`,size:16})})]}),(0,C.jsxs)(`p`,{className:`update-versions`,children:[(0,C.jsx)(`span`,{children:Mr(n.currentVersion)}),(0,C.jsx)(T,{name:`arrowRight`,size:14}),(0,C.jsx)(`strong`,{children:Mr(n.latestVersion||n.currentVersion)})]}),(0,C.jsx)(`p`,{role:`status`,children:n.downloadUrl?U(`Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.`):n.phase===`installing`?U(`Downloading and checking the new version…`):n.phase===`waiting`?U(`The update is ready. Waiting for tasks and PDF builds to finish before restarting.`):n.phase===`restarting`?U(`Restarting Papilot. This page will reconnect automatically; your drafts are kept.`):n.phase===`failed`?U(`The update did not finish. Your current version is still available. You can retry here.`):U(`Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.`)}),!n.canUpdate&&!n.downloadUrl&&(0,C.jsx)(`p`,{className:`inline-error`,children:U(`Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.`)}),(c||n.error)&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:Nr(c||n.error)}),(0,C.jsxs)(`div`,{className:`update-actions`,children:[(0,C.jsx)(`button`,{className:`button ghost`,onClick:()=>a(!1),children:U(f?`Close`:`Later`)}),n.downloadUrl?(0,C.jsx)(`a`,{className:`button primary`,href:n.downloadUrl,target:`_blank`,rel:`noreferrer`,children:U(`Download desktop updates`)}):!f&&(0,C.jsx)(`button`,{className:`button primary`,disabled:o||!n.canUpdate||!p,onClick:()=>void g(),children:o?U(`Updating…`):n.phase===`failed`?U(`Retry update`):U(`Update to {version}`,{version:Mr(n.latestVersion||``)})})]})]})]})}function Ir({api:e}){let{status:t,setStatus:n}=Pr(e),[r,i]=(0,S.useState)(!1),[a,o]=(0,S.useState)(``);async function s(t,r={}){i(!0),o(``);try{n(await e(t,r)),window.dispatchEvent(new Event(`papilot:updates`))}catch(e){o(e instanceof Error?e.message:U(`Could not check for updates. Try again when connected.`))}finally{i(!1)}}if(!t)return(0,C.jsx)(`div`,{className:`update-settings settings-page`,children:(0,C.jsxs)(`section`,{className:`settings-card update-summary update-loading`,children:[(0,C.jsx)(`p`,{role:`status`,children:U(`Reading update status…`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:r,onClick:()=>void s(`/updates/check`),children:U(`Check for updates`)}),a&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:Nr(a)})]})});let c=Ar(t),l=t.latestVersion&&t.latestVersion!==t.currentVersion&&t.phase!==`idle`&&t.phase!==`checking`,u=t.phase===`checking`,d=a||t.error,f=!!d&&!c&&!u&&t.phase!==`failed`,p=t.phase===`installing`?U(`Updating…`):t.phase===`waiting`?U(`Update ready`):t.phase===`restarting`?U(`Restarting…`):u?U(`Checking for updates…`):t.phase===`failed`?U(`Update failed`):f?U(`Could not check for updates`):l?U(`Update available`):t.latestVersion?U(`Up to date`):U(`Ready to check for updates`),m=t.phase===`failed`?`failed`:f?`warning`:c||u?`active`:l?`available`:t.latestVersion?`current`:`idle`,h=m===`failed`||m===`warning`?`alert`:c||u?`refresh`:l?`arrowUp`:t.latestVersion?`check`:`refresh`;return(0,C.jsx)(`div`,{className:`update-settings settings-page`,children:(0,C.jsxs)(`section`,{className:`settings-card update-summary`,"aria-label":U(`Update Papilot`),children:[(0,C.jsxs)(`div`,{className:`update-product-row`,children:[(0,C.jsxs)(`div`,{className:`update-product`,children:[(0,C.jsx)(`span`,{className:`update-product-mark`,children:(0,C.jsx)(`img`,{src:kr,width:`34`,height:`34`,alt:``})}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{children:`Papilot`}),(0,C.jsxs)(`p`,{className:`update-current-version`,children:[(0,C.jsx)(`span`,{children:U(`Current version`)}),(0,C.jsx)(`code`,{title:t.currentVersion,children:Mr(t.currentVersion)})]})]})]}),(0,C.jsxs)(`button`,{className:`button secondary update-check`,disabled:r||c||u,onClick:()=>void s(`/updates/check`),children:[(0,C.jsx)(T,{name:`refresh`,size:14}),U(`Check for updates`)]})]}),(0,C.jsxs)(`div`,{className:`update-status `+m,children:[(0,C.jsxs)(`div`,{className:`update-summary-heading`,role:`status`,children:[(0,C.jsx)(`span`,{className:`update-summary-icon`,children:(0,C.jsx)(T,{name:h,size:17})}),(0,C.jsx)(`h4`,{id:`update-settings-title`,children:p})]}),!f&&(0,C.jsx)(`p`,{className:`update-status-description`,children:t.phase===`installing`?t.channel===`dev`&&!Tr?U(`Downloading and building the selected GitHub commit…`):U(`Downloading and checking the new version…`):t.phase===`waiting`?U(`The update is ready. Waiting for tasks and PDF builds to finish before restarting.`):t.phase===`restarting`?U(`Restarting Papilot. This page will reconnect automatically; your drafts are kept.`):u?null:t.phase===`failed`?U(`The update did not finish. Your current version is still available. You can retry here.`):l?t.downloadUrl?U(`Download the latest desktop app for your system from GitHub Releases. Your papers and settings stay in place.`):U(`Install the new version and restart automatically when tasks are idle. Your papers, tasks and settings stay in place.`):t.latestVersion?U(`You are using the latest version on this channel.`):U(`Check for updates to see the latest version.`)}),d&&(0,C.jsx)(`p`,{className:`update-status-error`,role:`alert`,children:d===`Could not check for updates. Try again when connected.`?U(`Check your connection and try again.`):Nr(d)}),t.latestVersion&&t.latestVersion!==t.currentVersion&&(0,C.jsxs)(`div`,{className:`update-release`,children:[(0,C.jsxs)(`p`,{id:`update-latest-version`,children:[(0,C.jsx)(`span`,{children:U(`Latest version`)}),(0,C.jsx)(`code`,{title:t.latestVersion,children:Mr(t.latestVersion)})]}),l&&!c&&(t.downloadUrl?(0,C.jsx)(`a`,{className:`button primary`,href:t.downloadUrl,target:`_blank`,rel:`noreferrer`,children:U(`Download desktop updates`)}):(0,C.jsxs)(`button`,{className:`button primary`,"aria-describedby":`update-latest-version`,disabled:r||!t.canUpdate,onClick:()=>void s(`/updates/install`,{version:t.latestVersion}),children:[(0,C.jsx)(T,{name:`arrowUp`,size:15}),t.phase===`failed`?U(`Retry update`):U(`Update now`)]}))]})]}),!t.canUpdate&&!t.downloadUrl&&(0,C.jsxs)(`p`,{className:`update-settings-notice`,children:[(0,C.jsx)(T,{name:`info`,size:15}),(0,C.jsx)(`span`,{children:U(`Papilot cannot find npm on this computer. Updates are unavailable until npm is installed.`)})]}),(t.channel||!t.downloadUrl)&&(0,C.jsxs)(`div`,{className:`update-channel`,children:[(0,C.jsxs)(`div`,{className:`update-channel-copy`,children:[(0,C.jsx)(`h4`,{children:U(`Update channel`)}),(0,C.jsx)(`p`,{children:t.channel===`dev`?U(`Early updates from GitHub main. May be less stable.`):U(`Published releases, recommended for everyday use.`)})]}),(0,C.jsx)(wr,{label:U(`Update channel`),icon:t.channel===`dev`?`branch`:void 0,value:t.channel||`stable`,disabled:r||c,onChange:e=>void s(`/updates/channel`,{channel:e}),options:[{value:`stable`,label:U(`Stable`)},{value:`dev`,label:U(`Dev (GitHub main)`)}]})]})]})})}function Lr({name:e,candidates:t,open:n,onClose:r}){let i=(0,S.useRef)(null),a=(0,S.useRef)(!1),[o,s]=(0,S.useState)(t[0]),[c,l]=(0,S.useState)(!1),[u,d]=(0,S.useState)(``);(0,S.useEffect)(()=>{let e=i.current,t=document.activeElement;return e.showModal(),e.querySelector(`select`)?.focus(),()=>{e.close(),t?.isConnected&&t.focus()}},[]);async function f(){if(!a.current){a.current=!0,l(!0),d(``);try{await n(o)}catch(e){d(e instanceof Error?e.message:String(e))}finally{a.current=!1,l(!1)}}}function p(){c||r()}return(0,C.jsx)(`dialog`,{ref:i,className:`modal-backdrop`,"aria-labelledby":`main-file-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),p()},onClick:e=>{e.target===e.currentTarget&&p()},children:(0,C.jsxs)(`section`,{className:`modal`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),disabled:c,onClick:p,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`main-file-title`,children:e}),(0,C.jsx)(`p`,{className:`modal-description`,children:U(`Several TeX files were found. Check the selected main document before continuing.`)}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),f()},children:[(0,C.jsxs)(`label`,{children:[U(`Main TeX file`),(0,C.jsx)(`select`,{value:o,disabled:c,onChange:e=>s(e.target.value),children:t.map(e=>(0,C.jsx)(`option`,{value:e,children:e},e))})]}),u&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:u}),(0,C.jsxs)(`div`,{className:`button-row`,children:[(0,C.jsx)(`button`,{type:`button`,className:`button secondary`,disabled:c,onClick:p,children:U(`Cancel`)}),(0,C.jsx)(`button`,{className:`button primary`,disabled:c,children:U(`Open paper`)})]})]})]})})}function Rr({paper:e,canManage:t,save:n,remove:r,onClose:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(!1),[s,c]=(0,S.useState)({name:e.name,path:e.path}),[l,u]=(0,S.useState)(!1),[d,f]=(0,S.useState)(!1),[p,m]=(0,S.useState)(``),h=(0,S.useId)(),g=Math.max(0,s.path.replace(/\/+$/,``).lastIndexOf(`/`));(0,S.useEffect)(()=>{let e=a.current;e.showModal();let t=e.querySelector(`[name="name"]`);return t?.focus(),t?.select(),()=>{e.close(),document.querySelector(`.project-switcher, .add-project, .sidebar-toggle`)?.focus()}},[]),(0,S.useEffect)(()=>{l&&a.current?.querySelector(`[data-cancel]`)?.focus()},[l]);function _(){d||(l?(u(!1),m(``),requestAnimationFrame(()=>a.current?.querySelector(`[data-remove]`)?.focus())):i())}async function v(){if(!o.current){o.current=!0,f(!0),m(``);try{l?await r():await n({name:s.name.trim().replace(/\s+/g,` `),path:s.path.trim()}),i()}catch(e){m(e instanceof Error?e.message:String(e))}finally{o.current=!1,f(!1)}}}return(0,C.jsx)(`dialog`,{ref:a,className:`modal-backdrop`,"aria-labelledby":`paper-dialog-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),_()},onClick:e=>{e.target===e.currentTarget&&_()},children:(0,C.jsxs)(`section`,{className:`modal paper-dialog`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),disabled:d,onClick:i,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`paper-dialog-title`,children:U(l?`Remove paper?`:`Edit paper`)}),l?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`paper-dialog-name`,children:e.name}),(0,C.jsx)(`p`,{children:U(`Remove this paper and its tasks, conversations and notes from Papilot?`)}),(0,C.jsx)(`p`,{children:U(`Files on disk, Git history and task worktrees will stay in place.`)})]}):!Er&&(0,C.jsx)(`p`,{className:`modal-description`,children:U(`LaTeX Git repository · Requires a commit and latexmk`)}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),v()},children:[!l&&(Er?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[U(`Paper name`),(0,C.jsx)(`input`,{name:`name`,value:s.name,onChange:e=>c({...s,name:e.target.value}),required:!0,maxLength:120,disabled:d,autoComplete:`off`})]}),(0,C.jsxs)(`div`,{className:`modal-field`,role:`group`,"aria-labelledby":h,children:[(0,C.jsx)(`span`,{id:h,children:U(`Location`)}),(0,C.jsxs)(`div`,{className:`paper-location`,title:s.path,children:[(0,C.jsx)(T,{name:`folder`,size:16}),(0,C.jsxs)(`span`,{className:`paper-location-path`,children:[(0,C.jsx)(`span`,{className:`paper-location-parent`,children:s.path.slice(0,g)}),(0,C.jsx)(`span`,{className:`paper-location-name`,children:s.path.slice(g)})]}),(0,C.jsx)(`button`,{type:`button`,className:`button ghost compact`,disabled:d||!t,onClick:()=>void Dr().then(e=>{e&&c(t=>({...t,path:e}))}),children:U(`Change…`)})]})]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`label`,{children:[U(`Repository path`),(0,C.jsx)(`input`,{name:`path`,value:s.path,onChange:e=>c({...s,path:e.target.value}),required:!0,maxLength:4e3,disabled:d||!t,spellCheck:!1,autoComplete:`off`})]}),(0,C.jsxs)(`label`,{children:[U(`Paper name`),(0,C.jsx)(`input`,{name:`name`,value:s.name,onChange:e=>c({...s,name:e.target.value}),required:!0,maxLength:120,disabled:d,autoComplete:`off`})]})]})),p&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:p}),(0,C.jsxs)(`div`,{className:`button-row paper-dialog-actions`,children:[!l&&t&&(0,C.jsxs)(`button`,{type:`button`,"data-remove":!0,className:`button ghost danger-text paper-remove`,disabled:d,onClick:()=>{m(``),u(!0)},children:[(0,C.jsx)(T,{name:`trash`,size:15}),U(`Remove paper`)]}),(0,C.jsx)(`button`,{type:`button`,"data-cancel":!0,className:`button secondary`,disabled:d,onClick:_,children:U(`Cancel`)}),(0,C.jsx)(`button`,{className:`button `+(l?`danger`:`primary`),type:`submit`,disabled:d||!l&&(!s.name.trim()||!s.path.trim()),children:U(d?l?`Removing…`:`Saving…`:l?`Remove from Papilot`:`Save`)})]})]})]})})}var zr=e=>e.split(`/`).some(e=>[`.git`,`__macosx`,`.ds_store`,`node_modules`,`.papilot`].includes(e.toLowerCase())||e.startsWith(`._`));function Br(e,t){if(e>5e3||t>67108864)throw Error(U(`Choose up to 5,000 files, totaling less than 64 MB.`))}async function Vr(e){let t=[],n=[e],r=0;for(;n.length;){let e=n.pop(),i=e.fullPath.replace(/^\//,``);if(!zr(i)){if(e.isDirectory){let t=e.createReader();for(;;){let e=await new Promise((e,n)=>t.readEntries(e,n));if(!e.length)break;n.push(...e)}}else if(e.isFile){let n=await new Promise((t,n)=>e.file(t,n));r+=n.size,Br(t.length+1,r),t.push({file:n,path:i})}}}return t}var Hr=`papilot:paper-import`;function Ur(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(U(`Could not read the selected file.`))),r.onload=()=>t(String(r.result).split(`,`)[1]),r.readAsDataURL(e)})}var Wr=e=>{let t=Math.max(0,Math.floor(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`};function Gr({draft:e}){let[t,n]=(0,S.useState)(Date.now());(0,S.useEffect)(()=>{let e=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(e)},[]);let r=e.phase===`repairing`?void 0:e.progress,i=r?.step===`tex`&&r.pass>0?r:void 0,a=e.phase===`repairing`?U(`The assistant is fixing compilation…`):r?.step===`bibliography`?U(`Processing the bibliography…`):r?.step===`pdf`?U(`Writing the PDF…`):i?U(`Typesetting with LaTeX, pass {n}…`,{n:i.pass}):U(`Preparing version history and compiling the PDF…`),o=i?.total?Math.max(i.total,i.pages):null;return(0,C.jsxs)(`div`,{className:`import-status`,children:[(0,C.jsx)(`span`,{className:`spinner`}),(0,C.jsxs)(`div`,{className:`import-status-body`,children:[(0,C.jsxs)(`div`,{className:`import-status-line`,children:[(0,C.jsx)(`span`,{role:`status`,children:a}),e.startedAt?(0,C.jsx)(`span`,{className:`import-elapsed`,children:Wr(t-e.startedAt)}):null]}),i&&(0,C.jsxs)(`div`,{className:`import-progress`,children:[(0,C.jsx)(`div`,{className:`import-progress-track`,role:`progressbar`,"aria-label":U(`Pages typeset`),"aria-valuemin":0,"aria-valuenow":i.pages,...o?{"aria-valuemax":o}:{},children:(0,C.jsx)(`span`,{className:o?``:`indeterminate`,style:o?{width:`${100*i.pages/o}%`}:void 0})}),(0,C.jsx)(`span`,{className:`import-pages`,children:o?U(`Page {pages} of {total}`,{pages:i.pages,total:o}):U(`Page {pages}`,{pages:i.pages})})]})]})]})}function Kr({api:e,agent:t,canRepair:n,onDone:r,onClose:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(null),s=(0,S.useRef)(null),c=(0,S.useRef)(!1),[l,u]=(0,S.useState)(null),[d,f]=(0,S.useState)({name:``,path:``,main:``,engine:`pdflatex`}),[p,m]=(0,S.useState)(!1),[h,g]=(0,S.useState)(``),[_,v]=(0,S.useState)(!1),y=l?.phase===`building`||l?.phase===`repairing`,b=p||y;function x(e){u(e),f(t=>({...t,name:e.name,main:e.main,engine:e.engine})),D.setItem(Hr,e.id)}(0,S.useEffect)(()=>{let t=a.current,n=document.activeElement;t.showModal(),o.current?.setAttribute(`webkitdirectory`,``),t.querySelector(`[data-choose-folder]`)?.focus();let r=D.getItem(Hr),i=!0;return r&&(m(!0),e(`/imports/`+r).then(e=>{i&&x(e)},()=>D.removeItem(Hr)).finally(()=>{i&&m(!1)})),()=>{i=!1,t.close(),n?.isConnected&&n.focus()}},[]),(0,S.useEffect)(()=>{if(!l||!y)return;let t=!0,n;async function r(){try{let n=await e(`/imports/`+l.id);t&&(x(n),g(``))}catch(e){t&&g(e.message)}t&&(n=setTimeout(r,1e3))}return n=setTimeout(r,500),()=>{t=!1,clearTimeout(n)}},[l?.id,y]);async function w(e){if(!c.current){c.current=!0,m(!0),g(``);try{await e()}catch(e){g(e instanceof Error?e.message:String(e))}finally{c.current=!1,m(!1)}}}async function E(t){x(t),t.copied&&t.main&&!t.error&&t.phase===`choose`&&x(await e(`/imports/${t.id}/build`,{main:t.main,engine:t.engine,name:t.name}))}async function O(t,n){let r=t.filter(e=>!zr(e.path));if(!r.length)throw Error(U(`No files found in this folder.`));if(Br(r.length,r.reduce((e,t)=>e+t.file.size,0)),n&&(r.length!==1||!/\.zip$/i.test(r[0].file.name)))throw Error(U(`Drop one folder or LaTeX ZIP file.`));let i=n?r[0].file.name.replace(/\.zip$/i,``):r[0].path.split(`/`)[0];await E(await e(`/imports`,n?{zip:await Ur(r[0].file),name:i.slice(0,120)}:{files:await Promise.all(r.map(async e=>({path:e.path,data:await Ur(e.file)}))),name:i.slice(0,120)},void 0,12e4))}let k=(e,t)=>w(()=>O(e.map(e=>({file:e,path:e.webkitRelativePath||e.name})),t)),A=async t=>E(await e(`/imports`,{path:t},void 0,12e4));function j(e){let t=Array.from(e.files),n=Array.from(e.items).filter(e=>e.kind===`file`).map(e=>e.webkitGetAsEntry?.());w(async()=>{if(t.length!==1||n.length>1)throw Error(U(`Drop one folder or LaTeX ZIP file.`));let e=n[0];e?.isDirectory?await O(await Vr(e),!1):await O(t.map(e=>({file:e,path:e.name})),!0)})}let M=(n=!1)=>w(async()=>x(await e(`/imports/${l.id}/${n?`repair`:`build`}`,{name:d.name,main:d.main,engine:d.engine,agent:t}))),N=()=>w(async()=>{let t=await e(`/imports/${l.id}/finish`,{});D.removeItem(Hr),await r(t)}),P=l?.error||``,F=/ENOBUFS|ERR_CHILD_PROCESS_STDIO_MAXBUFFER|Git snapshot export/i.test(P),I=F?U(`Papilot could not prepare the files for compilation. This is an application error, not a LaTeX error.`):/not found|ENOENT|not installed/i.test(P)&&/latexmk|pdflatex|xelatex|lualatex/i.test(P)?U(`Install TeX Live or MacTeX with latexmk on the computer running Papilot, then retry.`):/fontspec|Unicode character|xeCJK/i.test(P)?U(`This paper may need XeLaTeX. Change the engine below and retry.`):/not found|missing|cannot find/i.test(P)?U(`A package, font or source file may be missing. Check the details below, restore the missing file or ask for help.`):U(`Check the main file and engine, or ask the assistant to fix compilation. You can also edit the saved files and retry.`);function L(){p||i()}return(0,C.jsx)(`dialog`,{ref:a,className:`modal-backdrop`,"aria-labelledby":`import-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),L()},onClick:e=>{e.target===e.currentTarget&&L()},children:(0,C.jsxs)(`section`,{className:`modal import-dialog`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),disabled:p,onClick:L,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`import-title`,children:U(`Add a paper`)}),(0,C.jsx)(`p`,{className:`modal-description`,children:U(`Choose a folder or ZIP, or drag it here.`)}),l?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`ol`,{className:`import-steps`,"aria-label":U(`Import progress`),children:[(0,C.jsx)(`li`,{className:`done`,children:U(`Files received`)}),(0,C.jsx)(`li`,{className:l.versioned?`done`:``,children:U(`Version history`)}),(0,C.jsx)(`li`,{className:l.phase===`ready`?`done`:``,children:U(`PDF compilation`)})]}),(0,C.jsxs)(`p`,{className:`import-location`,children:[U(`Saved folder`),(0,C.jsx)(`br`,{}),(0,C.jsx)(`code`,{children:l.path})]}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),M()},children:[(0,C.jsxs)(`label`,{children:[U(`Paper name`),(0,C.jsx)(`input`,{required:!0,maxLength:120,value:d.name,disabled:b,onChange:e=>f({...d,name:e.target.value})})]}),(0,C.jsxs)(`div`,{className:`import-settings`,children:[(0,C.jsxs)(`label`,{children:[U(`Main TeX file`),(0,C.jsx)(`input`,{"aria-label":U(`Main TeX file`),list:`import-main-files`,value:d.main,disabled:b,onChange:e=>f({...d,main:e.target.value}),placeholder:`main.tex`,spellCheck:!1}),(0,C.jsx)(`datalist`,{id:`import-main-files`,children:l.candidates.map(e=>(0,C.jsx)(`option`,{value:e},e))})]}),(0,C.jsxs)(`label`,{children:[U(`LaTeX engine`),(0,C.jsxs)(`select`,{"aria-label":U(`LaTeX engine`),value:d.engine,disabled:b,onChange:e=>f({...d,engine:e.target.value}),children:[(0,C.jsx)(`option`,{value:`pdflatex`,children:`pdfLaTeX`}),(0,C.jsx)(`option`,{value:`xelatex`,children:`XeLaTeX`}),(0,C.jsx)(`option`,{value:`lualatex`,children:`LuaLaTeX`})]})]})]}),!l.candidates.length&&(0,C.jsx)(`p`,{role:`alert`,children:U(`Could not detect a main file. Enter its path relative to the paper folder.`)}),l.candidates.length>1&&l.phase===`choose`&&(0,C.jsx)(`p`,{children:U(`Several TeX files were found. Check the selected main document before continuing.`)}),y&&(0,C.jsx)(Gr,{draft:l}),l.phase===`ready`&&(0,C.jsx)(`p`,{className:`import-success`,role:`status`,children:U(`Your paper compiled successfully. It is ready for editing.`)}),(P||l.phase===`failed`)&&(0,C.jsxs)(`div`,{className:`import-problem`,role:`alert`,children:[(0,C.jsx)(`strong`,{children:U(F?`Could not prepare the paper`:`The paper needs a little help`)}),(0,C.jsx)(`p`,{children:I}),(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:U(`Compilation details`)}),(0,C.jsx)(`pre`,{children:P})]})]}),l.summary&&(0,C.jsxs)(`div`,{className:`import-summary`,children:[(0,C.jsx)(`strong`,{children:U(`Repair summary`)}),(0,C.jsx)(`p`,{children:l.summary}),(0,C.jsx)(`p`,{children:U(`Repairs are saved as uncommitted changes. Review them in the paper’s file changes.`)})]}),(0,C.jsxs)(`div`,{className:`button-row import-actions`,children:[l.phase===`failed`&&!F&&(0,C.jsx)(`button`,{type:`button`,className:`button secondary`,disabled:b||!n||!d.main,onClick:()=>void M(!0),children:U(`Help fix compilation`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:b||!d.main||!d.name.trim(),type:`submit`,children:l.phase===`choose`?U(`Prepare and compile`):U(`Retry compilation`)}),l.versioned&&!y&&(0,C.jsx)(`button`,{type:`button`,className:`button primary`,disabled:p||d.main!==l.main||d.engine!==l.engine||d.name!==l.name,onClick:()=>void N(),children:l.phase===`ready`?U(`Open paper`):U(`Add and fix later`)})]}),l.phase===`failed`&&!F&&!n&&(0,C.jsx)(`p`,{className:`modal-description`,children:U(`Connect an assistant in Settings to help repair this paper.`)})]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`import-drop`+(_?` dragging`:``),onDragOver:e=>{e.preventDefault(),v(!0)},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||v(!1)},onDrop:e=>{e.preventDefault(),v(!1),b||j(e.dataTransfer)},children:[(0,C.jsxs)(`div`,{className:`import-options`,children:[(0,C.jsxs)(`div`,{className:`import-option`,children:[(0,C.jsx)(T,{name:`folder`,size:28}),(0,C.jsx)(`strong`,{children:U(`Open a folder`)}),(0,C.jsx)(`p`,{children:U(`Choose a folder to upload a copy. To use original files, open it in the desktop app.`)}),(0,C.jsx)(`button`,{"data-choose-folder":!0,className:`button secondary`,disabled:b,onClick:()=>o.current?.click(),children:U(`Choose folder`)})]}),(0,C.jsxs)(`div`,{className:`import-option`,children:[(0,C.jsx)(T,{name:`file`,size:28}),(0,C.jsx)(`strong`,{children:U(`Import a ZIP`)}),(0,C.jsx)(`p`,{children:U(`Import a separate copy from Overleaf or a ZIP archive.`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:b,onClick:()=>s.current?.click(),children:U(`Choose ZIP`)})]})]}),(0,C.jsx)(`span`,{children:U(`Or drop a folder or ZIP here`)})]}),(0,C.jsx)(`input`,{hidden:!0,webkitdirectory:``,ref:o,type:`file`,multiple:!0,"aria-label":U(`Choose folder`),onChange:e=>{k(Array.from(e.target.files||[]),!1),e.target.value=``}}),(0,C.jsx)(`input`,{hidden:!0,ref:s,type:`file`,accept:`.zip,application/zip`,"aria-label":U(`Choose ZIP`),onChange:e=>{k(Array.from(e.target.files||[]),!0),e.target.value=``}}),(0,C.jsxs)(`details`,{className:`import-path`,children:[(0,C.jsx)(`summary`,{children:U(`Enter a folder path`)}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),w(()=>A(d.path))},children:[(0,C.jsxs)(`label`,{children:[U(`Folder path`),(0,C.jsx)(`input`,{value:d.path,required:!0,disabled:b,maxLength:4e3,onChange:e=>f({...d,path:e.target.value}),placeholder:U(`/Users/you/papers/my-paper`),spellCheck:!1})]}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:b,children:U(`Read folder`)})]})]}),p&&(0,C.jsx)(`p`,{role:`status`,children:U(`Reading paper files…`)})]}),h&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:h}),(0,C.jsxs)(`div`,{className:`button-row import-footer`,children:[l&&!y&&(0,C.jsx)(`button`,{type:`button`,className:`button ghost`,disabled:p,onClick:()=>{D.removeItem(Hr),u(null),g(``)},children:U(`Choose different files`)}),(0,C.jsx)(`button`,{className:`button secondary`,disabled:p,onClick:L,children:U(l?`Continue later`:`Cancel`)})]})]})})}function qr({status:e,label:t,disabled:n,className:r=``,onCompile:i}){let a=(0,S.useRef)(!1),[o,s]=(0,S.useState)(!1),c=o?`building`:e,l=U(c===`building`?`Compiling the PDF…`:c===`failed`?`Compilation failed. Click to retry.`:c===`ready`?`PDF compiled successfully.`:`Compilation status unavailable.`);async function u(){if(!(a.current||n||c===`building`)){a.current=!0,s(!0);try{await i()}finally{a.current=!1,s(!1)}}}return(0,C.jsx)(`button`,{type:`button`,className:`icon-button compile-button ${r}`,"data-state":c,"aria-label":t,"aria-description":l,title:`${t} · ${l}`,"aria-busy":c===`building`,disabled:n||c===`building`,onClick:()=>void u(),children:c===`building`?(0,C.jsx)(`span`,{className:`spinner`,"aria-hidden":`true`}):(0,C.jsx)(T,{name:`compile`,size:24})})}function Jr(e){switch(e.kind){case`reference`:return U(`Undefined reference`);case`citation`:return U(`Undefined citation`);case`label`:return U(`Label defined more than once`);case`missing-file`:return U(`Missing file`);case`glyph`:return U(`Missing character`);case`overfull`:return U(`Line too wide by {amount}pt`,{amount:e.amount??0});default:return e.message}}var Yr=e=>e.key&&[`reference`,`citation`,`label`,`missing-file`,`glyph`].includes(e.kind),Xr=e=>{let t=We(e);return t.errors+t.warnings+t.minor},Zr=e=>e.file?`${e.file}${e.line?`:${e.line}${e.end?`–${e.end}`:``}`:``}`:``,Qr=e=>{let t={reference:`Undefined reference \`${e.key}\``,citation:`Undefined citation \`${e.key}\``,label:`Label \`${e.key}\` defined more than once`,"missing-file":`Missing file \`${e.key}\``,glyph:`Missing character ${e.key}`,overfull:`Overfull line, ${e.amount}pt too wide`}[e.kind]||e.message,n=Zr(e);return`- ${n?n+` — `:``}${t}`};function $r(e,t=40){let n=e.filter(e=>e.kind!==`other`),r=n.slice(0,t).map(Qr);return n.length>t&&r.push(`- …and ${n.length-t} more in the build log`),`Fix these problems from the last compilation:\n${r.join(`
194
194
  `)}`}var ei=(0,S.forwardRef)(function({counts:e,status:t,pdfKey:n,logUrl:r,load:i,onJump:a,onFix:o},s){let c=(0,S.useId)(),l=(0,S.useRef)(null),u=(0,S.useRef)(null),[d,f]=(0,S.useState)(!1),[p,m]=(0,S.useState)(null),[h,g]=(0,S.useState)(``),_=(0,S.useRef)(i);_.current=i;let v=e?.errors||0,y=e?.warnings||0,b=v||y,x=JSON.stringify([e,t,n]);(0,S.useEffect)(()=>{if(!d)return;let e=!0;return g(``),_.current().then(t=>{e&&m(t)},t=>{e&&g(t instanceof Error?t.message:String(t))}),()=>{e=!1}},[d,x]),(0,S.useEffect)(()=>{if(!d)return;let e=()=>u.current?.hidePopover();return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[d]);function w(){let e=u.current,t=l.current.getBoundingClientRect();e.showPopover(),window.matchMedia(`(max-width: 680px)`).matches?(e.style.left=``,e.style.top=``):(e.style.left=`${Math.max(8,Math.min(t.right-e.offsetWidth,window.innerWidth-e.offsetWidth-8))}px`,e.style.top=`${Math.max(8,Math.min(t.bottom+6,window.innerHeight-e.offsetHeight-8))}px`)}(0,S.useImperativeHandle)(s,()=>({open(){u.current?.matches(`:popover-open`)||w()}}),[]);let E=p?.problems||[],D=[[U(`Errors`),E.filter(e=>e.severity===`error`)],[U(`Warnings`),E.filter(e=>e.severity===`warning`)]],O=E.filter(e=>e.severity===`minor`),k=E.filter(e=>e.kind!==`other`),A=v?Te(v,`{n} compilation error`,`{n} compilation errors`):y?Te(y,`{n} compilation warning`,`{n} compilation warnings`):U(`Compilation log`),j=(e,t)=>{let r=Zr(e),i=e.page!==void 0&&!!e.rect&&p?.key===n,o=(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`span`,{className:`problem-title`,children:[e.message.includes(`
195
195
  `)&&e.kind===`error`?(0,C.jsx)(`span`,{className:`problem-output`,children:e.message}):(0,C.jsx)(`span`,{children:Jr(e)}),Yr(e)&&(0,C.jsx)(`code`,{children:e.key}),(e.count||0)>1&&(0,C.jsxs)(`span`,{className:`problem-repeat`,title:U(`Reported {n} times`,{n:e.count}),children:[`×`,e.count]})]}),(r||e.page!==void 0)&&(0,C.jsxs)(`span`,{className:`problem-place`,children:[r&&(0,C.jsx)(`span`,{className:`problem-file`,title:r,children:r}),e.page!==void 0&&(0,C.jsx)(`span`,{className:`problem-page`,children:U(`p. {page}`,{page:e.page+1})})]})]});return(0,C.jsx)(`li`,{"data-severity":e.severity,children:i?(0,C.jsx)(`button`,{type:`button`,onClick:()=>{u.current?.hidePopover(),a(e)},children:o}):(0,C.jsx)(`div`,{className:`problem-static`,children:o})},t)};return(0,C.jsxs)(`span`,{className:`menu-anchor problems-anchor`,children:[(0,C.jsxs)(`button`,{ref:l,type:`button`,className:`icon-button problems-button`,"data-severity":v?`error`:y?`warning`:void 0,"aria-label":A,title:A,"aria-haspopup":`dialog`,"aria-expanded":d,"aria-controls":c,popoverTarget:c,onClick:e=>{e.preventDefault(),u.current?.matches(`:popover-open`)?u.current.hidePopover():w()},children:[(0,C.jsx)(T,{name:`log`,size:17}),b>0&&(0,C.jsx)(`b`,{className:`problems-count`,"aria-hidden":`true`,children:b>99?`99+`:b})]}),(0,C.jsxs)(`div`,{ref:u,id:c,popover:`auto`,role:`dialog`,"aria-label":U(`Compilation problems`),className:`problems-panel`,onToggle:e=>f(e.nativeEvent.newState===`open`),onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),u.current?.hidePopover(),l.current?.focus())},children:[(0,C.jsxs)(`header`,{className:`problems-header`,children:[(0,C.jsx)(`strong`,{children:U(`Compilation problems`)}),t===`building`&&(0,C.jsx)(`span`,{className:`problems-status`,children:U(`Recompiling; this list will update.`)})]}),(0,C.jsx)(`div`,{className:`problems-body`,"aria-busy":!p&&!h,children:h?(0,C.jsx)(`p`,{className:`problems-empty`,role:`alert`,children:h}):p?E.length?(0,C.jsxs)(C.Fragment,{children:[D.map(([e,t])=>t.length>0&&(0,C.jsxs)(`section`,{children:[(0,C.jsxs)(`h3`,{children:[e,` `,(0,C.jsx)(`span`,{children:Xr(t)})]}),(0,C.jsx)(`ul`,{children:t.map(j)})]},e)),O.length>0&&(0,C.jsxs)(`details`,{className:`problems-minor`,open:!D.some(([,e])=>e.length),children:[(0,C.jsxs)(`summary`,{children:[U(`Typesetting and other remarks`),` `,(0,C.jsx)(`span`,{children:Xr(O)})]}),(0,C.jsx)(`ul`,{children:O.map(j)})]})]}):(0,C.jsx)(`p`,{className:`problems-empty`,children:p.status===`building`?U(`The first build is still running.`):U(`No problems in the last build.`)}):(0,C.jsx)(`p`,{className:`problems-empty`,children:U(`Loading…`)})}),(p?.log||o&&k.length>0)&&(0,C.jsxs)(`footer`,{className:`problems-footer`,children:[p?.log&&(0,C.jsx)(`a`,{href:r,target:`_blank`,rel:`noreferrer`,children:U(`Raw log`)}),o&&k.length>0&&(0,C.jsxs)(`button`,{type:`button`,className:`button ghost compact`,onClick:()=>{u.current?.hidePopover(),o(k)},children:[(0,C.jsx)(T,{name:`tool`,size:14}),U(`Fix with an agent…`)]})]})]})]})}),ti=`papilot:theme`;function ni(e){return e===`light`||e===`dark`?e:`system`}function ri(){let[e,t]=(0,S.useState)(()=>ni(D.getItem(ti))),[n,r]=(0,S.useState)(()=>hn(D.getItem(un))),[i,a]=(0,S.useState)(()=>matchMedia(`(prefers-color-scheme: dark)`).matches),o=e===`system`?i?`dark`:`light`:e;return(0,S.useEffect)(()=>{let e=matchMedia(`(prefers-color-scheme: dark)`),n=()=>a(e.matches),i=e=>{(e.key===ti||e.key===null)&&t(ni(D.getItem(ti))),(e.key===`papilot:appearance`||e.key===null)&&r(hn(D.getItem(un)))};return n(),e.addEventListener(`change`,n),window.addEventListener(`storage`,i),()=>{e.removeEventListener(`change`,n),window.removeEventListener(`storage`,i)}},[]),(0,S.useLayoutEffect)(()=>{document.documentElement.dataset.theme=o;let e=vn(n,o);for(let[t,n]of Object.entries(e))document.documentElement.style.setProperty(t,n);document.querySelector(`meta[name="theme-color"]`)?.setAttribute(`content`,e[`--bg`])},[o,n]),{theme:e,resolved:o,appearance:n,setTheme:e=>{D.setItem(ti,e),t(e)},setAppearance:e=>{D.setItem(un,JSON.stringify(e)),r(e)}}}var ii={codex:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eCodex%3c/title%3e%3cpath%20clip-rule='evenodd'%20d='M8.086.457a6.105%206.105%200%20013.046-.415c1.333.153%202.521.72%203.564%201.7a.117.117%200%2000.107.029c1.408-.346%202.762-.224%204.061.366l.063.03.154.076c1.357.703%202.33%201.77%202.918%203.198.278.679.418%201.388.421%202.126a5.655%205.655%200%2001-.18%201.631.167.167%200%2000.04.155%205.982%205.982%200%20011.578%202.891c.385%201.901-.01%203.615-1.183%205.14l-.182.22a6.063%206.063%200%2001-2.934%201.851.162.162%200%2000-.108.102c-.255.736-.511%201.364-.987%201.992-1.199%201.582-2.962%202.462-4.948%202.451-1.583-.008-2.986-.587-4.21-1.736a.145.145%200%2000-.14-.032c-.518.167-1.04.191-1.604.185a5.924%205.924%200%2001-2.595-.622%206.058%206.058%200%2001-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74%207.74%200%2001-.495-1.283%206.11%206.11%200%2001-.017-3.064.166.166%200%2000.008-.074.115.115%200%2000-.037-.064%205.958%205.958%200%2001-1.38-2.202%205.196%205.196%200%2001-.333-1.589%206.915%206.915%200%2001.188-2.132c.45-1.484%201.309-2.648%202.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129%200%2000.087-.087A6.016%206.016%200%20015.635%202.31C6.315%201.464%207.132.846%208.086.457zm-.804%207.85a.848.848%200%2000-1.473.842l1.694%202.965-1.688%202.848a.849.849%200%20001.46.864l1.94-3.272a.849.849%200%2000.007-.854l-1.94-3.393zm5.446%206.24a.849.849%200%20000%201.695h4.848a.849.849%200%20000-1.696h-4.848z'%3e%3c/path%3e%3c/svg%3e`,claude:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%3e%3c/path%3e%3c/svg%3e`,cursor:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eCursor%3c/title%3e%3cpath%20d='M22.106%205.68L12.5.135a.998.998%200%2000-.998%200L1.893%205.68a.84.84%200%2000-.419.726v11.186c0%20.3.16.577.42.727l9.607%205.547a.999.999%200%2000.998%200l9.608-5.547a.84.84%200%2000.42-.727V6.407a.84.84%200%2000-.42-.726zm-.603%201.176L12.228%2022.92c-.063.108-.228.064-.228-.061V12.34a.59.59%200%2000-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264%200%20.428.286.296.514z'%3e%3c/path%3e%3c/svg%3e`,copilot:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGithubCopilot%3c/title%3e%3cpath%20d='M19.245%205.364c1.322%201.36%201.877%203.216%202.11%205.817.622%200%201.2.135%201.592.654l.73.964c.21.278.323.61.323.955v2.62c0%20.339-.173.669-.453.868C20.239%2019.602%2016.157%2021.5%2012%2021.5c-4.6%200-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654%201.593-.654l.029-.297c.25-2.446.81-4.213%202.082-5.52%202.461-2.54%205.71-2.851%207.146-2.864h.198c1.436.013%204.685.323%207.146%202.864zm-7.244%204.328c-.284%200-.613.016-.962.05-.123.447-.305.85-.57%201.108-1.05%201.023-2.316%201.18-2.994%201.18-.638%200-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882%2065.882%200%2000-.063%202.884l-.002.48c-.002.563-.005%201.126-.013%201.69.002.326.204.63.51.765%202.482%201.102%204.83%201.657%206.99%201.657%202.156%200%204.504-.555%206.985-1.657a.854.854%200%2000.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677%200-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525%204.013c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zm5%200c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635%205.087c-1.05.102-1.935.438-2.385.906-.975%201.037-.765%203.668-.21%204.224.405.394%201.17.657%201.995.657h.09c.649-.013%201.785-.176%202.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63%201.813-.03%201.037.24%202.06.675%202.47.968.957%202.136%201.104%202.776%201.11h.044c.825%200%201.59-.263%201.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12%207.615c-.24%200-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94%202.94%200%2001-.014.25c.225-.022.425-.027.612-.028h.366c.187%200%20.387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29%209.29%200%2000-.84-.044z'%3e%3c/path%3e%3c/svg%3e`,grok:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGrok%3c/title%3e%3cpath%20d='M9.27%2015.29l7.978-5.897c.391-.29.95-.177%201.137.272.98%202.369.542%205.215-1.41%207.169-1.951%201.954-4.667%202.382-7.149%201.406l-2.711%201.257c3.889%202.661%208.611%202.003%2011.562-.953%202.341-2.344%203.066-5.539%202.388-8.42l.006.007c-.983-4.232.242-5.924%202.75-9.383.06-.082.12-.164.179-.248l-3.301%203.305v-.01L9.267%2015.292M7.623%2016.723c-2.792-2.67-2.31-6.801.071-9.184%201.761-1.763%204.647-2.483%207.166-1.425l2.705-1.25a7.808%207.808%200%2000-1.829-1A8.975%208.975%200%20005.984%205.83c-2.533%202.536-3.33%206.436-1.962%209.764%201.022%202.487-.653%204.246-2.34%206.022-.599.63-1.199%201.259-1.682%201.925l7.62-6.815'%3e%3c/path%3e%3c/svg%3e`,antigravity:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eAntigravity%3c/title%3e%3cpath%20d='M21.751%2022.607c1.34%201.005%203.35.335%201.508-1.508C17.73%2015.74%2018.904%201%2012.037%201%205.17%201%206.342%2015.74.815%2021.1c-2.01%202.009.167%202.511%201.507%201.506%205.192-3.517%204.857-9.714%209.715-9.714%204.857%200%204.522%206.197%209.714%209.715z'%3e%3c/path%3e%3c/svg%3e`,kimi:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M21.846%200a1.923%201.923%200%20110%203.846H20.15a.226.226%200%2001-.227-.226V1.923C19.923.861%2020.784%200%2021.846%200z'%3e%3c/path%3e%3cpath%20d='M11.065%2011.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164%200%2000-.117.051l-7.82%207.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103%200-.186.103-.186.23V19.77c0%20.128.083.23.186.23h2.69c.103%200%20.186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158%200%2001.205-.023l6.484%204.772a7.677%207.677%200%20003.453%201.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028%205.028%200%2001-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z'%3e%3c/path%3e%3c/svg%3e`,glm:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eChatGLM%3c/title%3e%3cpath%20d='M9.917%202c4.906%200%2010.178%203.947%208.93%2010.58-.014.07-.037.14-.057.21l-.003-.277c-.083-3-1.534-8.934-8.87-8.934-3.393%200-8.137%203.054-7.93%208.158-.04%204.778%203.555%208.4%207.95%208.332l.073-.001c1.2-.033%202.763-.429%203.1-1.657.063-.031.26.534.268.598.048.256.112.369.192.34.981-.348%202.286-1.222%201.952-2.38-.176-.61-1.775-.147-1.921-.347.418-.979%202.234-.926%203.153-.716.443.102.657.38%201.012.442.29.052.981-.2.96.242C17.226%2019.632%2013.833%2022%209.918%2022%203.654%2022%200%2016.574%200%2011.737%200%205.947%204.959%202%209.917%202zM9.9%205.3c.484%200%201.125.225%201.38.585%203.669.145%204.313%202.686%204.694%205.444.255%201.838.315%202.3.182%201.387l.083.59c.068.448.554.737.982.516.144-.075.254-.231.328-.47a.2.2%200%2001.258-.13l.625.22a.2.2%200%2001.124.238%202.172%202.172%200%2001-.51.92c-.878.917-2.757.664-3.08-.62-.14-.554-.055-.626-.345-1.242-.292-.621-1.238-.709-1.69-.295-.345.315-.407.805-.406%201.282L12.6%2015.9a.9.9%200%2001-.9.9h-1.4a.9.9%200%2001-.9-.9v-.65a1.15%201.15%200%2010-2.3%200v.65a.9.9%200%2001-.9.9H4.8a.9.9%200%2001-.9-.9l.035-3.239c.012-1.884.356-3.658%202.47-4.134.2-.045.252.13.29.342.025.154.043.252.053.294.701%203.058%201.75%204.299%203.144%203.722l.66-.331.254-.13c.158-.082.25-.131.276-.15.012-.01-.165-.206-.407-.464l-1.012-1.067a8.925%208.925%200%2001-.199-.216c-.047-.034-.116.068-.208.306-.074.157-.251.252-.272.326-.013.058.108.298.362.72.164.288.22.508-.31.343-1.04-.8-1.518-2.273-1.684-3.725-.004-.035-.162-1.913-.162-1.913a1.2%201.2%200%20011.113-1.281L9.9%205.3zm12.994%208.68c.037.697-.403.704-1.213.591l-1.783-.276c-.265-.053-.385-.099-.313-.147.47-.315%203.268-.93%203.31-.168zm-.915-.083l-.926.042c-.85.077-1.452.24.338.336l.103.003c.815.012%201.264-.359.485-.381zm1.667-3.601h.01c.79.398.067%201.03-.65%201.393-.14.07-.491.176-1.052.315-.241.04-.457.092-.333.16l.01.005c1.952.958-3.123%201.534-2.495%201.285l.38-.148c.68-.266%201.614-.682%201.666-1.337.038-.48%201.253-.442%201.493-.968.048-.106%200-.236-.144-.389-.05-.047-.094-.094-.107-.148-.073-.305.7-.431%201.222-.168zm-2.568-.474c-.135%201.198-2.479%204.192-1.949%202.863l.017-.042c.298-.717.376-2.221%201.337-3.221.25-.26.636.035.595.4zm-7.976-.253c.02-.694%201.002-.968%201.346-.347.01-1.274-1.941-.768-1.346.347z'%3e%3c/path%3e%3c/svg%3e`,deepseek:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDeepSeek%3c/title%3e%3cpath%20d='M23.748%204.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434%201.202-.422%201.84.027%201.436.633%202.58%201.838%203.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526%205.526%200%2001-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365%2011.365%200%2000-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055%203.055%200%2001-.465.137%209.597%209.597%200%2000-2.883-.102c-1.885.21-3.39%201.102-4.497%202.623C.082%208.606-.231%2010.684.152%2012.85c.403%202.284%201.569%204.175%203.36%205.653%201.858%201.533%203.997%202.284%206.438%202.14%201.482-.085%203.133-.284%204.994-1.86.47.234.962.327%201.78.397.63.059%201.236-.03%201.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926%201.096-1.296%202.746-2.642%203.392-7.003.05-.347.007-.565%200-.845-.004-.17.035-.237.23-.256a4.173%204.173%200%20001.545-.475c1.396-.763%201.96-2.015%202.093-3.517.02-.23-.004-.467-.247-.588zM11.581%2018c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696%204.696%200%20011.529-.039c2.132.312%203.946%201.265%205.468%202.774.868.86%201.525%201.887%202.202%202.891.72%201.066%201.494%202.082%202.48%202.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306%200%2001.415-.287.302.302%200%2001.2.288.306.306%200%2001-.31.307.303.303%200%2001-.304-.308zm3.11%201.596c-.2.081-.399.151-.59.16a1.245%201.245%200%2001-.798-.254c-.274-.23-.47-.358-.552-.758a1.73%201.73%200%2001.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559%200%2001-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136%201.146.016.352.144.618.408%201.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z'%3e%3c/path%3e%3c/svg%3e`,qwen:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eQwen%3c/title%3e%3cpath%20d='M19.713%202.825h-5.907c0-.251-.066-.503-.196-.728L12.819.728A1.46%201.46%200%200%200%2011.559%200h-1.58c-.52%200-1%20.275-1.26.728l-2.42%204.19a1.45%201.45%200%200%200%200%201.453l.791%201.37c.26.448.74.727%201.26.727h11.36c.52%200%201-.275%201.26-.728l.79-1.37a1.45%201.45%200%200%200%200-1.451l-.79-1.37a1.46%201.46%200%200%200-1.26-.728zM.195%209.905l2.951%205.115a1.46%201.46%200%200%200-.531.531l-.791%201.37a1.45%201.45%200%200%200%200%201.452l.79%201.37c.26.448.74.727%201.26.727h4.84c.52%200%201-.275%201.26-.728l.79-1.37a1.45%201.45%200%200%200%200-1.451L5.086%207.083a1.46%201.46%200%200%200-1.26-.728h-1.58c-.52%200-1%20.276-1.26.728l-.79%201.37a1.45%201.45%200%200%200%200%201.452m15.888%2013.367%202.951-5.115c.217.125.469.196.728.196h1.582c.52%200%201-.275%201.26-.728l.79-1.37a1.45%201.45%200%200%200%200-1.451l-2.42-4.191a1.46%201.46%200%200%200-1.259-.728h-1.582c-.52%200-1%20.276-1.259.728l-5.678%209.838a1.45%201.45%200%200%200%200%201.452l.79%201.37c.26.448.74.727%201.26.727h1.582c.52%200%201-.275%201.26-.728z'%3e%3c/path%3e%3c/svg%3e`,opencode:`data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eopencode%3c/title%3e%3cpath%20d='M16%206H8v12h8V6zm4%2016H4V2h16v20z'%3e%3c/path%3e%3c/svg%3e`,git:`data:image/svg+xml,%3csvg%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGit%3c/title%3e%3cpath%20d='M13.09%2023.549a1.54%201.54%200%200%201-2.18%200L.451%2013.089a1.54%201.54%200%200%201%200-2.179l7.191-7.19%202.733%202.733a1.85%201.85%200%200%200%20.964%202.326v6.66a1.849%201.849%200%201%200%201.54%200V8.957l2.508%202.508a1.85%201.85%200%201%200%201.09-1.09l-2.634-2.634a1.85%201.85%200%200%200-2.378-2.377L8.73%202.63%2010.91.451a1.54%201.54%200%200%201%202.179%200l10.459%2010.46a1.54%201.54%200%200%201%200%202.179z'/%3e%3c/svg%3e`,latex:`/assets/latex-BarqJFtQ.svg`};function ai({name:e,size:t=24}){return(0,C.jsx)(`i`,{className:`brand-icon`,"data-brand":e,"aria-hidden":`true`,style:{"--brand-image":`url("${ii[e]}")`,width:t,height:t}})}var oi=`papilot:notifications`,si=[`input`,`approval`,`review`,`finished`,`error`],ci={input:!0,approval:!0,review:!0,finished:!0,error:!0};function li(){let e=D.getItem(oi)===`on`,t={...ci};for(let e of si)t[e]=D.getItem(`${oi}:${e}`)!==`off`;return typeof window>`u`||!(`Notification`in window)?{on:e,events:t,permission:`unsupported`}:window.isSecureContext?{on:e,events:t,permission:Notification.permission}:{on:e,events:t,permission:`insecure`}}var ui=li(),di=new Set;function fi(){let e=li();(e.on!==ui.on||e.permission!==ui.permission||si.some(t=>e.events[t]!==ui.events[t]))&&(ui=e,di.forEach(e=>e()))}typeof window<`u`&&(window.addEventListener(`storage`,e=>{(e.key===oi||e.key?.startsWith(`${oi}:`)||e.key===null)&&fi()}),window.addEventListener(`focus`,fi));var pi=()=>ui,mi=()=>ui.on&&ui.permission===`granted`&&si.some(e=>ui.events[e]);function hi(e){return di.add(e),()=>{di.delete(e)}}function gi(){return(0,S.useSyncExternalStore)(hi,pi)}async function _i(e){e&&ui.permission==="default"&&await Notification.requestPermission(),e?D.setItem(oi,`on`):D.removeItem(oi),fi()}function vi(e,t){t?D.removeItem(`${oi}:${e}`):D.setItem(`${oi}:${e}`,`off`),fi()}function yi(e,t,n=ci){let r=[];for(let i of t.tasks){let a=e.tasks.find(e=>e.id===i.id);if(!a)continue;let o=He[i.agent||`codex`]||`Codex`,s=t.requests.filter(t=>t.taskId===i.id&&!e.requests.some(e=>e.id===t.id)&&n[t.method.endsWith(`requestUserInput`)?`input`:`approval`]);if(s.length){let e=s.some(e=>e.method.endsWith(`requestUserInput`));r.push({taskId:i.id,event:e?`input`:`approval`,title:U(e?`{agent} needs your input`:`{agent} is waiting for your approval`,{agent:o}),body:i.title})}else if(a.status===`building`&&i.status===`reviewing`){let e=i.review?.counts?.pending||0;r.push({taskId:i.id,event:e?`review`:`finished`,title:e?Te(e,`Review ready · {n} change to decide`,`Review ready · {n} changes to decide`):U(`{agent} finished`,{agent:o}),body:i.title})}else i.status!==a.status&&(i.status===`failed`||i.status===`uncertain`||i.status===`interrupted`&&i.error)&&r.push({taskId:i.id,event:`error`,title:U(`A task needs attention`),body:bi(i,i.title)})}return r.filter(e=>n[e.event])}function bi(e,t){let n=e.error?.split(`
196
- `).find(e=>e.trim())?.trim();return n?`${t}\n${n.slice(0,160)}`:t}function xi(e,t){if(mi()&&ui.events[e.event])try{let n=new Notification(e.title,{body:e.body,tag:`papilot:`+e.taskId,renotify:!0,icon:`/favicon.png`});n.onclick=()=>{window.focus(),t(e.taskId),n.close()}}catch{}}function Si(){try{return new Notification(U(`Notifications are on`),{body:U(`Papilot will tell you here when a task needs you.`),tag:`papilot:test`,icon:`/favicon.png`}),!0}catch{return!1}}function Ci(){let e=[{event:`input`,label:U(`Input needed`),detail:U(`Notify me when an agent asks me a question.`)},{event:`approval`,label:U(`Approval requests`),detail:U(`Notify me when an agent needs my approval to continue.`)},{event:`review`,label:U(`Review ready`),detail:U(`Notify me when changes are ready for review.`)},{event:`finished`,label:U(`Task finished`),detail:U(`Notify me when an agent finishes without changes to review.`)},{event:`error`,label:U(`Task errors`),detail:U(`Notify me when a task fails or stops unexpectedly.`)}],t=gi(),[n,r]=(0,S.useState)(!1),[i,a]=(0,S.useState)(``),[o,s]=(0,S.useState)(``),c=t.on&&t.permission===`granted`,l=t.permission===`unsupported`?U(`This browser cannot show notifications.`):t.permission===`insecure`?U(`Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.`):t.permission===`denied`?U(`Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.`):``;async function u(e){r(!0),a(``),s(``);try{await _i(e)}catch{s(U(`This browser could not enable notifications.`))}finally{r(!1)}}return(0,C.jsxs)(`div`,{className:`settings-page`,children:[(0,C.jsxs)(`section`,{className:`settings-card`,children:[(0,C.jsxs)(`div`,{className:`settings-row settings-notifications`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`label`,{className:`settings-name`,htmlFor:`settings-notify`,children:U(`Notifications`)}),(0,C.jsx)(`p`,{id:`settings-notify-detail`,children:l||U(`Show desktop notifications while Papilot is in the background.`)})]}),(0,C.jsx)(`input`,{id:`settings-notify`,type:`checkbox`,role:`switch`,className:`switch`,"aria-describedby":`settings-notify-detail`,checked:c,disabled:n||!!l&&!c,onChange:e=>void u(e.target.checked)})]}),o&&(0,C.jsx)(`p`,{role:`alert`,className:`settings-test`,children:o}),c&&(0,C.jsxs)(`div`,{className:`settings-test`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`button secondary compact`,onClick:()=>a(Si()?`sent`:`failed`),children:[(0,C.jsx)(T,{name:`bell`,size:14}),U(`Send a test notification`)]}),i&&(0,C.jsx)(`span`,{role:`status`,children:U(i===`sent`?`Sent. If nothing appeared, allow notifications for this browser in your system settings.`:`This browser could not show the notification.`)})]})]}),(0,C.jsxs)(`section`,{"aria-labelledby":`settings-notify-events`,children:[(0,C.jsx)(`h3`,{id:`settings-notify-events`,className:`settings-section-title`,children:U(`Notify me about`)}),(0,C.jsx)(`div`,{className:`settings-card`,children:e.map(({event:e,label:n,detail:r})=>(0,C.jsxs)(`div`,{className:`settings-row settings-notification-event`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:n}),(0,C.jsx)(`p`,{children:r})]}),(0,C.jsx)(wr,{label:n,value:t.events[e]?`push`:`off`,options:[{value:`push`,label:U(`Push`)},{value:`off`,label:U(`Off`)}],onChange:t=>vi(e,t===`push`)})]},e))})]})]})}function wi({appearance:e,mode:t}){return(0,C.jsxs)(`span`,{className:`appearance-mini`,style:vn(e,t),children:[(0,C.jsxs)(`span`,{className:`appearance-mini-sidebar`,children:[(0,C.jsx)(T,{name:`paper`,size:10}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{})]}),(0,C.jsxs)(`span`,{className:`appearance-mini-page`,children:[(0,C.jsx)(`b`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`em`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{})]}),(0,C.jsxs)(`span`,{className:`appearance-mini-chat`,children:[(0,C.jsx)(`b`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`em`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`span`,{})]})]})}function Ti({label:e,value:t,onChange:n}){let[r,i]=(0,S.useState)(null),a=r!==null&&!mn(r);function o(){let e=mn(r);e&&n(e),a||i(null)}return(0,C.jsxs)(`div`,{className:`appearance-color-field`,children:[(0,C.jsxs)(`div`,{className:`appearance-color-chip`,children:[(0,C.jsx)(`label`,{className:`appearance-swatch`,style:{background:t},title:U(`Choose {color} color`,{color:e}),children:(0,C.jsx)(`input`,{type:`color`,"aria-label":U(`Choose {color} color`,{color:e}),value:t,onChange:e=>{i(null),n(e.target.value)}})}),(0,C.jsx)(`input`,{className:`appearance-hex`,"aria-label":e,"aria-invalid":a||void 0,"aria-describedby":a?`appearance-${e}-error`:void 0,spellCheck:!1,autoComplete:`off`,maxLength:7,value:r??t.toUpperCase(),onChange:e=>i(e.target.value),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o()),e.key===`Escape`&&r!==null&&(e.preventDefault(),e.stopPropagation(),i(null))}})]}),a&&(0,C.jsx)(`small`,{id:`appearance-${e}-error`,className:`appearance-color-error`,children:U(`Use a hex color, like #2563EB.`)})]})}function Ei({theme:e,onTheme:t,resolved:n,appearance:r,onAppearance:i}){let a=_n(r,n),o=Object.values(r.colors).some(e=>e.background||e.foreground),s=[{value:`papilot`,label:`Papilot`},{value:`paper`,label:U(`Paper`)},{value:`slate`,label:U(`Slate`)}],c=[{value:`default`,label:U(`Default`)},{value:`blue`,label:U(`Slate blue`)},{value:`graphite`,label:U(`Graphite`)},{value:`stone`,label:U(`Stone`)}],l=(e,t)=>i({...r,colors:{...r.colors,[n]:{...r.colors[n],[e]:t}}});return(0,C.jsxs)(`div`,{className:`settings-page appearance-settings`,children:[(0,C.jsxs)(`section`,{"aria-labelledby":`appearance-visual-style`,children:[(0,C.jsx)(`h3`,{className:`settings-section-title`,id:`appearance-visual-style`,children:U(`Visual style`)}),(0,C.jsx)(`div`,{className:`settings-card appearance-mode-card`,children:(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,id:`appearance-mode`,children:U(`Mode`)}),(0,C.jsx)(`div`,{className:`appearance-modes`,role:`radiogroup`,"aria-labelledby":`appearance-mode`,children:[`system`,`light`,`dark`].map(n=>(0,C.jsxs)(`label`,{className:`appearance-mode`,children:[(0,C.jsx)(`input`,{type:`radio`,name:`theme`,value:n,checked:e===n,onChange:()=>t(n)}),(0,C.jsxs)(`span`,{className:`appearance-preview appearance-preview-${n}`,"aria-hidden":`true`,children:[(0,C.jsx)(wi,{appearance:r,mode:n===`system`?`light`:n}),n===`system`&&(0,C.jsx)(`span`,{className:`appearance-preview-half`,children:(0,C.jsx)(wi,{appearance:r,mode:`dark`})})]}),(0,C.jsxs)(`span`,{className:`appearance-mode-label`,children:[(0,C.jsx)(T,{name:n===`system`?`monitor`:n===`light`?`sun`:`moon`,size:13}),U(n===`system`?`System`:n===`light`?`Light`:`Dark`)]})]},n))})]})}),(0,C.jsxs)(`div`,{className:`settings-card appearance-colors-card`,children:[(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Theme`)}),(0,C.jsxs)(`div`,{className:`appearance-theme-controls`,children:[o&&(0,C.jsx)(`span`,{className:`appearance-customized`,children:U(`Customized`)}),(0,C.jsx)(`span`,{className:`appearance-theme-picker`,children:(0,C.jsx)(wr,{label:U(`Theme`),value:r.preset,options:s,onChange:e=>i({...r,preset:e,accent:`default`,colors:{light:{},dark:{}}})})})]})]}),(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Accent`)}),(0,C.jsxs)(`span`,{className:`appearance-accent-picker`,children:[(0,C.jsx)(`i`,{className:`appearance-accent-dot`,style:{background:r.accent==="default"?a.accent:pn[r.accent]}}),(0,C.jsx)(wr,{label:U(`Accent`),value:r.accent,options:c,onChange:e=>i({...r,accent:e})})]})]}),(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Background`)}),(0,C.jsx)(Ti,{label:U(`Background`),value:a.background,onChange:e=>l(`background`,e)},`background-${n}-${r.preset}`)]}),(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Foreground`)}),(0,C.jsx)(Ti,{label:U(`Foreground`),value:a.foreground,onChange:e=>l(`foreground`,e)},`foreground-${n}-${r.preset}`)]})]}),(0,C.jsx)(`p`,{className:`appearance-hint`,children:U(n===`light`?`Editing light mode colors. Changes are saved automatically.`:`Editing dark mode colors. Changes are saved automatically.`)})]}),(0,C.jsxs)(`details`,{className:`appearance-advanced`,children:[(0,C.jsxs)(`summary`,{children:[U(`Advanced`),(0,C.jsx)(T,{name:`chevronRight`,size:15})]}),(0,C.jsx)(`div`,{className:`settings-card`,children:(0,C.jsxs)(`div`,{className:`settings-row settings-choice`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`PDF appearance`)}),(0,C.jsx)(`p`,{children:U(`Choose how paper pages look in dark mode.`)})]}),(0,C.jsx)(wr,{label:U(`PDF appearance`),value:r.pdf,options:[{value:`theme`,label:U(`Follow mode`)},{value:`light`,label:U(`Always light`)}],onChange:e=>i({...r,pdf:e})})]})})]}),(0,C.jsxs)(`button`,{type:`button`,className:`appearance-reset`,onClick:()=>{i(dn),t(`system`)},children:[(0,C.jsx)(T,{name:`restore`,size:15}),U(`Reset appearance`)]})]})}function Di(e){return[`accept`,`reject`,`comment`,`undo`].includes(e)?`decisions`:[`next`,`previous`,`pending`].includes(e)?`navigation`:`view`}var Oi=e=>[...e].map(e=>({key:e})),ki=[[...Oi("`1234567890-="),{key:`Backspace`,label:`⌫`,width:2}],[{key:`Tab`,label:`tab`,width:1.5},...Oi(`qwertyuiop[]`),{key:`\\`,width:1.5}],[{key:`CapsLock`,label:`caps`,width:1.75},...Oi(`asdfghjkl;'`),{key:`Enter`,label:`↵`,width:2.25}],[{key:`Shift`,label:`⇧`,width:2.25},...Oi(`zxcvbnm,./`),{key:`Shift`,label:`⇧`,width:2.75}],[{key:`Ctrl`,width:1.25},{key:`Alt`,width:1.25},{key:`Meta`,width:1.25},{key:` `,label:``,width:7},{key:`Meta`,width:1.25},{key:`ArrowLeft`,label:`←`},{key:`arrows`},{key:`ArrowRight`,label:`→`}]];function Ai(e){let t=e.split(`+`).at(-1);return t===`?`?`/`:t}function ji(e,t){return Ai(e)===t||e.split(`+`).slice(0,-1).includes(t)||t===`Shift`&&e.endsWith(`?`)}function Mi({shortcuts:e,labels:t,mac:n,keyLabel:r,active:i,onHighlight:a,onEdit:o}){let[s,c]=(0,S.useState)(null),l=t=>An.filter(n=>e[n].some(e=>Ai(e)===t)),u=s?l(s):[];function d({key:s,label:u,width:f=1},p=0){if(s===`arrows`)return(0,C.jsxs)(`span`,{className:`shortcut-keyboard-arrows`,children:[d({key:`ArrowUp`,label:`↑`}),d({key:`ArrowDown`,label:`↓`})]},s);let m=l(s),h=i&&m.includes(i)?i:m[0],g=i&&e[i].some(e=>ji(e,s)),_=u??(s===`Meta`?n?`⌘`:`Win`:s===`Alt`&&n?`⌥`:s.toUpperCase()),v=`shortcut-keycap`+(m.length?` assigned`:``)+(g?` lit`:``),y=(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{children:_}),s===`/`&&(0,C.jsx)(`small`,{children:`?`}),m.length>0&&(0,C.jsx)(`i`,{})]});return m.length?(0,C.jsx)(`button`,{type:`button`,className:v,style:{flexGrow:f},"data-key":s,"data-tone":Di(h),"aria-label":U(`Keyboard key {key}: {actions}`,{key:_,actions:m.map(n=>`${t[n][0]} (${e[n].filter(e=>Ai(e)===s).map(r).join(`, `)})`).join(`; `)}),onMouseEnter:()=>a(h),onMouseLeave:()=>a(null),onFocus:()=>a(h),onBlur:()=>a(null),onClick:()=>{m.length===1?(c(null),o(h)):c(s)},children:y},`${s}-${p}`):(0,C.jsx)(`span`,{className:v,style:{flexGrow:f},"data-key":s,"data-tone":g&&i?Di(i):void 0,"aria-hidden":`true`,children:y},`${s}-${p}`)}return(0,C.jsxs)(`section`,{className:`shortcut-overview`,"aria-labelledby":`shortcut-keyboard-title`,children:[(0,C.jsxs)(`header`,{className:`shortcut-overview-header`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{id:`shortcut-keyboard-title`,children:U(`Your review keyboard`)}),(0,C.jsx)(`p`,{children:U(`Click a highlighted key to customize it.`)})]}),(0,C.jsx)(`span`,{className:`shortcut-layout-label`,children:`QWERTY`})]}),(0,C.jsx)(`div`,{className:`shortcut-keyboard`,role:`group`,"aria-label":U(`Review shortcut keyboard`),children:ki.map((e,t)=>(0,C.jsx)(`div`,{className:`shortcut-keyboard-row`,children:e.map(d)},t))}),(0,C.jsxs)(`div`,{className:`shortcut-keyboard-legend`,children:[(0,C.jsxs)(`span`,{"data-tone":`decisions`,children:[(0,C.jsx)(`i`,{className:`shortcut-dot`}),U(`Review decisions`)]}),(0,C.jsxs)(`span`,{"data-tone":`navigation`,children:[(0,C.jsx)(`i`,{className:`shortcut-dot`}),U(`Review navigation`)]}),(0,C.jsxs)(`span`,{"data-tone":`view`,children:[(0,C.jsx)(`i`,{className:`shortcut-dot`}),U(`View & help`)]})]}),(0,C.jsx)(`div`,{className:`shortcut-keyboard-detail`,children:u.length>1?(0,C.jsxs)(`div`,{className:`shortcut-keyboard-choices`,children:[(0,C.jsx)(`span`,{children:U(`Choose a shortcut to edit:`)}),u.map(n=>(0,C.jsxs)(`button`,{type:`button`,onClick:()=>{c(null),o(n)},children:[t[n][0],` `,(0,C.jsx)(`kbd`,{children:e[n].filter(e=>Ai(e)===s).map(r).join(` / `)})]},n))]}):i?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`shortcut-detail-keys`,children:e[i].map(e=>(0,C.jsx)(`kbd`,{children:r(e)},e))}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`strong`,{children:t[i][0]}),(0,C.jsx)(`span`,{className:`shortcut-detail-description`,children:t[i][1]})]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(T,{name:`keyboard`,size:19}),(0,C.jsx)(`span`,{children:U(`Hover over a highlighted key to see what it does.`)})]})})]})}function Ni(){let e=Un(),t=Gn(),[n,r]=(0,S.useState)(null),[i,a]=(0,S.useState)(``),[o,s]=(0,S.useState)(null),c=(0,S.useRef)({}),l=/Mac|iPhone|iPad/.test(navigator.platform),u=e=>l?In(e).replace(/⌘\+/g,`⌘`).replace(/Ctrl\+/g,`⌃`).replace(/Alt\+/g,`⌥`).replace(/Shift\+/g,`⇧`):In(e),d={accept:[U(`Accept change`),U(`Accept the current proposal. In Changes, stage or unstage it.`)],reject:[U(`Reject change`),U(`Reject the current proposal. In Changes, revert it.`)],comment:[U(`Request a revision`),U(`Write feedback on the current proposed change.`)],next:[U(`Next change`),U(`Move to the next visible change.`)],previous:[U(`Previous change`),U(`Move to the previous visible change.`)],pending:[U(`Next undecided change`),U(`Jump to the next change that still needs a decision.`)],source:[U(`Show LaTeX source`),U(`Show or hide the source for the current change.`)],undo:[U(`Undo review decision`),U(`Undo the last review decision or revert.`)],help:[U(`Keyboard shortcuts`),U(`Open these shortcut settings.`)]},f=[{label:U(`Review decisions`),actions:[`accept`,`reject`,`comment`,`undo`]},{label:U(`Review navigation`),actions:[`next`,`previous`,`pending`]},{label:U(`View & help`),actions:[`source`,`help`]}];function p(t,n){let r=An.find(r=>r!==t&&n.some(t=>e[r].includes(t)));return r&&a(U(`Already used for {action}. Choose another shortcut.`,{action:d[r][0]})),!!r}function m(n,i){if(r(null),a(``),!i)Wn({...t,[n]:e[n]}),Hn({...e,[n]:[]});else{let r=t[n].length?t[n]:kn[n];if(p(n,r))return;Hn({...e,[n]:r})}}function h(e){c.current[e]?.focus(),r(e),a(``)}return(0,C.jsxs)(`div`,{className:`shortcut-settings settings-page`,children:[(0,C.jsx)(Mi,{shortcuts:e,labels:d,mac:l,keyLabel:u,active:n||o,onHighlight:s,onEdit:h}),(0,C.jsxs)(`div`,{className:`shortcut-customize-header`,children:[(0,C.jsx)(`h3`,{className:`settings-section-title`,children:U(`Customize shortcuts`)}),(0,C.jsx)(`p`,{className:`settings-intro`,id:`shortcut-instructions`,children:U(`Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.`)})]}),i&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:i}),f.map(i=>(0,C.jsxs)(`section`,{className:`shortcut-group`,"data-tone":Di(i.actions[0]),children:[(0,C.jsxs)(`h3`,{className:`settings-section-title`,children:[(0,C.jsx)(`span`,{className:`shortcut-dot`}),i.label]}),(0,C.jsx)(`div`,{className:`shortcut-list`,children:i.actions.map(i=>{let l=e[i].length>0,f=l?e[i]:t[i];return(0,C.jsxs)(`div`,{className:`shortcut-row`+(l?``:` disabled`)+(n===i||o===i?` highlighted`:``),onMouseEnter:()=>s(i),onMouseLeave:()=>s(null),onFocus:()=>s(i),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||s(null)},children:[(0,C.jsx)(`input`,{id:`shortcut-toggle-${i}`,type:`checkbox`,role:`switch`,className:`switch`,"aria-label":U(`Enable shortcut: {action}`,{action:d[i][0]}),checked:l,onChange:e=>m(i,e.target.checked)}),(0,C.jsxs)(`label`,{htmlFor:`shortcut-toggle-${i}`,className:`shortcut-label`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:d[i][0]}),(0,C.jsx)(`span`,{className:`shortcut-description`,children:d[i][1]})]}),(0,C.jsx)(`button`,{ref:e=>{e?c.current[i]=e:delete c.current[i]},type:`button`,className:`shortcut-key`+(n===i?` recording`:``),"aria-label":U(`Change shortcut: {action}`,{action:d[i][0]}),"aria-describedby":`shortcut-instructions`,onClick:()=>h(i),onBlur:()=>r(null),onKeyDown:o=>{if(n!==i)return;if(o.key===`Tab`){r(null);return}if(o.preventDefault(),o.stopPropagation(),o.key===`Escape`){r(null),a(``);return}let s=jn(o.nativeEvent);if(!s)return;let c=o.key===`Backspace`&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!o.shiftKey;if(!c&&Nn(s)){a(U(`This key is reserved for the browser or text editing. Choose another shortcut.`));return}if(!c&&p(i,[s]))return;let u=c?[]:[s];Wn({...t,[i]:u}),(l||c)&&Hn({...e,[i]:u}),r(null),a(``)},children:n===i?(0,C.jsx)(`span`,{children:U(`Press a key…`)}):f.length?f.map(e=>(0,C.jsx)(`kbd`,{children:u(e)},e)):(0,C.jsx)(`span`,{children:U(`Not assigned`)})})]},i)})})]},i.label)),(0,C.jsxs)(`section`,{className:`shortcut-system`,children:[(0,C.jsx)(`h3`,{className:`settings-section-title`,children:U(`Standard shortcuts`)}),(0,C.jsx)(`p`,{className:`settings-intro`,children:U(`These keep the usual browser and text-editing behavior.`)}),(0,C.jsxs)(`dl`,{children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Copy selected PDF text`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:l?`⌘C`:`Ctrl+C`})})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Undo typing, a deleted note, or the last review decision, depending on focus.`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:l?`⌘Z`:`Ctrl+Z`})})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Send the review comment being written.`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:l?`⌘↩`:`Ctrl+Enter`})})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Close the current editor or cancel region selection.`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:`Esc`})})]})]})]}),(0,C.jsxs)(`footer`,{className:`shortcut-footer`,children:[(0,C.jsx)(`p`,{className:`settings-intro`,children:U(`Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.`)}),(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,disabled:JSON.stringify(e)===JSON.stringify(kn)&&JSON.stringify(t)===JSON.stringify(kn),onClick:()=>{Wn(Pn({})),Hn(Pn({})),r(null),a(``)},children:U(`Restore default shortcuts`)})]})]})}var Pi={version:`0.8.5`,repository:`https://github.com/PapilotAI/papilot`,issues:`https://github.com/PapilotAI/papilot/issues`,license:`MIT`,licenseText:`MIT License
196
+ `).find(e=>e.trim())?.trim();return n?`${t}\n${n.slice(0,160)}`:t}function xi(e,t){if(mi()&&ui.events[e.event])try{let n=new Notification(e.title,{body:e.body,tag:`papilot:`+e.taskId,renotify:!0,icon:`/favicon.png`});n.onclick=()=>{window.focus(),t(e.taskId),n.close()}}catch{}}function Si(){try{return new Notification(U(`Notifications are on`),{body:U(`Papilot will tell you here when a task needs you.`),tag:`papilot:test`,icon:`/favicon.png`}),!0}catch{return!1}}function Ci(){let e=[{event:`input`,label:U(`Input needed`),detail:U(`Notify me when an agent asks me a question.`)},{event:`approval`,label:U(`Approval requests`),detail:U(`Notify me when an agent needs my approval to continue.`)},{event:`review`,label:U(`Review ready`),detail:U(`Notify me when changes are ready for review.`)},{event:`finished`,label:U(`Task finished`),detail:U(`Notify me when an agent finishes without changes to review.`)},{event:`error`,label:U(`Task errors`),detail:U(`Notify me when a task fails or stops unexpectedly.`)}],t=gi(),[n,r]=(0,S.useState)(!1),[i,a]=(0,S.useState)(``),[o,s]=(0,S.useState)(``),c=t.on&&t.permission===`granted`,l=t.permission===`unsupported`?U(`This browser cannot show notifications.`):t.permission===`insecure`?U(`Browsers show notifications only on HTTPS or localhost. Open Papilot at a secure address to use them.`):t.permission===`denied`?U(`Notifications are blocked for this site. Allow them in the browser’s site settings, then turn them on here.`):``;async function u(e){r(!0),a(``),s(``);try{await _i(e)}catch{s(U(`This browser could not enable notifications.`))}finally{r(!1)}}return(0,C.jsxs)(`div`,{className:`settings-page`,children:[(0,C.jsxs)(`section`,{className:`settings-card`,children:[(0,C.jsxs)(`div`,{className:`settings-row settings-notifications`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`label`,{className:`settings-name`,htmlFor:`settings-notify`,children:U(`Notifications`)}),(0,C.jsx)(`p`,{id:`settings-notify-detail`,children:l||U(`Show desktop notifications while Papilot is in the background.`)})]}),(0,C.jsx)(`input`,{id:`settings-notify`,type:`checkbox`,role:`switch`,className:`switch`,"aria-describedby":`settings-notify-detail`,checked:c,disabled:n||!!l&&!c,onChange:e=>void u(e.target.checked)})]}),o&&(0,C.jsx)(`p`,{role:`alert`,className:`settings-test`,children:o}),c&&(0,C.jsxs)(`div`,{className:`settings-test`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`button secondary compact`,onClick:()=>a(Si()?`sent`:`failed`),children:[(0,C.jsx)(T,{name:`bell`,size:14}),U(`Send a test notification`)]}),i&&(0,C.jsx)(`span`,{role:`status`,children:U(i===`sent`?`Sent. If nothing appeared, allow notifications for this browser in your system settings.`:`This browser could not show the notification.`)})]})]}),(0,C.jsxs)(`section`,{"aria-labelledby":`settings-notify-events`,children:[(0,C.jsx)(`h3`,{id:`settings-notify-events`,className:`settings-section-title`,children:U(`Notify me about`)}),(0,C.jsx)(`div`,{className:`settings-card`,children:e.map(({event:e,label:n,detail:r})=>(0,C.jsxs)(`div`,{className:`settings-row settings-notification-event`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:n}),(0,C.jsx)(`p`,{children:r})]}),(0,C.jsx)(wr,{label:n,value:t.events[e]?`push`:`off`,options:[{value:`push`,label:U(`Push`)},{value:`off`,label:U(`Off`)}],onChange:t=>vi(e,t===`push`)})]},e))})]})]})}function wi({appearance:e,mode:t}){return(0,C.jsxs)(`span`,{className:`appearance-mini`,style:vn(e,t),children:[(0,C.jsxs)(`span`,{className:`appearance-mini-sidebar`,children:[(0,C.jsx)(T,{name:`paper`,size:10}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{})]}),(0,C.jsxs)(`span`,{className:`appearance-mini-page`,children:[(0,C.jsx)(`b`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`em`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{})]}),(0,C.jsxs)(`span`,{className:`appearance-mini-chat`,children:[(0,C.jsx)(`b`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`em`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`span`,{})]})]})}function Ti({label:e,value:t,onChange:n}){let[r,i]=(0,S.useState)(null),a=r!==null&&!mn(r);function o(){let e=mn(r);e&&n(e),a||i(null)}return(0,C.jsxs)(`div`,{className:`appearance-color-field`,children:[(0,C.jsxs)(`div`,{className:`appearance-color-chip`,children:[(0,C.jsx)(`label`,{className:`appearance-swatch`,style:{background:t},title:U(`Choose {color} color`,{color:e}),children:(0,C.jsx)(`input`,{type:`color`,"aria-label":U(`Choose {color} color`,{color:e}),value:t,onChange:e=>{i(null),n(e.target.value)}})}),(0,C.jsx)(`input`,{className:`appearance-hex`,"aria-label":e,"aria-invalid":a||void 0,"aria-describedby":a?`appearance-${e}-error`:void 0,spellCheck:!1,autoComplete:`off`,maxLength:7,value:r??t.toUpperCase(),onChange:e=>i(e.target.value),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o()),e.key===`Escape`&&r!==null&&(e.preventDefault(),e.stopPropagation(),i(null))}})]}),a&&(0,C.jsx)(`small`,{id:`appearance-${e}-error`,className:`appearance-color-error`,children:U(`Use a hex color, like #2563EB.`)})]})}function Ei({theme:e,onTheme:t,resolved:n,appearance:r,onAppearance:i}){let a=_n(r,n),o=Object.values(r.colors).some(e=>e.background||e.foreground),s=[{value:`papilot`,label:`Papilot`},{value:`paper`,label:U(`Paper`)},{value:`slate`,label:U(`Slate`)}],c=[{value:`default`,label:U(`Default`)},{value:`blue`,label:U(`Slate blue`)},{value:`graphite`,label:U(`Graphite`)},{value:`stone`,label:U(`Stone`)}],l=(e,t)=>i({...r,colors:{...r.colors,[n]:{...r.colors[n],[e]:t}}});return(0,C.jsxs)(`div`,{className:`settings-page appearance-settings`,children:[(0,C.jsxs)(`section`,{"aria-labelledby":`appearance-visual-style`,children:[(0,C.jsx)(`h3`,{className:`settings-section-title`,id:`appearance-visual-style`,children:U(`Visual style`)}),(0,C.jsx)(`div`,{className:`settings-card appearance-mode-card`,children:(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,id:`appearance-mode`,children:U(`Mode`)}),(0,C.jsx)(`div`,{className:`appearance-modes`,role:`radiogroup`,"aria-labelledby":`appearance-mode`,children:[`system`,`light`,`dark`].map(n=>(0,C.jsxs)(`label`,{className:`appearance-mode`,children:[(0,C.jsx)(`input`,{type:`radio`,name:`theme`,value:n,checked:e===n,onChange:()=>t(n)}),(0,C.jsxs)(`span`,{className:`appearance-preview appearance-preview-${n}`,"aria-hidden":`true`,children:[(0,C.jsx)(wi,{appearance:r,mode:n===`system`?`light`:n}),n===`system`&&(0,C.jsx)(`span`,{className:`appearance-preview-half`,children:(0,C.jsx)(wi,{appearance:r,mode:`dark`})})]}),(0,C.jsxs)(`span`,{className:`appearance-mode-label`,children:[(0,C.jsx)(T,{name:n===`system`?`monitor`:n===`light`?`sun`:`moon`,size:13}),U(n===`system`?`System`:n===`light`?`Light`:`Dark`)]})]},n))})]})}),(0,C.jsxs)(`div`,{className:`settings-card appearance-colors-card`,children:[(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Theme`)}),(0,C.jsxs)(`div`,{className:`appearance-theme-controls`,children:[o&&(0,C.jsx)(`span`,{className:`appearance-customized`,children:U(`Customized`)}),(0,C.jsx)(`span`,{className:`appearance-theme-picker`,children:(0,C.jsx)(wr,{label:U(`Theme`),value:r.preset,options:s,onChange:e=>i({...r,preset:e,accent:`default`,colors:{light:{},dark:{}}})})})]})]}),(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Accent`)}),(0,C.jsxs)(`span`,{className:`appearance-accent-picker`,children:[(0,C.jsx)(`i`,{className:`appearance-accent-dot`,style:{background:r.accent==="default"?a.accent:pn[r.accent]}}),(0,C.jsx)(wr,{label:U(`Accent`),value:r.accent,options:c,onChange:e=>i({...r,accent:e})})]})]}),(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Background`)}),(0,C.jsx)(Ti,{label:U(`Background`),value:a.background,onChange:e=>l(`background`,e)},`background-${n}-${r.preset}`)]}),(0,C.jsxs)(`div`,{className:`settings-row`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Foreground`)}),(0,C.jsx)(Ti,{label:U(`Foreground`),value:a.foreground,onChange:e=>l(`foreground`,e)},`foreground-${n}-${r.preset}`)]})]}),(0,C.jsx)(`p`,{className:`appearance-hint`,children:U(n===`light`?`Editing light mode colors. Changes are saved automatically.`:`Editing dark mode colors. Changes are saved automatically.`)})]}),(0,C.jsxs)(`details`,{className:`appearance-advanced`,children:[(0,C.jsxs)(`summary`,{children:[U(`Advanced`),(0,C.jsx)(T,{name:`chevronRight`,size:15})]}),(0,C.jsx)(`div`,{className:`settings-card`,children:(0,C.jsxs)(`div`,{className:`settings-row settings-choice`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`PDF appearance`)}),(0,C.jsx)(`p`,{children:U(`Choose how paper pages look in dark mode.`)})]}),(0,C.jsx)(wr,{label:U(`PDF appearance`),value:r.pdf,options:[{value:`theme`,label:U(`Follow mode`)},{value:`light`,label:U(`Always light`)}],onChange:e=>i({...r,pdf:e})})]})})]}),(0,C.jsxs)(`button`,{type:`button`,className:`appearance-reset`,onClick:()=>{i(dn),t(`system`)},children:[(0,C.jsx)(T,{name:`restore`,size:15}),U(`Reset appearance`)]})]})}function Di(e){return[`accept`,`reject`,`comment`,`undo`].includes(e)?`decisions`:[`next`,`previous`,`pending`].includes(e)?`navigation`:`view`}var Oi=e=>[...e].map(e=>({key:e})),ki=[[...Oi("`1234567890-="),{key:`Backspace`,label:`⌫`,width:2}],[{key:`Tab`,label:`tab`,width:1.5},...Oi(`qwertyuiop[]`),{key:`\\`,width:1.5}],[{key:`CapsLock`,label:`caps`,width:1.75},...Oi(`asdfghjkl;'`),{key:`Enter`,label:`↵`,width:2.25}],[{key:`Shift`,label:`⇧`,width:2.25},...Oi(`zxcvbnm,./`),{key:`Shift`,label:`⇧`,width:2.75}],[{key:`Ctrl`,width:1.25},{key:`Alt`,width:1.25},{key:`Meta`,width:1.25},{key:` `,label:``,width:7},{key:`Meta`,width:1.25},{key:`ArrowLeft`,label:`←`},{key:`arrows`},{key:`ArrowRight`,label:`→`}]];function Ai(e){let t=e.split(`+`).at(-1);return t===`?`?`/`:t}function ji(e,t){return Ai(e)===t||e.split(`+`).slice(0,-1).includes(t)||t===`Shift`&&e.endsWith(`?`)}function Mi({shortcuts:e,labels:t,mac:n,keyLabel:r,active:i,onHighlight:a,onEdit:o}){let[s,c]=(0,S.useState)(null),l=t=>An.filter(n=>e[n].some(e=>Ai(e)===t)),u=s?l(s):[];function d({key:s,label:u,width:f=1},p=0){if(s===`arrows`)return(0,C.jsxs)(`span`,{className:`shortcut-keyboard-arrows`,children:[d({key:`ArrowUp`,label:`↑`}),d({key:`ArrowDown`,label:`↓`})]},s);let m=l(s),h=i&&m.includes(i)?i:m[0],g=i&&e[i].some(e=>ji(e,s)),_=u??(s===`Meta`?n?`⌘`:`Win`:s===`Alt`&&n?`⌥`:s.toUpperCase()),v=`shortcut-keycap`+(m.length?` assigned`:``)+(g?` lit`:``),y=(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{children:_}),s===`/`&&(0,C.jsx)(`small`,{children:`?`}),m.length>0&&(0,C.jsx)(`i`,{})]});return m.length?(0,C.jsx)(`button`,{type:`button`,className:v,style:{flexGrow:f},"data-key":s,"data-tone":Di(h),"aria-label":U(`Keyboard key {key}: {actions}`,{key:_,actions:m.map(n=>`${t[n][0]} (${e[n].filter(e=>Ai(e)===s).map(r).join(`, `)})`).join(`; `)}),onMouseEnter:()=>a(h),onMouseLeave:()=>a(null),onFocus:()=>a(h),onBlur:()=>a(null),onClick:()=>{m.length===1?(c(null),o(h)):c(s)},children:y},`${s}-${p}`):(0,C.jsx)(`span`,{className:v,style:{flexGrow:f},"data-key":s,"data-tone":g&&i?Di(i):void 0,"aria-hidden":`true`,children:y},`${s}-${p}`)}return(0,C.jsxs)(`section`,{className:`shortcut-overview`,"aria-labelledby":`shortcut-keyboard-title`,children:[(0,C.jsxs)(`header`,{className:`shortcut-overview-header`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{id:`shortcut-keyboard-title`,children:U(`Your review keyboard`)}),(0,C.jsx)(`p`,{children:U(`Click a highlighted key to customize it.`)})]}),(0,C.jsx)(`span`,{className:`shortcut-layout-label`,children:`QWERTY`})]}),(0,C.jsx)(`div`,{className:`shortcut-keyboard`,role:`group`,"aria-label":U(`Review shortcut keyboard`),children:ki.map((e,t)=>(0,C.jsx)(`div`,{className:`shortcut-keyboard-row`,children:e.map(d)},t))}),(0,C.jsxs)(`div`,{className:`shortcut-keyboard-legend`,children:[(0,C.jsxs)(`span`,{"data-tone":`decisions`,children:[(0,C.jsx)(`i`,{className:`shortcut-dot`}),U(`Review decisions`)]}),(0,C.jsxs)(`span`,{"data-tone":`navigation`,children:[(0,C.jsx)(`i`,{className:`shortcut-dot`}),U(`Review navigation`)]}),(0,C.jsxs)(`span`,{"data-tone":`view`,children:[(0,C.jsx)(`i`,{className:`shortcut-dot`}),U(`View & help`)]})]}),(0,C.jsx)(`div`,{className:`shortcut-keyboard-detail`,children:u.length>1?(0,C.jsxs)(`div`,{className:`shortcut-keyboard-choices`,children:[(0,C.jsx)(`span`,{children:U(`Choose a shortcut to edit:`)}),u.map(n=>(0,C.jsxs)(`button`,{type:`button`,onClick:()=>{c(null),o(n)},children:[t[n][0],` `,(0,C.jsx)(`kbd`,{children:e[n].filter(e=>Ai(e)===s).map(r).join(` / `)})]},n))]}):i?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`shortcut-detail-keys`,children:e[i].map(e=>(0,C.jsx)(`kbd`,{children:r(e)},e))}),(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`strong`,{children:t[i][0]}),(0,C.jsx)(`span`,{className:`shortcut-detail-description`,children:t[i][1]})]})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(T,{name:`keyboard`,size:19}),(0,C.jsx)(`span`,{children:U(`Hover over a highlighted key to see what it does.`)})]})})]})}function Ni(){let e=Un(),t=Gn(),[n,r]=(0,S.useState)(null),[i,a]=(0,S.useState)(``),[o,s]=(0,S.useState)(null),c=(0,S.useRef)({}),l=/Mac|iPhone|iPad/.test(navigator.platform),u=e=>l?In(e).replace(/⌘\+/g,`⌘`).replace(/Ctrl\+/g,`⌃`).replace(/Alt\+/g,`⌥`).replace(/Shift\+/g,`⇧`):In(e),d={accept:[U(`Accept change`),U(`Accept the current proposal. In Changes, stage or unstage it.`)],reject:[U(`Reject change`),U(`Reject the current proposal. In Changes, revert it.`)],comment:[U(`Request a revision`),U(`Write feedback on the current proposed change.`)],next:[U(`Next change`),U(`Move to the next visible change.`)],previous:[U(`Previous change`),U(`Move to the previous visible change.`)],pending:[U(`Next undecided change`),U(`Jump to the next change that still needs a decision.`)],source:[U(`Show LaTeX source`),U(`Show or hide the source for the current change.`)],undo:[U(`Undo review decision`),U(`Undo the last review decision or revert.`)],help:[U(`Keyboard shortcuts`),U(`Open these shortcut settings.`)]},f=[{label:U(`Review decisions`),actions:[`accept`,`reject`,`comment`,`undo`]},{label:U(`Review navigation`),actions:[`next`,`previous`,`pending`]},{label:U(`View & help`),actions:[`source`,`help`]}];function p(t,n){let r=An.find(r=>r!==t&&n.some(t=>e[r].includes(t)));return r&&a(U(`Already used for {action}. Choose another shortcut.`,{action:d[r][0]})),!!r}function m(n,i){if(r(null),a(``),!i)Wn({...t,[n]:e[n]}),Hn({...e,[n]:[]});else{let r=t[n].length?t[n]:kn[n];if(p(n,r))return;Hn({...e,[n]:r})}}function h(e){c.current[e]?.focus(),r(e),a(``)}return(0,C.jsxs)(`div`,{className:`shortcut-settings settings-page`,children:[(0,C.jsx)(Mi,{shortcuts:e,labels:d,mac:l,keyLabel:u,active:n||o,onHighlight:s,onEdit:h}),(0,C.jsxs)(`div`,{className:`shortcut-customize-header`,children:[(0,C.jsx)(`h3`,{className:`settings-section-title`,children:U(`Customize shortcuts`)}),(0,C.jsx)(`p`,{className:`settings-intro`,id:`shortcut-instructions`,children:U(`Click a key to change it, then press the new shortcut. Escape cancels; Backspace clears it.`)})]}),i&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:i}),f.map(i=>(0,C.jsxs)(`section`,{className:`shortcut-group`,"data-tone":Di(i.actions[0]),children:[(0,C.jsxs)(`h3`,{className:`settings-section-title`,children:[(0,C.jsx)(`span`,{className:`shortcut-dot`}),i.label]}),(0,C.jsx)(`div`,{className:`shortcut-list`,children:i.actions.map(i=>{let l=e[i].length>0,f=l?e[i]:t[i];return(0,C.jsxs)(`div`,{className:`shortcut-row`+(l?``:` disabled`)+(n===i||o===i?` highlighted`:``),onMouseEnter:()=>s(i),onMouseLeave:()=>s(null),onFocus:()=>s(i),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||s(null)},children:[(0,C.jsx)(`input`,{id:`shortcut-toggle-${i}`,type:`checkbox`,role:`switch`,className:`switch`,"aria-label":U(`Enable shortcut: {action}`,{action:d[i][0]}),checked:l,onChange:e=>m(i,e.target.checked)}),(0,C.jsxs)(`label`,{htmlFor:`shortcut-toggle-${i}`,className:`shortcut-label`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:d[i][0]}),(0,C.jsx)(`span`,{className:`shortcut-description`,children:d[i][1]})]}),(0,C.jsx)(`button`,{ref:e=>{e?c.current[i]=e:delete c.current[i]},type:`button`,className:`shortcut-key`+(n===i?` recording`:``),"aria-label":U(`Change shortcut: {action}`,{action:d[i][0]}),"aria-describedby":`shortcut-instructions`,onClick:()=>h(i),onBlur:()=>r(null),onKeyDown:o=>{if(n!==i)return;if(o.key===`Tab`){r(null);return}if(o.preventDefault(),o.stopPropagation(),o.key===`Escape`){r(null),a(``);return}let s=jn(o.nativeEvent);if(!s)return;let c=o.key===`Backspace`&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!o.shiftKey;if(!c&&Nn(s)){a(U(`This key is reserved for the browser or text editing. Choose another shortcut.`));return}if(!c&&p(i,[s]))return;let u=c?[]:[s];Wn({...t,[i]:u}),(l||c)&&Hn({...e,[i]:u}),r(null),a(``)},children:n===i?(0,C.jsx)(`span`,{children:U(`Press a key…`)}):f.length?f.map(e=>(0,C.jsx)(`kbd`,{children:u(e)},e)):(0,C.jsx)(`span`,{children:U(`Not assigned`)})})]},i)})})]},i.label)),(0,C.jsxs)(`section`,{className:`shortcut-system`,children:[(0,C.jsx)(`h3`,{className:`settings-section-title`,children:U(`Standard shortcuts`)}),(0,C.jsx)(`p`,{className:`settings-intro`,children:U(`These keep the usual browser and text-editing behavior.`)}),(0,C.jsxs)(`dl`,{children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Copy selected PDF text`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:l?`⌘C`:`Ctrl+C`})})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Undo typing, a deleted note, or the last review decision, depending on focus.`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:l?`⌘Z`:`Ctrl+Z`})})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Send the review comment being written.`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:l?`⌘↩`:`Ctrl+Enter`})})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`dt`,{children:U(`Close the current editor or cancel region selection.`)}),(0,C.jsx)(`dd`,{children:(0,C.jsx)(`kbd`,{children:`Esc`})})]})]})]}),(0,C.jsxs)(`footer`,{className:`shortcut-footer`,children:[(0,C.jsx)(`p`,{className:`settings-intro`,children:U(`Review shortcuts work while the PDF review is focused. They pause while you type or select text. Changes are saved in this browser.`)}),(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,disabled:JSON.stringify(e)===JSON.stringify(kn)&&JSON.stringify(t)===JSON.stringify(kn),onClick:()=>{Wn(Pn({})),Hn(Pn({})),r(null),a(``)},children:U(`Restore default shortcuts`)})]})]})}var Pi={version:`0.8.6`,repository:`https://github.com/PapilotAI/papilot`,issues:`https://github.com/PapilotAI/papilot/issues`,license:`MIT`,licenseText:`MIT License
197
197
 
198
198
  Copyright (c) 2026 Cui Chen
199
199
 
@@ -248,13 +248,13 @@ SOFTWARE.`};function Fi({href:e,icon:t,title:n,detail:r}){return(0,C.jsxs)(`a`,{
248
248
  `);return n[0].trim()?n[0]=t+n[0].trim():n.shift(),n.length>1&&!n[n.length-1].trim()?n.pop():n[n.length-1]=n[n.length-1].trimEnd(),n.join(`
249
249
  `)}function hh(e){let t=``;for(let n=0;n<e.length;){if(e[n]===`\\`){t+=e.slice(n,n+2),n+=2;continue}if(e[n]!==`$`){t+=e[n++];continue}if(e[n+1]===`$`){let r=e.indexOf(`$$`,n+2);t+=e.slice(n,r<0?n+2:r+2),n=r<0?n+2:r+2;continue}let r=-1;if(/\S/.test(e[n+1]||``))for(let t=n+1;t<e.length;t++)if(e[t]===`\\`)t++;else{if(e.startsWith(`
250
250
 
251
- `,t))break;if(e[t]===`$`){e[t+1]!==`$`&&/\S/.test(e[t-1])&&!/\d/.test(e[t+1]||``)&&(r=t);break}}r<0?(t+=`\\$`,n++):(t+=e.slice(n,r+1),n=r+1)}return t}var gh=null,_h=null;function vh(e){let[t,n]=(0,S.useState)(gh);return(0,S.useEffect)(()=>{if(!e||t)return;let r=!0;return _h??=vr(()=>import(`./math-DHvVou9A.js`).then(e=>gh=e.math),__vite__mapDeps([0,1])),_h.then(e=>{r&&n(e)},()=>{_h=null}),()=>{r=!1}},[e,t]),e?t:null}function yh({text:e,math:t}){return(0,C.jsx)(Vd,{remarkPlugins:[lh,...t?.remark||[]],rehypePlugins:t?.rehype,urlTransform:e=>/^(?:https?:\/\/|mailto:|#)/i.test(e)||!/^[a-z][a-z\d+.-]*:/i.test(e)&&!e.startsWith(`//`)?e:``,components:{h1:({children:e})=>(0,C.jsx)(`h3`,{children:e}),h2:({children:e})=>(0,C.jsx)(`h4`,{children:e}),h3:({children:e})=>(0,C.jsx)(`h5`,{children:e}),h4:({children:e})=>(0,C.jsx)(`h6`,{children:e}),h5:({children:e})=>(0,C.jsx)(`h6`,{children:e}),a:({href:e,children:t,title:n})=>e?/^(?:https?:\/\/|mailto:)/i.test(e)?(0,C.jsx)(`a`,{href:e,title:n,target:`_blank`,rel:`noreferrer`,children:t}):e.startsWith(`#`)?(0,C.jsx)(`a`,{href:e,children:t}):(0,C.jsx)(uh,{path:e,children:t}):(0,C.jsx)(C.Fragment,{children:t}),table:({children:e})=>(0,C.jsx)(`div`,{className:`markdown-table`,children:(0,C.jsx)(`table`,{children:e})}),pre:({children:e})=>(0,C.jsx)(`pre`,{tabIndex:0,children:e}),img:({alt:e})=>(0,C.jsx)(`span`,{children:e})},children:t?ph(e):e})}function bh({text:e}){return(0,C.jsx)(yh,{text:e,math:vh(fh(e))})}function xh(e){let t=e.startsWith(``)?``:``,n=e.slice(t.length);return{bom:t,source:n,header:/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(n),newline:n.includes(`\r
251
+ `,t))break;if(e[t]===`$`){e[t+1]!==`$`&&/\S/.test(e[t-1])&&!/\d/.test(e[t+1]||``)&&(r=t);break}}r<0?(t+=`\\$`,n++):(t+=e.slice(n,r+1),n=r+1)}return t}var gh=null,_h=null;function vh(e){let[t,n]=(0,S.useState)(gh);return(0,S.useEffect)(()=>{if(!e||t)return;let r=!0;return _h??=vr(()=>import(`./math-C7ENJr-a.js`).then(e=>gh=e.math),__vite__mapDeps([0,1])),_h.then(e=>{r&&n(e)},()=>{_h=null}),()=>{r=!1}},[e,t]),e?t:null}function yh({text:e,math:t}){return(0,C.jsx)(Vd,{remarkPlugins:[lh,...t?.remark||[]],rehypePlugins:t?.rehype,urlTransform:e=>/^(?:https?:\/\/|mailto:|#)/i.test(e)||!/^[a-z][a-z\d+.-]*:/i.test(e)&&!e.startsWith(`//`)?e:``,components:{h1:({children:e})=>(0,C.jsx)(`h3`,{children:e}),h2:({children:e})=>(0,C.jsx)(`h4`,{children:e}),h3:({children:e})=>(0,C.jsx)(`h5`,{children:e}),h4:({children:e})=>(0,C.jsx)(`h6`,{children:e}),h5:({children:e})=>(0,C.jsx)(`h6`,{children:e}),a:({href:e,children:t,title:n})=>e?/^(?:https?:\/\/|mailto:)/i.test(e)?(0,C.jsx)(`a`,{href:e,title:n,target:`_blank`,rel:`noreferrer`,children:t}):e.startsWith(`#`)?(0,C.jsx)(`a`,{href:e,children:t}):(0,C.jsx)(uh,{path:e,children:t}):(0,C.jsx)(C.Fragment,{children:t}),table:({children:e})=>(0,C.jsx)(`div`,{className:`markdown-table`,children:(0,C.jsx)(`table`,{children:e})}),pre:({children:e})=>(0,C.jsx)(`pre`,{tabIndex:0,children:e}),img:({alt:e})=>(0,C.jsx)(`span`,{children:e})},children:t?ph(e):e})}function bh({text:e}){return(0,C.jsx)(yh,{text:e,math:vh(fh(e))})}function xh(e){let t=e.startsWith(``)?``:``,n=e.slice(t.length);return{bom:t,source:n,header:/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(n),newline:n.includes(`\r
252
252
  `)?`\r
253
253
  `:`
254
254
  `}}function Sh(e){let{header:t}=xh(e),n={};for(let e of t?.[1].split(/\r?\n/)||[]){let t=/^([A-Za-z-]+):\s*(.*)$/.exec(e);if(t){let e=t[2].trim(),r=e.replace(/^(['"])(.*)\1$/,`$2`);if(e.startsWith(`"`)&&e.endsWith(`"`))try{r=JSON.parse(e)}catch{}n[t[1].toLowerCase()]=r}}return n}var Ch=e=>{let{source:t,header:n}=xh(e);return t.slice(n?.[0].length||0)};function wh(e,t,n){let{bom:r,source:i,header:a,newline:o}=xh(e),s=n.replace(/[\r\n]/g,` `),c=`${t}: ${t===`icon`?s:JSON.stringify(s)}`;if(!a)return`${r}---${o}${c}${o}---${o}${o}${i}`;let l=a[1].split(/\r?\n/),u=RegExp(`^${t}:`,`i`),d=l.findIndex(e=>u.test(e)),f=l.filter(e=>!u.test(e));f.splice(d<0?f.length:d,0,c);let p=a[0].endsWith(`
255
255
  `)?o:``;return`${r}---${o}${f.join(o)}${o}---${p}${i.slice(a[0].length)}`}function Th(e,t){let{bom:n,header:r,newline:i}=xh(e);return r?`${n}${r[0]}${r[0].endsWith(`
256
256
  `)?``:i}${t}`:`${n}${t}`}function Eh({value:e,onChange:t,disabled:n}){let r=(0,S.useId)(),i=(0,S.useRef)(null),a=(0,S.useRef)(null),[o,s]=(0,S.useState)(!1),c=_t.find(t=>t.id===e);function l(e=!1){a.current?.hidePopover(),e&&i.current?.focus()}(0,S.useEffect)(()=>{n&&l()},[n]),(0,S.useEffect)(()=>{if(!o)return;let e=()=>l(),t=e=>{e.target instanceof Node&&e.target.contains(i.current)&&!a.current?.contains(e.target)&&l()};return window.addEventListener(`resize`,e),document.addEventListener(`scroll`,t,!0),()=>{window.removeEventListener(`resize`,e),document.removeEventListener(`scroll`,t,!0)}},[o]);function u(){let e=a.current,t=i.current.getBoundingClientRect();e.showPopover(),s(!0),e.style.left=`${Math.max(12,Math.min(t.left,window.innerWidth-e.offsetWidth-12))}px`;let n=t.bottom+8,r=t.top-e.offsetHeight-8;e.style.top=`${Math.max(12,Math.min(n+e.offsetHeight>window.innerHeight-12&&r>=12?r:n,window.innerHeight-e.offsetHeight-12))}px`,e.querySelector(`[aria-checked="true"]`)?.focus()}return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{ref:i,type:`button`,className:`skill-icon-trigger`,"aria-label":U(`Choose an icon`),title:`${U(`Choose an icon`)} · ${U(c.label)}`,"aria-haspopup":`dialog`,"aria-expanded":o,popoverTarget:r,disabled:n,onClick:e=>{e.preventDefault(),a.current?.matches(`:popover-open`)?l():u()},children:[(0,C.jsx)(T,{name:e,size:25}),(0,C.jsx)(`span`,{children:(0,C.jsx)(T,{name:`chevronDown`,size:10})})]}),(0,C.jsxs)(`div`,{ref:a,id:r,popover:`auto`,role:`dialog`,"aria-label":U(`Choose an icon`),className:`skill-icon-popover`,onToggle:e=>s(e.nativeEvent.newState===`open`),onKeyDown:e=>{if(e.key===`Escape`)e.preventDefault(),e.stopPropagation(),l(!0);else if(e.key===`Tab`)l(!0);else if([`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){e.preventDefault(),e.stopPropagation();let r=Array.from(a.current.querySelectorAll(`[role="radio"]`)),i=r.indexOf(document.activeElement),o=e.key===`ArrowDown`?4:e.key===`ArrowUp`?-4:e.key===`ArrowRight`?1:-1,s=e.key===`Home`?0:e.key===`End`?r.length-1:(i+o+r.length)%r.length;r[s]?.focus(),!n&&_t[s]&&t(_t[s].id)}},children:[(0,C.jsx)(`p`,{children:U(`Choose an icon`)}),(0,C.jsx)(`div`,{className:`skill-icon-grid`,role:`radiogroup`,"aria-label":U(`Skill icon`),children:_t.map(r=>(0,C.jsx)(`button`,{type:`button`,role:`radio`,"aria-label":U(r.label),title:U(r.label),"aria-checked":r.id===e,tabIndex:r.id===e?0:-1,disabled:n,onClick:()=>{t(r.id),l(!0)},children:(0,C.jsx)(T,{name:r.id,size:21})},r.id))})]})]})}var Dh=e=>`${e.source}/${e.id}`,Oh=e=>U(e===`builtin`?`Built-in`:e===`user`?`Global`:`This paper`);function kh(e){let t=e instanceof Error?e.message:String(e);switch(t){case`This skill changed on disk. Reload it before saving.`:return U(`This skill changed on disk. Reload it before saving.`);case`This skill changed on disk. Reload it before deleting.`:return U(`This skill changed on disk. Reload it before deleting.`);case`A skill with this ID already exists in this location.`:return U(`A skill with this ID already exists in this location.`);case`This skill no longer exists. Refresh the list.`:return U(`This skill no longer exists. Refresh the list.`);case`This skill was removed on disk. Reload the list before saving.`:return U(`This skill was removed on disk. Reload the list before saving.`);case`The skill must contain instructions.`:return U(`The skill must contain instructions.`);case`Skill content must contain 1–20,000 characters.`:return U(`Skill content must contain 1–20,000 characters.`);default:return t}}function Ah({project:e,api:t,onChanged:n,onClose:r,controls:i}){let a=(0,S.useRef)(null),o=(0,S.useRef)(0),s=(0,S.useRef)(!0),c=(0,S.useRef)(!1),l=(0,S.useRef)(null),[u,d]=(0,S.useState)(null),[f,p]=(0,S.useState)(null),[m,h]=(0,S.useState)(``),[g,_]=(0,S.useState)(`all`),[v,y]=(0,S.useState)(!1),[b,x]=(0,S.useState)(!1),[w,E]=(0,S.useState)(``),[D,O]=(0,S.useState)(!1),[k,A]=(0,S.useState)(`edit`),[j,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(!1),[F,I]=(0,S.useState)(null),L=e?`?projectId=${encodeURIComponent(e.id)}`:``,R=!(!f||f.saved&&f.content===f.saved.content),ee=f?.source===`builtin`;(0,S.useEffect)(()=>(s.current=!0,te(),()=>{s.current=!1,o.current++}),[]),(0,S.useEffect)(()=>{if(!R)return;let e=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[R]),(0,S.useEffect)(()=>{(F||j)&&a.current?.querySelector(`[data-keep-editing]`)?.focus()},[F,j]),(0,S.useImperativeHandle)(i,()=>({cancel:oe,navigate:z}));function z(e){v||(R?I({proceed:e}):(M(!1),e()))}async function B(e){let n=++o.current;P(!0),x(!0),E(``),O(!1),M(!1),p(null);try{let r=await t(`/skills/${Dh(e)}${L}`);s.current&&n===o.current&&(p({...r,saved:r}),A(r.source===`builtin`?`preview`:`edit`),requestAnimationFrame(()=>a.current?.querySelector(`.skill-library-editor-heading h3`)?.focus()))}catch(e){s.current&&n===o.current&&E(kh(e))}finally{s.current&&n===o.current&&x(!1)}}async function te(){let e=++o.current;P(!1),x(!0),E(``),p(null),O(!1),M(!1);try{let n=await t(`/skills${L}`);if(!s.current||e!==o.current)return;d(n),x(!1)}catch(t){s.current&&e===o.current&&(E(kh(t)),x(!1))}}function ne(e){o.current++,P(!0),x(!1),E(``),O(!1),A(`edit`),M(!1);let t=e?.id||``;if(e){let n=1;for(;u?.skills.some(e=>e.source===`user`&&e.id===t);)t=`${e.id.slice(0,37)}-copy${n++>1?n-1:``}`}let n=e?wh(e.content,`icon`,bt({id:e.id,icon:Sh(e.content).icon})):`---\nname: ${U(`New skill`)}\ndescription: \nicon: spark\n---\n\n`;p({id:t,source:`user`,content:n}),requestAnimationFrame(()=>a.current?.querySelector(`[name="skill-id"]`)?.focus())}function re(){z(()=>{o.current++,P(!1),p(null),x(!1),E(``),requestAnimationFrame(()=>{let e=l.current;e?.isConnected?e.focus():a.current?.querySelector(`.skill-library-new`)?.focus()})})}function ie(e){p(t=>t?{...t,...e}:null),O(!1),M(!1)}async function ae(r=!1){if(f&&!c.current){c.current=!0,y(!0),E(``),O(!1);try{let i=await t(`/skills/${Dh(f)}${r?`/remove`:``}`,{projectId:e?.id,content:f.content,revision:f.saved?.revision});if(n(),!s.current)return;M(!1),r?(p(null),await te(),requestAnimationFrame(()=>a.current?.querySelector(`.skill-library-new`)?.focus())):(p({...i,saved:i}),O(!0),d(await t(`/skills${L}`)))}catch(e){s.current&&E(kh(e))}finally{c.current=!1,s.current&&y(!1)}}}function oe(){v||(F?I(null):j?M(!1):z(r))}let se=(u?.skills||[]).filter(e=>(g===`all`||e.source===g)&&`${e.id} ${xt(e)} ${St(e)}`.toLocaleLowerCase().includes(m.trim().toLocaleLowerCase())),V=Sh(f?.content||``),H=Ch(f?.content||``),ce=bt({id:f?.id||``,icon:V.icon}),le=!!(f&&R&&!ee&&H.trim()&&!v&&f.content.length<=2e4&&/^[a-z0-9][a-z0-9-]{0,47}$/.test(f.id)),ue=w&&(0,C.jsxs)(`p`,{className:`inline-error`,role:`alert`,children:[w,(0,C.jsx)(`button`,{className:`button secondary compact`,disabled:v,onClick:()=>z(()=>void te()),children:U(`Refresh skills`)})]});return(0,C.jsxs)(`div`,{ref:a,className:`skill-library`+(N?` has-editor`:``),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`s`&&(e.preventDefault(),le&&!F&&!j&&ae())},children:[(0,C.jsxs)(`div`,{className:`skill-library-layout`,inert:!!(F||j),children:[(0,C.jsxs)(`div`,{className:`skill-library-browse`,hidden:N,children:[(0,C.jsx)(`p`,{className:`settings-intro`,children:U(`Reusable instructions for your revisions. Choose a skill from the / menu when starting a task.`)}),(0,C.jsxs)(`div`,{className:`skill-library-tools`,children:[(0,C.jsxs)(`div`,{className:`skill-library-search`,children:[(0,C.jsx)(T,{name:`search`,size:16}),(0,C.jsx)(`input`,{type:`search`,"aria-label":U(`Search skills`),placeholder:U(`Search skills`),value:m,onChange:e=>h(e.target.value)})]}),(0,C.jsx)(`button`,{className:`icon-button`,"aria-label":U(`Refresh skills`),title:U(`Refresh skills`),disabled:v||b,onClick:()=>z(()=>void te()),children:(0,C.jsx)(T,{name:`refresh`,size:16})}),(0,C.jsxs)(`button`,{className:`button secondary compact skill-library-new`,disabled:!u||v,onClick:e=>{l.current=e.currentTarget,z(()=>ne())},children:[(0,C.jsx)(T,{name:`plus`,size:16}),U(`New skill`)]})]}),(0,C.jsxs)(`div`,{className:`skill-library-filter`,role:`group`,"aria-label":U(`Skill scope`),children:[(0,C.jsx)(`button`,{"aria-pressed":g===`all`,onClick:()=>_(`all`),children:U(`All`)}),(0,C.jsx)(`button`,{"aria-pressed":g===`user`,onClick:()=>_(`user`),children:U(`Global`)}),e&&(0,C.jsx)(`button`,{"aria-pressed":g===`paper`,onClick:()=>_(`paper`),children:U(`This paper`)}),(0,C.jsx)(`button`,{"aria-pressed":g===`builtin`,onClick:()=>_(`builtin`),children:U(`Built-in`)})]}),(0,C.jsxs)(`nav`,{className:`skill-library-list settings-card`,"aria-label":U(`Skills`),children:[se.map(e=>(0,C.jsxs)(`button`,{className:`skill-library-item`,disabled:v,onClick:t=>{l.current=t.currentTarget,z(()=>void B(e))},children:[(0,C.jsx)(`span`,{className:`skill-library-item-icon`,"data-skill-icon":bt(e),children:(0,C.jsx)(T,{name:bt(e),size:18})}),(0,C.jsxs)(`span`,{className:`skill-library-item-text`,children:[(0,C.jsx)(`strong`,{children:xt(e)}),(0,C.jsxs)(`small`,{children:[e.active?null:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`skill-library-overridden`,children:U(`Overridden`)}),` · `]}),St(e)||`/${e.id}`]})]}),(0,C.jsx)(`span`,{className:`skill-library-source`,children:Oh(e.source)}),(0,C.jsx)(T,{name:`chevronRight`,size:15})]},Dh(e))),b&&(0,C.jsx)(`p`,{className:`skill-library-empty`,role:`status`,children:U(`Loading skills…`)}),u&&!b&&!se.length&&(0,C.jsx)(`p`,{className:`skill-library-empty`,children:U(`No matching skills`)})]}),!N&&ue]}),(0,C.jsxs)(`div`,{className:`skill-library-detail`+(ee?` is-readonly`:``),hidden:!N,children:[(0,C.jsxs)(`button`,{className:`skill-library-back settings-back`,onClick:re,children:[(0,C.jsx)(T,{name:`chevronLeft`,size:15}),U(`All skills`)]}),b?(0,C.jsx)(`p`,{className:`skill-library-empty`,role:`status`,children:U(`Loading skills…`)}):f?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`skill-library-editor-body`,children:[(0,C.jsxs)(`div`,{className:`skill-library-editor-heading`,children:[(0,C.jsxs)(`div`,{className:`skill-library-heading-identity`,children:[ee?(0,C.jsx)(`span`,{className:`skill-library-heading-icon`,children:(0,C.jsx)(T,{name:ce,size:25})}):(0,C.jsx)(Eh,{value:ce,disabled:v,onChange:e=>ie({content:wh(f.content,`icon`,e)})}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{tabIndex:-1,children:ee&&f.saved?xt(f.saved):V.name||f.id||U(`New skill`)}),(0,C.jsxs)(`div`,{className:`skill-library-heading-meta`,children:[(0,C.jsx)(`span`,{className:`skill-library-source`,children:Oh(f.source)}),f.id&&(0,C.jsxs)(`code`,{children:[`/`,f.id]}),f.source===`paper`&&e&&(0,C.jsx)(`span`,{children:e.name})]})]})]}),f.saved&&(0,C.jsxs)(`button`,{className:`button secondary compact`,disabled:v,onClick:()=>z(()=>ne(f)),children:[(0,C.jsx)(T,{name:`copy`,size:14}),U(`Copy and edit`)]})]}),!ee&&k!==`source`&&(0,C.jsxs)(`div`,{className:`skill-library-metadata settings-card`,children:[(0,C.jsxs)(`label`,{children:[U(`Skill name`),(0,C.jsx)(`input`,{name:`skill-name`,value:V.name||``,maxLength:60,placeholder:U(`Give your skill a name`),disabled:v,onChange:e=>ie({content:wh(f.content,`name`,e.target.value)})})]}),(0,C.jsxs)(`label`,{children:[U(`Description`),(0,C.jsx)(`input`,{value:V.description||``,maxLength:300,placeholder:U(`What does this skill help with?`),disabled:v,onChange:e=>ie({content:wh(f.content,`description`,e.target.value)})})]})]}),!f.saved&&(0,C.jsxs)(`div`,{className:`skill-library-new-fields`,children:[(0,C.jsxs)(`label`,{children:[U(`Skill ID`),(0,C.jsx)(`input`,{name:`skill-id`,value:f.id,placeholder:`my-skill`,pattern:`[a-z0-9][a-z0-9-]{0,47}`,maxLength:48,disabled:v,onChange:e=>ie({id:e.target.value}),spellCheck:!1})]}),(0,C.jsxs)(`label`,{children:[U(`Save to`),(0,C.jsxs)(`select`,{value:f.source,disabled:v,onChange:e=>ie({source:e.target.value}),children:[(0,C.jsx)(`option`,{value:`user`,children:U(`Global`)}),e&&(0,C.jsx)(`option`,{value:`paper`,children:U(`This paper`)})]})]}),(0,C.jsx)(`p`,{children:U(`Use lowercase letters, numbers and hyphens. This is also the / command name.`)})]}),ee?(0,C.jsx)(`p`,{className:`skill-library-notice`,children:U(`Copy this built-in skill to customize it for all papers or this paper.`)}):(0,C.jsxs)(`div`,{className:`skill-library-edit-tools`,children:[(0,C.jsx)(`span`,{children:U(`Instructions`)}),(0,C.jsxs)(`div`,{className:`segmented`,role:`group`,"aria-label":U(`Skill content view`),children:[(0,C.jsx)(`button`,{"aria-pressed":k===`edit`,onClick:()=>A(`edit`),children:U(`Edit`)}),(0,C.jsx)(`button`,{"aria-pressed":k===`preview`,onClick:()=>A(`preview`),children:U(`Preview`)}),(0,C.jsxs)(`button`,{"aria-pressed":k===`source`,onClick:()=>A(`source`),children:[(0,C.jsx)(T,{name:`code`,size:13}),U(`Source`)]})]})]}),k===`preview`?(0,C.jsx)(`div`,{className:`skill-library-preview`,children:(0,C.jsx)(bh,{text:H.trim()})}):(0,C.jsx)(`textarea`,{className:`skill-library-content`,"aria-label":U(k===`source`?`Skill content (Markdown)`:`Instructions`),value:k===`source`?f.content:H,onChange:e=>ie({content:k===`source`?e.target.value:Th(f.content,e.target.value)}),disabled:v,maxLength:k===`source`?2e4:Math.max(0,2e4-f.content.length+H.length),placeholder:U(`Describe what the agent should do, what to preserve, and how to present the result.`),spellCheck:!1}),f.content.length>2e4&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:U(`Skill content must contain 1–20,000 characters.`)}),f.saved&&!f.saved.active&&(0,C.jsx)(`p`,{className:`skill-library-notice`,children:U(`A skill with the same ID takes priority here: this paper, then global, then built-in.`)})]}),!ee&&(0,C.jsxs)(`footer`,{className:`skill-library-editor-actions`,children:[f.saved&&(0,C.jsxs)(`button`,{className:`button ghost danger-text compact`,disabled:v,onClick:()=>M(!0),children:[(0,C.jsx)(T,{name:`trash`,size:14}),U(`Delete skill`)]}),(0,C.jsx)(`span`,{role:`status`,children:D?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(T,{name:`check`,size:13}),U(`Saved`)]}):R?U(`Unsaved changes`):``}),(0,C.jsx)(`button`,{className:`button primary compact`,disabled:!le,onClick:()=>void ae(),children:U(v?`Saving…`:`Save`)})]})]}):!w&&(0,C.jsx)(`p`,{className:`skill-library-empty`,children:U(`Select a skill or create your own.`)}),N&&ue]})]}),(F||j)&&(0,C.jsxs)(`div`,{className:`skill-library-confirm`,role:`alert`,children:[(0,C.jsx)(`p`,{children:U(F?`Discard unsaved skill changes?`:`Delete this skill? Only its Markdown file is removed; supporting files stay in place.`)}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`button`,{"data-keep-editing":!0,className:`button secondary compact`,disabled:v,onClick:()=>{I(null),M(!1)},children:U(`Keep editing`)}),(0,C.jsx)(`button`,{className:`button danger compact`,disabled:v,onClick:()=>{if(F){let{proceed:e}=F;I(null),M(!1),e()}else ae(!0)},children:U(F?`Discard changes`:`Delete skill`)})]})]})]})}var jh=e=>e.charAt(0).toUpperCase()+e.slice(1),Mh=[`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`];function Nh({efforts:e,value:t,fallback:n,onChange:r,label:i=U(`Reasoning effort`),description:a}){let o=(0,S.useId)();if(!e.length)return null;let s=e.find(e=>e===t)||e.find(e=>e===n),c=s?e.indexOf(s):Math.floor((e.length-1)/2),l=e.length>1?c/(e.length-1):1,u=s?jh(s):U(`Model default`),d=s?Mh.includes(s)?s:`custom`:`default`,f=t=>`calc(15px + ${e.length>1?t/(e.length-1):1} * (100% - 30px))`,p={"--effort-position":f(c),"--effort-fill-width":`calc(30px + ${l} * (100% - 30px))`};return(0,C.jsxs)(`div`,{className:`agent-effort`,"data-effort":d,style:p,children:[(0,C.jsxs)(`div`,{className:`effort-head`,children:[(0,C.jsx)(`span`,{children:i}),(0,C.jsx)(`strong`,{className:`effort-value`,children:u},u)]}),a&&(0,C.jsx)(`p`,{className:`effort-description`,id:o,children:a}),(0,C.jsxs)(`div`,{className:`effort-track`+(s?``:` unset`),children:[(0,C.jsx)(`span`,{className:`effort-aura`,"aria-hidden":`true`}),(0,C.jsxs)(`span`,{className:`effort-fill`,"aria-hidden":`true`,children:[(0,C.jsx)(`span`,{className:`effort-flow`}),d===`ultra`&&(0,C.jsxs)(`span`,{className:`effort-stars`,children:[(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{}),(0,C.jsx)(`i`,{})]})]}),e.map((e,t)=>t!==c&&(0,C.jsx)(`span`,{"aria-hidden":`true`,className:`effort-stop`+(s&&t<c?` on`:``),style:{left:f(t)}},e)),(0,C.jsx)(`span`,{className:`effort-thumb`,"aria-hidden":`true`,children:d===`ultra`&&(0,C.jsx)(`svg`,{viewBox:`0 0 20 20`,width:`16`,height:`16`,fill:`currentColor`,children:(0,C.jsx)(`path`,{d:`M10 1.5 12.4 7.6 18.5 10 12.4 12.4 10 18.5 7.6 12.4 1.5 10 7.6 7.6Z`})})}),(0,C.jsx)(`input`,{type:`range`,min:0,max:e.length-1,step:1,value:c,"aria-label":i,"aria-valuetext":u,"aria-describedby":a?o:void 0,disabled:e.length<2,onChange:t=>r(e[Number(t.target.value)])})]}),(0,C.jsxs)(`div`,{className:`effort-scale`,children:[(0,C.jsx)(`span`,{children:jh(e[0])}),(0,C.jsx)(`button`,{type:`button`,onClick:()=>r(``),disabled:!t,children:U(`Model default`)}),(0,C.jsx)(`span`,{children:jh(e[e.length-1])})]})]})}function Ph({agents:e,agent:t,model:n,effort:r,onSelect:i,onEffort:a}){let o=e.map(e=>({...e,choices:[{id:``,name:U(`Model default`)},...e.runtime?.models||[],...e.value===t&&n&&!e.runtime?.models.some(e=>e.id===n)?[{id:n,name:n}]:[]]})),s=o.find(e=>e.value===t),c=s?.runtime?.models||[],l=c.find(e=>e.id===n)||c.find(e=>e.isDefault),u=`${s?.label||t} · ${s?.choices.find(e=>e.id===n)?.name||U(`Model default`)}`,d=JSON.stringify([t,n]);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`div`,{className:`settings-row settings-choice`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Default model`)}),(0,C.jsx)(`p`,{children:U(`Used for new tasks. Saved in this browser.`)})]}),(0,C.jsxs)(`label`,{className:`chip-select settings-model-select`,title:u,children:[(0,C.jsx)(`span`,{className:`chip-value`,children:u}),(0,C.jsx)(`select`,{"aria-label":U(`Default model`),value:d,onChange:e=>{for(let t of o){let n=t.choices.find(n=>JSON.stringify([t.value,n.id])===e.target.value);if(n){i(t.value,n.id);break}}},children:o.map(e=>(0,C.jsx)(`optgroup`,{label:e.label,children:e.choices.map(t=>(0,C.jsx)(`option`,{value:JSON.stringify([e.value,t.id]),children:t.name},t.id))},e.value))})]})]}),(0,C.jsx)(`div`,{className:`settings-row settings-effort`,children:l?.efforts.length?(0,C.jsx)(Nh,{efforts:l.efforts,value:r,fallback:l.defaultEffort,onChange:a,label:U(`Default reasoning effort`),description:U(`Available levels depend on the selected model.`)}):(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Default reasoning effort`)}),(0,C.jsx)(`p`,{children:U(`This model uses its own reasoning settings.`)})]})})]})}function Fh({api:e,projects:t,ago:n,controls:r}){let[i,a]=(0,S.useState)(null),[o,s]=(0,S.useState)(``),[c,l]=(0,S.useState)(``),[u,d]=(0,S.useState)({}),[f,p]=(0,S.useState)(``),[m,h]=(0,S.useState)(``),[g,_]=(0,S.useState)([]);(0,S.useEffect)(()=>{v(`load`,()=>e(`/people`))},[]),(0,S.useImperativeHandle)(r,()=>({isBusy:()=>!!(c&&c!==`load`)}));async function v(e,t){l(e),s(``);try{let e=await t();e&&a(e)}catch(e){s(e instanceof Error?e.message:String(e))}finally{l(``)}}let y=()=>v(`invite`,async()=>{let t=await e(`/people`,{name:m.trim(),projects:g});return d(e=>({...e,[t.id]:t.link})),h(``),_([]),e(`/people`)}),b=t=>v(`link:`+t.id,async()=>{let{link:n}=await e(`/people/${t.id}/invite`,{});d(e=>({...e,[t.id]:n}))}),x=(t,n,r)=>{let i=r?[...t.projects,n]:t.projects.filter(e=>e!==n);return a(e=>e&&{...e,people:e.people.map(e=>e.id===t.id?{...e,projects:i}:e)}),v(`share:`+t.id,()=>e(`/people/${t.id}/share`,{projects:i}).catch(async t=>{throw a(await e(`/people`)),t}))},w=(t,n)=>v(`device:`+n.id,()=>e(`/people/${t.id}/devices/${n.id}/remove`,{})),E=t=>v(`remove:`+t.id,()=>e(`/people/${t.id}/remove`,{})),D=t=>v(`sign-out:`+t.id,()=>e(`/people/${t.id}/sign-out`,{})),O=(e,n,r,i)=>(0,C.jsxs)(`fieldset`,{className:`people-papers`,disabled:r,children:[(0,C.jsx)(`legend`,{children:i}),t.map(t=>(0,C.jsxs)(`label`,{className:`checkbox`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:e.includes(t.id),onChange:e=>n(t.id,e.target.checked)}),t.name]},t.id))]});return(0,C.jsxs)(`div`,{className:`people-settings settings-page`,children:[(0,C.jsx)(`p`,{className:`settings-intro`,children:U(`Share your papers and manage the people you work with.`)}),(0,C.jsxs)(`aside`,{className:`people-warning`,"aria-labelledby":`people-warning-title`,children:[(0,C.jsx)(T,{name:`alert`,size:20}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{id:`people-warning-title`,children:U(`Sharing is not sandboxed`)}),(0,C.jsx)(`p`,{children:U(`Invited people can access all files readable by Papilot, including credentials and unshared papers.`)}),(0,C.jsx)(`p`,{children:U(`Run Papilot and its agents in an isolated container such as Docker to limit access; mounted files remain accessible.`)}),(0,C.jsxs)(`details`,{className:`people-access-details`,children:[(0,C.jsxs)(`summary`,{children:[U(`What can invited people do?`),(0,C.jsx)(T,{name:`chevronDown`,size:13})]}),(0,C.jsx)(`p`,{children:U(`People you invite sign in with a passkey at the public address and can do everything you can in the papers you share with them, including approving the commands agents run on this host and pushing with its Git credentials.`)})]})]})]}),i&&!i.origin&&(0,C.jsxs)(`section`,{className:`people-setup settings-card settings-card-body`,"aria-labelledby":`people-setup-title`,children:[(0,C.jsxs)(`div`,{className:`people-setup-heading`,children:[(0,C.jsx)(`span`,{className:`people-setup-icon`,children:(0,C.jsx)(T,{name:`people`,size:23})}),(0,C.jsx)(`span`,{className:`people-badge`,children:U(`Setup required`)})]}),(0,C.jsx)(`h3`,{id:`people-setup-title`,children:U(`Bring your collaborators in`)}),(0,C.jsx)(`p`,{children:U(`Connect a public HTTPS address to invite people to your papers. They can sign in securely with a passkey.`)}),(0,C.jsxs)(`a`,{className:`button secondary`,href:`${Pi.repository}/blob/main/docs/guide.md#collaborators`,target:`_blank`,rel:`noopener noreferrer`,children:[U(`Set up sharing`),(0,C.jsx)(T,{name:`external`,size:14}),(0,C.jsx)(`span`,{className:`sr-only`,children:U(`Opens in a new tab`)})]})]}),i?.origin&&(0,C.jsxs)(`form`,{className:`people-invite settings-card settings-card-body`,onSubmit:e=>{e.preventDefault(),m.trim()&&y()},children:[(0,C.jsxs)(`div`,{className:`people-invite-heading`,children:[(0,C.jsx)(T,{name:`people`,size:18}),(0,C.jsx)(`h3`,{children:U(`Invite someone`)})]}),(0,C.jsx)(`p`,{className:`people-invite-description`,children:U(`Choose the papers to share, then send a personal invite link.`)}),(0,C.jsxs)(`label`,{children:[(0,C.jsx)(`span`,{children:U(`Name`)}),(0,C.jsx)(`input`,{"aria-label":U(`Invite someone`),value:m,maxLength:80,onChange:e=>h(e.target.value),placeholder:U(`Their name, as others will see it`),autoComplete:`off`})]}),O(g,(e,t)=>_(n=>t?[...n,e]:n.filter(t=>t!==e)),c===`invite`,U(`Papers they can open`)),(0,C.jsx)(`div`,{className:`button-row`,children:(0,C.jsx)(`button`,{className:`button primary`,disabled:!m.trim()||!!c,children:U(c===`invite`?`Creating…`:`Create invite link`)})})]}),o&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:o}),!i&&c===`load`&&(0,C.jsx)(`p`,{className:`muted`,role:`status`,children:U(`Loading people…`)}),i&&(0,C.jsxs)(`section`,{className:`people-members`,"aria-labelledby":`people-members-title`,children:[(0,C.jsxs)(`div`,{className:`people-section-heading`,children:[(0,C.jsx)(`h3`,{id:`people-members-title`,children:U(`Members`)}),(0,C.jsx)(`span`,{className:`people-count`,children:i.people.length})]}),(0,C.jsx)(`ul`,{className:`people-list settings-card`,children:i.people.map(e=>{let t=e.role===`owner`,r=e.devices.filter(e=>e.kind===`session`);return(0,C.jsxs)(`li`,{className:`person`,children:[(0,C.jsxs)(`div`,{className:`person-head`,children:[(0,C.jsx)(`span`,{className:`person-avatar`,"aria-hidden":`true`,children:Array.from(e.name.trim())[0]?.toLocaleUpperCase()||`?`}),(0,C.jsxs)(`div`,{className:`person-identity`,children:[(0,C.jsx)(`strong`,{children:t?U(`{name} (you)`,{name:e.name}):e.name}),(0,C.jsx)(`span`,{children:t?U(`Access to all papers`):e.joined?e.lastSeenAt?U(`Last active {time}`,{time:n(e.lastSeenAt)}):U(`Joined`):U(`Invited, not joined yet`)})]}),t&&(0,C.jsx)(`span`,{className:`people-badge`,children:U(`Owner`)})]}),!t&&O(e.projects,(t,n)=>void x(e,t,n),c===`share:`+e.id,U(`Papers {name} can open`,{name:e.name})),u[e.id]&&(0,C.jsxs)(`div`,{className:`invite-link`,children:[(0,C.jsx)(`input`,{readOnly:!0,"aria-label":U(`Invite link for {name}`,{name:e.name}),value:u[e.id],onFocus:e=>e.currentTarget.select()}),(0,C.jsxs)(`button`,{type:`button`,className:`button secondary compact`,onClick:()=>void navigator.clipboard?.writeText(u[e.id]),children:[(0,C.jsx)(T,{name:`copy`,size:14}),U(`Copy`)]}),(0,C.jsx)(`small`,{className:`muted`,children:t?U(`Open it on the device you want to sign in from. It works once, within 15 minutes.`):U(`Send it to {name} yourself. It works once, within 7 days.`,{name:e.name})})]}),e.devices.length>0&&(0,C.jsx)(`ul`,{className:`device-list`,children:e.devices.map(t=>(0,C.jsxs)(`li`,{children:[(0,C.jsx)(T,{name:t.kind===`passkey`?`key`:`monitor`,size:14}),(0,C.jsx)(`span`,{children:t.kind===`passkey`?U(`Passkey · {label}`,{label:t.label}):U(`Signed in · {label}`,{label:t.label})}),(0,C.jsx)(`span`,{className:`muted`,children:t.lastUsedAt?U(`used {time}`,{time:n(t.lastUsedAt)}):U(`added {time}`,{time:n(t.createdAt)})}),(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,disabled:!!c,"aria-label":U(`Remove {device}`,{device:t.label}),onClick:()=>void w(e,t),children:U(`Remove`)})]},t.id))}),i.origin&&(0,C.jsxs)(`div`,{className:`person-actions`,children:[(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,disabled:!!c,onClick:()=>void b(e),children:t?U(`Sign in from anywhere`):e.joined?U(`Invite link for a new device`):U(`New invite link`)}),r.length>0&&(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,disabled:!!c,onClick:()=>void D(e),children:U(`Sign out everywhere`)}),!t&&(f===e.id?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`button`,{type:`button`,className:`button danger compact`,disabled:!!c,onClick:()=>{p(``),E(e)},children:U(`Remove {name}`,{name:e.name})}),(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,onClick:()=>p(``),children:U(`Cancel`)})]}):(0,C.jsx)(`button`,{type:`button`,className:`button secondary compact`,disabled:!!c,onClick:()=>p(e.id),children:U(`Remove…`)}))]})]},e.id)})})]})]})}var Ih=`latex-review:references`;function Lh({theme:e,onTheme:t,resolved:n,appearance:r,onAppearance:i,onClose:a,people:o,onSignOut:s,accountName:c,diagnostics:l,skills:u,updates:d,modelDefaults:f,initialPage:p=`general`}){let m=(0,S.useRef)(null),h=(0,S.useRef)(null),[g,_]=(0,S.useState)(!1),v=(0,S.useRef)(null),{choice:y}=Ce(),b=$n(),x=sr(),[w,E]=(0,S.useState)(p),[k,A]=(0,S.useState)(()=>p===`general`&&window.matchMedia(`(max-width: 760px)`).matches),[j,M]=(0,S.useState)(``),[N,P]=(0,S.useState)(()=>D.getItem(Ih)!==`off`);(0,S.useEffect)(()=>{let e=document.activeElement,t=m.current;return t.showModal(),()=>{t.close(),e?.isConnected&&e.getClientRects().length&&e.focus()}},[]),(0,S.useEffect)(()=>{let e=m.current;e.querySelector(`.settings-content`).scrollTop=0,(k?e.querySelector(`.settings-category[aria-current="page"]`)||e.querySelector(`.settings-search input`):e.querySelector(`#settings-title`))?.focus()},[w,k]);function F(e){h.current?.isBusy()||(w===`skills`?v.current?.navigate(e):e())}function I(e){let t=()=>{e===`people`&&_(!0),E(e),A(!1)};e===w?t():F(t)}function L(){F(()=>{E(`general`),A(!0)})}let R=O.find(e=>e.id===he()).name,ee=()=>{h.current?.isBusy()||(w===`skills`?v.current?.cancel():F(a))},z=[{label:U(`Personal`),entries:[{page:`general`,label:U(`General`),icon:`settings`,keywords:`${U(`Language`)} ${U(`Default model`)} ${U(`Default reasoning effort`)}`},{page:`appearance`,label:U(`Appearance`),icon:`sun`,keywords:`${U(`Light`)} ${U(`Dark`)} ${U(`System`)} ${U(`Theme`)} ${U(`Accent`)} ${U(`Background`)} ${U(`Foreground`)}`},{page:`notifications`,label:U(`Notifications`),icon:`bell`},{page:`review`,label:U(`Review preferences`),icon:`diff`,keywords:`${U(`Open reviews on`)} ${U(`Check references online`)} ${U(`Expand indirect changes`)}`},{page:`shortcuts`,label:U(`Keyboard shortcuts`),icon:`keyboard`}]},{label:U(`Workspace`),entries:[...u?[{page:`skills`,label:U(`Skills`),icon:`spark`}]:[],...o?[{page:`people`,label:U(`Sharing`),icon:`people`}]:[]]},{label:U(`Runtime`),entries:l?[{page:`agents`,label:U(`Agents`),icon:`terminal`,keywords:`${U(`Agent configuration`)} ${U(`Available models`)} ${U(`Usage & limits`)}`},{page:`latex`,label:`LaTeX`,icon:`paper`,keywords:`TeX Live MacTeX BasicTeX MiKTeX`}]:[]},{label:U(`Application`),entries:[...d?[{page:`updates`,label:U(`Updates`),icon:`refresh`}]:[],{page:`about`,label:U(`About Papilot`),icon:`info`,keywords:U(`Third-party licenses`)}]}],B=w===`licenses`?U(`Third-party licenses`):z.flatMap(e=>e.entries).find(e=>e.page===w).label,te=j.trim().toLocaleLowerCase(),ne=z.map(e=>({...e,entries:e.entries.filter(t=>`${e.label} ${t.label} ${t.keywords||``}`.toLocaleLowerCase().includes(te))})).filter(e=>e.entries.length);return(0,C.jsx)(`dialog`,{ref:m,className:`modal-backdrop`,"aria-label":w===`general`?U(`Settings`):B,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),ee()},onClick:e=>{e.target===e.currentTarget&&ee()},children:(0,C.jsxs)(`section`,{className:`modal settings-dialog`+(k?` settings-browse`:``),children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),onClick:ee,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsxs)(`aside`,{className:`settings-sidebar`,children:[(0,C.jsx)(`h2`,{className:`settings-sidebar-title`,children:U(`Settings`)}),(0,C.jsxs)(`label`,{className:`settings-search`,children:[(0,C.jsx)(T,{name:`search`,size:17}),(0,C.jsx)(`input`,{type:`search`,"aria-label":U(`Search settings`),placeholder:U(`Search settings`),value:j,onChange:e=>M(e.target.value)})]}),(0,C.jsxs)(`nav`,{className:`settings-categories`,"aria-label":U(`Settings categories`),children:[ne.map(e=>(0,C.jsxs)(`section`,{className:`settings-category-group`,children:[(0,C.jsx)(`h3`,{children:e.label}),e.entries.map(e=>(0,C.jsxs)(`button`,{type:`button`,className:`settings-category`,"data-settings-page":e.page,"aria-current":e.page===w||w===`licenses`&&e.page===`about`?`page`:void 0,onClick:()=>I(e.page),children:[e.page===`about`?(0,C.jsx)(`img`,{src:kr,width:`18`,height:`18`,alt:``}):e.page===`latex`?(0,C.jsx)(ai,{name:e.page,size:18}):(0,C.jsx)(T,{name:e.icon,size:18}),(0,C.jsx)(`span`,{children:e.label})]},e.label))]},e.label)),!ne.length&&(0,C.jsx)(`p`,{className:`settings-search-empty`,children:U(`No matching settings`)})]}),(0,C.jsxs)(`div`,{className:`settings-sidebar-bottom`,children:[s&&(0,C.jsxs)(`button`,{type:`button`,className:`settings-category settings-account`,onClick:()=>F(s),children:[(0,C.jsx)(T,{name:`signOut`,size:18}),(0,C.jsxs)(`span`,{children:[U(`Sign out`),c&&(0,C.jsx)(`small`,{children:c})]})]}),(0,C.jsxs)(`footer`,{className:`settings-footer`,children:[(0,C.jsxs)(`span`,{children:[`Papilot · v`,Mr(Pi.version)]}),(0,C.jsx)(`a`,{href:Pi.repository,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`GitHub · ${U(`Opens in a new tab`)}`,children:(0,C.jsx)(T,{name:`github`,size:16})})]})]})]}),(0,C.jsxs)(`div`,{className:`settings-content settings-content-${w}`,children:[(0,C.jsxs)(`header`,{className:`settings-content-header`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`settings-back settings-mobile-back`,onClick:L,children:[(0,C.jsx)(T,{name:`chevronLeft`,size:14}),U(`Settings`)]}),w===`licenses`&&(0,C.jsxs)(`button`,{type:`button`,className:`settings-back`,onClick:()=>I(`about`),children:[(0,C.jsx)(T,{name:`chevronLeft`,size:14}),U(`About Papilot`)]}),(0,C.jsxs)(`h2`,{id:`settings-title`,tabIndex:-1,children:[w===`latex`&&(0,C.jsx)(ai,{name:w,size:30}),B]})]}),w===`general`&&(0,C.jsxs)(`section`,{className:`settings-card`,children:[(0,C.jsxs)(`div`,{className:`settings-row settings-choice`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Language`)}),(0,C.jsx)(`p`,{children:U(`Language for the Papilot interface.`)})]}),(0,C.jsx)(wr,{label:U(`Language`),value:y,onChange:e=>be(e),options:[{value:`system`,label:U(`Browser default ({language})`,{language:R})},...O.map(e=>({value:e.id,label:e.name}))]})]}),(0,C.jsx)(Ph,{...f})]}),w===`appearance`&&(0,C.jsx)(Ei,{theme:e,onTheme:t,resolved:n,appearance:r,onAppearance:i}),w===`review`&&(0,C.jsxs)(`section`,{className:`settings-card`,children:[(0,C.jsxs)(`div`,{className:`settings-row settings-choice`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`span`,{className:`settings-name`,children:U(`Open reviews on`)}),(0,C.jsx)(`p`,{children:U(`Changes shows only the changed sections and opens fastest. PDF shows each change in place in the whole paper and takes longer for long papers. The switch in a review changes only that review.`)})]}),(0,C.jsx)(Kt,{labeled:!0,label:U(`Open reviews on`),changesTitle:U(`Changes`),mode:x===`paper`?`pdf`:`changes`,onMode:e=>or(e===`pdf`?`paper`:`changes`)})]}),(0,C.jsxs)(`div`,{className:`settings-row settings-toggle`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`label`,{className:`settings-name`,htmlFor:`settings-references`,children:U(`Check references online`)}),(0,C.jsx)(`p`,{id:`settings-references-detail`,children:U(`When a change adds or edits a bibliography entry, look up its title, authors, year and DOI in Crossref, DBLP and arXiv. Nothing else from your paper is sent.`)})]}),(0,C.jsx)(`input`,{id:`settings-references`,type:`checkbox`,role:`switch`,className:`switch`,"aria-describedby":`settings-references-detail`,checked:N,onChange:e=>{P(e.target.checked),D.setItem(Ih,e.target.checked?`on`:`off`)}})]}),(0,C.jsxs)(`div`,{className:`settings-row settings-toggle`,children:[(0,C.jsxs)(`div`,{className:`settings-text`,children:[(0,C.jsx)(`label`,{className:`settings-name`,htmlFor:`settings-effects`,children:U(`Expand indirect changes`)}),(0,C.jsx)(`p`,{id:`settings-effects-detail`,children:U(`Expand changes elsewhere, such as contents and reference numbering. Off by default; edits with no visible change at their source, such as macro definitions, still show their effects.`)})]}),(0,C.jsx)(`input`,{id:`settings-effects`,type:`checkbox`,role:`switch`,className:`switch`,"aria-describedby":`settings-effects-detail`,checked:b,onChange:e=>Qn(e.target.checked)})]})]}),w===`notifications`&&(0,C.jsx)(Ci,{}),w===`shortcuts`&&(0,C.jsx)(Ni,{}),w===`about`&&(0,C.jsx)(Ii,{onLicenses:()=>I(`licenses`)}),w===`licenses`&&(0,C.jsx)(Li,{}),w===`agents`&&l&&(0,C.jsx)(q,{...l}),w===`latex`&&l&&(0,C.jsx)(Qi,{online:l.online,load:l.latex}),w===`updates`&&d&&(0,C.jsx)(Ir,{api:d}),g&&o&&(0,C.jsx)(`div`,{hidden:w!==`people`,children:(0,C.jsx)(Fh,{...o,controls:h})}),w===`skills`&&u&&(0,C.jsx)(Ah,{...u,controls:v,onClose:a})]})]})})}function Rh({branch:e,files:t,staged:n,remote:r,agent:i,generate:a,commit:o,onClose:s}){let c=(0,S.useRef)(null),[l,u]=(0,S.useState)(``),[d,f]=(0,S.useState)(``),[p,m]=(0,S.useState)(``),h=(0,S.useRef)(!1);async function g(e){f(`writing`),m(``);try{let t=await a(e);h.current||u(t)}catch(e){m(e instanceof Error?e.message:String(e))}finally{f(e=>e===`writing`?``:e)}}(0,S.useEffect)(()=>{let e=document.activeElement,t=c.current;return t.showModal(),t.querySelector(`textarea`)?.focus(),g(!1),()=>{t.close(),e?.isConnected&&e.getClientRects().length&&e.focus()}},[]);async function _(e){if(!d&&l.trim()){f(e?`push`:`commit`),m(``);try{await o(l.trim(),e)}catch(e){m(e instanceof Error?e.message:String(e)),f(``)}}}let v=()=>{d!==`commit`&&d!==`push`&&s()};return(0,C.jsx)(`dialog`,{ref:c,className:`modal-backdrop`,"aria-labelledby":`commit-title`,onKeyDown:Sr,onCancel:e=>{e.preventDefault(),v()},onClick:e=>{e.target===e.currentTarget&&v()},children:(0,C.jsxs)(`section`,{className:`modal commit-dialog`,children:[(0,C.jsx)(`button`,{className:`modal-close icon-button`,"aria-label":U(`Close`),onClick:v,children:(0,C.jsx)(T,{name:`close`})}),(0,C.jsx)(`h2`,{id:`commit-title`,children:e?U(`Commit to {branch}`,{branch:e}):U(`Commit`)}),(0,C.jsx)(`p`,{className:`modal-description`,children:n?Te(t.length,`What is staged, in {n} file:`,`What is staged, in {n} files:`):Te(t.length,`What this task accepted, in {n} file:`,`What this task accepted, in {n} files:`)}),(0,C.jsx)(`ul`,{className:`commit-files`,children:t.map(e=>(0,C.jsx)(`li`,{children:(0,C.jsx)(`code`,{children:e})},e))}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),_(!1)},children:[(0,C.jsxs)(`div`,{className:`git-message-box`,children:[(0,C.jsx)(`textarea`,{"aria-label":U(`Commit message`),rows:3,value:l,readOnly:d===`commit`||d===`push`,placeholder:d===`writing`?U(`{agent} is writing a commit message…`,{agent:i}):U(`Commit message`),onChange:e=>{h.current=!0,u(e.target.value)},onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&!e.nativeEvent.isComposing&&(e.preventDefault(),_(!1))}}),(0,C.jsx)(`button`,{type:`button`,className:`icon-button git-generate`,"aria-label":U(`Generate commit message`),title:U(`Write a commit message for the chosen files with {agent}`,{agent:i}),disabled:!!d,onClick:()=>{h.current=!1,g(!0)},children:d===`writing`?(0,C.jsx)(`span`,{className:`spinner`}):(0,C.jsx)(T,{name:`spark`,size:15})})]}),p&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:p}),(0,C.jsxs)(`div`,{className:`button-row`,children:[(0,C.jsx)(`button`,{type:`button`,className:`button secondary`,disabled:d===`commit`||d===`push`,onClick:v,children:U(`Cancel`)}),r&&(0,C.jsx)(`button`,{type:`button`,className:`button secondary`,disabled:!!d||!l.trim(),onClick:()=>void _(!0),children:U(d===`push`?`Committing and pushing…`:`Commit and push`)}),(0,C.jsx)(`button`,{className:`button primary`,disabled:!!d||!l.trim(),children:U(d===`commit`?`Committing…`:`Commit`)})]})]})]})})}function zh({draft:e,branch:t,isolated:n,remote:r,apply:i,disabled:a,agent:o,generate:s,commit:c}){let l=(0,S.useSyncExternalStore)(e.subscribe,e.getSnapshot);(0,S.useEffect)(()=>{s&&e.write(s)},[e,!!s]);let u=(0,S.useRef)(null),d=()=>{let e=u.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,132)}px`)};if((0,S.useLayoutEffect)(d,[l.message,!!s,l.result]),(0,S.useEffect)(()=>{let e=u.current;if(!e)return;let t=e.clientWidth,n=new ResizeObserver(()=>{e.clientWidth!==t&&(t=e.clientWidth,d())});return n.observe(e),()=>n.disconnect()},[!!s,l.result]),l.result)return(0,C.jsx)(`span`,{className:`commit-state`,role:`status`,children:l.result});let f=a||!!l.busy,p=(t=!1)=>{f||e.submit(t?`push`:`commit`,e=>c(e,t))};return(0,C.jsxs)(`form`,{className:`task-commit`,"aria-label":U(`Save accepted changes`),onSubmit:e=>{e.preventDefault(),p()},children:[(0,C.jsxs)(`div`,{className:`task-commit-compose`,children:[s&&(0,C.jsx)(`textarea`,{ref:u,"aria-label":U(`Commit message`),"aria-busy":l.writing,rows:1,value:l.message,readOnly:f,placeholder:l.writing?U(`{agent} is writing a commit message…`,{agent:o}):U(`Commit message`),onChange:t=>e.edit(t.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&!e.nativeEvent.isComposing&&(e.preventDefault(),p())}}),(0,C.jsxs)(`div`,{className:`task-commit-toolbar`,children:[s&&(0,C.jsxs)(`span`,{className:`task-commit-branch`,title:t?U(`Commit to {branch}`,{branch:t}):U(`Commit`),children:[(0,C.jsx)(T,{name:`branch`,size:13}),(0,C.jsx)(`span`,{children:t||U(`Commit`)})]}),s&&(0,C.jsx)(`button`,{type:`button`,className:`task-commit-generate`,"aria-label":U(`Generate commit message`),"aria-busy":l.writing,title:U(`Write a commit message for the chosen files with {agent}`,{agent:o}),disabled:f||l.writing,onClick:()=>void e.write(s,!0),children:l.writing?(0,C.jsx)(`span`,{className:`task-commit-spinner`,"aria-hidden":`true`}):(0,C.jsx)(T,{name:`spark`,size:15})}),(0,C.jsxs)(`div`,{className:`task-commit-actions`,children:[i&&(0,C.jsx)(`button`,{type:`button`,className:`task-commit-alternative`,disabled:f,onClick:()=>void e.submit(`apply`,i),children:l.busy===`apply`?U(`Applying…`):U(`Apply to working directory`)}),s&&(0,C.jsxs)(C.Fragment,{children:[r&&(0,C.jsx)(`button`,{type:`button`,className:`task-commit-alternative`,disabled:f||!l.message.trim(),onClick:()=>p(!0),children:l.busy===`push`?U(`Committing and pushing…`):U(`Commit and push`)}),(0,C.jsxs)(`button`,{className:`task-commit-primary`,"aria-label":n?U(`Commit to task branch`):void 0,disabled:f||!l.message.trim(),children:[l.busy===`commit`?U(`Committing…`):U(`Commit`),(0,C.jsx)(T,{name:`arrowRight`,size:14})]})]})]})]})]}),l.writing&&(0,C.jsx)(`span`,{className:`task-commit-hint`,role:`status`,children:U(`{agent} is writing a commit message…`,{agent:o})}),l.error&&(0,C.jsx)(`p`,{className:`task-commit-error`,role:`alert`,children:l.error})]})}var Bh=class{state={message:``,writing:!1,busy:``,error:``,result:``};revision=0;generation=0;requested=!1;listeners=new Set;subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;update(e){this.state={...this.state,...e};for(let e of this.listeners)e()}edit(e){this.revision++,this.update({message:e})}async write(e,t=!1){if(this.state.busy||this.state.result||this.state.writing||!t&&this.requested)return;this.requested=!0;let n=++this.generation,r=this.revision;this.update({writing:!0,error:``});try{let i=await e(t);n===this.generation&&r===this.revision&&this.update({message:i})}catch(e){n===this.generation&&this.update({error:e instanceof Error?e.message:String(e)})}finally{n===this.generation&&this.update({writing:!1})}}async submit(e,t){if(!(this.state.busy||this.state.result||e!==`apply`&&!this.state.message.trim())){this.generation++,this.update({busy:e,writing:!1,error:``});try{this.update({result:await t(this.state.message.trim())})}catch(e){this.update({error:e instanceof Error?e.message:String(e)})}finally{this.update({busy:``})}}}};function Vh({status:e,waiting:t,onChat:n}){let r=[`queued`,`running`,`building`].includes(e);return(0,C.jsxs)(`div`,{className:`task-commit task-merge-status`,role:`status`,children:[(0,C.jsxs)(`span`,{children:[r?(0,C.jsx)(`i`,{className:`task-commit-spinner`,"aria-hidden":`true`}):(0,C.jsx)(T,{name:`spark`,size:14}),U(r?`AI is resolving conflicts…`:e===`waiting_input`?`AI needs your input`:t?`Conflict resolution paused`:`Review the merged result`)]}),!r&&t&&(0,C.jsx)(`div`,{className:`task-commit-actions`,children:(0,C.jsxs)(`button`,{type:`button`,onClick:n,children:[U(`Open chat`),(0,C.jsx)(T,{name:`arrowRight`,size:13})]})})]})}function Hh({draft:e,merging:t,keepCurrent:n,disabled:r,branch:i,canCommit:a,pending:o,preferred:s,apply:c,commit:l,generate:u}){let d=(0,S.useSyncExternalStore)(e.subscribe,e.getSnapshot),f=r||d.busy,p=s===`workspace`||!a;return(0,C.jsxs)(`div`,{className:`task-commit task-apply`,"aria-label":U(`Save accepted changes`),children:[(d.commitReview||n)&&(0,C.jsx)(`p`,{className:`task-commit-hint`,children:d.commitReview?U(`This passage includes earlier edits that have not been committed. You can commit the reviewed result together, or apply it without committing.`):U(`Keep the latest wording in overlapping passages and save the other accepted changes.`)}),d.commitReview&&(0,C.jsxs)(`details`,{className:`task-commit-preview`,children:[(0,C.jsx)(`summary`,{children:U(`View changes included in this commit`)}),(0,C.jsx)(`pre`,{children:d.commitReview.diff})]}),(0,C.jsxs)(`div`,{className:`task-commit-compose`,children:[(0,C.jsx)(`textarea`,{"aria-label":U(`Commit message`),rows:1,value:d.message,readOnly:f,maxLength:5e3,onChange:t=>e.edit(t.target.value)}),(0,C.jsxs)(`div`,{className:`task-commit-toolbar`,children:[(0,C.jsxs)(`span`,{className:`task-commit-branch`,title:i?U(`Commit to {branch}`,{branch:i}):U(`Open a branch to commit`),children:[(0,C.jsx)(T,{name:`branch`,size:13}),(0,C.jsx)(`span`,{children:i||U(`Open a branch to commit`)})]}),(0,C.jsx)(`button`,{type:`button`,className:`task-commit-generate`,"aria-label":U(`Generate commit message`),disabled:f||d.writing||!a,onClick:()=>void e.write(u),children:d.writing?(0,C.jsx)(`span`,{className:`task-commit-spinner`}):(0,C.jsx)(T,{name:`spark`,size:15})}),(0,C.jsxs)(`div`,{className:`task-commit-actions`,children:[(0,C.jsx)(`button`,{type:`button`,className:p?`task-commit-primary`:`task-commit-alternative`,"aria-label":d.busy&&d.action===`workspace`?U(`Applying…`):d.commitReview?U(`Apply without committing`):U(n?`Keep latest wording and apply`:t?`Confirm and apply`:`Apply to workspace`),title:U(`Apply without committing`),disabled:f||o===`commit`,onClick:()=>void e.apply(c),children:d.busy&&d.action===`workspace`?U(`Applying…`):U(n?`Keep latest wording and apply`:`Apply`)}),(0,C.jsxs)(`button`,{type:`button`,className:p?`task-commit-alternative`:`task-commit-primary`,"aria-label":d.busy&&d.action===`commit`?U(`Committing…`):d.commitReview?U(`Commit together`):U(n?`Keep latest wording and commit`:t?`Confirm and commit`:`Commit to manuscript`),title:i?U(`Commit to {branch}`,{branch:i}):U(`Open a branch to commit`),disabled:f||o===`workspace`||!a||!i||!d.message.trim(),onClick:()=>void e.apply(()=>l(d.message.trim(),d.commitReview?.token),`commit`),children:[d.busy&&d.action===`commit`?U(`Committing…`):d.commitReview?U(`Commit together`):U(n?`Keep latest wording and commit`:`Commit`),(0,C.jsx)(T,{name:`arrowRight`,size:14})]})]})]})]}),d.error&&(0,C.jsx)(`p`,{className:`task-commit-error`,role:`alert`,children:d.error})]})}var Uh=class{state;revision=0;generation=0;constructor(e=``){this.state={commitReview:null,busy:!1,action:`workspace`,error:``,message:e,writing:!1}}listeners=new Set;subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.state;update(e){this.state={...this.state,...e};for(let e of this.listeners)e()}edit(e){this.revision++,this.update({message:e})}async write(e){if(this.state.busy||this.state.writing)return;let t=++this.generation,n=this.revision;this.update({writing:!0,error:``});try{let r=await e();t===this.generation&&n===this.revision&&this.update({message:r})}catch(e){t===this.generation&&this.update({error:String(e instanceof Error?e.message:e)})}finally{t===this.generation&&this.update({writing:!1})}}async apply(e,t=`workspace`){if(!this.state.busy){this.generation++,this.update({busy:!0,action:t,writing:!1,error:``});try{let t=await e();this.update({commitReview:t?.commitReview??null})}catch(e){this.update({error:e instanceof Error?e.message:String(e)})}finally{this.update({busy:!1})}}}};function Wh(e){return e.reconciliation||e.status!==`reviewing`||e.review?.state!==`done`||e.review.round===null||e.review.counts.pending||e.review.files?.length!==0||e.pendingReview||e.delivery?.pending?null:e.deferred?e.delivery?.mode===`commit`?`committed`:e.delivery?.mode===`workspace`?`applied`:null:e.committed?e.committed.pushed?`pushed`:`committed`:null}function Gh({message:e,disabled:t,onArchive:n}){return(0,C.jsxs)(`div`,{className:`task-commit task-saved`,children:[(0,C.jsxs)(`span`,{className:`commit-state task-save-result`,children:[(0,C.jsx)(T,{name:`check`,size:14}),e]}),n&&(0,C.jsx)(`div`,{className:`task-commit-actions`,children:(0,C.jsxs)(`button`,{type:`button`,className:`task-commit-alternative`,"aria-label":U(`Archive task`),disabled:t,onClick:n,children:[(0,C.jsx)(T,{name:`archive`,size:14}),U(`Archive`)]})})]})}function Kh(e){let t=[],n=1;return{rows:e.map(e=>{let r=t.includes(e.hash);r||t.push(e.hash);let i=[...t],a=i.indexOf(e.hash),o=i.filter(t=>t!==e.hash);for(let[t,n]of e.parents.entries())o.includes(n)||o.splice(Math.min(a+t,o.length),0,n);let s=i.flatMap((t,n)=>t===e.hash?[]:[{from:n,to:o.indexOf(t),parent:!1}]);return s.push(...e.parents.map(e=>({from:a,to:o.indexOf(e),parent:!0}))),n=Math.max(n,i.length,o.length),t=o,{commit:e,lane:a,incoming:r,edges:s}}),lanes:n}}function qh({status:e}){let t=e.merging?.conflicts.length??e.files.filter(e=>e.status===`U`).length,n=e.files.filter(e=>e.staged&&e.status!==`U`).length,r=e.files.filter(e=>e.unstaged&&e.status!==`?`).length,i=e.files.filter(e=>e.status===`?`).length;return(0,C.jsxs)(`span`,{className:`git-status-counts`,children:[!e.files.length&&(0,C.jsxs)(`span`,{className:`is-clean`,children:[(0,C.jsx)(T,{name:`check`,size:12}),U(`clean`)]}),t>0&&(0,C.jsx)(`span`,{className:`has-conflicts`,children:U(`{n} conflicts`,{n:t})}),n>0&&(0,C.jsx)(`span`,{children:U(`{n} staged`,{n})}),r>0&&(0,C.jsx)(`span`,{children:U(`{n} unstaged`,{n:r})}),i>0&&(0,C.jsx)(`span`,{children:U(`{n} untracked`,{n:i})}),e.merging&&(0,C.jsx)(`span`,{className:`has-conflicts`,children:U(`Merge in progress`)})]})}var Jh=e=>e.branch||(e.bare?U(`Bare repository`):U(`detached HEAD`)),Yh=[`var(--accent)`,`var(--green)`,`var(--graph-purple)`,`var(--amber-text)`,`var(--graph-pink)`];function Xh(e,t){let n=`papilot:git-pane:`+e,[r,i]=(0,S.useState)(()=>{let e=D.getItem(n);return e===null?t:e===`open`});return[r,e=>i(t=>{let r=e??!t;return D.setItem(n,r?`open`:`closed`),r})]}function Zh({title:e,count:t,actions:n,open:r,onToggle:i,className:a=``,children:o}){return(0,C.jsxs)(`section`,{className:`git-pane `+a+(r?` open`:``),"aria-label":e,children:[(0,C.jsxs)(`div`,{className:`git-pane-header`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`git-pane-toggle`,"aria-expanded":r,onClick:i,children:[(0,C.jsx)(T,{name:r?`chevronDown`:`chevronRight`,size:12}),(0,C.jsx)(`h3`,{children:e}),t?(0,C.jsx)(`span`,{className:`git-count`,children:t}):null]}),n&&(0,C.jsx)(`div`,{className:`git-pane-actions`,children:n})]}),r&&o]})}function Qh({git:e,load:t,tasks:n,onOpenTask:r,taskStatus:i,actions:a}){let[o,s]=(0,S.useState)(null),[c,l]=(0,S.useState)(``),[u,d]=(0,S.useState)(!0),[f,p]=(0,S.useState)(0),[m,h]=(0,S.useState)(``),[g,_]=(0,S.useState)(``),[v,y]=Xh(`graph`,!0),[b,x]=Xh(`worktrees`,!1),w=JSON.stringify([e.head?.hash,e.branch,e.ahead,e.behind,e.files,e.merging]);(0,S.useEffect)(()=>{let e=new AbortController,n;async function r(){if(document.hidden)n=setTimeout(r,1e4);else{d(!0);try{let n=await t(e.signal);e.signal.aborted||(s(n),l(``))}catch(t){e.signal.aborted||l(t instanceof Error?t.message:String(t))}finally{e.signal.aborted||(d(!1),n=setTimeout(r,1e4))}}}return r(),()=>{e.abort(),clearTimeout(n)}},[t,w,f]);let E=o?.worktrees||[],D=new Map(n.map(e=>[e.id,e])),O=e=>e.taskId?D.get(e.taskId):void 0,k=e=>O(e)?.title||(e.current?U(`Manuscript`):Jh(e)),A=E.find(e=>e.path===m)||E.find(e=>e.current),j=Kh(o?.commits||[]),M=12+j.lanes*12,N=e=>{h(e.path),_(e.path),x(!0)};return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(Zh,{className:`git-history`,title:U(`Commit graph`),open:v,onToggle:()=>y(),actions:(0,C.jsxs)(C.Fragment,{children:[a,(0,C.jsx)(`button`,{type:`button`,className:`icon-button`,"aria-label":U(`Refresh worktrees and history`),title:U(`Refresh worktrees and history`),disabled:u,onClick:()=>p(e=>e+1),children:u?(0,C.jsx)(`span`,{className:`spinner`}):(0,C.jsx)(T,{name:`refresh`,size:14})})]}),children:[c&&(0,C.jsxs)(`p`,{className:`inline-error git-overview-note`,role:`alert`,children:[U(`Could not refresh the repository.`),o&&(0,C.jsxs)(C.Fragment,{children:[` `,U(`Showing the last update.`)]}),` `,(0,C.jsx)(`span`,{children:c}),(0,C.jsx)(`button`,{type:`button`,className:`button ghost compact`,onClick:()=>p(e=>e+1),children:U(`Retry`)})]}),!o&&!c&&(0,C.jsx)(`p`,{className:`git-overview-note`,role:`status`,children:U(`Reading worktrees and history…`)}),o&&!j.rows.length&&(0,C.jsx)(`p`,{className:`git-overview-note`,children:U(`No commits yet`)}),j.rows.length>0&&(0,C.jsxs)(C.Fragment,{children:[A?.head&&!j.rows.some(e=>e.commit.hash===A.head)&&(0,C.jsx)(`p`,{className:`git-overview-note`,children:U(`This worktree’s HEAD is outside the displayed history.`)}),(0,C.jsx)(`div`,{className:`git-graph-scroll`,children:(0,C.jsx)(`ol`,{className:`git-graph-list`,children:j.rows.map(t=>{let{commit:n,lane:r}=t,i=E.filter(e=>e.head===n.hash),a=A?.head===n.hash&&!A.current,o=n.hash===e.head?.hash||n.hash.startsWith(e.head?.hash||`\0`),s=e=>9+e*12,c=n.refs.filter(e=>!i.some(t=>O(t)&&t.branch===e)),l=i.filter(e=>O(e));return(0,C.jsxs)(`li`,{className:`git-graph-row`+(a?` highlighted`:``)+(o?` head`:``),"data-commit":n.hash,title:`${n.subject}\n${n.hash.slice(0,7)} · ${n.author} · ${new Date(n.date).toLocaleString(Se())}`,children:[(0,C.jsxs)(`div`,{className:`git-graph-rail`,style:{width:M},"aria-hidden":`true`,children:[(0,C.jsxs)(`svg`,{viewBox:`0 0 ${M} 100`,preserveAspectRatio:`none`,className:`git-graph-lines`,children:[t.edges.filter(e=>!e.parent).map((e,t)=>(0,C.jsx)(`path`,{d:`M ${s(e.from)} 0 L ${s(e.from)} 50 C ${s(e.from)} 75 ${s(e.to)} 75 ${s(e.to)} 100`,stroke:Yh[e.to%Yh.length]},`through`+t)),t.incoming&&(0,C.jsx)(`path`,{d:`M ${s(r)} 0 V 50`,stroke:Yh[r%Yh.length]}),t.edges.filter(e=>e.parent).map((e,t)=>(0,C.jsx)(`path`,{d:`M ${s(r)} 50 C ${s(r)} 75 ${s(e.to)} 75 ${s(e.to)} 100`,stroke:Yh[e.to%Yh.length]},`parent`+t))]}),(0,C.jsx)(`span`,{className:`git-graph-dot`+(n.parents.length>1?` merge`:``),style:{left:s(r),"--dot":Yh[r%Yh.length]}})]}),(0,C.jsxs)(`div`,{className:`git-graph-content`,children:[(0,C.jsx)(`span`,{className:`git-graph-subject`,children:n.subject}),(0,C.jsx)(`span`,{className:`git-graph-author`,children:n.author}),l.length>0||c.length>0||n.remotes?.length||n.tags?.length?(0,C.jsxs)(`span`,{className:`git-graph-refs`,children:[l.map(e=>(0,C.jsxs)(`button`,{type:`button`,className:`git-graph-ref worktree-ref`,title:`${k(e)}\n${Jh(e)}\n${e.path}`,onClick:()=>N(e),children:[(0,C.jsx)(T,{name:`chat`,size:10}),(0,C.jsx)(`span`,{children:k(e)})]},e.path)),c.map(t=>(0,C.jsxs)(`span`,{className:`git-graph-ref branch-ref`+(t===e.branch?` current-ref`:``),title:t,children:[(0,C.jsx)(T,{name:`branch`,size:10}),(0,C.jsx)(`span`,{children:t})]},t)),n.remotes?.map(e=>(0,C.jsxs)(`span`,{className:`git-graph-ref remote-ref`,title:e,children:[(0,C.jsx)(T,{name:`cloud`,size:10}),(0,C.jsx)(`span`,{children:e})]},e)),n.tags?.map(e=>(0,C.jsxs)(`span`,{className:`git-graph-ref tag-ref`,title:e,children:[(0,C.jsx)(T,{name:`bookmark`,size:10}),(0,C.jsx)(`span`,{children:e})]},e))]}):null]})]},n.hash)})})}),o?.truncated&&(0,C.jsx)(`p`,{className:`git-overview-note git-history-end`,children:U(`Showing the latest {n} commits. Older history is not shown.`,{n:j.rows.length})})]})]}),(0,C.jsxs)(Zh,{className:`git-worktree-pane`,title:U(`Worktrees`),count:o?E.length:void 0,open:b,onToggle:()=>x(),children:[(0,C.jsx)(`ul`,{className:`git-worktrees`,children:E.map(t=>{let n=t.current?e:t.status,a=g===t.path,o=O(t);return(0,C.jsxs)(`li`,{className:`git-worktree`+(t.path===A?.path?` selected`:``),"data-task-id":o?.id,children:[(0,C.jsxs)(`div`,{className:`git-worktree-row`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`git-worktree-button`,"aria-expanded":a,onClick:()=>{h(t.path),_(a?``:t.path)},children:[(0,C.jsxs)(`span`,{className:`git-worktree-title`,children:[(0,C.jsx)(T,{name:a?`chevronDown`:`chevronRight`,size:12}),(0,C.jsx)(`strong`,{title:k(t),children:k(t)}),o?.archivedAt&&(0,C.jsx)(`span`,{title:U(`Archived task`),"aria-label":U(`Archived task`),children:(0,C.jsx)(T,{name:`archive`,size:12})}),t.current&&(0,C.jsx)(`span`,{className:`git-current-badge`,children:U(`Current`)}),o&&i(o)]}),(0,C.jsxs)(`span`,{className:`git-worktree-meta`,children:[n?(0,C.jsx)(qh,{status:n}):(0,C.jsx)(`span`,{className:`git-worktree-unavailable`,children:t.bare?U(`Bare repository`):U(`Status unavailable`)}),n?.upstream&&(n.ahead>0||n.behind>0)&&(0,C.jsxs)(`span`,{className:`git-worktree-sync`,title:U(`Compared with {upstream}`,{upstream:n.upstream}),children:[`↑`,n.ahead,` ↓`,n.behind]}),t.locked!==void 0&&(0,C.jsx)(`span`,{className:`git-worktree-flag`,title:t.locked,children:U(`Locked`)}),t.prunable!==void 0&&(0,C.jsx)(`span`,{className:`git-worktree-flag`,title:t.prunable,children:U(`Missing worktree`)})]})]}),o&&(0,C.jsx)(`button`,{type:`button`,className:`icon-button git-open-task`,"aria-label":U(`Open task: {title}`,{title:o.title}),title:U(`Open task: {title}`,{title:o.title}),onClick:()=>r(o.id),children:(0,C.jsx)(T,{name:`arrowRight`,size:14})})]}),a&&(0,C.jsxs)(`div`,{className:`git-worktree-detail`,children:[(0,C.jsxs)(`p`,{className:`git-worktree-branch`,children:[(0,C.jsx)(T,{name:`branch`,size:12}),(0,C.jsx)(`code`,{children:Jh(t)}),t.head&&(0,C.jsx)(`code`,{children:t.head.slice(0,7)}),!o&&!t.current&&(0,C.jsx)(`span`,{children:U(`No linked task`)})]}),(0,C.jsx)(`p`,{className:`git-worktree-path`,children:t.path}),n?.head&&(0,C.jsx)(`p`,{children:n.head.subject}),n?.upstream?(0,C.jsxs)(`p`,{className:`git-worktree-tracking`,children:[(0,C.jsx)(`code`,{children:n.upstream}),(0,C.jsx)(`span`,{children:U(`{ahead} ahead · {behind} behind`,{ahead:n.ahead,behind:n.behind})})]}):n&&(0,C.jsx)(`p`,{children:U(`No upstream branch`)}),t.error&&(0,C.jsx)(`p`,{className:`inline-error`,children:U(`Could not read this worktree.`)}),t.locked&&(0,C.jsxs)(`p`,{children:[U(`Locked`),`: `,t.locked]}),t.prunable&&(0,C.jsxs)(`p`,{children:[U(`Missing worktree`),`: `,t.prunable]}),n&&n.files.length>0&&(0,C.jsx)(`ul`,{className:`git-worktree-files`,"aria-label":U(`Changed files in {branch}`,{branch:k(t)}),children:n.files.map(e=>(0,C.jsxs)(`li`,{children:[(0,C.jsx)(`code`,{className:e.status===`U`?`has-conflicts`:``,children:e.status===`?`?`?`:e.status}),(0,C.jsx)(`span`,{children:e.path}),e.staged&&(0,C.jsx)(`small`,{children:U(`Staged`)})]},e.path))})]})]},t.path)})}),!o&&(0,C.jsx)(`p`,{className:`git-overview-note`,role:`status`,children:U(`Reading worktrees and history…`)}),o&&E.length===1&&(0,C.jsx)(`p`,{className:`git-overview-note`,children:U(`No other worktrees in this repository.`)})]})]})}var $h=()=>D.getItem(`latex-review:references`)!==`off`,eg={doi:`doi.org`,crossref:`Crossref`,dblp:`DBLP`,arxiv:`arXiv`},tg=e=>({title:U(`Title`),author:U(`Authors`),year:U(`Year`),doi:`DOI`,arxiv:`arXiv`})[e]||e,ng=()=>xe().startsWith(`zh`)?``:` `,rg=e=>`${e.section?e.section+` · `:``}${e.file}:${e.line}`,ig=(e,t)=>{let n=e.fields.find(e=>e.name===t);return n?n.resolved??n.value:``},ag=e=>e.replace(/\\[a-zA-Z]+\s*/g,``).replace(/[{}$]/g,``).replace(/\s+/g,` `).trim();function og(e,t,n,r=!0){let[i,a]=(0,S.useState)(null),[o,s]=(0,S.useState)(``),[c,l]=(0,S.useState)(!1),u=(0,S.useRef)(!1),[d,f]=(0,S.useState)(0);return(0,S.useEffect)(()=>{a(null),s(``),l(!1)},[e]),(0,S.useEffect)(()=>{if(!r)return;let e=()=>f(e=>e+1);return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[r]),(0,S.useEffect)(()=>{if(!e||!r)return;let t=!0,i,o=async()=>{let r=u.current;u.current=!1;try{let u=await n(`/projects/${e}/references${c&&$h()?`?check=1${r?`&retry=1`:``}`:``}`);if(!t)return;a(u),s(``),c&&u.pending?i=setTimeout(()=>void o(),1500):c&&l(!1)}catch(e){t&&(s(e instanceof Error?e.message:String(e)),l(!1))}};return o(),()=>{t=!1,clearTimeout(i)}},[e,t,c,d,n,r]),{report:i,error:o,checking:c,check(e=!1){u.current=e,l(!0),f(e=>e+1)},async confirm(t,r){try{a(await n(`/projects/${e}/references/confirm`,{id:t,confirmed:r}))}catch(e){s(e instanceof Error?e.message:String(e))}}}}function sg(e){let t=[],n=new Map(e.entries.map(e=>[e.id,e]));for(let n of[...new Set(e.missing.map(e=>e.key))]){let r=e.missing.filter(e=>e.key===n).map(e=>`${e.file}:${e.line}`).join(`; `);t.push({id:`missing:${n}`,key:n,label:`\\cite{${n}}`,problems:[U(`No entry has this key.`)+ng()+r],soft:!1,fix:U(`{cite} ({places}) has no entry with this key.`,{cite:`\\cite{${n}}`,places:r})})}for(let r of e.entries){let i=e.checks[r.id],a=r.id in e.confirmed,o=[],s=[];r.error&&(o.push(U(`BibTeX cannot read it: {error}`,{error:r.error})),s.push(U(`BibTeX cannot read it ({error}).`,{error:r.error}))),e.duplicates.some(e=>e.includes(r.id))&&(o.push(U(`Another entry has the same key.`)),s.push(U(`another entry has the same key.`)));for(let t of e.similar.filter(e=>e.ids.includes(r.id))){let e=t.ids.filter(e=>e!==r.id).map(e=>n.get(e)?.key).join(`, `);o.push(t.by===`doi`?U(`Same DOI as {keys}.`,{keys:e}):U(`Same title as {keys}.`,{keys:e})),s.push(t.by===`doi`?U(`the same work as {keys} (same DOI).`,{keys:e}):U(`possibly the same work as {keys} (same title).`,{keys:e}))}if(i&&!a&&i.status===`mismatch`){let e=i.differences.filter(e=>!e.minor);o.push(e.map(e=>U(`{field}: {bib} here, {record} in {source}`,{field:tg(e.field),bib:e.bib,record:e.record||`—`,source:eg[i.record?.source||``]||``})).join(`; `)),s.push(U(`{differences} (record: {url}).`,{differences:e.map(e=>U(`{field} is {bib} but {source} has {record}`,{field:tg(e.field),bib:e.bib,record:e.record||U(`nothing`),source:eg[i.record?.source||``]||``})).join(`; `),url:i.record?.url||``}))}i&&!a&&i.status===`unverified`&&(o.push(U(`No record in Crossref, DBLP or arXiv matches it.`)),s.push(U(`no record in Crossref, DBLP or arXiv matches it.`)));let c=!o.length&&!e.all_cited&&!r.cited.length;c&&(o.push(U(`Not cited in the paper.`)),s.push(U(`it is not cited.`))),o.length&&t.push({id:r.id,key:r.key,label:r.key,entry:r,problems:o,soft:c,fix:U(`{key} ({place}): {problems}`,{key:r.key,place:`${r.file}:${r.lines[0]}`,problems:s.join(ng())})})}return t}function cg(e,t,n){let r=t.checks[e.id];return e.id in t.confirmed&&r?.status!==`verified`?`confirmed`:r?.status||(n?`checking`:`unchecked`)}var lg=e=>({verified:U(`Verified`),mismatch:U(`Differs`),unverified:U(`Not found`),failed:U(`Could not check`),skipped:U(`Nothing to check`),confirmed:U(`Checked by you`),checking:U(`Checking…`),unchecked:U(`Not checked`)})[e]||e,ug=e=>e?sg(e).filter(e=>!e.soft).length:0;function dg({data:e,onInvestigate:t,place:n}){let{report:r,error:i,checking:a}=e,[o,s]=(0,S.useState)(()=>n&&K(n+`:view`)||{filter:`problems`,open:``}),{filter:c,open:l}=o,u=e=>s(t=>{let r={...t,...e};return n&&Wt(n+`:view`,r),r}),d=e=>u({filter:e}),f=e=>u({open:e}),p=(0,S.useRef)(null);Gt(p,n?n+`:scroll`:null,!!r?.bibs.length);let[m,h]=(0,S.useState)({}),g=(0,S.useMemo)(()=>r?sg(r):[],[r]),_=e=>m[e.id]??!e.soft,v=(0,S.useCallback)(e=>h(t=>({...t,[e.id]:!(t[e.id]??!e.soft)})),[]);if(i&&!r)return(0,C.jsx)(`section`,{className:`references-panel`,children:(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:i})});if(!r)return(0,C.jsx)(`section`,{className:`references-panel`,children:(0,C.jsx)(`p`,{className:`references-empty`,children:U(`Reading the bibliography…`)})});if(!r.bibs.length)return(0,C.jsx)(`section`,{className:`references-panel`,children:(0,C.jsx)(`p`,{className:`references-empty`,children:U(`This paper names no .bib file with {bibliography} or {addbibresource}.`,{bibliography:`\\bibliography`,addbibresource:`\\addbibresource`})})});let y=e=>r.entries.filter(t=>cg(t,r,a)===e).length,b=r.entries.filter(e=>!e.error&&!r.checks[e.id]).length,x=g.filter(_),w=c===`problems`?null:r.entries;return(0,C.jsxs)(`div`,{ref:p,className:`references-panel`,"aria-busy":a,children:[(0,C.jsxs)(`div`,{className:`references-summary`,children:[(0,C.jsxs)(`p`,{children:[(0,C.jsx)(`strong`,{children:Te(r.entries.length,`{n} entry`,`{n} entries`)}),[[`verified`,U(`{n} verified`,{n:y(`verified`)})],[`confirmed`,U(`{n} checked by you`,{n:y(`confirmed`)})],[`mismatch`,U(`{n} differ`,{n:y(`mismatch`)})],[`unverified`,U(`{n} not found`,{n:y(`unverified`)})],[`failed`,U(`{n} could not be checked`,{n:y(`failed`)})]].map(([e,t])=>y(e)>0&&(0,C.jsx)(`span`,{className:`references-stat s-`+e,children:t},e)),r.absent.length>0&&(0,C.jsx)(`span`,{className:`references-stat s-mismatch`,children:U(`Missing: {files}`,{files:r.absent.join(`, `)})})]}),(0,C.jsx)(`div`,{className:`references-actions`,children:a?(0,C.jsxs)(`span`,{className:`references-progress`,role:`status`,children:[(0,C.jsx)(`span`,{className:`spinner`}),U(`Checking {n}…`,{n:r.pending||b})]}):(0,C.jsxs)(`button`,{type:`button`,className:`button secondary compact`,disabled:!$h(),title:$h()?U(`Look the entries up in Crossref, DBLP and arXiv. Only their titles, authors, years and identifiers are sent.`):U(`Online checks are off in Settings.`),onClick:()=>e.check(b===0),children:[(0,C.jsx)(T,{name:`refresh`,size:14}),b?b===r.entries.length?U(`Check online`):Te(b,`Check {n} more online`,`Check {n} more online`):U(`Check again`)]})}),!$h()&&(0,C.jsx)(`p`,{className:`references-note`,children:U(`Online checks are off in Settings, so only problems found in the files are shown.`)}),i&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:i})]}),(0,C.jsxs)(`div`,{className:`references-filter`,role:`tablist`,"aria-label":U(`Show`),children:[(0,C.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":c===`problems`,onClick:()=>d(`problems`),children:[U(`Problems`),(0,C.jsx)(`span`,{className:`count`,children:g.filter(e=>!e.soft).length})]}),(0,C.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":c===`all`,onClick:()=>d(`all`),children:[U(`All entries`),(0,C.jsx)(`span`,{className:`count`,children:r.entries.length})]})]}),c===`problems`&&(g.length?(0,C.jsx)(`ul`,{className:`references-list`,children:g.map(t=>(0,C.jsxs)(`li`,{className:`references-item`+(t.soft?` soft`:``),"data-open":l===t.id,"data-state":t.entry?cg(t.entry,r,a):`missing`,children:[(0,C.jsxs)(`div`,{className:`references-row`,children:[(0,C.jsx)(`input`,{type:`checkbox`,"aria-label":U(`Include {key} in the task`,{key:t.label}),checked:_(t),onChange:()=>v(t)}),(0,C.jsxs)(`button`,{type:`button`,className:`references-head`,"aria-expanded":t.entry?l===t.id:void 0,disabled:!t.entry,onClick:()=>f(l===t.id?``:t.id),children:[(0,C.jsx)(`code`,{children:t.label}),t.entry&&(0,C.jsx)(`span`,{className:`references-state s-`+cg(t.entry,r,a),children:lg(cg(t.entry,r,a))}),(0,C.jsx)(`span`,{className:`references-problems`,children:t.problems.join(ng())})]})]}),t.entry&&l===t.id&&(0,C.jsx)(fg,{entry:t.entry,check:r.checks[t.entry.id],confirmed:t.entry.id in r.confirmed,onConfirm:n=>void e.confirm(t.entry.id,n)})]},t.id))}):(0,C.jsxs)(`p`,{className:`references-empty`,children:[(0,C.jsx)(T,{name:`check`,size:15}),U(b?`No problems in the files. Check online to compare the entries with their records.`:`No problems found.`)]})),w&&(0,C.jsx)(`ul`,{className:`references-list`,children:w.map(t=>{let n=cg(t,r,a);return(0,C.jsxs)(`li`,{className:`references-item`,"data-open":l===t.id,children:[(0,C.jsxs)(`button`,{type:`button`,className:`references-head`,"aria-expanded":l===t.id,onClick:()=>f(l===t.id?``:t.id),children:[(0,C.jsx)(`code`,{children:t.key}),(0,C.jsx)(`span`,{className:`references-state s-`+n,children:lg(n)}),(0,C.jsx)(`span`,{className:`references-title`,children:ag(ig(t,`title`))||t.type}),(0,C.jsx)(`span`,{className:`references-meta`,children:[ag(ig(t,`author`)).split(/\s+and\s+/i)[0],ig(t,`year`)].filter(Boolean).join(` · `)})]}),l===t.id&&(0,C.jsx)(fg,{entry:t,check:r.checks[t.id],confirmed:t.id in r.confirmed,onConfirm:n=>void e.confirm(t.id,n)})]},t.id)})}),c===`problems`&&g.length>0&&(0,C.jsxs)(`div`,{className:`references-fix`,children:[(0,C.jsxs)(`button`,{type:`button`,className:`button primary compact`,disabled:!x.length,onClick:()=>t([U(`Find out what happened with these bibliography problems and report back. Do not edit any file. For each, check whether the work exists and what its published record says (authors, title, year, venue, DOI), find where the entry or citation came from in the Git history of the .bib and .tex files, and say what you would suggest. Mark which findings you confirmed in a source and which are guesses.`),...x.map(e=>`- `+e.fix)].join(`
257
- `)),children:[(0,C.jsx)(T,{name:`search`,size:14}),Te(x.length,`Ask an agent to look into {n} problem`,`Ask an agent to look into {n} problems`)]}),(0,C.jsx)(`span`,{children:U(`Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.`)})]})]})}function fg({entry:e,check:t,confirmed:n,onConfirm:r}){return(0,C.jsxs)(`div`,{className:`references-detail`,children:[(0,C.jsx)(`table`,{children:(0,C.jsx)(`tbody`,{children:e.fields.map(e=>(0,C.jsxs)(`tr`,{children:[(0,C.jsx)(`th`,{scope:`row`,children:e.name}),(0,C.jsxs)(`td`,{children:[e.value,e.resolved&&(0,C.jsxs)(`span`,{className:`references-resolved`,children:[` = `,e.resolved]})]})]},e.name))})}),(0,C.jsxs)(`p`,{className:`references-where`,children:[e.file,`:`,e.lines[0],`–`,e.lines[1],ng()||` · `,e.cited.length?Te(e.cited.length,`Cited {n} time: {places}`,`Cited {n} times: {places}`,{places:e.cited.map(rg).join(`; `)}):U(`Not cited in the paper.`)]}),t?.record&&(0,C.jsxs)(`p`,{className:`references-record`,children:[(0,C.jsxs)(`span`,{children:[t.status===`unverified`?U(`Closest record`):U(`Record`),` · `,eg[t.record.source]]}),(0,C.jsx)(`a`,{href:t.record.url,target:`_blank`,rel:`noopener noreferrer`,children:t.record.title}),[t.record.authors.join(`, `),t.record.venue,t.record.year,t.record.doi&&`doi:${t.record.doi}`].filter(Boolean).map((e,t)=>(0,C.jsxs)(`span`,{children:[` · `,e]},t))]}),t&&t.differences.length>0&&(0,C.jsx)(`dl`,{className:`references-differences`,children:t.differences.map((e,n)=>(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`dt`,{children:[tg(e.field),e.minor?` · ${U(`small`)}`:``]}),(0,C.jsxs)(`dd`,{children:[(0,C.jsx)(`span`,{children:e.bib}),(0,C.jsxs)(`span`,{children:[eg[t.record?.source||``]||U(`Record`),`: `,e.record||`—`]})]})]},n))}),t?.unavailable.length?(0,C.jsx)(`p`,{className:`references-note`,children:U(`{sources} could not be reached.`,{sources:t.unavailable.join(`, `)})}):null,!e.error&&(n?(0,C.jsxs)(`p`,{className:`references-confirmed`,children:[U(`You checked this entry yourself.`),` `,(0,C.jsx)(`button`,{type:`button`,className:`button ghost compact`,onClick:()=>r(!1),children:U(`Undo`)})]}):t?.status!==`verified`&&(0,C.jsxs)(`button`,{type:`button`,className:`button ghost compact`,onClick:()=>r(!0),children:[(0,C.jsx)(T,{name:`check`,size:14}),U(`I checked it myself`)]}))]})}function pg(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function mg(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function hg(){return gg.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential==`function`)}var gg={stubThis:e=>e};function _g(e){let{id:t}=e;return{...e,id:mg(t),transports:e.transports,type:e.type}}function vg(e){return e===`localhost`||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}var yg=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=r??n.name,this.code=t}};function bg({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new yg({message:`Registration ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`ConstraintError`){if(n.authenticatorSelection?.requireResidentKey===!0)return new yg({message:`Discoverable credentials were required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT`,cause:e});if(t.mediation===`conditional`&&n.authenticatorSelection?.userVerification===`required`)return new yg({message:`User verification was required during automatic registration but it could not be performed`,code:`ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE`,cause:e});if(n.authenticatorSelection?.userVerification===`required`)return new yg({message:`User verification was required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT`,cause:e})}else if(e.name===`InvalidStateError`)return new yg({message:`The authenticator was previously registered`,code:`ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED`,cause:e});else if(e.name===`NotAllowedError`)return new yg({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`NotSupportedError`)return n.pubKeyCredParams.filter(e=>e.type===`public-key`).length===0?new yg({message:`No entry in pubKeyCredParams was of type "public-key"`,code:`ERROR_MALFORMED_PUBKEYCREDPARAMS`,cause:e}):new yg({message:`No available authenticator supported any of the specified pubKeyCredParams algorithms`,code:`ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!vg(t))return new yg({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rp.id!==t)return new yg({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`TypeError`){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new yg({message:`User ID was not between 1 and 64 characters`,code:`ERROR_INVALID_USER_ID_LENGTH`,cause:e})}else if(e.name===`UnknownError`)return new yg({message:`The authenticator was unable to process the specified options, or could not create a new credential`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}var xg=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},Sg=[`cross-platform`,`platform`];function Cg(e){if(e&&!(Sg.indexOf(e)<0))return e}async function wg(e){!e.optionsJSON&&e.challenge&&(console.warn(`startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useAutoRegister:n=!1}=e;if(!hg())throw Error(`WebAuthn is not supported in this browser`);let r={...t,challenge:mg(t.challenge),user:{...t.user,id:mg(t.user.id)},excludeCredentials:t.excludeCredentials?.map(_g)},i={};n&&(i.mediation=`conditional`),i.publicKey=r,i.signal=xg.createNewAbortSignal();let a;try{a=await navigator.credentials.create(i)}catch(e){throw bg({error:e,options:i})}if(!a)throw Error(`Registration was not completed`);let{id:o,rawId:s,response:c,type:l}=a,u;typeof c.getTransports==`function`&&(u=c.getTransports());let d;if(typeof c.getPublicKeyAlgorithm==`function`)try{d=c.getPublicKeyAlgorithm()}catch(e){Tg(`getPublicKeyAlgorithm()`,e)}let f;if(typeof c.getPublicKey==`function`)try{let e=c.getPublicKey();e!==null&&(f=pg(e))}catch(e){Tg(`getPublicKey()`,e)}let p;if(typeof c.getAuthenticatorData==`function`)try{p=pg(c.getAuthenticatorData())}catch(e){Tg(`getAuthenticatorData()`,e)}return{id:o,rawId:pg(s),response:{attestationObject:pg(c.attestationObject),clientDataJSON:pg(c.clientDataJSON),transports:u,publicKeyAlgorithm:d,publicKey:f,authenticatorData:p},type:l,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Cg(a.authenticatorAttachment)}}function Tg(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`,t)}function Eg(){if(!hg())return Dg.stubThis(new Promise(e=>e(!1)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?Dg.stubThis(new Promise(e=>e(!1))):Dg.stubThis(e.isConditionalMediationAvailable())}var Dg={stubThis:e=>e};function Og({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new yg({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new yg({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!vg(t))return new yg({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new yg({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new yg({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function kg(e){!e.optionsJSON&&e.challenge&&(console.warn(`startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!hg())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(_g));let a={...t,challenge:mg(t.challenge),allowCredentials:i},o={};if(n){if(!await Eg())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=xg.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw Og({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=pg(u.userHandle)),{id:c,rawId:pg(l),response:{authenticatorData:pg(u.authenticatorData),clientDataJSON:pg(u.clientDataJSON),signature:pg(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Cg(s.authenticatorAttachment)}}var Ag=e=>e instanceof Error&&(e.name===`NotAllowedError`||e.name===`AbortError`),jg=e=>e instanceof Error?e.message:String(e);function Mg({api:e,onSignedIn:t}){let[n,r]=(0,S.useState)(!1),[i,a]=(0,S.useState)(``);async function o(){r(!0),a(``);try{await e(`/auth/verify`,{response:await kg({optionsJSON:await e(`/auth/options`,{})})}),t()}catch(e){a(Ag(e)?U(`Signing in was cancelled. Try again when you are ready.`):jg(e))}finally{r(!1)}}return(0,C.jsx)(`div`,{className:`home sign-in`,children:(0,C.jsxs)(`div`,{className:`home-inner`,children:[(0,C.jsx)(`img`,{className:`home-logo`,src:kr,alt:``}),(0,C.jsx)(`h1`,{children:U(`Sign in to Papilot`)}),hg()?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`home-copy`,children:U(`Use the passkey you created from your invite link.`)}),(0,C.jsxs)(`button`,{className:`button primary`,disabled:n,"aria-busy":n,onClick:()=>void o(),children:[(0,C.jsx)(T,{name:`key`,size:16}),U(n?`Waiting for your passkey…`:`Sign in with a passkey`)]})]}):(0,C.jsx)(`p`,{className:`home-copy`,children:U(`This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.`)}),i&&(0,C.jsx)(`p`,{className:`inline-error home-error`,role:`alert`,children:i}),(0,C.jsx)(`p`,{className:`home-copy muted sign-in-help`,children:U(`No passkey on this device? Ask the person who invited you for a new invite link.`)})]})})}function Ng({api:e,onDone:t}){let[n]=(0,S.useState)(()=>location.hash.slice(1)),[r,i]=(0,S.useState)(null),[a,o]=(0,S.useState)(!1),[s,c]=(0,S.useState)(``);(0,S.useEffect)(()=>{history.replaceState(null,``,`/invite`),n?e(`/auth/invite`,{token:n}).then(i,e=>c(jg(e))):c(U(`This invite link is incomplete. Copy the whole link and open it again.`))},[]);async function l(){o(!0),c(``);try{let r=await wg({optionsJSON:await e(`/auth/invite/options`,{token:n})});await e(`/auth/invite/verify`,{token:n,response:r}),history.replaceState(null,``,`/`),t()}catch(e){c(Ag(e)?U(`Creating the passkey was cancelled. The link still works; try again when you are ready.`):jg(e))}finally{o(!1)}}let u=r?.papers.join(U(`, `))||``;return(0,C.jsx)(`div`,{className:`home sign-in`,children:(0,C.jsxs)(`div`,{className:`home-inner`,children:[(0,C.jsx)(`img`,{className:`home-logo`,src:kr,alt:``}),(0,C.jsx)(`h1`,{children:r?.adding?U(`Add a passkey`):U(`Join Papilot`)}),r&&(0,C.jsx)(`p`,{className:`home-copy`,children:r.owner?U(`Create a passkey to sign in to your Papilot from anywhere.`):r.adding?U(`Create a passkey on this device to sign in as {name}.`,{name:r.name}):u?U(`{inviter} invited you to work on {papers}. You will appear as {name}.`,{inviter:r.inviter,papers:u,name:r.name}):U(`{inviter} invited you to Papilot. You will appear as {name}.`,{inviter:r.inviter,name:r.name})}),r&&(hg()?(0,C.jsxs)(`button`,{className:`button primary`,disabled:a,"aria-busy":a,onClick:()=>void l(),children:[(0,C.jsx)(T,{name:`key`,size:16}),U(a?`Waiting for your passkey…`:`Create a passkey`)]}):(0,C.jsx)(`p`,{className:`home-copy`,children:U(`This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.`)})),!r&&!s&&(0,C.jsx)(`p`,{className:`home-copy`,role:`status`,children:(0,C.jsx)(`span`,{className:`spinner`})}),s&&(0,C.jsx)(`p`,{className:`inline-error home-error`,role:`alert`,children:s}),r&&(0,C.jsx)(`p`,{className:`home-copy muted sign-in-help`,children:U(`A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.`)})]})})}var Pg=!1,Fg=new Set;function Ig(e){if(Pg!==e){Pg=e;for(let e of Fg)e()}}var Lg=()=>Pg;function Rg(){return(0,S.useSyncExternalStore)(e=>(Fg.add(e),()=>Fg.delete(e)),()=>Pg)}function zg(){At();try{for(let e of Object.keys(localStorage))(e.startsWith(`papilot:`)||e.startsWith(`latex-review:`))&&e!==`papilot:theme`&&e!==`papilot:appearance`&&e!==`papilot:language`&&D.removeItem(e)}catch{}}function Bg({model:e,effort:t,fast:n}){return(0,C.jsxs)(`span`,{className:`agent-model-label`,children:[(0,C.jsx)(`span`,{className:`agent-model-name`,children:e}),t&&(0,C.jsx)(`small`,{children:jh(t)}),n&&(0,C.jsx)(T,{name:`bolt`,size:13})]})}function Vg({name:e,runtime:t,reconnecting:n,onReconnect:r}){if(!t||t.connected&&t.authenticated)return null;let i=t.error||``,a=i.split(/:\s|\.\s/)[0],o=t.installed===!1?U(`{agent} was not found on this computer. Install or set it up, then select Reconnect.`,{agent:e}):i?a.length<=120?a:U(`{agent} is unavailable`,{agent:e}):U(`Connecting to {agent}…`,{agent:e});return(0,C.jsxs)(`div`,{className:`agent-connection`,children:[(0,C.jsxs)(`div`,{className:`agent-connection-message`,role:`status`,children:[(0,C.jsx)(T,{name:`alert`,size:15}),(0,C.jsx)(`span`,{children:o})]}),i&&i!==o&&(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:U(`Connection details`)}),(0,C.jsx)(`p`,{children:i})]}),(0,C.jsxs)(`button`,{type:`button`,disabled:n,onClick:r,children:[(0,C.jsx)(T,{name:`refresh`,size:12}),U(n?`Connecting…`:`Reconnect`)]})]})}var Hg=`papilot:recent-models`;function Ug(){try{let e=JSON.parse(D.getItem(Hg)||`[]`);return Array.isArray(e)?e.filter(e=>e&&typeof e.agent==`string`&&typeof e.model==`string`).slice(0,3):[]}catch{return[]}}function Wg(e,t){let n=[{agent:e,model:t},...Ug().filter(n=>n.agent!==e||n.model!==t)].slice(0,3);D.setItem(Hg,JSON.stringify(n))}function Gg(e){return e?.installed===!1?U(`Not found`):!e||!e.connected&&!e.error?U(`Connecting…`):e.connected?e.authenticated?``:U(`Sign-in required`):U(`Unavailable`)}function Kg({agents:e,agent:t,model:n,effort:r,fast:i,reconnecting:a,onReconnect:o,onSelect:s,onChange:c,disabled:l,description:u}){let d=(0,S.useId)(),f=(0,S.useRef)(null),p=(0,S.useRef)(null),m=(0,S.useRef)(null),h=(0,S.useRef)(null),[g,_]=(0,S.useState)(!1),[v,y]=(0,S.useState)(``),[b,x]=(0,S.useState)(``),[w,E]=(0,S.useState)(Ug),D=e.find(e=>e.value===t)||e[0],O=D?.runtime,k=O?.models||[],A=n?k.find(e=>e.id===n):k.find(e=>e.isDefault),j=D?.label||t,M=A?.name||n||j,N=r||A?.defaultEffort,P=t===`codex`?A?.fastMode:void 0,F=O&&(!O.connected||!O.authenticated),I=[j,M,N?jh(N):``,P&&i?U(`Fast`):``].filter((e,t,n)=>e&&n.indexOf(e)===t).join(` · `),L=e=>{let t=e.runtime?.models||[];return t.length?t.map(t=>({key:`${e.value}\n${t.id}`,agent:e,model:t.id,name:t.name,isDefault:t.isDefault,recent:!1})):[{key:`${e.value}\n`,agent:e,model:``,name:U(`Default model`),isDefault:!1,recent:!1}]},R=v.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),ee=e=>R.every(t=>`${e.agent.label} ${e.name} ${e.model}`.toLocaleLowerCase().includes(t)),z=e.map(e=>({option:e,items:L(e).filter(ee)})).filter(e=>e.items.length),B=R.length?[]:w.flatMap(t=>{let n=e.find(e=>e.value===t.agent),r=n&&L(n).find(e=>e.model===t.model);return r?[{...r,key:`recent\n${r.key}`,recent:!0}]:[]}),te=[...B,...z.flatMap(e=>e.items)],ne=e=>e.agent.value===t&&(e.model===n||!n&&(e.isDefault||e.model===``));function re(){let e=p.current,t=f.current.getBoundingClientRect();e.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-e.offsetWidth-8))}px`;let n=t.bottom+6,r=t.top-e.offsetHeight-6;e.style.top=`${Math.max(8,Math.min(n+e.offsetHeight>window.innerHeight-8&&r>=8?r:n,window.innerHeight-e.offsetHeight-8))}px`}(0,S.useLayoutEffect)(()=>{g&&re()},[g,t,n,A]),(0,S.useEffect)(()=>{if(!g)return;let e=()=>p.current?.hidePopover(),t=t=>{t.target instanceof Node&&t.target.contains(f.current)&&!p.current?.contains(t.target)&&e()},n=new ResizeObserver(()=>{p.current?.matches(`:popover-open`)&&re()});return p.current&&n.observe(p.current),window.addEventListener(`resize`,e),document.addEventListener(`scroll`,t,!0),()=>{n.disconnect(),window.removeEventListener(`resize`,e),document.removeEventListener(`scroll`,t,!0)}},[g]),(0,S.useEffect)(()=>{l&&p.current?.hidePopover()},[l]),(0,S.useEffect)(()=>{g&&b&&h.current?.querySelector(`[data-key="${CSS.escape(b)}"]`)?.scrollIntoView({block:`nearest`})},[b,g]);function ie(){y(``),E(Ug()),p.current?.showPopover(),re(),_(!0);let e=te.find(ne);x(e?.key||te[0]?.key||``),requestAnimationFrame(()=>h.current?.querySelector(`[aria-selected="true"]`)?.scrollIntoView({block:`nearest`})),window.matchMedia(`(pointer: coarse)`).matches||m.current?.focus()}function ae(e){s(e.agent.value,e.model),Wg(e.agent.value,e.model),x(e.key)}function oe(e){if(!te.length)return;let t=te.findIndex(e=>e.key===b);x(te[(t+e+te.length)%te.length].key)}let se=e=>{let t=ne(e),n=Gg(e.agent.runtime);return(0,C.jsxs)(`div`,{id:`${d}-${e.key.replace(/\W/g,`_`)}`,"data-key":e.key,role:`option`,"aria-selected":t,"aria-label":`${e.name} · ${e.agent.label}`,className:`model-option`+(e.key===b?` active`:``),onPointerMove:()=>x(e.key),onClick:()=>ae(e),children:[e.recent&&(0,C.jsx)(ai,{name:e.agent.value,size:15}),(0,C.jsx)(`span`,{className:`model-option-name`,children:e.name}),e.isDefault&&!e.recent&&(0,C.jsx)(`small`,{className:`model-option-tag`,children:U(`Default`)}),(e.recent||n)&&(0,C.jsx)(`small`,{className:`model-option-agent`+(n?` warn`:``),children:e.recent?e.agent.label:n}),t&&(0,C.jsx)(T,{name:`check`,size:14})]},e.key)},V=te.find(e=>e.key===b);return(0,C.jsxs)(`span`,{className:`agent-picker`,children:[(0,C.jsxs)(`button`,{ref:f,type:`button`,className:`agent-picker-trigger`,"aria-label":U(`Agent settings`),title:I+(F?` · ${U(`{agent} is unavailable`,{agent:j})}`:``),"aria-haspopup":`dialog`,"aria-expanded":g,"aria-controls":d,disabled:l,onClick:()=>p.current?.matches(`:popover-open`)?p.current.hidePopover():ie(),onKeyDown:e=>{e.key===`ArrowDown`&&(e.preventDefault(),ie())},children:[(0,C.jsx)(ai,{name:t,size:15}),M!==j&&(0,C.jsx)(`span`,{className:`agent-picker-agent`,children:j}),(0,C.jsx)(Bg,{model:M,effort:N,fast:!!(P&&i)}),(0,C.jsx)(T,{name:`chevronDown`,size:13}),F&&(0,C.jsx)(`span`,{className:`agent-status-mark`,children:(0,C.jsx)(T,{name:`alert`,size:13})})]}),(0,C.jsxs)(`div`,{ref:p,id:d,popover:`auto`,role:`dialog`,"aria-label":U(`Agent settings`),className:`agent-picker-panel`,onToggle:e=>{let t=e.nativeEvent.newState===`open`;_(t),t||document.activeElement&&document.activeElement!==document.body&&!p.current?.contains(document.activeElement)||f.current?.focus()},onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),p.current?.hidePopover(),f.current?.focus())},children:[(0,C.jsxs)(`label`,{className:`model-search`,children:[(0,C.jsx)(T,{name:`search`,size:14}),(0,C.jsx)(`input`,{ref:m,type:`search`,value:v,placeholder:U(`Search models`),"aria-label":U(`Search models`),role:`combobox`,"aria-expanded":`true`,"aria-controls":`${d}-list`,"aria-autocomplete":`list`,"aria-activedescendant":V?`${d}-${V.key.replace(/\W/g,`_`)}`:void 0,onChange:t=>{y(t.target.value);let n=t.target.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),r=e.flatMap(L).find(e=>n.every(t=>`${e.agent.label} ${e.name} ${e.model}`.toLocaleLowerCase().includes(t)));x(r?.key||``)},onKeyDown:e=>{e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),oe(e.key===`ArrowDown`?1:-1)):e.key===`Enter`&&V&&(e.preventDefault(),ae(V))}})]}),(0,C.jsxs)(`div`,{ref:h,id:`${d}-list`,role:`listbox`,"aria-label":U(`Models`),className:`model-list`,children:[B.length>0&&(0,C.jsxs)(`div`,{role:`group`,"aria-label":U(`Recent`),className:`model-group`,children:[(0,C.jsx)(`div`,{className:`model-group-head`,"aria-hidden":`true`,children:U(`Recent`)}),B.map(se)]}),z.map(e=>(0,C.jsxs)(`div`,{role:`group`,"aria-label":e.option.label,className:`model-group`,children:[(0,C.jsxs)(`div`,{className:`model-group-head`,"aria-hidden":`true`,children:[(0,C.jsx)(ai,{name:e.option.value,size:15}),e.option.label]}),e.items.map(se)]},e.option.value)),!te.length&&(0,C.jsx)(`p`,{className:`model-empty`,children:U(`No models match “{query}”`,{query:v.trim()})})]}),(0,C.jsx)(Vg,{name:j,runtime:O,reconnecting:a,onReconnect:o},t),u&&(0,C.jsx)(`p`,{className:`effort-description`,children:u}),A?.efforts.length?(0,C.jsx)(Nh,{efforts:A.efforts,value:r,fallback:A.defaultEffort,onChange:e=>c({effort:e})}):null,P&&(0,C.jsxs)(`label`,{className:`agent-fast`,children:[(0,C.jsxs)(`span`,{children:[(0,C.jsxs)(`strong`,{children:[(0,C.jsx)(T,{name:`bolt`,size:14}),U(`Fast mode`)]}),(0,C.jsx)(`small`,{children:P.description||U(`Faster responses; may use more of your limit.`)})]}),(0,C.jsx)(`input`,{type:`checkbox`,role:`switch`,"aria-label":U(`Fast mode`),checked:i,onChange:e=>c({fast:e.target.checked})})]})]})]})}var qg=`high`;function Jg(e,t){return e===``?``:e&&(!t||t.efforts.includes(e))?e:t?.efforts.includes(qg)?qg:``}var Yg=e=>({model:e.model,effort:e.effort,serviceTier:e.serviceTier});function Xg({task:e,runtime:t,disabled:n,reconnecting:r,onReconnect:i,save:a,onSaving:o,refresh:s,reportError:c}){let[l,u]=(0,S.useState)(()=>Yg(e)),d=(0,S.useRef)(l),f=(0,S.useRef)(l),p=(0,S.useRef)(0),m=(0,S.useRef)(Promise.resolve());(0,S.useEffect)(()=>{p.current||(d.current=f.current=Yg(e),u(d.current))},[e.model,e.effort,e.serviceTier]);let h=e.agent||`codex`;function g(e){d.current=e,u(e),p.current++,o(!0),m.current=m.current.then(async()=>{try{f.current=Yg(await a({model:e.model||``,effort:e.effort||``,...h===`codex`?{serviceTier:e.serviceTier||`default`}:{}}))}catch(e){c(e)}finally{--p.current===0&&(d.current=f.current,u(f.current),o(!1),s())}})}return(0,C.jsx)(Kg,{agents:[{value:h,label:He[h],runtime:t}],agent:h,model:l.model||``,effort:l.effort||``,fast:!!(l.serviceTier&&l.serviceTier!=="default"),disabled:n,reconnecting:r,onReconnect:i,description:p.current?U(`Saving…`):U(`Changes apply to the next turn.`),onSelect:(e,n)=>{let r=t?.models.find(e=>e.id===n),i=d.current;g({model:n,effort:r?.efforts.includes(i.effort||``)?i.effort:null,serviceTier:i.serviceTier===r?.fastMode?.serviceTier?i.serviceTier:`default`})},onChange:e=>{let n=d.current,r=t?.models.find(e=>n.model?e.id===n.model:e.isDefault);g({...n,...e.effort===void 0?{}:{effort:e.effort||null},...e.fast===void 0?{}:{serviceTier:e.fast?r?.fastMode?.serviceTier:`default`}})}})}function Zg({task:e,sidebarShown:t,onArrive:n}){let r=(0,S.useRef)(null);return(0,S.useLayoutEffect)(()=>{let i=r.current,a=matchMedia(`(prefers-reduced-motion: reduce)`);t&&document.querySelector(`.task-list`)?.scrollTo({top:0,behavior:`instant`});let o=t?document.querySelector(`.task-row[data-task="${CSS.escape(e.id)}"]`):[...document.querySelectorAll(`.sidebar-toggle`)].find(e=>e.getBoundingClientRect().width>0);if(!i||!o||a.matches){n(e);return}let s=o.getBoundingClientRect(),c=e.source;if(!s.width||!c.width){n(e);return}let l=Math.min(c.width,360);i.style.width=`${l}px`;let u={x:c.left+c.width/2-l/2,y:c.top+Math.min(c.height/2,64)-32},d={x:s.left,y:s.top},f=s.width/l,p=s.height/64,m=Math.min(150,Math.abs(d.x-u.x)*.16+40),h=[0,.12,.35,.65,.85,1].map(e=>{let n=Math.max(0,(e-.12)/.88),r=u.x+(d.x-u.x)*n,i=Math.max(8,u.y+(d.y-u.y)*n-Math.sin(e*Math.PI)*m),a=n*n;return{offset:e,transform:`translate(${r}px, ${i}px) rotate(${-5*Math.sin(e*Math.PI)}deg) scale(${1+(f-1)*a}, ${1+(p-1)*a})`,opacity:t?1:1-n**5}}),g=!0,_=()=>{g&&(g=!1,n(e))},v=i.animate(h,{duration:1100,easing:`cubic-bezier(.4,0,.2,1)`,fill:`both`});return window.addEventListener(`resize`,_),a.addEventListener(`change`,_),v.finished.then(_,()=>{}),()=>{g=!1,v.cancel(),window.removeEventListener(`resize`,_),a.removeEventListener(`change`,_)}},[e,t,n]),(0,ot.createPortal)((0,C.jsxs)(`div`,{ref:r,className:`task-flight`,"aria-hidden":`true`,children:[(0,C.jsx)(`span`,{className:`task-flight-icon`,children:(0,C.jsx)(T,{name:`paper`,size:19})}),(0,C.jsx)(`span`,{className:`task-flight-title`,children:e.title}),(0,C.jsx)(T,{name:`arrowUp`,size:17})]}),document.body)}var Qg=new WeakMap;function $g(e){let t=e.getBoundingClientRect();return t.width>0&&t.height>0&&t.bottom>0&&t.top<innerHeight&&t.right>0&&t.left<innerWidth}function e_(){return[`library`,`pdf`].map(e=>document.querySelector(`[data-notes-home="${e}"]`)).find(e=>e&&$g(e))||null}function t_(e,t){clearTimeout(Qg.get(e)),e.classList.remove(`notes-received`),e.offsetWidth,e.dataset.received=`+${t}`,e.classList.add(`notes-received`),Qg.set(e,window.setTimeout(()=>{e.classList.remove(`notes-received`),delete e.dataset.received},1600))}function n_(e){let t=e_();if(!t||!e.length)return;if(matchMedia(`(prefers-reduced-motion: reduce)`).matches){t_(t,e.length);return}let n=t.getBoundingClientRect(),r=e.slice(0,5).flatMap((e,t)=>{let r=e.getBoundingClientRect();if(!r.width||!r.height)return[];let i=e.cloneNode(!0);i.classList.add(`note-flight`),i.setAttribute(`aria-hidden`,`true`),i.inert=!0,i.style.width=`${r.width}px`,i.style.height=`${r.height}px`,document.body.append(i);let a=Math.min(n.width/r.width,n.height/r.height),o={x:r.left,y:r.top},s={x:n.left+(n.width-r.width*a)/2,y:n.top+(n.height-r.height*a)/2},c=Math.min(110,Math.hypot(s.x-o.x,s.y-o.y)*.16+24),l=[0,.1,.3,.55,.8,1].map(e=>{let t=Math.max(0,(e-.1)/.9),n=t*t;return{offset:e,transform:`translate(${o.x+(s.x-o.x)*t}px, ${Math.max(4,o.y+(s.y-o.y)*t-Math.sin(t*Math.PI)*c)}px) rotate(${-4*Math.sin(t*Math.PI)}deg) scale(${1+(a-1)*n})`,opacity:1-.85*t**5}}),u=i.animate(l,{duration:680,delay:t*70,easing:`cubic-bezier(.4,0,.2,1)`,fill:`both`}),d=()=>i.remove();return u.finished.then(d,d),window.setTimeout(d,680+t*70+1e3),[u]});if(!r.length){t_(t,e.length);return}let i=()=>t_(t,e.length);r[0].finished.then(i,i)}function r_(e,t,n,r,i,a){let[o,s]=(0,S.useState)(()=>{let t=Number(D.getItem(e));return Number.isFinite(t)&&t>0?t:0}),c=(0,S.useRef)(null),l=(0,S.useRef)(null),[u,d]=(0,S.useState)({current:300,max:300}),f=()=>{l.current=null,document.body.classList.remove(`resizing`)};(0,S.useEffect)(()=>{o?D.setItem(e,String(o)):D.removeItem(e)},[e,o]),(0,S.useLayoutEffect)(()=>{let e=c.current?.parentElement,t=e?.querySelector(n);if(!i||!e||!t)return;let r=new ResizeObserver(()=>d({current:Math.round(t.getBoundingClientRect().width),max:Math.max(300,Math.floor(e.getBoundingClientRect().width-360))}));return r.observe(e),r.observe(t),()=>{r.disconnect(),f()}},[i,n]);let p=e=>Math.round(Math.max(300,Math.min(e,u.max))),m=()=>c.current?.parentElement?.querySelector(n)?.getBoundingClientRect().width??u.current,h=e=>{s(e),a?.()};return{style:o?{[t]:`${o}px`}:void 0,resizer:i&&(0,C.jsx)(`div`,{ref:c,className:`panel-resizer manuscript-resizer`,role:`separator`,"aria-orientation":`vertical`,"aria-label":r,"aria-valuenow":u.current,"aria-valuemin":300,"aria-valuemax":u.max,tabIndex:0,title:U(`Drag to resize · Double-click to reset`),onPointerDown:e=>{e.button!==0||l.current||(e.preventDefault(),e.currentTarget.focus(),l.current={x:e.clientX,width:m()},e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`resizing`))},onPointerMove:e=>{l.current&&h(p(l.current.width+l.current.x-e.clientX))},onPointerUp:e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),f()},onPointerCancel:f,onLostPointerCapture:f,onDoubleClick:()=>h(0),onKeyDown:e=>{if(e.key===`Enter`){e.preventDefault(),h(0);return}let t=m(),n=e.key===`ArrowLeft`?t+24:e.key===`ArrowRight`?t-24:e.key===`Home`?u.max:e.key===`End`?300:null;n!==null&&(e.preventDefault(),h(p(n)))}})}}var i_=(0,S.lazy)(()=>vr(()=>import(`./pdf-view-AYTS7kdA.js`).then(e=>({default:e.PdfView})),[])),a_=``,o_=()=>crypto.randomUUID?.()||Array.from(crypto.getRandomValues(new Uint8Array(20)),e=>e.toString(16).padStart(2,`0`)).join(``);async function $(e,t,n,r=t===void 0?15e3:3e4){let i=AbortSignal.timeout(r);try{let r=await fetch(`/api`+e,{method:t===void 0?`GET`:`POST`,headers:{"Content-Type":t instanceof File?`application/octet-stream`:`application/json`,"X-Papilot-Token":a_,...t instanceof File?{"X-Papilot-Filename":encodeURIComponent(t.name)}:{}},...t===void 0?{}:{body:t instanceof File?t:JSON.stringify(t)},signal:n?AbortSignal.any([n,i]):i});if(r.status===401&&(!e.startsWith(`/auth/`)||e===`/auth/logout`))throw Ig(!0),Error(U(`Sign in to continue.`));let a=await r.json();if(!r.ok)throw Error(a.error?we(a.error):U(`Request failed. Please try again.`));return a}catch(e){throw i.aborted?Error(U(t===void 0?`The connection is taking too long. Check your network and try again.`:`The request timed out and may still be processing. Check the task status before retrying.`)):e}}var s_=(e,t,n)=>$(`/projects/${e}/attachments`,t,n,12e4),c_=e=>$(`/runtime/latex`,void 0,e,3e4),l_=(e,t)=>$(`/diagnostics`,{projectId:e},t,6e4),u_=He,d_=e=>u_[e.agent||`codex`]||`Codex`,f_=e=>e.status===`reviewing`&&e.review?.round===null&&e.review.state!==`build_failed`&&!e.review.counts.pending,p_=()=>({idle:U(`Ready`),queued:U(`Queued`),waiting_input:U(`Needs your reply`),building:U(`Preparing task results`),reviewing:U(`Ready for review`),interrupted:U(`Paused`),failed:U(`Needs attention`),uncertain:U(`Check task status`),deleting:U(`Deleting task`)}),m_=[`running`,`waiting_input`,`queued`];function h_({task:e}){let t=f_(e),n=e.status===`reviewing`&&e.review?.state===`done`,r=Wh(e);return(0,C.jsxs)(`span`,{className:`status ${e.status}${n||t?` done`:``}`,children:[(0,C.jsx)(`i`,{}),r===`pushed`?U(`Committed and pushed`):r===`committed`?U(`Committed`):r===`applied`?U(`Applied to manuscript`):t?U(`Completed`):n?U(`Review complete`):e.status===`running`?U(`{agent} is working`,{agent:d_(e)}):p_()[e.status]||e.status]})}function g_(e){return new Date(e).toLocaleTimeString(Se(),{hour:`2-digit`,minute:`2-digit`})}function __(e){let t=Math.floor((Date.now()-e)/6e4);return t<1?U(`now`):t<60?U(`{n}m`,{n:t}):t<1440?U(`{n}h`,{n:Math.floor(t/60)}):t<10080?U(`{n}d`,{n:Math.floor(t/1440)}):new Date(e).toLocaleDateString(Se(),{month:`short`,day:`numeric`})}var v_=e=>Date.now()-e<6e4?U(`just now`):U(`{time} ago`,{time:__(e)}),y_=()=>window.matchMedia(`(pointer: coarse)`).matches;function b_(e){let[t,n]=(0,S.useState)(()=>window.matchMedia(e).matches);return(0,S.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function x_({label:e,value:t,placeholder:n,onChange:r,onSubmit:i,readOnly:a,autoFocus:o,inputRef:s,footer:c,action:l,large:u,skills:d,skill:f,onSkill:p,attachments:m,upload:h,filesDisabled:g,imageHint:_}){let v=(0,S.useRef)(null),y=s||v,b=(0,S.useRef)(null),x=(0,S.useRef)(0),[w,T]=(0,S.useState)(!1),E=!(!m||!h||a||g);function D(e){E&&e.length&&(m.add(e,h),y.current?.focus())}let O=(0,S.useId)(),[k,A]=(0,S.useState)(null),[j,M]=(0,S.useState)(0),N=d?.length&&p&&!a?Ct(t):null,P=N!==null&&k!==t,F=P?wt(d,N):[];(0,S.useEffect)(()=>M(0),[N]),(0,S.useEffect)(()=>{k!==null&&t!==k&&A(null)},[t,k]),(0,S.useLayoutEffect)(()=>{let e=y.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[y,t]),(0,S.useEffect)(()=>{o&&!y_()&&y.current?.focus()},[o,y]);function I(e){p?.(e),r(``),y.current?.focus()}function L(e){if(P&&!e.nativeEvent.isComposing&&e.keyCode!==229){if((e.key===`ArrowDown`||e.key===`ArrowUp`)&&F.length){e.preventDefault(),M(t=>(t+(e.key===`ArrowDown`?1:F.length-1))%F.length);return}if((e.key===`Enter`||e.key===`Tab`)&&!e.shiftKey&&F.length){e.preventDefault(),I(F[Math.min(j,F.length-1)]);return}if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),A(t);return}}e.key===`Backspace`&&f&&p&&!t&&!a?(e.preventDefault(),p(null)):Xe(e.nativeEvent,y_())&&(e.preventDefault(),i())}return(0,C.jsxs)(`form`,{className:`composer`+(u?` large`:``)+(w?` dragging`:``),onDragEnter:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),E&&++x.current===1&&T(!0))},onDragOver:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=E?`copy`:`none`)},onDragLeave:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),--x.current<=0&&(x.current=0,T(!1)))},onDrop:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),x.current=0,T(!1),D(Array.from(e.dataTransfer.files)))},onPaste:e=>{let n=Array.from(e.clipboardData.files);if(n.length){e.preventDefault(),D(n);let i=e.clipboardData.getData(`text/plain`);if(E&&i&&y.current){let e=y.current;r(t.slice(0,e.selectionStart)+i+t.slice(e.selectionEnd))}}},onSubmit:e=>{e.preventDefault(),i()},onPointerDown:e=>{e.target===e.currentTarget&&(e.preventDefault(),y.current?.focus())},children:[m&&h&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`input`,{ref:b,type:`file`,multiple:!0,hidden:!0,"aria-label":U(`Choose attachments`),disabled:!E,onChange:e=>{D(Array.from(e.target.files||[])),e.target.value=``}}),(0,C.jsx)(Ft,{draft:m,upload:h,discard:e=>{$(`/projects/${e.projectId}/attachments/${e.id}/discard`,{}).catch(()=>{})},disabled:a||g})]}),w&&(0,C.jsx)(`div`,{className:`attachment-drop-hint`,children:U(`Drop files to attach`)}),_&&(0,C.jsx)(`p`,{className:`attachment-agent-hint`,children:U(`Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.`)}),P&&(0,C.jsx)(Tt,{id:O,skills:F,active:j,onActive:M,onPick:I}),f&&(0,C.jsx)(`div`,{className:`composer-skill`,children:(0,C.jsx)(Et,{skill:f,onRemove:p&&!a?()=>{p(null),y.current?.focus()}:void 0})}),(0,C.jsx)(`textarea`,{ref:y,rows:1,"aria-label":e,maxLength:2e4,placeholder:f?f.source!==`builtin`&&f.hint||U(`Details (optional)`):n,value:t,readOnly:a,onChange:e=>r(e.target.value),onKeyDown:L,...p&&d?.length?{"aria-autocomplete":`list`,"aria-controls":P?O:void 0,"aria-activedescendant":P&&F.length?`${O}-${Math.min(j,F.length-1)}`:void 0}:{}}),(0,C.jsxs)(`div`,{className:`composer-footer`,children:[typeof c==`function`?c(()=>b.current?.click()):c,l]})]})}function S_({request:e,agent:t,answerDrafts:n,onDone:r}){let[i,a]=(0,S.useState)(()=>n.get(e.id)||{});function o(t){n.set(e.id,t),a(t)}let[s,c]=(0,S.useState)(!1),[l,u]=(0,S.useState)(``),d=e.method.endsWith(`requestUserInput`)&&e.params.questions||[];async function f(t){c(!0),u(``);try{await $(`/requests/`+e.id,{decision:t,answers:i}),n.delete(e.id),r()}catch(e){u(e.message)}finally{c(!1)}}return(0,C.jsxs)(`div`,{className:`request-card`,children:[(0,C.jsxs)(`h3`,{children:[(0,C.jsx)(T,{name:d.length?`chat`:`alert`,size:16}),d.length?U(`{agent} needs your input`,{agent:t}):U(`Approve this action`)]}),d.map(e=>(0,C.jsxs)(`fieldset`,{className:`question`,children:[(0,C.jsx)(`legend`,{children:e.question||e.header}),e.options?.length>0&&(0,C.jsx)(`div`,{className:`answer-options`,children:e.options.map(t=>(0,C.jsxs)(`button`,{type:`button`,disabled:s,"aria-pressed":i[e.id]===t.label,className:i[e.id]===t.label?`selected`:``,onClick:()=>o({...i,[e.id]:t.label}),children:[t.label,t.description&&(0,C.jsx)(`small`,{children:t.description})]},t.label))}),!(e.isOther===!1&&e.options?.length>0)&&(0,C.jsx)(`input`,{disabled:s,"aria-label":e.question||e.header,placeholder:U(`Or type your own answer`),value:i[e.id]||``,onChange:t=>o({...i,[e.id]:t.target.value})})]},e.id)),!d.length&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{children:e.params.reason||U(`{agent} is requesting permission for this action.`,{agent:t})}),(0,C.jsx)(`pre`,{children:e.params.command||(e.params.permissions?JSON.stringify(e.params.permissions,null,2):e.params.grantRoot||U(`Apply file changes`))})]}),l&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:l}),(0,C.jsxs)(`div`,{className:`button-row`,children:[!d.length&&(0,C.jsx)(`button`,{disabled:s,className:`button secondary`,onClick:()=>void f(`decline`),children:U(`Decline`)}),(0,C.jsx)(`button`,{disabled:s||d.some(e=>!i[e.id]?.trim()),className:`button primary`,onClick:()=>void f(d.length?void 0:`accept`),children:s?U(`Submitting…`):d.length?U(`Reply to {agent}`,{agent:t}):U(`Allow this action`)})]})]})}function C_({text:e}){let[t,n]=(0,S.useState)(!1);(0,S.useEffect)(()=>{if(!t)return;let e=setTimeout(()=>n(!1),1600);return()=>clearTimeout(e)},[t]);async function r(){try{await navigator.clipboard.writeText(e)}catch{let t=document.createElement(`textarea`);t.value=e,t.readOnly=!0,t.style.position=`fixed`,t.style.opacity=`0`,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove()}n(!0)}return(0,C.jsxs)(`button`,{type:`button`,className:`message-action`,"aria-label":U(t?`Copied`:`Copy message`),onClick:()=>void r(),children:[(0,C.jsx)(T,{name:t?`check`:`copy`,size:14}),(0,C.jsx)(`span`,{children:U(t?`Copied`:`Copy`)})]})}var w_=e=>e.match(/^\/bin\/(?:ba|z)?sh -lc (['"])([\s\S]*)\1$/)?.[2]??e,T_=(e,t)=>t&&e.startsWith(t+`/`)?e.slice(t.length+1):e,E_=(e,t)=>e.text.split(`
257
+ `)),children:[(0,C.jsx)(T,{name:`search`,size:14}),Te(x.length,`Ask an agent to look into {n} problem`,`Ask an agent to look into {n} problems`)]}),(0,C.jsx)(`span`,{children:U(`Opens a new task you can edit before sending. The agent reports what it finds and changes nothing.`)})]})]})}function fg({entry:e,check:t,confirmed:n,onConfirm:r}){return(0,C.jsxs)(`div`,{className:`references-detail`,children:[(0,C.jsx)(`table`,{children:(0,C.jsx)(`tbody`,{children:e.fields.map(e=>(0,C.jsxs)(`tr`,{children:[(0,C.jsx)(`th`,{scope:`row`,children:e.name}),(0,C.jsxs)(`td`,{children:[e.value,e.resolved&&(0,C.jsxs)(`span`,{className:`references-resolved`,children:[` = `,e.resolved]})]})]},e.name))})}),(0,C.jsxs)(`p`,{className:`references-where`,children:[e.file,`:`,e.lines[0],`–`,e.lines[1],ng()||` · `,e.cited.length?Te(e.cited.length,`Cited {n} time: {places}`,`Cited {n} times: {places}`,{places:e.cited.map(rg).join(`; `)}):U(`Not cited in the paper.`)]}),t?.record&&(0,C.jsxs)(`p`,{className:`references-record`,children:[(0,C.jsxs)(`span`,{children:[t.status===`unverified`?U(`Closest record`):U(`Record`),` · `,eg[t.record.source]]}),(0,C.jsx)(`a`,{href:t.record.url,target:`_blank`,rel:`noopener noreferrer`,children:t.record.title}),[t.record.authors.join(`, `),t.record.venue,t.record.year,t.record.doi&&`doi:${t.record.doi}`].filter(Boolean).map((e,t)=>(0,C.jsxs)(`span`,{children:[` · `,e]},t))]}),t&&t.differences.length>0&&(0,C.jsx)(`dl`,{className:`references-differences`,children:t.differences.map((e,n)=>(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`dt`,{children:[tg(e.field),e.minor?` · ${U(`small`)}`:``]}),(0,C.jsxs)(`dd`,{children:[(0,C.jsx)(`span`,{children:e.bib}),(0,C.jsxs)(`span`,{children:[eg[t.record?.source||``]||U(`Record`),`: `,e.record||`—`]})]})]},n))}),t?.unavailable.length?(0,C.jsx)(`p`,{className:`references-note`,children:U(`{sources} could not be reached.`,{sources:t.unavailable.join(`, `)})}):null,!e.error&&(n?(0,C.jsxs)(`p`,{className:`references-confirmed`,children:[U(`You checked this entry yourself.`),` `,(0,C.jsx)(`button`,{type:`button`,className:`button ghost compact`,onClick:()=>r(!1),children:U(`Undo`)})]}):t?.status!==`verified`&&(0,C.jsxs)(`button`,{type:`button`,className:`button ghost compact`,onClick:()=>r(!0),children:[(0,C.jsx)(T,{name:`check`,size:14}),U(`I checked it myself`)]}))]})}function pg(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function mg(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function hg(){return gg.stubThis(globalThis?.PublicKeyCredential!==void 0&&typeof globalThis.PublicKeyCredential==`function`)}var gg={stubThis:e=>e};function _g(e){let{id:t}=e;return{...e,id:mg(t),transports:e.transports,type:e.type}}function vg(e){return e===`localhost`||/^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(e)}var yg=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=r??n.name,this.code=t}};function bg({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new yg({message:`Registration ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`ConstraintError`){if(n.authenticatorSelection?.requireResidentKey===!0)return new yg({message:`Discoverable credentials were required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT`,cause:e});if(t.mediation===`conditional`&&n.authenticatorSelection?.userVerification===`required`)return new yg({message:`User verification was required during automatic registration but it could not be performed`,code:`ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE`,cause:e});if(n.authenticatorSelection?.userVerification===`required`)return new yg({message:`User verification was required but no available authenticator supported it`,code:`ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT`,cause:e})}else if(e.name===`InvalidStateError`)return new yg({message:`The authenticator was previously registered`,code:`ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED`,cause:e});else if(e.name===`NotAllowedError`)return new yg({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`NotSupportedError`)return n.pubKeyCredParams.filter(e=>e.type===`public-key`).length===0?new yg({message:`No entry in pubKeyCredParams was of type "public-key"`,code:`ERROR_MALFORMED_PUBKEYCREDPARAMS`,cause:e}):new yg({message:`No available authenticator supported any of the specified pubKeyCredParams algorithms`,code:`ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!vg(t))return new yg({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rp.id!==t)return new yg({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`TypeError`){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new yg({message:`User ID was not between 1 and 64 characters`,code:`ERROR_INVALID_USER_ID_LENGTH`,cause:e})}else if(e.name===`UnknownError`)return new yg({message:`The authenticator was unable to process the specified options, or could not create a new credential`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}var xg=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},Sg=[`cross-platform`,`platform`];function Cg(e){if(e&&!(Sg.indexOf(e)<0))return e}async function wg(e){!e.optionsJSON&&e.challenge&&(console.warn(`startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useAutoRegister:n=!1}=e;if(!hg())throw Error(`WebAuthn is not supported in this browser`);let r={...t,challenge:mg(t.challenge),user:{...t.user,id:mg(t.user.id)},excludeCredentials:t.excludeCredentials?.map(_g)},i={};n&&(i.mediation=`conditional`),i.publicKey=r,i.signal=xg.createNewAbortSignal();let a;try{a=await navigator.credentials.create(i)}catch(e){throw bg({error:e,options:i})}if(!a)throw Error(`Registration was not completed`);let{id:o,rawId:s,response:c,type:l}=a,u;typeof c.getTransports==`function`&&(u=c.getTransports());let d;if(typeof c.getPublicKeyAlgorithm==`function`)try{d=c.getPublicKeyAlgorithm()}catch(e){Tg(`getPublicKeyAlgorithm()`,e)}let f;if(typeof c.getPublicKey==`function`)try{let e=c.getPublicKey();e!==null&&(f=pg(e))}catch(e){Tg(`getPublicKey()`,e)}let p;if(typeof c.getAuthenticatorData==`function`)try{p=pg(c.getAuthenticatorData())}catch(e){Tg(`getAuthenticatorData()`,e)}return{id:o,rawId:pg(s),response:{attestationObject:pg(c.attestationObject),clientDataJSON:pg(c.clientDataJSON),transports:u,publicKeyAlgorithm:d,publicKey:f,authenticatorData:p},type:l,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Cg(a.authenticatorAttachment)}}function Tg(e,t){console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${e}. You should report this error to them.\n`,t)}function Eg(){if(!hg())return Dg.stubThis(new Promise(e=>e(!1)));let e=globalThis.PublicKeyCredential;return e?.isConditionalMediationAvailable===void 0?Dg.stubThis(new Promise(e=>e(!1))):Dg.stubThis(e.isConditionalMediationAvailable())}var Dg={stubThis:e=>e};function Og({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new yg({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new yg({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=globalThis.location.hostname;if(!vg(t))return new yg({message:`${globalThis.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new yg({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new yg({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function kg(e){!e.optionsJSON&&e.challenge&&(console.warn(`startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.`),e={optionsJSON:e});let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!hg())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(_g));let a={...t,challenge:mg(t.challenge),allowCredentials:i},o={};if(n){if(!await Eg())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=xg.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw Og({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=pg(u.userHandle)),{id:c,rawId:pg(l),response:{authenticatorData:pg(u.authenticatorData),clientDataJSON:pg(u.clientDataJSON),signature:pg(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Cg(s.authenticatorAttachment)}}var Ag=e=>e instanceof Error&&(e.name===`NotAllowedError`||e.name===`AbortError`),jg=e=>e instanceof Error?e.message:String(e);function Mg({api:e,onSignedIn:t}){let[n,r]=(0,S.useState)(!1),[i,a]=(0,S.useState)(``);async function o(){r(!0),a(``);try{await e(`/auth/verify`,{response:await kg({optionsJSON:await e(`/auth/options`,{})})}),t()}catch(e){a(Ag(e)?U(`Signing in was cancelled. Try again when you are ready.`):jg(e))}finally{r(!1)}}return(0,C.jsx)(`div`,{className:`home sign-in`,children:(0,C.jsxs)(`div`,{className:`home-inner`,children:[(0,C.jsx)(`img`,{className:`home-logo`,src:kr,alt:``}),(0,C.jsx)(`h1`,{children:U(`Sign in to Papilot`)}),hg()?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`home-copy`,children:U(`Use the passkey you created from your invite link.`)}),(0,C.jsxs)(`button`,{className:`button primary`,disabled:n,"aria-busy":n,onClick:()=>void o(),children:[(0,C.jsx)(T,{name:`key`,size:16}),U(n?`Waiting for your passkey…`:`Sign in with a passkey`)]})]}):(0,C.jsx)(`p`,{className:`home-copy`,children:U(`This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.`)}),i&&(0,C.jsx)(`p`,{className:`inline-error home-error`,role:`alert`,children:i}),(0,C.jsx)(`p`,{className:`home-copy muted sign-in-help`,children:U(`No passkey on this device? Ask the person who invited you for a new invite link.`)})]})})}function Ng({api:e,onDone:t}){let[n]=(0,S.useState)(()=>location.hash.slice(1)),[r,i]=(0,S.useState)(null),[a,o]=(0,S.useState)(!1),[s,c]=(0,S.useState)(``);(0,S.useEffect)(()=>{history.replaceState(null,``,`/invite`),n?e(`/auth/invite`,{token:n}).then(i,e=>c(jg(e))):c(U(`This invite link is incomplete. Copy the whole link and open it again.`))},[]);async function l(){o(!0),c(``);try{let r=await wg({optionsJSON:await e(`/auth/invite/options`,{token:n})});await e(`/auth/invite/verify`,{token:n,response:r}),history.replaceState(null,``,`/`),t()}catch(e){c(Ag(e)?U(`Creating the passkey was cancelled. The link still works; try again when you are ready.`):jg(e))}finally{o(!1)}}let u=r?.papers.join(U(`, `))||``;return(0,C.jsx)(`div`,{className:`home sign-in`,children:(0,C.jsxs)(`div`,{className:`home-inner`,children:[(0,C.jsx)(`img`,{className:`home-logo`,src:kr,alt:``}),(0,C.jsx)(`h1`,{children:r?.adding?U(`Add a passkey`):U(`Join Papilot`)}),r&&(0,C.jsx)(`p`,{className:`home-copy`,children:r.owner?U(`Create a passkey to sign in to your Papilot from anywhere.`):r.adding?U(`Create a passkey on this device to sign in as {name}.`,{name:r.name}):u?U(`{inviter} invited you to work on {papers}. You will appear as {name}.`,{inviter:r.inviter,papers:u,name:r.name}):U(`{inviter} invited you to Papilot. You will appear as {name}.`,{inviter:r.inviter,name:r.name})}),r&&(hg()?(0,C.jsxs)(`button`,{className:`button primary`,disabled:a,"aria-busy":a,onClick:()=>void l(),children:[(0,C.jsx)(T,{name:`key`,size:16}),U(a?`Waiting for your passkey…`:`Create a passkey`)]}):(0,C.jsx)(`p`,{className:`home-copy`,children:U(`This browser cannot use passkeys. Open this page in a current version of Safari, Chrome, Edge or Firefox.`)})),!r&&!s&&(0,C.jsx)(`p`,{className:`home-copy`,role:`status`,children:(0,C.jsx)(`span`,{className:`spinner`})}),s&&(0,C.jsx)(`p`,{className:`inline-error home-error`,role:`alert`,children:s}),r&&(0,C.jsx)(`p`,{className:`home-copy muted sign-in-help`,children:U(`A passkey signs you in with Face ID, Touch ID, Windows Hello or your phone. Papilot never sees a password.`)})]})})}var Pg=!1,Fg=new Set;function Ig(e){if(Pg!==e){Pg=e;for(let e of Fg)e()}}var Lg=()=>Pg;function Rg(){return(0,S.useSyncExternalStore)(e=>(Fg.add(e),()=>Fg.delete(e)),()=>Pg)}function zg(){At();try{for(let e of Object.keys(localStorage))(e.startsWith(`papilot:`)||e.startsWith(`latex-review:`))&&e!==`papilot:theme`&&e!==`papilot:appearance`&&e!==`papilot:language`&&D.removeItem(e)}catch{}}function Bg({model:e,effort:t,fast:n}){return(0,C.jsxs)(`span`,{className:`agent-model-label`,children:[(0,C.jsx)(`span`,{className:`agent-model-name`,children:e}),t&&(0,C.jsx)(`small`,{children:jh(t)}),n&&(0,C.jsx)(T,{name:`bolt`,size:13})]})}function Vg({name:e,runtime:t,reconnecting:n,onReconnect:r}){if(!t||t.connected&&t.authenticated)return null;let i=t.error||``,a=i.split(/:\s|\.\s/)[0],o=t.installed===!1?U(`{agent} was not found on this computer. Install or set it up, then select Reconnect.`,{agent:e}):i?a.length<=120?a:U(`{agent} is unavailable`,{agent:e}):U(`Connecting to {agent}…`,{agent:e});return(0,C.jsxs)(`div`,{className:`agent-connection`,children:[(0,C.jsxs)(`div`,{className:`agent-connection-message`,role:`status`,children:[(0,C.jsx)(T,{name:`alert`,size:15}),(0,C.jsx)(`span`,{children:o})]}),i&&i!==o&&(0,C.jsxs)(`details`,{children:[(0,C.jsx)(`summary`,{children:U(`Connection details`)}),(0,C.jsx)(`p`,{children:i})]}),(0,C.jsxs)(`button`,{type:`button`,disabled:n,onClick:r,children:[(0,C.jsx)(T,{name:`refresh`,size:12}),U(n?`Connecting…`:`Reconnect`)]})]})}var Hg=`papilot:recent-models`;function Ug(){try{let e=JSON.parse(D.getItem(Hg)||`[]`);return Array.isArray(e)?e.filter(e=>e&&typeof e.agent==`string`&&typeof e.model==`string`).slice(0,3):[]}catch{return[]}}function Wg(e,t){let n=[{agent:e,model:t},...Ug().filter(n=>n.agent!==e||n.model!==t)].slice(0,3);D.setItem(Hg,JSON.stringify(n))}function Gg(e){return e?.installed===!1?U(`Not found`):!e||!e.connected&&!e.error?U(`Connecting…`):e.connected?e.authenticated?``:U(`Sign-in required`):U(`Unavailable`)}function Kg({agents:e,agent:t,model:n,effort:r,fast:i,reconnecting:a,onReconnect:o,onSelect:s,onChange:c,disabled:l,description:u}){let d=(0,S.useId)(),f=(0,S.useRef)(null),p=(0,S.useRef)(null),m=(0,S.useRef)(null),h=(0,S.useRef)(null),[g,_]=(0,S.useState)(!1),[v,y]=(0,S.useState)(``),[b,x]=(0,S.useState)(``),[w,E]=(0,S.useState)(Ug),D=e.find(e=>e.value===t)||e[0],O=D?.runtime,k=O?.models||[],A=n?k.find(e=>e.id===n):k.find(e=>e.isDefault),j=D?.label||t,M=A?.name||n||j,N=r||A?.defaultEffort,P=t===`codex`?A?.fastMode:void 0,F=O&&(!O.connected||!O.authenticated),I=[j,M,N?jh(N):``,P&&i?U(`Fast`):``].filter((e,t,n)=>e&&n.indexOf(e)===t).join(` · `),L=e=>{let t=e.runtime?.models||[];return t.length?t.map(t=>({key:`${e.value}\n${t.id}`,agent:e,model:t.id,name:t.name,isDefault:t.isDefault,recent:!1})):[{key:`${e.value}\n`,agent:e,model:``,name:U(`Default model`),isDefault:!1,recent:!1}]},R=v.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),ee=e=>R.every(t=>`${e.agent.label} ${e.name} ${e.model}`.toLocaleLowerCase().includes(t)),z=e.map(e=>({option:e,items:L(e).filter(ee)})).filter(e=>e.items.length),B=R.length?[]:w.flatMap(t=>{let n=e.find(e=>e.value===t.agent),r=n&&L(n).find(e=>e.model===t.model);return r?[{...r,key:`recent\n${r.key}`,recent:!0}]:[]}),te=[...B,...z.flatMap(e=>e.items)],ne=e=>e.agent.value===t&&(e.model===n||!n&&(e.isDefault||e.model===``));function re(){let e=p.current,t=f.current.getBoundingClientRect();e.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-e.offsetWidth-8))}px`;let n=t.bottom+6,r=t.top-e.offsetHeight-6;e.style.top=`${Math.max(8,Math.min(n+e.offsetHeight>window.innerHeight-8&&r>=8?r:n,window.innerHeight-e.offsetHeight-8))}px`}(0,S.useLayoutEffect)(()=>{g&&re()},[g,t,n,A]),(0,S.useEffect)(()=>{if(!g)return;let e=()=>p.current?.hidePopover(),t=t=>{t.target instanceof Node&&t.target.contains(f.current)&&!p.current?.contains(t.target)&&e()},n=new ResizeObserver(()=>{p.current?.matches(`:popover-open`)&&re()});return p.current&&n.observe(p.current),window.addEventListener(`resize`,e),document.addEventListener(`scroll`,t,!0),()=>{n.disconnect(),window.removeEventListener(`resize`,e),document.removeEventListener(`scroll`,t,!0)}},[g]),(0,S.useEffect)(()=>{l&&p.current?.hidePopover()},[l]),(0,S.useEffect)(()=>{g&&b&&h.current?.querySelector(`[data-key="${CSS.escape(b)}"]`)?.scrollIntoView({block:`nearest`})},[b,g]);function ie(){y(``),E(Ug()),p.current?.showPopover(),re(),_(!0);let e=te.find(ne);x(e?.key||te[0]?.key||``),requestAnimationFrame(()=>h.current?.querySelector(`[aria-selected="true"]`)?.scrollIntoView({block:`nearest`})),window.matchMedia(`(pointer: coarse)`).matches||m.current?.focus()}function ae(e){s(e.agent.value,e.model),Wg(e.agent.value,e.model),x(e.key)}function oe(e){if(!te.length)return;let t=te.findIndex(e=>e.key===b);x(te[(t+e+te.length)%te.length].key)}let se=e=>{let t=ne(e),n=Gg(e.agent.runtime);return(0,C.jsxs)(`div`,{id:`${d}-${e.key.replace(/\W/g,`_`)}`,"data-key":e.key,role:`option`,"aria-selected":t,"aria-label":`${e.name} · ${e.agent.label}`,className:`model-option`+(e.key===b?` active`:``),onPointerMove:()=>x(e.key),onClick:()=>ae(e),children:[e.recent&&(0,C.jsx)(ai,{name:e.agent.value,size:15}),(0,C.jsx)(`span`,{className:`model-option-name`,children:e.name}),e.isDefault&&!e.recent&&(0,C.jsx)(`small`,{className:`model-option-tag`,children:U(`Default`)}),(e.recent||n)&&(0,C.jsx)(`small`,{className:`model-option-agent`+(n?` warn`:``),children:e.recent?e.agent.label:n}),t&&(0,C.jsx)(T,{name:`check`,size:14})]},e.key)},V=te.find(e=>e.key===b);return(0,C.jsxs)(`span`,{className:`agent-picker`,children:[(0,C.jsxs)(`button`,{ref:f,type:`button`,className:`agent-picker-trigger`,"aria-label":U(`Agent settings`),title:I+(F?` · ${U(`{agent} is unavailable`,{agent:j})}`:``),"aria-haspopup":`dialog`,"aria-expanded":g,"aria-controls":d,disabled:l,onClick:()=>p.current?.matches(`:popover-open`)?p.current.hidePopover():ie(),onKeyDown:e=>{e.key===`ArrowDown`&&(e.preventDefault(),ie())},children:[(0,C.jsx)(ai,{name:t,size:15}),M!==j&&(0,C.jsx)(`span`,{className:`agent-picker-agent`,children:j}),(0,C.jsx)(Bg,{model:M,effort:N,fast:!!(P&&i)}),(0,C.jsx)(T,{name:`chevronDown`,size:13}),F&&(0,C.jsx)(`span`,{className:`agent-status-mark`,children:(0,C.jsx)(T,{name:`alert`,size:13})})]}),(0,C.jsxs)(`div`,{ref:p,id:d,popover:`auto`,role:`dialog`,"aria-label":U(`Agent settings`),className:`agent-picker-panel`,onToggle:e=>{let t=e.nativeEvent.newState===`open`;_(t),t||document.activeElement&&document.activeElement!==document.body&&!p.current?.contains(document.activeElement)||f.current?.focus()},onKeyDown:e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),p.current?.hidePopover(),f.current?.focus())},children:[(0,C.jsxs)(`label`,{className:`model-search`,children:[(0,C.jsx)(T,{name:`search`,size:14}),(0,C.jsx)(`input`,{ref:m,type:`search`,value:v,placeholder:U(`Search models`),"aria-label":U(`Search models`),role:`combobox`,"aria-expanded":`true`,"aria-controls":`${d}-list`,"aria-autocomplete":`list`,"aria-activedescendant":V?`${d}-${V.key.replace(/\W/g,`_`)}`:void 0,onChange:t=>{y(t.target.value);let n=t.target.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean),r=e.flatMap(L).find(e=>n.every(t=>`${e.agent.label} ${e.name} ${e.model}`.toLocaleLowerCase().includes(t)));x(r?.key||``)},onKeyDown:e=>{e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),oe(e.key===`ArrowDown`?1:-1)):e.key===`Enter`&&V&&(e.preventDefault(),ae(V))}})]}),(0,C.jsxs)(`div`,{ref:h,id:`${d}-list`,role:`listbox`,"aria-label":U(`Models`),className:`model-list`,children:[B.length>0&&(0,C.jsxs)(`div`,{role:`group`,"aria-label":U(`Recent`),className:`model-group`,children:[(0,C.jsx)(`div`,{className:`model-group-head`,"aria-hidden":`true`,children:U(`Recent`)}),B.map(se)]}),z.map(e=>(0,C.jsxs)(`div`,{role:`group`,"aria-label":e.option.label,className:`model-group`,children:[(0,C.jsxs)(`div`,{className:`model-group-head`,"aria-hidden":`true`,children:[(0,C.jsx)(ai,{name:e.option.value,size:15}),e.option.label]}),e.items.map(se)]},e.option.value)),!te.length&&(0,C.jsx)(`p`,{className:`model-empty`,children:U(`No models match “{query}”`,{query:v.trim()})})]}),(0,C.jsx)(Vg,{name:j,runtime:O,reconnecting:a,onReconnect:o},t),u&&(0,C.jsx)(`p`,{className:`effort-description`,children:u}),A?.efforts.length?(0,C.jsx)(Nh,{efforts:A.efforts,value:r,fallback:A.defaultEffort,onChange:e=>c({effort:e})}):null,P&&(0,C.jsxs)(`label`,{className:`agent-fast`,children:[(0,C.jsxs)(`span`,{children:[(0,C.jsxs)(`strong`,{children:[(0,C.jsx)(T,{name:`bolt`,size:14}),U(`Fast mode`)]}),(0,C.jsx)(`small`,{children:P.description||U(`Faster responses; may use more of your limit.`)})]}),(0,C.jsx)(`input`,{type:`checkbox`,role:`switch`,"aria-label":U(`Fast mode`),checked:i,onChange:e=>c({fast:e.target.checked})})]})]})]})}var qg=`high`;function Jg(e,t){return e===``?``:e&&(!t||t.efforts.includes(e))?e:t?.efforts.includes(qg)?qg:``}var Yg=e=>({model:e.model,effort:e.effort,serviceTier:e.serviceTier});function Xg({task:e,runtime:t,disabled:n,reconnecting:r,onReconnect:i,save:a,onSaving:o,refresh:s,reportError:c}){let[l,u]=(0,S.useState)(()=>Yg(e)),d=(0,S.useRef)(l),f=(0,S.useRef)(l),p=(0,S.useRef)(0),m=(0,S.useRef)(Promise.resolve());(0,S.useEffect)(()=>{p.current||(d.current=f.current=Yg(e),u(d.current))},[e.model,e.effort,e.serviceTier]);let h=e.agent||`codex`;function g(e){d.current=e,u(e),p.current++,o(!0),m.current=m.current.then(async()=>{try{f.current=Yg(await a({model:e.model||``,effort:e.effort||``,...h===`codex`?{serviceTier:e.serviceTier||`default`}:{}}))}catch(e){c(e)}finally{--p.current===0&&(d.current=f.current,u(f.current),o(!1),s())}})}return(0,C.jsx)(Kg,{agents:[{value:h,label:He[h],runtime:t}],agent:h,model:l.model||``,effort:l.effort||``,fast:!!(l.serviceTier&&l.serviceTier!=="default"),disabled:n,reconnecting:r,onReconnect:i,description:p.current?U(`Saving…`):U(`Changes apply to the next turn.`),onSelect:(e,n)=>{let r=t?.models.find(e=>e.id===n),i=d.current;g({model:n,effort:r?.efforts.includes(i.effort||``)?i.effort:null,serviceTier:i.serviceTier===r?.fastMode?.serviceTier?i.serviceTier:`default`})},onChange:e=>{let n=d.current,r=t?.models.find(e=>n.model?e.id===n.model:e.isDefault);g({...n,...e.effort===void 0?{}:{effort:e.effort||null},...e.fast===void 0?{}:{serviceTier:e.fast?r?.fastMode?.serviceTier:`default`}})}})}function Zg({task:e,sidebarShown:t,onArrive:n}){let r=(0,S.useRef)(null);return(0,S.useLayoutEffect)(()=>{let i=r.current,a=matchMedia(`(prefers-reduced-motion: reduce)`);t&&document.querySelector(`.task-list`)?.scrollTo({top:0,behavior:`instant`});let o=t?document.querySelector(`.task-row[data-task="${CSS.escape(e.id)}"]`):[...document.querySelectorAll(`.sidebar-toggle`)].find(e=>e.getBoundingClientRect().width>0);if(!i||!o||a.matches){n(e);return}let s=o.getBoundingClientRect(),c=e.source;if(!s.width||!c.width){n(e);return}let l=Math.min(c.width,360);i.style.width=`${l}px`;let u={x:c.left+c.width/2-l/2,y:c.top+Math.min(c.height/2,64)-32},d={x:s.left,y:s.top},f=s.width/l,p=s.height/64,m=Math.min(150,Math.abs(d.x-u.x)*.16+40),h=[0,.12,.35,.65,.85,1].map(e=>{let n=Math.max(0,(e-.12)/.88),r=u.x+(d.x-u.x)*n,i=Math.max(8,u.y+(d.y-u.y)*n-Math.sin(e*Math.PI)*m),a=n*n;return{offset:e,transform:`translate(${r}px, ${i}px) rotate(${-5*Math.sin(e*Math.PI)}deg) scale(${1+(f-1)*a}, ${1+(p-1)*a})`,opacity:t?1:1-n**5}}),g=!0,_=()=>{g&&(g=!1,n(e))},v=i.animate(h,{duration:1100,easing:`cubic-bezier(.4,0,.2,1)`,fill:`both`});return window.addEventListener(`resize`,_),a.addEventListener(`change`,_),v.finished.then(_,()=>{}),()=>{g=!1,v.cancel(),window.removeEventListener(`resize`,_),a.removeEventListener(`change`,_)}},[e,t,n]),(0,ot.createPortal)((0,C.jsxs)(`div`,{ref:r,className:`task-flight`,"aria-hidden":`true`,children:[(0,C.jsx)(`span`,{className:`task-flight-icon`,children:(0,C.jsx)(T,{name:`paper`,size:19})}),(0,C.jsx)(`span`,{className:`task-flight-title`,children:e.title}),(0,C.jsx)(T,{name:`arrowUp`,size:17})]}),document.body)}var Qg=new WeakMap;function $g(e){let t=e.getBoundingClientRect();return t.width>0&&t.height>0&&t.bottom>0&&t.top<innerHeight&&t.right>0&&t.left<innerWidth}function e_(){return[`library`,`pdf`].map(e=>document.querySelector(`[data-notes-home="${e}"]`)).find(e=>e&&$g(e))||null}function t_(e,t){clearTimeout(Qg.get(e)),e.classList.remove(`notes-received`),e.offsetWidth,e.dataset.received=`+${t}`,e.classList.add(`notes-received`),Qg.set(e,window.setTimeout(()=>{e.classList.remove(`notes-received`),delete e.dataset.received},1600))}function n_(e){let t=e_();if(!t||!e.length)return;if(matchMedia(`(prefers-reduced-motion: reduce)`).matches){t_(t,e.length);return}let n=t.getBoundingClientRect(),r=e.slice(0,5).flatMap((e,t)=>{let r=e.getBoundingClientRect();if(!r.width||!r.height)return[];let i=e.cloneNode(!0);i.classList.add(`note-flight`),i.setAttribute(`aria-hidden`,`true`),i.inert=!0,i.style.width=`${r.width}px`,i.style.height=`${r.height}px`,document.body.append(i);let a=Math.min(n.width/r.width,n.height/r.height),o={x:r.left,y:r.top},s={x:n.left+(n.width-r.width*a)/2,y:n.top+(n.height-r.height*a)/2},c=Math.min(110,Math.hypot(s.x-o.x,s.y-o.y)*.16+24),l=[0,.1,.3,.55,.8,1].map(e=>{let t=Math.max(0,(e-.1)/.9),n=t*t;return{offset:e,transform:`translate(${o.x+(s.x-o.x)*t}px, ${Math.max(4,o.y+(s.y-o.y)*t-Math.sin(t*Math.PI)*c)}px) rotate(${-4*Math.sin(t*Math.PI)}deg) scale(${1+(a-1)*n})`,opacity:1-.85*t**5}}),u=i.animate(l,{duration:680,delay:t*70,easing:`cubic-bezier(.4,0,.2,1)`,fill:`both`}),d=()=>i.remove();return u.finished.then(d,d),window.setTimeout(d,680+t*70+1e3),[u]});if(!r.length){t_(t,e.length);return}let i=()=>t_(t,e.length);r[0].finished.then(i,i)}function r_(e,t,n,r,i,a){let[o,s]=(0,S.useState)(()=>{let t=Number(D.getItem(e));return Number.isFinite(t)&&t>0?t:0}),c=(0,S.useRef)(null),l=(0,S.useRef)(null),[u,d]=(0,S.useState)({current:300,max:300}),f=()=>{l.current=null,document.body.classList.remove(`resizing`)};(0,S.useEffect)(()=>{o?D.setItem(e,String(o)):D.removeItem(e)},[e,o]),(0,S.useLayoutEffect)(()=>{let e=c.current?.parentElement,t=e?.querySelector(n);if(!i||!e||!t)return;let r=new ResizeObserver(()=>d({current:Math.round(t.getBoundingClientRect().width),max:Math.max(300,Math.floor(e.getBoundingClientRect().width-360))}));return r.observe(e),r.observe(t),()=>{r.disconnect(),f()}},[i,n]);let p=e=>Math.round(Math.max(300,Math.min(e,u.max))),m=()=>c.current?.parentElement?.querySelector(n)?.getBoundingClientRect().width??u.current,h=e=>{s(e),a?.()};return{style:o?{[t]:`${o}px`}:void 0,resizer:i&&(0,C.jsx)(`div`,{ref:c,className:`panel-resizer manuscript-resizer`,role:`separator`,"aria-orientation":`vertical`,"aria-label":r,"aria-valuenow":u.current,"aria-valuemin":300,"aria-valuemax":u.max,tabIndex:0,title:U(`Drag to resize · Double-click to reset`),onPointerDown:e=>{e.button!==0||l.current||(e.preventDefault(),e.currentTarget.focus(),l.current={x:e.clientX,width:m()},e.currentTarget.setPointerCapture(e.pointerId),document.body.classList.add(`resizing`))},onPointerMove:e=>{l.current&&h(p(l.current.width+l.current.x-e.clientX))},onPointerUp:e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),f()},onPointerCancel:f,onLostPointerCapture:f,onDoubleClick:()=>h(0),onKeyDown:e=>{if(e.key===`Enter`){e.preventDefault(),h(0);return}let t=m(),n=e.key===`ArrowLeft`?t+24:e.key===`ArrowRight`?t-24:e.key===`Home`?u.max:e.key===`End`?300:null;n!==null&&(e.preventDefault(),h(p(n)))}})}}var i_=(0,S.lazy)(()=>vr(()=>import(`./pdf-view-B2xQuHmI.js`).then(e=>({default:e.PdfView})),[])),a_=``,o_=()=>crypto.randomUUID?.()||Array.from(crypto.getRandomValues(new Uint8Array(20)),e=>e.toString(16).padStart(2,`0`)).join(``);async function $(e,t,n,r=t===void 0?15e3:3e4){let i=AbortSignal.timeout(r);try{let r=await fetch(`/api`+e,{method:t===void 0?`GET`:`POST`,headers:{"Content-Type":t instanceof File?`application/octet-stream`:`application/json`,"X-Papilot-Token":a_,...t instanceof File?{"X-Papilot-Filename":encodeURIComponent(t.name)}:{}},...t===void 0?{}:{body:t instanceof File?t:JSON.stringify(t)},signal:n?AbortSignal.any([n,i]):i});if(r.status===401&&(!e.startsWith(`/auth/`)||e===`/auth/logout`))throw Ig(!0),Error(U(`Sign in to continue.`));let a=await r.json();if(!r.ok)throw Error(a.error?we(a.error):U(`Request failed. Please try again.`));return a}catch(e){throw i.aborted?Error(U(t===void 0?`The connection is taking too long. Check your network and try again.`:`The request timed out and may still be processing. Check the task status before retrying.`)):e}}var s_=(e,t,n)=>$(`/projects/${e}/attachments`,t,n,12e4),c_=e=>$(`/runtime/latex`,void 0,e,3e4),l_=(e,t)=>$(`/diagnostics`,{projectId:e},t,6e4),u_=He,d_=e=>u_[e.agent||`codex`]||`Codex`,f_=e=>e.status===`reviewing`&&e.review?.round===null&&e.review.state!==`build_failed`&&!e.review.counts.pending,p_=()=>({idle:U(`Ready`),queued:U(`Queued`),waiting_input:U(`Needs your reply`),building:U(`Preparing task results`),reviewing:U(`Ready for review`),interrupted:U(`Paused`),failed:U(`Needs attention`),uncertain:U(`Check task status`),deleting:U(`Deleting task`)}),m_=[`running`,`waiting_input`,`queued`];function h_({task:e}){let t=f_(e),n=e.status===`reviewing`&&e.review?.state===`done`,r=Wh(e);return(0,C.jsxs)(`span`,{className:`status ${e.status}${n||t?` done`:``}`,children:[(0,C.jsx)(`i`,{}),r===`pushed`?U(`Committed and pushed`):r===`committed`?U(`Committed`):r===`applied`?U(`Applied to manuscript`):t?U(`Completed`):n?U(`Review complete`):e.status===`running`?U(`{agent} is working`,{agent:d_(e)}):p_()[e.status]||e.status]})}function g_(e){return new Date(e).toLocaleTimeString(Se(),{hour:`2-digit`,minute:`2-digit`})}function __(e){let t=Math.floor((Date.now()-e)/6e4);return t<1?U(`now`):t<60?U(`{n}m`,{n:t}):t<1440?U(`{n}h`,{n:Math.floor(t/60)}):t<10080?U(`{n}d`,{n:Math.floor(t/1440)}):new Date(e).toLocaleDateString(Se(),{month:`short`,day:`numeric`})}var v_=e=>Date.now()-e<6e4?U(`just now`):U(`{time} ago`,{time:__(e)}),y_=()=>window.matchMedia(`(pointer: coarse)`).matches;function b_(e){let[t,n]=(0,S.useState)(()=>window.matchMedia(e).matches);return(0,S.useEffect)(()=>{let t=window.matchMedia(e),r=()=>n(t.matches);return t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function x_({label:e,value:t,placeholder:n,onChange:r,onSubmit:i,readOnly:a,autoFocus:o,inputRef:s,footer:c,action:l,large:u,skills:d,skill:f,onSkill:p,attachments:m,upload:h,filesDisabled:g,imageHint:_}){let v=(0,S.useRef)(null),y=s||v,b=(0,S.useRef)(null),x=(0,S.useRef)(0),[w,T]=(0,S.useState)(!1),E=!(!m||!h||a||g);function D(e){E&&e.length&&(m.add(e,h),y.current?.focus())}let O=(0,S.useId)(),[k,A]=(0,S.useState)(null),[j,M]=(0,S.useState)(0),N=d?.length&&p&&!a?Ct(t):null,P=N!==null&&k!==t,F=P?wt(d,N):[];(0,S.useEffect)(()=>M(0),[N]),(0,S.useEffect)(()=>{k!==null&&t!==k&&A(null)},[t,k]),(0,S.useLayoutEffect)(()=>{let e=y.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[y,t]),(0,S.useEffect)(()=>{o&&!y_()&&y.current?.focus()},[o,y]);function I(e){p?.(e),r(``),y.current?.focus()}function L(e){if(P&&!e.nativeEvent.isComposing&&e.keyCode!==229){if((e.key===`ArrowDown`||e.key===`ArrowUp`)&&F.length){e.preventDefault(),M(t=>(t+(e.key===`ArrowDown`?1:F.length-1))%F.length);return}if((e.key===`Enter`||e.key===`Tab`)&&!e.shiftKey&&F.length){e.preventDefault(),I(F[Math.min(j,F.length-1)]);return}if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),A(t);return}}e.key===`Backspace`&&f&&p&&!t&&!a?(e.preventDefault(),p(null)):Xe(e.nativeEvent,y_())&&(e.preventDefault(),i())}return(0,C.jsxs)(`form`,{className:`composer`+(u?` large`:``)+(w?` dragging`:``),onDragEnter:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),E&&++x.current===1&&T(!0))},onDragOver:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=E?`copy`:`none`)},onDragLeave:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),--x.current<=0&&(x.current=0,T(!1)))},onDrop:e=>{e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),x.current=0,T(!1),D(Array.from(e.dataTransfer.files)))},onPaste:e=>{let n=Array.from(e.clipboardData.files);if(n.length){e.preventDefault(),D(n);let i=e.clipboardData.getData(`text/plain`);if(E&&i&&y.current){let e=y.current;r(t.slice(0,e.selectionStart)+i+t.slice(e.selectionEnd))}}},onSubmit:e=>{e.preventDefault(),i()},onPointerDown:e=>{e.target===e.currentTarget&&(e.preventDefault(),y.current?.focus())},children:[m&&h&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`input`,{ref:b,type:`file`,multiple:!0,hidden:!0,"aria-label":U(`Choose attachments`),disabled:!E,onChange:e=>{D(Array.from(e.target.files||[])),e.target.value=``}}),(0,C.jsx)(Ft,{draft:m,upload:h,discard:e=>{$(`/projects/${e.projectId}/attachments/${e.id}/discard`,{}).catch(()=>{})},disabled:a||g})]}),w&&(0,C.jsx)(`div`,{className:`attachment-drop-hint`,children:U(`Drop files to attach`)}),_&&(0,C.jsx)(`p`,{className:`attachment-agent-hint`,children:U(`Antigravity opens images through its file tools. For direct image input, choose Codex or Claude.`)}),P&&(0,C.jsx)(Tt,{id:O,skills:F,active:j,onActive:M,onPick:I}),f&&(0,C.jsx)(`div`,{className:`composer-skill`,children:(0,C.jsx)(Et,{skill:f,onRemove:p&&!a?()=>{p(null),y.current?.focus()}:void 0})}),(0,C.jsx)(`textarea`,{ref:y,rows:1,"aria-label":e,maxLength:2e4,placeholder:f?f.source!==`builtin`&&f.hint||U(`Details (optional)`):n,value:t,readOnly:a,onChange:e=>r(e.target.value),onKeyDown:L,...p&&d?.length?{"aria-autocomplete":`list`,"aria-controls":P?O:void 0,"aria-activedescendant":P&&F.length?`${O}-${Math.min(j,F.length-1)}`:void 0}:{}}),(0,C.jsxs)(`div`,{className:`composer-footer`,children:[typeof c==`function`?c(()=>b.current?.click()):c,l]})]})}function S_({request:e,agent:t,answerDrafts:n,onDone:r}){let[i,a]=(0,S.useState)(()=>n.get(e.id)||{});function o(t){n.set(e.id,t),a(t)}let[s,c]=(0,S.useState)(!1),[l,u]=(0,S.useState)(``),d=e.method.endsWith(`requestUserInput`)&&e.params.questions||[];async function f(t){c(!0),u(``);try{await $(`/requests/`+e.id,{decision:t,answers:i}),n.delete(e.id),r()}catch(e){u(e.message)}finally{c(!1)}}return(0,C.jsxs)(`div`,{className:`request-card`,children:[(0,C.jsxs)(`h3`,{children:[(0,C.jsx)(T,{name:d.length?`chat`:`alert`,size:16}),d.length?U(`{agent} needs your input`,{agent:t}):U(`Approve this action`)]}),d.map(e=>(0,C.jsxs)(`fieldset`,{className:`question`,children:[(0,C.jsx)(`legend`,{children:e.question||e.header}),e.options?.length>0&&(0,C.jsx)(`div`,{className:`answer-options`,children:e.options.map(t=>(0,C.jsxs)(`button`,{type:`button`,disabled:s,"aria-pressed":i[e.id]===t.label,className:i[e.id]===t.label?`selected`:``,onClick:()=>o({...i,[e.id]:t.label}),children:[t.label,t.description&&(0,C.jsx)(`small`,{children:t.description})]},t.label))}),!(e.isOther===!1&&e.options?.length>0)&&(0,C.jsx)(`input`,{disabled:s,"aria-label":e.question||e.header,placeholder:U(`Or type your own answer`),value:i[e.id]||``,onChange:t=>o({...i,[e.id]:t.target.value})})]},e.id)),!d.length&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{children:e.params.reason||U(`{agent} is requesting permission for this action.`,{agent:t})}),(0,C.jsx)(`pre`,{children:e.params.command||(e.params.permissions?JSON.stringify(e.params.permissions,null,2):e.params.grantRoot||U(`Apply file changes`))})]}),l&&(0,C.jsx)(`p`,{className:`inline-error`,role:`alert`,children:l}),(0,C.jsxs)(`div`,{className:`button-row`,children:[!d.length&&(0,C.jsx)(`button`,{disabled:s,className:`button secondary`,onClick:()=>void f(`decline`),children:U(`Decline`)}),(0,C.jsx)(`button`,{disabled:s||d.some(e=>!i[e.id]?.trim()),className:`button primary`,onClick:()=>void f(d.length?void 0:`accept`),children:s?U(`Submitting…`):d.length?U(`Reply to {agent}`,{agent:t}):U(`Allow this action`)})]})]})}function C_({text:e}){let[t,n]=(0,S.useState)(!1);(0,S.useEffect)(()=>{if(!t)return;let e=setTimeout(()=>n(!1),1600);return()=>clearTimeout(e)},[t]);async function r(){try{await navigator.clipboard.writeText(e)}catch{let t=document.createElement(`textarea`);t.value=e,t.readOnly=!0,t.style.position=`fixed`,t.style.opacity=`0`,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove()}n(!0)}return(0,C.jsxs)(`button`,{type:`button`,className:`message-action`,"aria-label":U(t?`Copied`:`Copy message`),onClick:()=>void r(),children:[(0,C.jsx)(T,{name:t?`check`:`copy`,size:14}),(0,C.jsx)(`span`,{children:U(t?`Copied`:`Copy`)})]})}var w_=e=>e.match(/^\/bin\/(?:ba|z)?sh -lc (['"])([\s\S]*)\1$/)?.[2]??e,T_=(e,t)=>t&&e.startsWith(t+`/`)?e.slice(t.length+1):e,E_=(e,t)=>e.text.split(`
258
258
  `).filter(Boolean).map(e=>T_(e,t)),D_=e=>e.status===`inProgress`?`running`:e.status&&e.status!==`completed`?`failed`:``,O_=(0,S.createContext)(null);function k_(e){let t=(0,S.useContext)(O_),n=!t||(e?e.id===t.id:t.role===`owner`);return{mine:n,name:n?``:e?.name||t?.owner||``}}var A_=(e,t)=>e.mine?U(`You, {time}`,{time:g_(t)}):U(`{name}, {time}`,{name:e.name,time:g_(t)}),j_=({sender:e})=>e.mine?null:(0,C.jsx)(`div`,{className:`message-author`,children:e.name});function M_({item:e,notes:t}){let n=k_(e.meta?.author),r=Sn(),i=(t,n)=>(0,C.jsxs)(`li`,{"data-note-result":`${e.id}:${n}`,tabIndex:-1,className:r?.selected===`${e.id}:${n}`?`linked-note-selected`:``,children:[(0,C.jsxs)(`span`,{className:`sent-note-where`,children:[(0,C.jsx)(`span`,{className:`sent-note-number`,"aria-hidden":`true`,children:n+1}),(0,C.jsx)(`span`,{className:`sent-note-location`,children:Lt(t.where)})]}),t.quote?(0,C.jsx)(`blockquote`,{children:t.quote}):(0,C.jsx)(`span`,{className:`sent-note-region`,children:U(`Marked region`)}),t.comment&&(0,C.jsx)(`p`,{children:t.comment}),(0,C.jsx)(Tn,{noteKey:`${e.id}:${n}`})]},n);return(0,C.jsxs)(`article`,{className:`message user notes-message`,"aria-label":A_(n,e.createdAt),children:[(0,C.jsx)(j_,{sender:n}),(0,C.jsxs)(`div`,{className:`message-body`,title:g_(e.createdAt),children:[e.meta?.skill&&(0,C.jsx)(Et,{skill:e.meta.skill}),e.meta?.notes&&e.text&&(0,C.jsx)(`p`,{className:`notes-request`,children:e.text}),(0,C.jsxs)(`div`,{className:`sent-notes-head`,children:[(0,C.jsx)(T,{name:`notes`,size:14}),t.some(e=>e.group)?U(`PDF annotations`):Te(t.length,`Note on the PDF`,`{n} notes on the PDF`)]}),_(t).map(({group:t,entries:n})=>(0,C.jsxs)(je,{group:t,count:n.length,active:n.some(({index:t})=>r?.selected===`${e.id}:${t}`),children:[e.meta?.groupInstructions?.[t]&&(0,C.jsx)(`p`,{className:`group-instruction-sent`,children:e.meta.groupInstructions[t]}),(0,C.jsx)(`ol`,{className:`sent-notes`,children:n.map(({note:e,index:t})=>i(e,t))})]},t)),(0,C.jsx)(`ol`,{className:`sent-notes`,children:t.map((e,t)=>!e.group&&i(e,t))}),(0,C.jsx)(It,{files:e.meta?.attachments})]})]})}function N_({feedback:e}){let t=[e.accepted&&[`accepted`,U(`{n} accepted`,{n:e.accepted})],e.rejected&&[`rejected`,U(`{n} rejected`,{n:e.rejected})],e.comments.length&&[`commented`,Te(e.comments.length,`{n} comment`,`{n} comments`)],e.undone&&[`undone`,U(`{n} undone`,{n:e.undone})],e.buildError&&[`failed`,U(`build error`)]].filter(Boolean);return(0,C.jsxs)(C.Fragment,{children:[t.length>0&&(0,C.jsx)(`div`,{className:`feedback-counts`,children:t.map(([e,t])=>(0,C.jsx)(`span`,{className:e,children:t},e))}),e.comments.length>0&&(0,C.jsx)(`ol`,{className:`sent-notes`,children:e.comments.map((e,t)=>(0,C.jsxs)(`li`,{children:[(0,C.jsx)(`span`,{className:`sent-note-where`,children:Lt(e.where)}),(0,C.jsx)(`p`,{children:e.text})]},t))})]})}function P_({item:e,agent:t}){let n=k_(e.meta?.author),r=e.meta?.notes||pt(e.text);if(r)return(0,C.jsx)(M_,{item:e,notes:r});let{skill:i,feedback:a,sendsFeedback:o,build:s}=e.meta||{};return s?(0,C.jsx)(`article`,{className:`message user notes-message build-message`,"aria-label":U(`Papilot sent the build error to {agent}, {time}`,{agent:t,time:g_(e.createdAt)}),children:(0,C.jsxs)(`div`,{className:`message-body`,title:g_(e.createdAt),children:[(0,C.jsxs)(`div`,{className:`sent-notes-head`,children:[(0,C.jsx)(T,{name:`alert`,size:14}),U(`Build failed · sent to {agent}`,{agent:t})]}),(0,C.jsx)(`p`,{className:`build-error`,children:[s.error,...s.details].join(`
259
259
  `)})]})}):o||Ge(e.text)?(0,C.jsxs)(`article`,{className:`message user notes-message`,"aria-label":n.mine?U(`You sent review feedback, {time}`,{time:g_(e.createdAt)}):U(`{name} sent review feedback, {time}`,{name:n.name,time:g_(e.createdAt)}),children:[(0,C.jsx)(j_,{sender:n}),(0,C.jsxs)(`div`,{className:`message-body`,title:g_(e.createdAt),children:[(0,C.jsxs)(`div`,{className:`sent-notes-head`,children:[(0,C.jsx)(T,{name:`paper`,size:14}),U(`Review feedback`)]}),a&&(0,C.jsx)(N_,{feedback:a})]})]}):(0,C.jsxs)(`article`,{className:`message user`,"aria-label":A_(n,e.createdAt),children:[(0,C.jsx)(j_,{sender:n}),(0,C.jsxs)(`div`,{className:`message-body`,title:g_(e.createdAt),children:[i&&(0,C.jsx)(Et,{skill:i}),i&&e.text?`
260
260
  `:``,e.text,(0,C.jsx)(It,{files:e.meta?.attachments}),a&&(0,C.jsxs)(`details`,{className:`feedback-attachment`,children:[(0,C.jsxs)(`summary`,{children:[(0,C.jsx)(T,{name:`paper`,size:13}),U(`With review feedback`)]}),(0,C.jsx)(N_,{feedback:a})]})]})]})}function F_({item:e,agent:t,root:n}){if(e.type===`user`)return(0,C.jsx)(P_,{item:e,agent:t});if(e.type===`assistant`)return(0,C.jsxs)(`article`,{className:`message assistant`,"aria-label":`${t}, ${g_(e.createdAt)}`,children:[(0,C.jsx)(`div`,{className:`message-body markdown`,children:(0,C.jsx)(bh,{text:e.text})}),(0,C.jsxs)(`div`,{className:`message-actions`,children:[(0,C.jsx)(C_,{text:e.text}),(0,C.jsx)(`time`,{dateTime:new Date(e.createdAt).toISOString(),children:g_(e.createdAt)})]})]});let r=e.type===`files`?E_(e,n):[],i=e.type===`command`?w_(e.text)||U(`Run command`):e.type===`files`?r.length===1?U(`Edited {file}`,{file:r[0]}):U(`Edited {n} files`,{n:r.length}):e.type===`pdf`?e.text?U(`Viewed the PDF: {places}`,{places:e.text}):U(`Viewed the PDF`):e.text||U(`Run tool`),a=e.type===`files`?r.join(`