@maudecode/kanvil 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/apps/server/.env.example +19 -0
  2. package/apps/server/dist/auth-Cuo7ECLh.mjs +7770 -0
  3. package/apps/server/dist/client.mjs +884 -0
  4. package/apps/server/dist/{config-CbNqtJEj.mjs → config-DtNfVSnB.mjs} +28 -133
  5. package/apps/server/dist/index.mjs +2503 -295
  6. package/apps/server/dist/instance-CCeXRJ6m.mjs +133 -0
  7. package/apps/server/dist/migrate.mjs +1 -1
  8. package/apps/server/dist/recover.mjs +5 -4
  9. package/apps/server/dist/src-tQ82UI8k.mjs +4818 -0
  10. package/apps/server/drizzle/0014_inbox_dismissal.sql +1 -0
  11. package/apps/server/drizzle/0015_notification_categories.sql +14 -0
  12. package/apps/server/drizzle/0016_ticket_resources.sql +19 -0
  13. package/apps/server/drizzle/0017_project_backgrounds.sql +3 -0
  14. package/apps/server/drizzle/0018_delivery_outbox.sql +65 -0
  15. package/apps/server/drizzle/0019_retire_push_deliveries.sql +1 -0
  16. package/apps/server/drizzle/0020_calendar_feeds.sql +16 -0
  17. package/apps/server/drizzle/0021_staged_uploads.sql +14 -0
  18. package/apps/server/drizzle/0022_manual_order.sql +6 -0
  19. package/apps/server/drizzle/0023_workspace_invitations.sql +22 -0
  20. package/apps/server/drizzle/0024_workflow_states.sql +39 -0
  21. package/apps/server/drizzle/0025_workspace_labels.sql +10 -0
  22. package/apps/server/drizzle/0026_public_read.sql +1 -0
  23. package/apps/server/drizzle/0027_custom_fields.sql +16 -0
  24. package/apps/server/drizzle/0028_project_lifecycle.sql +11 -0
  25. package/apps/server/drizzle/0029_ticket_relocation.sql +16 -0
  26. package/apps/server/drizzle/0030_repository_connections.sql +39 -0
  27. package/apps/server/drizzle/0031_repository_providers.sql +3 -0
  28. package/apps/server/drizzle/0032_workspace_ownership.sql +11 -0
  29. package/apps/server/drizzle/0033_import_runs.sql +38 -0
  30. package/apps/server/drizzle/0034_issue_sync.sql +38 -0
  31. package/apps/server/drizzle/0035_account_deletion.sql +9 -0
  32. package/apps/server/drizzle/0036_workspace_roles.sql +16 -0
  33. package/apps/server/drizzle/0037_email_code_owner.sql +14 -0
  34. package/apps/server/drizzle/0038_time_entries.sql +19 -0
  35. package/apps/server/drizzle/meta/0014_snapshot.json +4246 -0
  36. package/apps/server/drizzle/meta/0015_snapshot.json +4297 -0
  37. package/apps/server/drizzle/meta/0016_snapshot.json +4443 -0
  38. package/apps/server/drizzle/meta/0017_snapshot.json +4468 -0
  39. package/apps/server/drizzle/meta/0018_snapshot.json +4948 -0
  40. package/apps/server/drizzle/meta/0019_snapshot.json +4826 -0
  41. package/apps/server/drizzle/meta/0020_snapshot.json +4947 -0
  42. package/apps/server/drizzle/meta/0021_snapshot.json +5059 -0
  43. package/apps/server/drizzle/meta/0022_snapshot.json +5094 -0
  44. package/apps/server/drizzle/meta/0023_snapshot.json +5267 -0
  45. package/apps/server/drizzle/meta/0024_snapshot.json +5405 -0
  46. package/apps/server/drizzle/meta/0025_snapshot.json +5474 -0
  47. package/apps/server/drizzle/meta/0026_snapshot.json +5481 -0
  48. package/apps/server/drizzle/meta/0027_snapshot.json +5605 -0
  49. package/apps/server/drizzle/meta/0028_snapshot.json +5699 -0
  50. package/apps/server/drizzle/meta/0029_snapshot.json +5809 -0
  51. package/apps/server/drizzle/meta/0030_snapshot.json +6066 -0
  52. package/apps/server/drizzle/meta/0031_snapshot.json +6074 -0
  53. package/apps/server/drizzle/meta/0032_snapshot.json +6100 -0
  54. package/apps/server/drizzle/meta/0033_snapshot.json +6406 -0
  55. package/apps/server/drizzle/meta/0034_snapshot.json +6698 -0
  56. package/apps/server/drizzle/meta/0035_snapshot.json +6704 -0
  57. package/apps/server/drizzle/meta/0036_snapshot.json +6825 -0
  58. package/apps/server/drizzle/meta/0037_snapshot.json +6825 -0
  59. package/apps/server/drizzle/meta/0038_snapshot.json +6998 -0
  60. package/apps/server/drizzle/meta/_journal.json +175 -0
  61. package/apps/web/dist/assets/CompositeItem-DgnfVvrF.js +1 -0
  62. package/apps/web/dist/assets/Trans-f2VYVS9z.js +1 -0
  63. package/apps/web/dist/assets/abnfDiagram-WEYOIA3C-DTOx8N4B.js +1 -0
  64. package/apps/web/dist/assets/admin-settings-DBZL4siY.js +1 -0
  65. package/apps/web/dist/assets/arc-Y1ARJVZ4.js +1 -0
  66. package/apps/web/dist/assets/architecture-WOLXFQ4H-DlC3p5z3.js +1 -0
  67. package/apps/web/dist/assets/architectureDiagram-ZHVYKT53-DooN3Z58.js +36 -0
  68. package/apps/web/dist/assets/archive-restore-CGuLxoHC.js +1 -0
  69. package/apps/web/dist/assets/array-BifhSqXX.js +1 -0
  70. package/apps/web/dist/assets/az-AZ-DesqXNg5.js +1 -0
  71. package/apps/web/dist/assets/az-BE5iqNIE.js +1 -0
  72. package/apps/web/dist/assets/az-D-kj4lmf.js +1 -0
  73. package/apps/web/dist/assets/blockDiagram-RJAE7QA3-CD5AgY4U.js +140 -0
  74. package/apps/web/dist/assets/c4Diagram-XDPPPE54-CTDOcLuN.js +38 -0
  75. package/apps/web/dist/assets/channel-BhHvU4I-.js +1 -0
  76. package/apps/web/dist/assets/chunk-2E7WHVMD-D9qnBqTV.js +88 -0
  77. package/apps/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  78. package/apps/web/dist/assets/chunk-4EMNKR2T-Kz5JiJ85.js +1 -0
  79. package/apps/web/dist/assets/chunk-55XCU76K-DnKiFpYM.js +1 -0
  80. package/apps/web/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  81. package/apps/web/dist/assets/chunk-7S6XSTFO-CpdNd6Ke.js +2 -0
  82. package/apps/web/dist/assets/chunk-AQDTSKZB-CpyuSWt8.js +72 -0
  83. package/apps/web/dist/assets/chunk-DSNLSHJZ-DTC3y9rb.js +129 -0
  84. package/apps/web/dist/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  85. package/apps/web/dist/assets/chunk-HAGFOTED-Bv8PrMYK.js +62 -0
  86. package/apps/web/dist/assets/chunk-HNE4Q36P-CDDJ_yRa.js +1 -0
  87. package/apps/web/dist/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  88. package/apps/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  89. package/apps/web/dist/assets/chunk-NGNAAXSQ-C2Wy9Xmz.js +136 -0
  90. package/apps/web/dist/assets/chunk-NQOKRVIF-lNtnsWHS.js +213 -0
  91. package/apps/web/dist/assets/chunk-UHW7PFBP-D79ptlTN.js +1 -0
  92. package/apps/web/dist/assets/chunk-VQ5W62QI-B8hWFCiM.js +1 -0
  93. package/apps/web/dist/assets/chunk-WQQL4CDK-DAGuWzS3.js +10 -0
  94. package/apps/web/dist/assets/chunk-XXDRQBXY-CnbRkih_.js +1 -0
  95. package/apps/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  96. package/apps/web/dist/assets/chunk-YZO67HFG-C0ptzlKO.js +1 -0
  97. package/apps/web/dist/assets/chunk-ZAUX2LTX-ah8U5xoJ.js +1 -0
  98. package/apps/web/dist/assets/chunk-ZCHMQSOR-DYqATOIZ.js +2 -0
  99. package/apps/web/dist/assets/classDiagram-v2-4MYWR3UA-DYytA-ua.js +217 -0
  100. package/apps/web/dist/assets/core-jXc03Sty.js +1 -0
  101. package/apps/web/dist/assets/corner-left-up-BCro--Gl.js +1 -0
  102. package/apps/web/dist/assets/cose-bilkent-JH36ORCC-lWVj4msc.js +1 -0
  103. package/apps/web/dist/assets/cynefin-EF2NZ3EQ-Xy6e6m1E.js +1 -0
  104. package/apps/web/dist/assets/cynefinDiagram-WF24UDRP-BYarZJSm.js +62 -0
  105. package/apps/web/dist/assets/cytoscape.esm-BegBNzOV.js +321 -0
  106. package/apps/web/dist/assets/dagre-NK4GIZVX-WLvvUY1o.js +4 -0
  107. package/apps/web/dist/assets/de-DAv77-wP.js +1 -0
  108. package/apps/web/dist/assets/de-DE-BIGY9SNm.js +1 -0
  109. package/apps/web/dist/assets/de-DLGjUGf_.js +1 -0
  110. package/apps/web/dist/assets/default-BgvtI7HK.js +56 -0
  111. package/apps/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  112. package/apps/web/dist/assets/delivery-settings-CZOtb4X8.js +1 -0
  113. package/apps/web/dist/assets/diagram-CBK3MWTC-D6PtxkLg.js +24 -0
  114. package/apps/web/dist/assets/diagram-I5XIIV2D-DTOKQwIY.js +24 -0
  115. package/apps/web/dist/assets/diagram-ODIL2UCW-BmERt0Xu.js +30 -0
  116. package/apps/web/dist/assets/diagram-PFBEJUXE-WDUe08eD.js +3 -0
  117. package/apps/web/dist/assets/diagram-RJA3I4VV-B2K-NLGG.js +41 -0
  118. package/apps/web/dist/assets/diagram-TYUNFSNR-BLf7PpV7.js +200 -0
  119. package/apps/web/dist/assets/dist-CumnGVmJ.js +1 -0
  120. package/apps/web/dist/assets/ebnfDiagram-V4P3TTPT-DwBUQs9p.js +1 -0
  121. package/apps/web/dist/assets/el-CG6Xy42v.js +1 -0
  122. package/apps/web/dist/assets/el-D2ypddWn.js +1 -0
  123. package/apps/web/dist/assets/el-GR-D2TjImt0.js +1 -0
  124. package/apps/web/dist/assets/elk-QONTBCTQ-AuT8PinL.js +27 -0
  125. package/apps/web/dist/assets/ellipsis-ZJM26JNS.js +1 -0
  126. package/apps/web/dist/assets/en-EnSRisMz.js +1 -0
  127. package/apps/web/dist/assets/en-US-DKYSujv3.js +1 -0
  128. package/apps/web/dist/assets/erDiagram-KYQIGQAA-h--u4Eo6.js +99 -0
  129. package/apps/web/dist/assets/es-B_49BMhR.js +1 -0
  130. package/apps/web/dist/assets/es-Bbj5WuMM.js +1 -0
  131. package/apps/web/dist/assets/es-ES-C_fRqLGU.js +1 -0
  132. package/apps/web/dist/assets/eventmodeling-K75KTNOO-CW4hDt1j.js +1 -0
  133. package/apps/web/dist/assets/flowDiagram-IUGLLWBU-BGUscnNP.js +1 -0
  134. package/apps/web/dist/assets/forms-C3pNy-qY.js +1 -0
  135. package/apps/web/dist/assets/fr-B-WmPGZD.js +1 -0
  136. package/apps/web/dist/assets/fr-CjuIKc1o.js +1 -0
  137. package/apps/web/dist/assets/fr-FR-_tnQsn4j.js +1 -0
  138. package/apps/web/dist/assets/ganttDiagram-R7GPNTJY-CB3lsQvj.js +292 -0
  139. package/apps/web/dist/assets/gitGraph-VSP46ZUC-Hu-kvdCR.js +1 -0
  140. package/apps/web/dist/assets/gitGraphDiagram-PDYL7XHY-DCuY3C1Q.js +106 -0
  141. package/apps/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  142. package/apps/web/dist/assets/hi-BVVrZ-zZ.js +1 -0
  143. package/apps/web/dist/assets/hi-DvoDcUpL.js +1 -0
  144. package/apps/web/dist/assets/hi-IN-CcmFsZYy.js +1 -0
  145. package/apps/web/dist/assets/highlight-CKyEM4jx.js +5 -0
  146. package/apps/web/dist/assets/id-BhNWOQnp.js +1 -0
  147. package/apps/web/dist/assets/id-CPASBZ2r.js +1 -0
  148. package/apps/web/dist/assets/id-ID-C59tC61D.js +1 -0
  149. package/apps/web/dist/assets/index-BIuqxnJn.js +17 -0
  150. package/apps/web/dist/assets/index-DyQNFS69.css +2 -0
  151. package/apps/web/dist/assets/info-OHQRW6UA-Cc8VwTsk.js +1 -0
  152. package/apps/web/dist/assets/infoDiagram-MVDRKAX5-KIMOx55J.js +2 -0
  153. package/apps/web/dist/assets/init-C-OQMol4.js +1 -0
  154. package/apps/web/dist/assets/invitations-D5unaga2.js +1 -0
  155. package/apps/web/dist/assets/isSameWeek-2ftYGvBT.js +1 -0
  156. package/apps/web/dist/assets/ishikawaDiagram-HPEHV2GE-CAou726L.js +70 -0
  157. package/apps/web/dist/assets/it-Cav3_-xd.js +1 -0
  158. package/apps/web/dist/assets/it-Cd7u97Jd.js +1 -0
  159. package/apps/web/dist/assets/it-IT-BAP5O3gK.js +1 -0
  160. package/apps/web/dist/assets/item-Cj8xpMLk.js +1 -0
  161. package/apps/web/dist/assets/ja-DTmZE0Qe.js +1 -0
  162. package/apps/web/dist/assets/ja-JP-vQa7mEdh.js +1 -0
  163. package/apps/web/dist/assets/ja-LkOrjegp.js +1 -0
  164. package/apps/web/dist/assets/journeyDiagram-BOSHW7O7-YbJuPYDH.js +139 -0
  165. package/apps/web/dist/assets/kanban-definition-FNSA4HC5-nuRnm9y8.js +89 -0
  166. package/apps/web/dist/assets/katex-B_JcIwqj.js +257 -0
  167. package/apps/web/dist/assets/ko-BuYCMOUj.js +1 -0
  168. package/apps/web/dist/assets/ko-DPpXw683.js +1 -0
  169. package/apps/web/dist/assets/ko-KR-CXlpmX0-.js +1 -0
  170. package/apps/web/dist/assets/label-settings-B89Ehf78.js +1 -0
  171. package/apps/web/dist/assets/line-WsxZYwZr.js +1 -0
  172. package/apps/web/dist/assets/linear-C9iwaMOi.js +1 -0
  173. package/apps/web/dist/assets/lucide-DIlszs-T.js +1 -0
  174. package/apps/web/dist/assets/markdown-blocks-DSEA68s5.js +2 -0
  175. package/apps/web/dist/assets/member-directory-48yD01yN.js +1 -0
  176. package/apps/web/dist/assets/mermaid-parser.core-B5c-1CnP.js +7 -0
  177. package/apps/web/dist/assets/mermaid.core-vGVkgzA3.js +44 -0
  178. package/apps/web/dist/assets/mindmap-definition-6OY57UG3-uooJyUak.js +98 -0
  179. package/apps/web/dist/assets/mk-BZ2Rg2sU.js +1 -0
  180. package/apps/web/dist/assets/mk-CkaQRpqe.js +1 -0
  181. package/apps/web/dist/assets/mk-MK-BU5BLpXM.js +1 -0
  182. package/apps/web/dist/assets/nl-BtnPzRih.js +1 -0
  183. package/apps/web/dist/assets/nl-DiEjqOA8.js +1 -0
  184. package/apps/web/dist/assets/nl-NL-2aSpdZkg.js +1 -0
  185. package/apps/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  186. package/apps/web/dist/assets/packet-JDAUHWVQ-WJpqlH1d.js +1 -0
  187. package/apps/web/dist/assets/path-fybaL0A-.js +1 -0
  188. package/apps/web/dist/assets/pegDiagram-ECIUJNBX-CUvajD93.js +1 -0
  189. package/apps/web/dist/assets/pie-XZMESJXO-DvandPby.js +1 -0
  190. package/apps/web/dist/assets/pieDiagram-GNMPY74T-CqxeyIaP.js +39 -0
  191. package/apps/web/dist/assets/pl-Beg8hEdK.js +1 -0
  192. package/apps/web/dist/assets/pl-CauoMfkf.js +1 -0
  193. package/apps/web/dist/assets/pl-PL-C5Wvnv7f.js +1 -0
  194. package/apps/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  195. package/apps/web/dist/assets/project-lifecycle-CIAMJ-SX.js +1 -0
  196. package/apps/web/dist/assets/project-settings-C7lolDSl.js +1 -0
  197. package/apps/web/dist/assets/pt-BR-B4VZ35N_.js +1 -0
  198. package/apps/web/dist/assets/pt-BR-BpOhwoDW.js +1 -0
  199. package/apps/web/dist/assets/pt-BR-CVvI-ZB7.js +1 -0
  200. package/apps/web/dist/assets/public-project-DvvfaUd2.js +1 -0
  201. package/apps/web/dist/assets/quadrantDiagram-D57K4MC3-DFjNmaZc.js +7 -0
  202. package/apps/web/dist/assets/radar-ABXABTNO-CJhZF9j2.js +1 -0
  203. package/apps/web/dist/assets/railroad-I3PHUGI6-DZC10oBD.js +1 -0
  204. package/apps/web/dist/assets/railroad-abnf-LNEFI6M7-BUJF2n6u.js +1 -0
  205. package/apps/web/dist/assets/railroad-ebnf-DWYD2UWJ-CG7oB02K.js +1 -0
  206. package/apps/web/dist/assets/railroad-peg-JR7BVNR7-DBCZuZJY.js +1 -0
  207. package/apps/web/dist/assets/railroadDiagram-Y72NRBL7-CvN3poBq.js +1 -0
  208. package/apps/web/dist/assets/requirementDiagram-EQYSW5RA-BEItNirc.js +84 -0
  209. package/apps/web/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  210. package/apps/web/dist/assets/rotate-ccw-GjVJPDML.js +1 -0
  211. package/apps/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  212. package/apps/web/dist/assets/ru-DOaRp00B.js +1 -0
  213. package/apps/web/dist/assets/ru-DjVJVHzv.js +1 -0
  214. package/apps/web/dist/assets/ru-RU-C7UUdGIh.js +1 -0
  215. package/apps/web/dist/assets/sankeyDiagram-SY24JHO5-DluLIjax.js +40 -0
  216. package/apps/web/dist/assets/search-ZaQmVnj1.js +85 -0
  217. package/apps/web/dist/assets/send-Dr9bXHhf.js +1 -0
  218. package/apps/web/dist/assets/sequenceDiagram-BLEHNHQU-ZcwnsNxK.js +169 -0
  219. package/apps/web/dist/assets/settings-DXvrVvyS.js +1 -0
  220. package/apps/web/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  221. package/apps/web/dist/assets/sliders-horizontal-C1t_zA7D.js +1 -0
  222. package/apps/web/dist/assets/src-BWF7jMDv.js +1 -0
  223. package/apps/web/dist/assets/stateDiagram-v2-A6IESKWZ-DD6vH3rM.js +291 -0
  224. package/apps/web/dist/assets/swimlanes-B3ENRKFQ-pX_qyO4X.js +1 -0
  225. package/apps/web/dist/assets/swimlanesDiagram-AYQRV4AK-CeVsLUsg.js +8 -0
  226. package/apps/web/dist/assets/switch-D-WTDajm.js +1 -0
  227. package/apps/web/dist/assets/table-BaRMFP84.js +1 -0
  228. package/apps/web/dist/assets/ticket-detail-CFJI4qoK.js +2 -0
  229. package/apps/web/dist/assets/ticket-editor-DL3nHG_q.js +2 -0
  230. package/apps/web/dist/assets/ticket-list-CDkweYGS.js +5 -0
  231. package/apps/web/dist/assets/ticket-list-controls-CmTgFQQ-.js +1 -0
  232. package/apps/web/dist/assets/timeline-definition-JXYKGLGB-DLBjAxKq.js +120 -0
  233. package/apps/web/dist/assets/toDate-B3HYxwtT.js +1 -0
  234. package/apps/web/dist/assets/tr-Ckc4TA71.js +1 -0
  235. package/apps/web/dist/assets/tr-DeYojjLx.js +1 -0
  236. package/apps/web/dist/assets/tr-TR-VVsL3uMp.js +1 -0
  237. package/apps/web/dist/assets/treeView-D4JQ5SDB-DsJ44q_q.js +1 -0
  238. package/apps/web/dist/assets/treemap-SAJKECNS-BmXoBpVL.js +1 -0
  239. package/apps/web/dist/assets/uk-B4ZvJ8xG.js +1 -0
  240. package/apps/web/dist/assets/uk-DACrfgCP.js +1 -0
  241. package/apps/web/dist/assets/uk-UA-DRpCbOps.js +1 -0
  242. package/apps/web/dist/assets/upload-BwGa8shS.js +1 -0
  243. package/apps/web/dist/assets/useQueries-sQEHjB0a.js +1 -0
  244. package/apps/web/dist/assets/usecaseDiagram-WPOLBNNX-eU2tr2si.js +328 -0
  245. package/apps/web/dist/assets/vennDiagram-Q3Y3IDCW-CoVTWGNg.js +34 -0
  246. package/apps/web/dist/assets/vi-CkqUo4w_.js +1 -0
  247. package/apps/web/dist/assets/vi-Dq2krfY8.js +1 -0
  248. package/apps/web/dist/assets/vi-VN-C0YFqq9j.js +1 -0
  249. package/apps/web/dist/assets/visual-editor-CBhwqTDu.js +208 -0
  250. package/apps/web/dist/assets/wardley-7MLQ67FV-C6mVVk98.js +1 -0
  251. package/apps/web/dist/assets/wardleyDiagram-IVAIDKWA-m3CeJc7a.js +78 -0
  252. package/apps/web/dist/assets/workspace-settings-DgLyieJN.js +1 -0
  253. package/apps/web/dist/assets/xychartDiagram-4URNHDU4-Dw6fLaip.js +7 -0
  254. package/apps/web/dist/assets/zh-CN-B7Rxc3Mp.js +1 -0
  255. package/apps/web/dist/assets/zh-CN-CC7ghLLr.js +1 -0
  256. package/apps/web/dist/assets/zh-CN-pcgTdR8c.js +1 -0
  257. package/apps/web/dist/assets/zh-TW-BlIRMi1C.js +1 -0
  258. package/apps/web/dist/assets/zh-TW-DymSXkFg.js +1 -0
  259. package/apps/web/dist/assets/zh-TW-awiwHjeM.js +1 -0
  260. package/apps/web/dist/index.html +14 -8
  261. package/bin/kanvil.mjs +3 -1
  262. package/compose.yml +12 -0
  263. package/docs/api.md +311 -10
  264. package/docs/cli.md +74 -0
  265. package/docs/infrastructure.md +2 -2
  266. package/docs/localization.md +25 -0
  267. package/docs/plan.md +34 -11
  268. package/docs/self-hosting.md +44 -5
  269. package/docs/themes.md +1 -1
  270. package/docs/verification.md +1 -1
  271. package/docs/workspaces.md +18 -2
  272. package/package.json +12 -8
  273. package/apps/server/dist/auth-I1XEr0d4.mjs +0 -2931
  274. package/apps/web/dist/assets/CompositeItem-BWPJ5Mol.js +0 -1
  275. package/apps/web/dist/assets/admin-settings-DZqkC6ju.js +0 -1
  276. package/apps/web/dist/assets/date-picker-6H_iwP6t.js +0 -1
  277. package/apps/web/dist/assets/ellipsis-BT172Uvu.js +0 -1
  278. package/apps/web/dist/assets/forms-B4Vg3CPz.js +0 -92
  279. package/apps/web/dist/assets/image-edit-trigger-DGmVtWLC.js +0 -1
  280. package/apps/web/dist/assets/index-C_a21taR.js +0 -50
  281. package/apps/web/dist/assets/index-DM-D_3Sv.css +0 -2
  282. package/apps/web/dist/assets/kbd-tTQGZxaK.js +0 -1
  283. package/apps/web/dist/assets/link-DoIP9KJ6.js +0 -2
  284. package/apps/web/dist/assets/list-order-Bzsrihyr.js +0 -1
  285. package/apps/web/dist/assets/lucide-U995NW8E.js +0 -1
  286. package/apps/web/dist/assets/member-directory-BiCE8DRq.js +0 -1
  287. package/apps/web/dist/assets/popover-BhzZ0U1d.js +0 -1
  288. package/apps/web/dist/assets/project-label-provider-9L7Uts3_.js +0 -1
  289. package/apps/web/dist/assets/project-settings-Q7Q9Reec.js +0 -1
  290. package/apps/web/dist/assets/rotate-ccw-sjyLwLLy.js +0 -1
  291. package/apps/web/dist/assets/settings-B6qD6q1J.js +0 -1
  292. package/apps/web/dist/assets/settings-layout-B-AwUIMu.js +0 -1
  293. package/apps/web/dist/assets/switch-D0nFHj6l.js +0 -1
  294. package/apps/web/dist/assets/table-CYZiwo9g.js +0 -1
  295. package/apps/web/dist/assets/ticket-detail-B-3vbHSB.js +0 -2
  296. package/apps/web/dist/assets/ticket-editor-C3d8TZIT.js +0 -1
  297. package/apps/web/dist/assets/ticket-list-LtGGOnwN.js +0 -5
  298. package/apps/web/dist/assets/ticket-tags-2rdmkcJV.js +0 -1
  299. package/apps/web/dist/assets/upload-DXPRzAaa.js +0 -1
  300. package/apps/web/dist/assets/useNavigate-DFohfUD3.js +0 -1
  301. package/apps/web/dist/assets/workspace-settings-D3tCm1vH.js +0 -1
@@ -0,0 +1 @@
1
+ import{c as e,l as t,o as n,s as r}from"./en-US-DKYSujv3.js";import{Dt as i}from"./index-BIuqxnJn.js";var a={lessThanXSeconds:{one:`1초 미만`,other:`{{count}}초 미만`},xSeconds:{one:`1초`,other:`{{count}}초`},halfAMinute:`30초`,lessThanXMinutes:{one:`1분 미만`,other:`{{count}}분 미만`},xMinutes:{one:`1분`,other:`{{count}}분`},aboutXHours:{one:`약 1시간`,other:`약 {{count}}시간`},xHours:{one:`1시간`,other:`{{count}}시간`},xDays:{one:`1일`,other:`{{count}}일`},aboutXWeeks:{one:`약 1주`,other:`약 {{count}}주`},xWeeks:{one:`1주`,other:`{{count}}주`},aboutXMonths:{one:`약 1개월`,other:`약 {{count}}개월`},xMonths:{one:`1개월`,other:`{{count}}개월`},aboutXYears:{one:`약 1년`,other:`약 {{count}}년`},xYears:{one:`1년`,other:`{{count}}년`},overXYears:{one:`1년 이상`,other:`{{count}}년 이상`},almostXYears:{one:`거의 1년`,other:`거의 {{count}}년`}},o=(e,t,n)=>{let r,i=a[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?r+` 후`:r+` 전`:r},s={date:t({formats:{full:`y년 M월 d일 EEEE`,long:`y년 M월 d일`,medium:`y.MM.dd`,short:`y.MM.dd`},defaultWidth:`full`}),time:t({formats:{full:`a H시 mm분 ss초 zzzz`,long:`a H:mm:ss z`,medium:`HH:mm:ss`,short:`HH:mm`},defaultWidth:`full`}),dateTime:t({formats:{full:`{{date}} {{time}}`,long:`{{date}} {{time}}`,medium:`{{date}} {{time}}`,short:`{{date}} {{time}}`},defaultWidth:`full`})},c={lastWeek:`'지난' eeee p`,yesterday:`'어제' p`,today:`'오늘' p`,tomorrow:`'내일' p`,nextWeek:`'다음' eeee p`,other:`P`},l={code:`ko`,formatDistance:o,formatLong:s,formatRelative:(e,t,n,r)=>c[e],localize:{ordinalNumber:(e,t)=>{let n=Number(e);switch(String(t?.unit)){case`minute`:case`second`:return String(n);case`date`:return n+`일`;default:return n+`번째`}},era:e({values:{narrow:[`BC`,`AD`],abbreviated:[`BC`,`AD`],wide:[`기원전`,`서기`]},defaultWidth:`wide`}),quarter:e({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1분기`,`2분기`,`3분기`,`4분기`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:e({values:{narrow:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`],abbreviated:[`1월`,`2월`,`3월`,`4월`,`5월`,`6월`,`7월`,`8월`,`9월`,`10월`,`11월`,`12월`],wide:[`1월`,`2월`,`3월`,`4월`,`5월`,`6월`,`7월`,`8월`,`9월`,`10월`,`11월`,`12월`]},defaultWidth:`wide`}),day:e({values:{narrow:[`일`,`월`,`화`,`수`,`목`,`금`,`토`],short:[`일`,`월`,`화`,`수`,`목`,`금`,`토`],abbreviated:[`일`,`월`,`화`,`수`,`목`,`금`,`토`],wide:[`일요일`,`월요일`,`화요일`,`수요일`,`목요일`,`금요일`,`토요일`]},defaultWidth:`wide`}),dayPeriod:e({values:{narrow:{am:`오전`,pm:`오후`,midnight:`자정`,noon:`정오`,morning:`아침`,afternoon:`오후`,evening:`저녁`,night:`밤`},abbreviated:{am:`오전`,pm:`오후`,midnight:`자정`,noon:`정오`,morning:`아침`,afternoon:`오후`,evening:`저녁`,night:`밤`},wide:{am:`오전`,pm:`오후`,midnight:`자정`,noon:`정오`,morning:`아침`,afternoon:`오후`,evening:`저녁`,night:`밤`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`오전`,pm:`오후`,midnight:`자정`,noon:`정오`,morning:`아침`,afternoon:`오후`,evening:`저녁`,night:`밤`},abbreviated:{am:`오전`,pm:`오후`,midnight:`자정`,noon:`정오`,morning:`아침`,afternoon:`오후`,evening:`저녁`,night:`밤`},wide:{am:`오전`,pm:`오후`,midnight:`자정`,noon:`정오`,morning:`아침`,afternoon:`오후`,evening:`저녁`,night:`밤`}},defaultFormattingWidth:`wide`})},match:{ordinalNumber:n({matchPattern:/^(\d+)(일|번째)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:r({matchPatterns:{narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^(bc|기원전)/i,/^(ad|서기)/i]},defaultParseWidth:`any`}),quarter:r({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:r({matchPatterns:{narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:`any`}),day:r({matchPatterns:{narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},defaultMatchWidth:`wide`,parsePatterns:{any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},defaultParseWidth:`any`}),dayPeriod:r({matchPatterns:{any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1},labels:{labelDayButton:(e,t,n,r)=>{let a=(r??new i(n)).format(e,`PPPP`);return t.today&&(a=`오늘, ${a}`),t.selected&&(a=`${a}, 선택됨`),a},labelMonthDropdown:`월 선택`,labelNext:`다음 달로 이동`,labelPrevious:`이전 달로 이동`,labelWeekNumber:e=>`주 ${e}`,labelYearDropdown:`연도 선택`,labelGrid:(e,t,n)=>(n??new i(t)).formatMonthYear(e),labelGridcell:(e,t,n,r)=>{let a=(r??new i(n)).format(e,`PPPP`);return t?.today&&(a=`오늘, ${a}`),a},labelNav:`탐색 모음`,labelWeekNumberHeader:`주 번호`,labelWeekday:(e,t,n)=>(n??new i(t)).format(e,`cccc`)}};export{l as ko};
@@ -0,0 +1 @@
1
+ import{$ as e,H as t,N as n}from"./core-jXc03Sty.js";var r=()=>{let r={string:{unit:`문자`,verb:`to have`},file:{unit:`바이트`,verb:`to have`},array:{unit:`개`,verb:`to have`},set:{unit:`개`,verb:`to have`},map:{unit:`개`,verb:`to have`}};function i(e){return r[e]??null}let a={regex:`입력`,email:`이메일 주소`,url:`URL`,emoji:`이모지`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO 날짜시간`,date:`ISO 날짜`,time:`ISO 시간`,duration:`ISO 기간`,ipv4:`IPv4 주소`,ipv6:`IPv6 주소`,mac:`MAC 주소`,cidrv4:`IPv4 범위`,cidrv6:`IPv6 범위`,base64:`base64 인코딩 문자열`,base64url:`base64url 인코딩 문자열`,json_string:`JSON 문자열`,e164:`E.164 번호`,credit_card:`신용카드 번호`,currency_code:`통화 코드`,iban:`IBAN`,jwt:`JWT`,template_literal:`입력`},o={nan:`NaN`};return r=>{switch(r.code){case`invalid_type`:{let e=o[r.expected]??r.expected,n=t(r.input),i=o[n]??n;return/^[A-Z]/.test(r.expected)?`잘못된 입력: 예상 타입은 instanceof ${r.expected}, 받은 타입은 ${i}입니다`:`잘못된 입력: 예상 타입은 ${e}, 받은 타입은 ${i}입니다`}case`invalid_value`:return r.values.length===1?`잘못된 입력: 값은 ${e(r.values[0])} 이어야 합니다`:`잘못된 옵션: ${n(r.values,`또는 `)} 중 하나여야 합니다`;case`too_big`:{let e=r.inclusive?`이하`:`미만`,t=e===`미만`?`이어야 합니다`:`여야 합니다`,n=i(r.origin),a=n?.unit??`요소`;return n?`${r.origin??`값`}이 너무 큽니다: ${r.maximum.toString()}${a} ${e}${t}`:`${r.origin??`값`}이 너무 큽니다: ${r.maximum.toString()} ${e}${t}`}case`too_small`:{let e=r.inclusive?`이상`:`초과`,t=e===`이상`?`이어야 합니다`:`여야 합니다`,n=i(r.origin),a=n?.unit??`요소`;return n?`${r.origin??`값`}이 너무 작습니다: ${r.minimum.toString()}${a} ${e}${t}`:`${r.origin??`값`}이 너무 작습니다: ${r.minimum.toString()} ${e}${t}`}case`invalid_format`:{let e=r;return e.format===`starts_with`?`잘못된 문자열: "${e.prefix}"(으)로 시작해야 합니다`:e.format===`ends_with`?`잘못된 문자열: "${e.suffix}"(으)로 끝나야 합니다`:e.format===`includes`?`잘못된 문자열: "${e.includes}"을(를) 포함해야 합니다`:e.format===`regex`?`잘못된 문자열: 정규식 ${e.pattern} 패턴과 일치해야 합니다`:`잘못된 ${a[e.format]??r.format}`}case`not_multiple_of`:return`잘못된 숫자: ${r.divisor}의 배수여야 합니다`;case`unrecognized_keys`:return`인식할 수 없는 키: ${n(r.keys,`, `)}`;case`invalid_key`:return`잘못된 키: ${r.origin}`;case`invalid_union`:return`잘못된 입력`;case`invalid_element`:return`잘못된 값: ${r.origin}`;default:return`잘못된 입력`}}};function i(){return{localeError:r()}}export{i as default};
@@ -0,0 +1 @@
1
+ var e={common:{status:{backlog:`백로그`,todo:`할 일`,in_progress:`진행 중`,in_review:`검토 중`,done:`완료`,cancelled:`취소됨`},priority:{urgent:`긴급`,high:`높음`,medium:`보통`,low:`낮음`,none:`우선순위 없음`},kind:{feature:`기능`,bug:`버그`,chore:`잡무`,research:`조사`,documentation:`문서`},difficulty:{low:`낮음`,med:`보통`,high:`높음`,none:`난이도 없음`},role:{reader:`읽기 전용`,writer:`편집 가능`,admin:`관리자`},permission:{ticket:{write:{label:`티켓 편집`,description:`티켓 생성, 편집, 이동, 선점, 댓글 작성 및 프로젝트 생성`},delete:{label:`티켓 삭제`,description:`티켓 영구 삭제`}},project:{manage:{label:`프로젝트 관리`,description:`프로젝트 세부 정보, 워크플로, 레이블, 필드, 연동 및 수명 주기`}},member:{manage:{label:`멤버 관리`,description:`멤버 추가, 변경 및 제거`}},invitation:{manage:{label:`초대 관리`,description:`이메일로 사용자 초대`}},sharing:{manage:{label:`공유 관리`,description:`공개 읽기 전용 링크 및 캘린더 피드`}},workspace:{manage:{label:`워크스페이스 관리`,description:`워크스페이스 세부 정보, 공유 레이블 및 역할`}}},customFieldType:{text:`텍스트`,number:`숫자`,date:`날짜`,checkbox:`체크박스`,select:`단일 선택`,multiselect:`다중 선택`},customField:{removedOption:`삭제된 옵션`,checked:`예`},filterField:{status:`상태`,priority:`우선순위`,kind:`유형`,difficulty:`난이도`,label:`레이블`,assigneeId:`담당자`,customField:`필드`},sort:{priority:`우선순위`,updated:`최근 업데이트순`,created:`최근 생성순`,title:`제목`,labels:`레이블`,due:`마감일`,start:`시작일`,number:`티켓 번호`,status:`상태`,difficulty:`난이도`,kind:`유형`,assignee:`담당자`,manual:`수동`},due:{overdue:`기한 지남`,today:`오늘 마감`,week:`이번 주 마감`,scheduled:`마감일 있음`,none:`마감일 없음`},relation:{blocks:{outgoing:`차단함`,incoming:`차단됨`},related:{outgoing:`관련됨`,incoming:`관련됨`},duplicate:{outgoing:`중복함`,incoming:`중복됨`},causes:{outgoing:`원인임`,incoming:`원인이 됨`},clones:{outgoing:`복제함`,incoming:`복제됨`},implements:{outgoing:`구현함`,incoming:`구현됨`},reviews:{outgoing:`검토함`,incoming:`검토됨`}},remoteKind:{branch:`브랜치`,pull_request:`풀 리퀘스트`,issue:`이슈`},notificationCategory:{assignment:`할당`,status:`상태 변경`,comment:`댓글`,mention:`멘션`,update:`기타 업데이트`,due_soon:`마감 임박`,overdue:`기한 지남`},destinationEvent:{created:`새 티켓`},deliveryKind:{email:`이메일`,webhook:`웹훅`},change:{pull_request:{name:`풀 리퀘스트`,opened:`풀 리퀘스트 열림`,draft:`초안 풀 리퀘스트`,merged:`풀 리퀘스트 병합됨`,closed:`풀 리퀘스트가 병합되지 않고 닫힘`},merge_request:{name:`머지 리퀘스트`,opened:`머지 리퀘스트 열림`,draft:`초안 머지 리퀘스트`,merged:`머지 리퀘스트 병합됨`,closed:`머지 리퀘스트가 병합되지 않고 닫힘`},branchCreated:`브랜치 생성됨`},issueLinkState:{active:`동기화 중`,paused:`일시 중지됨`,review:`검토 필요`,creating:`이슈 생성 중`,unknown:`생성 미확인`},importStatus:{previewed:`가져오기 준비 완료`,running:`가져오는 중`,completed:`가져옴`,failed:`실패`,cancelled:`취소됨`},importProvider:{linear:{project:`팀`,setup:`Linear의 Settings › Security & access에서 개인 API 키를 만드세요. 읽기 권한이면 충분합니다.`},jira:{project:`프로젝트`,setup:`Jira Cloud는 계정 이메일과 id.atlassian.com에서 발급한 API 토큰으로 로그인합니다. Data Center와 Server는 개인 액세스 토큰을 사용합니다. 프로젝트 탐색 권한이면 충분합니다.`},trello:{project:`보드`,setup:`trello.com/power-ups/admin에서 관리하는 Power-Up의 API 키와 해당 Power-Up용으로 생성한 토큰을 사용하세요. 읽기 권한이면 충분합니다.`},plane:{project:`프로젝트`,setup:`Plane의 Profile settings › Personal access tokens에서 개인 액세스 토큰을 만드세요. Plane Cloud의 API 주소는 https://api.plane.so 입니다. 워크스페이스 URL 키는 웹 주소의 첫 부분입니다.`},planka:{project:`보드`,setup:`보드를 열 수 있는 PLANKA 계정으로 로그인하세요. Kanvil이 연 세션은 읽기가 끝나면 종료됩니다. PLANKA 2 관리자는 대신 API 키를 발급할 수 있습니다.`},kaneo:{project:`프로젝트`,setup:`Kaneo의 Settings › Account › Developer에서 API 키를 만드세요.`}},plankaSignIn:{password:`사용자 이름과 비밀번호`,api_key:`API 키`},jiraEdition:{cloud:`Cloud`,data_center:`Data Center 또는 Server`},event:{time_entry:{created:`시간 기록 생성됨`,updated:`시간 기록 업데이트됨`,deleted:`시간 기록 삭제됨`},label:{created:`레이블 생성됨`,updated:`레이블 업데이트됨`,deleted:`레이블 삭제됨`},workflow:{created:`워크플로 상태 추가됨`,updated:`워크플로 상태 변경됨`,deleted:`워크플로 상태 제거됨`},custom_field:{created:`필드 생성됨`,updated:`필드 업데이트됨`,deleted:`필드 삭제됨`},ticket:{created:`티켓 생성됨`,updated:`티켓 업데이트됨`,deleted:`티켓 삭제됨`,moved:`다른 프로젝트에서 이동됨`,moved_away:`다른 프로젝트로 이동됨`,due_soon:`마감 임박`,overdue:`기한 지남`,claimed:`작업 선점됨`},claim:{renewed:`선점 갱신됨`,released:`선점 해제됨`,recovered:`선점 회수됨`},comment:{created:`댓글 추가됨`,updated:`댓글 수정됨`,deleted:`댓글 삭제됨`},relation:{added:`관계 추가됨`,removed:`관계 제거됨`},attachment:{created:`파일 첨부됨`,deleted:`파일 제거됨`},evidence:{added:`증빙 첨부됨`},resource:{added:`링크 추가됨`,updated:`링크 수정됨`,removed:`링크 제거됨`},calendar_feed:{created:`캘린더 피드 생성됨`,revoked:`캘린더 피드 취소됨`},project:{created:`프로젝트 생성됨`,updated:`프로젝트 업데이트됨`,archived:`프로젝트 보관됨`,restored:`프로젝트 복원됨`,transferred:`프로젝트가 다른 워크스페이스로 이동됨`,deleted:`프로젝트 삭제됨`},membership:{updated:`프로젝트 액세스 변경됨`},workspace:{owner_changed:`워크스페이스 소유자 변경됨`},role:{created:`역할 생성됨`,updated:`역할 변경됨`,deleted:`역할 삭제됨`},invitation:{updated:`초대 변경됨`},destination:{created:`전송 대상 추가됨`,updated:`전송 대상 변경됨`,deleted:`전송 대상 제거됨`},repository:{connected:`저장소 연결됨`,updated:`저장소 연결 변경됨`,disconnected:`저장소 연결 해제됨`,received:`저장소 웹훅 수신됨`},issue_link:{updated:`이슈 동기화 변경됨`}},error:{network:`Kanvil에 연결할 수 없습니다. 연결을 확인하고 다시 시도하세요.`,fallback:`요청을 완료할 수 없습니다`,input:`입력`,code:{unauthorized:`계속하려면 로그인하세요.`,session_required:`이 작업에는 로그인된 계정을 사용하세요.`,account_disabled:`이 계정은 비활성화되었습니다.`,forbidden:`이 작업을 수행할 권한이 없습니다.`,insufficient_scope:`이 자격 증명으로는 이 작업을 할 수 없습니다.`,workspace_scope_required:`이 작업에는 워크스페이스 액세스 권한이 있는 계정을 사용하세요.`,invalid_origin:`허용되지 않은 출처입니다.`,not_found:`이 항목을 찾을 수 없거나 볼 권한이 없습니다.`,version_conflict:`불러온 후 변경되었습니다. 새로고침하고 다시 시도하세요.`,time_entry_conflict:`이 사용자는 이 티켓에 이미 진행 중인 시간 기록이 있습니다.`,claim_conflict:`다른 워커가 이 티켓을 선점하고 있습니다.`,idempotency_conflict:`이 요청은 이미 다른 변경에 사용되었습니다.`,project_archived:`변경하기 전에 보관된 프로젝트를 복원하세요.`,rate_limited:`짧은 시간에 변경이 너무 많습니다. 잠시 후 다시 시도하세요.`,snapshot_required:`실시간 피드가 뒤처졌습니다. 계속하려면 새로고침하세요.`,request_failed:`요청을 완료할 수 없습니다`}},action:{add:`추가`,apply:`적용`,back:`뒤로`,cancel:`취소`,clear:`지우기`,close:`닫기`,confirm:`확인`,continue:`계속`,copy:`복사`,create:`만들기`,delete:`삭제`,done:`완료`,edit:`편집`,open:`열기`,remove:`제거`,rename:`이름 변경`,reset:`초기화`,retry:`다시 시도`,save:`저장`,search:`검색`},state:{copied:`복사됨`,loading:`불러오는 중…`,saved:`저장됨`,saving:`저장 중…`,none:`없음`,unassigned:`미할당`},evidenceKind:{pull_request:`풀 리퀘스트`,test:`테스트`,review:`검토`,deployment:`배포`,device:`기기`,other:`기타`},evidenceOutcome:{reported:`보고됨`,pending:`대기 중`,passed:`통과`,failed:`실패`},readinessReason:{project_archived:`프로젝트가 보관되었습니다`,not_open:`티켓이 할 일 상태이고 보관되지 않아야 합니다`,not_enabled:`에이전트 작업이 활성화되지 않았습니다`,missing_description:`설명을 추가하세요`,missing_acceptance_criteria:`인수 조건을 추가하세요`,missing_difficulty:`난이도를 선택하세요`,duplicate:`이 티켓은 중복으로 표시되었습니다`,claim_recovery_required:`소유권을 회수하기 전에 이전 워커가 중지되었는지 확인하세요`,claimed:`{{worker}}이(가) 선점함`,dependency:`{{key}}이(가) 완료되지 않았습니다`},person:{deleted:`삭제된 계정`,former:`이전 멤버`},signIn:{codeTitle:`코드로 로그인`,resetTitle:`비밀번호 재설정`,codeSent:`{{email}}에 계정이 있으면 코드가 발송됩니다. 코드는 10분 후 만료됩니다.`,code:`코드`,newPassword:`새 비밀번호`,sendCode:`이메일로 코드 받기`,back:`로그인으로 돌아가기`,resend:`코드 다시 보내기`,resent:`코드를 다시 보냈습니다`,emailCode:`이메일로 로그인 코드 받기`,forgot:`비밀번호를 잊으셨나요?`,resetDone:`비밀번호를 재설정했습니다. 새 비밀번호로 로그인하세요.`,resetDoneTitle:`비밀번호 재설정됨`,resetDoneBody:`새 비밀번호로 로그인하세요.`,invalidCode:`코드가 잘못되었거나 이미 사용되었거나 만료되었습니다. 다시 보내서 유효한 코드를 받으세요.`,localPassword:`로컬 비밀번호`},language:{label:`언어`,system:`시스템 기본값`}},shell:{ui:{showValue:`{{label}} 표시`,hideValue:`{{label}} 숨기기`,previousPage:`이전 {{noun}}`,nextPage:`다음 {{noun}}`,pageRange:`{{total}}개 중 {{from}}–{{to}}`,priority:`우선순위: {{label}}`,working:`처리 중…`,searchPlaceholder:`검색…`,clearValue:`{{label}} 지우기`,copyValue:`{{label}} 복사`,copied:`{{value}} 복사됨`},documentTitle:`{{name}} · Kanvil`,openKanvil:`Kanvil 열기`,page:{home:`홈`,myWork:`내 작업`,inbox:`받은편지함`,search:`검색`,settings:`설정`,planning:`계획`,ticket:`티켓`,tickets:`티켓`,projects:`프로젝트`},connection:{restored:`연결이 복구되었습니다`,lost:`연결이 끊어졌습니다`,reconnecting:`다시 연결하는 중…`,reload:`새로고침`,signIn:`다시 연결하려면 로그인`},app:{skipToContent:`본문으로 건너뛰기`,assigned:`나에게 할당됨`,openCount_other:`열림 {{count, number}}개`,noAssigned:`나에게 할당된 열린 티켓이 없습니다`,allInMyWork_other:`내 작업의 {{count, number}}개 모두`,openMyWork:`내 작업 열기`,recentActivity:`최근 활동`,noActivity:`아직 활동이 없습니다`,searchProjects:`프로젝트 검색`,projectCount_other:`프로젝트 {{count, number}}개`,noMatchingProjects:`일치하는 프로젝트가 없습니다`,clearSearch:`검색 지우기`,noWorkspaces:`아직 워크스페이스가 없습니다`,noActiveProjects:`활성 프로젝트가 없습니다`,noProjects:`아직 프로젝트가 없습니다`,archivedProjects:`보관된 프로젝트`,archived:`보관됨`,noOpenTickets:`열린 티켓이 없습니다`,overdueCount_other:`기한 지남 {{count, number}}개`,percentDone:`{{percent}} 완료`,nextDue:`다음 마감 <time/>`,projectSettingsFor:`{{name}} 프로젝트 설정`,pageNotFound:`페이지를 찾을 수 없습니다`,openHome:`홈 열기`,tryAgain:`다시 시도`,adminRequired:`인스턴스 관리자 권한이 필요합니다`,projectNotFound:`프로젝트를 찾을 수 없습니다`,noWorkspaceSelected:`선택된 워크스페이스가 없습니다`},auth:{signIn:`로그인`,createOwner:`소유자 계정 만들기`,ownerHint:`첫 번째 계정이 이 인스턴스를 관리합니다.`,invitedHint:`초대를 수락하려면 초대받은 이메일 주소로 로그인하세요.`,signInWith:`{{provider}}(으)로 로그인`,useEmail:`이메일과 비밀번호 사용`,or:`또는`,name:`이름`,setupToken:`설정 토큰`,setupTokenHint:`인스턴스 구성의 KANVIL_SETUP_TOKEN을 사용하세요.`,email:`이메일`,password:`비밀번호`,signingIn:`로그인하는 중…`,createAccount:`계정 만들기`,consent:{expired:`인증 요청이 만료되었습니다. 클라이언트를 다시 연결하세요.`,title:`{{client}} 승인`,titleUnnamed:`클라이언트 승인`,subtitle:`이 클라이언트가 내 계정으로 액세스를 요청합니다. 프로젝트 권한은 그대로 적용됩니다.`,deny:`거부`,allow:`액세스 허용`},invitation:{unavailable:`초대를 사용할 수 없습니다`,join:`{{workspace}} 참여`,invited:`초대 대상`,from:`보낸 사람`,access:`액세스`,removedProjects:`제거된 프로젝트`,wholeWorkspace:`전체 워크스페이스`,expires:`만료`,expired:`이 초대는 만료되었습니다. 워크스페이스 관리자에게 새 초대를 요청하세요.`,revoked:`이 초대는 취소되었습니다. 워크스페이스 관리자에게 새 초대를 요청하세요.`,accepted:`이 초대는 이미 수락되었습니다. 워크스페이스 관리자에게 새 초대를 요청하세요.`,wrongAccount:`<account>{{current}}</account>(으)로 로그인되어 있습니다. 수락하려면 {{invited}}(으)로 로그인하세요.`,signOut:`로그아웃`,joined:`{{workspace}}에 참여했습니다`,accept:`초대 수락`},callback:{cancelled:`로그인이 취소되었습니다. 준비되면 다시 시도하세요.`,linkedElsewhere:`이 ID는 이미 다른 Kanvil 계정에 연결되어 있습니다. 다른 ID를 사용하거나 관리자에게 문의하세요.`,notLinked:`이 ID는 Kanvil 계정에 연결되어 있지 않습니다. 로컬 계정으로 로그인한 후 설정에서 연결하세요.`,expired:`로그인 요청이 만료되었거나 확인할 수 없습니다. 이 화면에서 다시 시도하세요.`,emailMismatch:`ID 공급자의 이메일을 연결할 수 없습니다. 관리자에게 문의하세요.`,failed:`로그인을 완료할 수 없습니다. 다시 시도하거나 관리자에게 문의하세요.`}},you:`나`,inbox:{markAllRead:`모두 읽음으로 표시`,clearRead:`읽은 알림 지우기`,cleared_other:`읽은 알림 {{count, number}}개를 지웠습니다`,unread:`읽지 않음`,mentions:`멘션`,all:`모든 알림`,noUnread:`읽지 않은 알림이 없습니다`,noMentions:`멘션이 없습니다`,noNotifications:`알림이 없습니다`,markUnread:`읽지 않음으로 표시`,markRead:`읽음으로 표시`,dismiss:`닫기`},search:{field:`워크스페이스 검색`,placeholder:`티켓, 프로젝트, 댓글, 활동 검색…`,tab:{all:`전체`,project:`프로젝트`,ticket:`티켓`,comment:`댓글`,activity:`활동`},indexing:`외부 검색이 따라잡는 중이므로 티켓 검색 결과는 PostgreSQL에서 가져옵니다.`,empty:`티켓, 프로젝트, 댓글, 활동 검색`,noResults:`“{{query}}”에 대한 결과가 없습니다`,results:`검색 결과`,pages:`검색 결과 페이지`,previous:`이전`,next:`다음`,type:{project:`프로젝트`,ticket:`티켓`,comment:`댓글`,activity:`활동`}},column:{key:`티켓`,labels:`레이블`,scopes:`스코프`,status:`상태`,priority:`우선순위`,difficulty:`난이도`,kind:`유형`,assigneeId:`담당자`,startAt:`시작`,dueAt:`마감`,createdAt:`생성`,updatedAt:`업데이트`},public:{notShared:`이 프로젝트는 공유되지 않았습니다`,notSharedHint:`링크가 비활성화되었거나 존재하지 않습니다. 멤버는 로그인하여 볼 수 있습니다.`,noTickets:`티켓 없음`,ticketUnavailable:`티켓을 사용할 수 없습니다`,backToTickets:`티켓으로 돌아가기`,description:`설명`,noDescription:`_설명 없음_`,acceptanceCriteria:`인수 조건`,noAcceptanceCriteria:`_인수 조건 없음_`,ticketProperties:`티켓 속성`,properties:`속성`,status:`상태`,priority:`우선순위`,kind:`유형`,difficulty:`난이도`,startDate:`시작일`,dueDate:`마감일`,labels:`레이블`,scopes:`스코프`,created:`생성일`,updated:`업데이트일`,relationships:`관계`,parent:`상위`,child:`하위`},sidebar:{workspace:`워크스페이스`,unread_other:`읽지 않음 {{count, number}}개`,userSettings:`사용자 설정`,administration:`관리`,signOut:`로그아웃`,projectSettings:`프로젝트 설정`},workspace:{new:`새 워크스페이스`,name:`워크스페이스 이름`,key:`워크스페이스 키`,create:`워크스페이스 만들기`,workspaces:`워크스페이스`,switch:`워크스페이스 전환`,settings:`워크스페이스 설정`},palette:{open:`이동…`,title:`이동`,description:`프로젝트, 티켓, 페이지 또는 작업 찾기`,placeholder:`티켓, 프로젝트, 페이지, 작업 검색…`,searching:`검색하는 중…`,noResults:`결과 없음`,jumpTo:`바로 가기`,openKey:`{{project}}에서 {{key}} 열기`,resultsIn:`{{workspace}}의 결과`,results:`결과`,seeAll_other:`결과 {{count, number}}개 모두 보기`,actions:`작업`,pages:`페이지`,newTicketIn:`{{project}}에 새 티켓`,myTicketsIn:`{{project}}의 내 티켓`,lightMode:`라이트 모드로 전환`,darkMode:`다크 모드로 전환`,keywords:{jump:`{{query}} 바로 가기 열기 이동`,allResults:`모든 결과 {{query}}`,newTicket:`새 티켓 만들기 생성`,myTickets:`내 티켓 나에게 할당됨`,lightMode:`라이트 모드로 전환 테마 모양`,darkMode:`다크 모드로 전환 테마 모양`,help:`키보드 단축키 도움말`,home:`홈 개요 모든 프로젝트`,myWork:`내 작업 할당된 티켓`,search:`검색 댓글 활동 프로젝트 티켓`,inbox:`받은편지함 알림`,settings:`설정 {{scope}} {{label}}`}},actionCategory:{general:`일반`,ticketList:`티켓 목록`,inbox:`받은편지함`,ticket:`티켓`,search:`검색`,markdown:`Markdown`},action:{palette:`어디든 이동`,help:`키보드 단축키`,sidebar:`사이드바 전환`,newTicket:`새 티켓`,search:`티켓 검색`,highlight:`다음 또는 이전 티켓 강조`,open:`강조된 티켓 열기`,preview:`강조된 티켓을 목록 옆에서 미리 보기`,select:`강조된 티켓 선택`,properties:`강조된 티켓의 상태, 우선순위 또는 담당자 설정`,inboxHighlight:`다음 또는 이전 알림 강조`,inboxOpen:`강조된 알림의 티켓을 받은편지함 옆에서 읽기`,inboxRead:`강조된 알림을 읽음 또는 읽지 않음으로 표시`,inboxDismiss:`강조된 알림 닫기`,step:`다음 또는 이전 티켓 열기`,edit:`티켓 편집`,save:`티켓 또는 댓글 저장`,results:`검색 결과 간 이동`,insertBlock:`비주얼 편집기에 표, 다이어그램, 파일 등의 블록 삽입`},move:{top:{label:`강조된 티켓을 맨 위로 이동`,menu:`맨 위로 이동`},up:{label:`강조된 티켓을 위로 이동`,menu:`위로 이동`},down:{label:`강조된 티켓을 아래로 이동`,menu:`아래로 이동`},bottom:{label:`강조된 티켓을 맨 아래로 이동`,menu:`맨 아래로 이동`},previous:{label:`강조된 티켓을 이전 상태로 이동`,menu:`이전 상태로 이동`},next:{label:`강조된 티켓을 다음 상태로 이동`,menu:`다음 상태로 이동`}},copy:{link:{label:`링크 복사`,copied:`티켓 링크`},keyAndTitle:{label:`키와 제목 복사`,copied:`티켓`},title:{label:`제목 복사`,copied:`제목`},markdown:{label:`Markdown으로 복사`,copied:`Markdown`},branch:{label:`브랜치 이름 복사`,copied:`브랜치 이름`}},settingsNav:{account:`계정`,settings:`설정`,workspace:`워크스페이스`,workspaceSettings:`워크스페이스 설정`,projects:`프로젝트`,projectSettings:`프로젝트 설정`,administration:`관리`,section:{profile:`프로필 및 보안`,appearance:`모양`,preferences:`환경설정`,credentials:`API 키`,notifications:`알림`,general:`일반`,members:`멤버`,roles:`역할`,labels:`레이블`,workflow:`워크플로`,fields:`필드`,integrations:`연동`,calendar:`캘린더 피드`,storage:`파일 저장소`,search:`검색`,events:`이벤트 전달`,users:`사용자`,workspaces:`워크스페이스`,authentication:`인증`}},browser:{copyFailed:`복사하지 못했습니다. 텍스트를 선택하여 직접 복사하세요.`,readFailed:`파일을 읽을 수 없습니다`,encodeFailed:`파일을 인코딩할 수 없습니다`,imageTooBig:`10 MB보다 작은 이미지를 선택하세요.`,cannotResize:`이 브라우저에서는 이미지 크기를 조정할 수 없습니다.`,prepareFailed:`이미지를 준비할 수 없습니다.`,stillTooLarge:`크기를 조정해도 이미지가 너무 큽니다. 더 단순한 이미지를 선택하세요.`},primitive:{close:`닫기`,more:`더 보기`,breadcrumb:`탐색 경로`,sidebar:`사이드바`,sidebarDescription:`모바일 사이드바를 표시합니다.`,toggleSidebar:`사이드바 전환`,resizeSidebar:`사이드바 크기 조정`,expandSidebar:`사이드바 펼치기`,commandTitle:`명령 팔레트`,commandDescription:`실행할 명령 검색…`}},ticket:{list:{selectSection:`{{section}} 티켓 선택`,expandSection:`{{section}} 티켓 펼치기`,collapseSection:`{{section}} 티켓 접기`,sectionTickets:`{{section}} 티켓`,later:`이후`,selectAll:`표시된 티켓 모두 선택`,selectTicket:`{{key}} 선택`,title:`제목`,all:`전체`,planned:`계획됨`,archived:`보관됨`,allTickets:`모든 티켓`,customView:`사용자 지정 보기`,sectionCount:`{{section}} {{n, number}}개`,planning:`{{project}} 계획`,collection:`{{source}} ({{sections}})`,moved:`{{key}} 이동됨`,movedTo:`{{key}}이(가) {{status}}(으)로 이동됨`,movedAbove:`{{key}}이(가) {{neighbor}} 위로 이동됨`,movedBelow:`{{key}}이(가) {{neighbor}} 아래로 이동됨`,movedToAbove:`{{key}}이(가) {{status}}의 {{neighbor}} 위로 이동됨`,movedToBelow:`{{key}}이(가) {{status}}의 {{neighbor}} 아래로 이동됨`,emptyFiltered:`일치하는 티켓이 없습니다`,emptyPlanning:`계획되거나 보관된 항목이 없습니다`,emptyProject:`아직 티켓이 없습니다`,emptyWork:`나에게 할당된 열린 티켓이 없습니다`,createFirst:`첫 티켓 만들기`,activeWork:`진행 중인 작업`,views:`티켓 보기`,saveCurrentView:`현재 보기 저장`,deleteView:`{{name}} 보기 삭제`,deleteViewConfirm:`저장된 보기에서 {{name}}을(를) 제거할까요? 티켓은 변경되지 않습니다.`,planningLink:`계획`,newTicketShortcut:`새 티켓 ({{shortcut}})`,saveView:`보기 저장`,viewSaved:`보기가 저장되었습니다`,viewName:`보기 이름`,retry:`티켓 다시 불러오기`,board:`티켓 보드`,tickets:`티켓`,resizeColumn:`{{column}} 열 크기 조정`,count_other:`티켓 {{count, number}}개`,scheduledCount_other:`예정된 티켓 {{count, number}}개`},move:{destination:`대상`,projectPlaceholder:`프로젝트로 이동…`,blockers:`이동하기 전에 해결하세요`,submit:`티켓 이동`,pending:`이동하는 중…`},picker:{placeholder:`티켓 선택`,loading:`티켓을 불러오는 중…`,searchLabel:`{{label}} 검색`,searchPlaceholder:`제목 또는 키로 검색…`,noParent:`상위 없음`,searching:`검색하는 중…`,empty:`티켓을 찾을 수 없습니다`},property:{status:`상태`,priority:`우선순위`,kind:`유형`,difficulty:`난이도`,assignee:`담당자`,you:`{{name}} (나)`,assignTo:`담당자 지정…`,set:`{{label}} 설정…`,search:`{{label}} 검색`,noMatches:`일치하는 항목 없음`},field:{mixed:`혼합`,unchecked:`아니요`,noValue:`값 없음`},project:{label:`프로젝트`,placeholder:`만들 프로젝트…`,search:`프로젝트 검색`},tags:{labels:`레이블`,scopes:`스코프`,summary:`{{label}}: {{tags}}`,edit:`{{label}} 편집`,editValues:`{{label}} 편집: {{tags}}`,editMixed:`{{label}} 편집: 혼합`,mixed:`혼합된 {{label}}`,none:`{{label}} 없음`,mixedNote:`선택한 티켓의 {{label}}이(가) 서로 다릅니다.`,clear:`{{label}} 지우기`,replace:`{{label}} 바꾸기`},tagInput:{remove:`{{label}} {{tag}} 제거`,addAnother:`더 추가…`,add:`{{label}} 추가…`,choose:`{{label}} 선택`,chooseLabels:`레이블 선택`,searchPlaceholder:`레이블 검색…`,searchLabel:`프로젝트 레이블 검색`,empty:`일치하는 레이블이 없습니다`},link:{previewUnavailable:`미리 보기를 사용할 수 없습니다`},userPicker:{label:`계정`,placeholder:`계정 선택`,searchPlaceholder:`이름 또는 이메일 검색…`,searchLabel:`계정 검색`,useEmail:`{{email}} 사용`,emptyAnyAccount:`멤버를 검색하거나 기존 계정의 이메일을 입력하세요.`,empty:`일치하는 멤버가 없습니다`},date:{placeholder:`날짜 선택`,clear:`{{label}} 지우기`,start:`시작일`,startShort:`시작`,noStart:`시작일 없음`,due:`마감일`,dueShort:`마감`,noDue:`마감일 없음`},filter:{me:`나`,searchTickets:`티켓 검색`,searchTicketsPlaceholder:`티켓 검색…`,filters:`필터`,filtersActive:`필터 ({{active, number}})`,due:`마감`,anyDue:`모든 마감일`,archived:`보관됨`,hideArchived:`보관된 항목 숨기기`,includeArchived:`보관된 항목 포함`,archivedOnly:`보관된 항목만`,includingArchived:`보관된 항목 포함됨`,reset:`필터 초기화`,clear:`필터 지우기`,active:`활성 티켓 필터`,searchChip:`검색: {{query}}`,chipAny:`{{field}}:`,chipNone:`{{field}} 제외:`,notValues:`{{values}} 제외`,match:`{{label}} 일치`,is:`일치`,isNot:`제외`,searchPlaceholder:`{{search}}…`,anyValue:{status:`모든 상태`,priority:`모든 우선순위`,kind:`모든 유형`,difficulty:`모든 난이도`,label:`모든 레이블`,assigneeId:`모든 사람`,customField:`모든 필드 값`},searchValues:{status:`상태 검색`,priority:`우선순위 검색`,kind:`유형 검색`,difficulty:`난이도 검색`,label:`레이블 검색`,assigneeId:`사람 검색`,customField:`필드 검색`}},display:{title:`표시`,orderBy:`정렬 기준`,direction:`방향`,ascending:`오름차순`,descending:`내림차순`,reset:`표시 초기화`,groupBy:`그룹화 기준`,dueDate:`마감일`,layout:`레이아웃`,list:`목록`,board:`보드`,backgrounds:`프로젝트 배경`,show:`표시`,hide:`숨기기`,rowSpacing:`행 간격`,compact:`좁게`,comfortable:`넓게`,labelDisplay:`레이블 표시`,compactPreview:`간략한 미리 보기`,allLabels:`모든 레이블`,properties:`속성`},selection:{region:`선택한 티켓`,clear:`선택 해제`,selected_other:`{{count, number}}개 선택됨`,selectedOf_other:`{{total}}개 중 {{count, number}}개<wide> 선택됨</wide>`,applied_other:`티켓 {{count, number}}개에 {{label}} 적용됨`,partlyApplied_other:`티켓 {{count, number}}개 중 {{done, number}}개에 적용됨`,mixedDue:`마감일 혼합`,fields:`필드`,more:`추가 작업`,moveTo:`{{status}}(으)로 이동`,restoreChange:`복원`,restore:`선택 항목 복원`,archive:`선택 항목 보관`,delete:`선택 항목 삭제`,deleteLimit:`한 번에 최대 {{limit, number}}개까지 삭제할 수 있습니다`,archiveConfirm_other:`{{collection}}의 티켓 {{count, number}}개를 보관할까요?`,deleteConfirm_other:`{{collection}}의 티켓 {{count, number}}개를 댓글, 관계, 첨부 파일과 함께 영구 삭제할까요? 선택에 포함되지 않은 하위 티켓은 상위 티켓을 잃습니다.`,deleted_other:`티켓 {{count, number}}개를 삭제했습니다`},menu:{copied:`{{label}} 복사됨`,open:`티켓 열기`,preview:`미리 보기`,newTab:`새 탭에서 열기`,edit:`티켓 편집`,editTitle:`{{key}} 편집`,duplicate:`티켓 복제`,created:`{{key}} 생성됨`,move:`이동`,moveToProject:`프로젝트로 이동…`,moveTitle:`{{key}} 이동`,moved:`{{key}}(으)로 이동됨`,follow:`티켓 팔로우`,unfollow:`티켓 팔로우 취소`,archive:`티켓 보관`,unarchive:`티켓 보관 해제`,delete:`티켓 삭제`,deleteConfirm:`{{key}}와(과) 해당 댓글, 관계, 첨부 파일을 영구 삭제할까요?`,openProject:`프로젝트 열기`,projectLink:`프로젝트 링크`,copyLink:`링크 복사`,newTicket:`새 티켓`,projectSettings:`프로젝트 설정`,manageAccount:`계정 관리`,email:`이메일`,copyEmail:`이메일 복사`},schedule:{range:`{{from}} – {{to}}`,calendar:`캘린더`,timeline:`타임라인`,today:`오늘`,previousMonth:`이전 달`,nextMonth:`다음 달`,previousWeeks:`이전 2주`,nextWeeks:`다음 2주`,emptyWeeks:`이 기간에 예정된 항목이 없습니다`,monthTickets:`{{title}}의 티켓`,showDay_other:`{{day}}의 티켓 {{count, number}}개 모두 보기`,more_other:`{{count, number}}개 더 보기`,ticketColumn:`티켓`,scheduledTickets:`예정된 티켓`},copy:{description:`설명`,acceptanceCriteria:`인수 조건`}},detail:{field:{title:`제목`,description:`설명`,acceptanceCriteria:`인수 조건`,parent:`상위`,parentTicket:`상위 티켓`,labels:`레이블`,scopes:`스코프`,holdReason:`보류 사유`,url:`URL`},page:{preview:`티켓 미리 보기`,unavailable:`티켓을 사용할 수 없습니다`,noProject:`링크에 티켓의 프로젝트가 지정되어 있지 않습니다.`,gone:`이 티켓은 삭제되었거나 더 이상 액세스할 수 없습니다.`,closePreview:`미리 보기 닫기`,openFullPage:`전체 페이지로 열기`,backToTickets:`티켓으로 돌아가기`,tickets:`티켓`,previousTicket:`이전 티켓`,previousTicketShortcut:`이전 티켓 (K)`,nextTicket:`다음 티켓`,nextTicketShortcut:`다음 티켓 (J)`,position:`{{position, number}} / {{total, number}}`,subscribe:`구독`,unsubscribe:`구독 취소`,subscribed:`업데이트를 구독했습니다`,unsubscribed:`구독을 취소했습니다`,archive:`티켓 보관`,unarchive:`티켓 보관 해제`,archivedToast:`티켓을 보관했습니다`,unarchivedToast:`티켓 보관을 해제했습니다`,archived:`보관됨`,edit:`티켓 편집`,editShortcut:`티켓 편집 (E)`,editTitle:`{{key}} 편집`,actions:`티켓 작업`,copyKey:`티켓 키 복사`,keyCopied:`{{key}} 복사됨`,noDescription:`_설명 없음_`,noAcceptanceCriteria:`_인수 조건 없음_`,coordination:`티켓 조정`,properties:`속성`,created:`생성일`,updated:`업데이트일`},section:{discussion:`토론`,evidence:`증빙`,activity:`활동`},readiness:{heading:`에이전트 준비 상태`,ready:`선점 가능`,notReady:`선점 불가`,hold:`보류: {{reason}}`,claimedUntil:`<strong>{{worker}}</strong>이(가) {{date}}까지 선점했습니다.`},claim:{release:`내 선점 해제`,releaseDescription:`워커의 쓰기가 중지된 후 소유권을 해제할까요?`,recover:`만료된 선점 회수`,recoverHelp:`회수하려면 프로젝트 관리자 권한과 만료된 선점이 필요합니다. 먼저 워커를 중지하세요.`,reason:`회수 사유`,confirmed:`워커가 중지되었음을 확인했습니다`,submit:`소유권 회수`},editor:{storageUnavailable:`이 브라우저에서는 초안을 저장할 수 없습니다. 저장할 때까지 편집기를 열어 두세요.`,saved:`{{key}} 저장됨`,created:`{{key}} 생성됨`,properties:`티켓 속성`,readyForAgents:`에이전트 작업 가능`,readyForAgentsHelp:`요구 사항, 차단 요소, 소유권이 허용하면 에이전트가 이 티켓을 선점할 수 있습니다`,agents:`에이전트`,notReady:`준비 안 됨`,moreProperties:`속성 더 보기`,holdPlaceholder:`작업을 기다려야 하는 이유는?`,claimsNote:`선점은 여전히 요구 사항, 차단 요소, 현재 소유권에 따라 달라집니다.`,restoreSize:`작성기 크기 복원`,expand:`작성기 확장`,staleTitle:`이 티켓이 변경되었습니다.`,staleDescription:`초안이 아직 버전 {{version}}을(를) 사용합니다. 저장하려면 현재 버전이 필요합니다.`,discardAndReload:`초안 삭제 후 새로고침`,titlePlaceholder:`티켓 제목`,descriptionPlaceholder:`배경, 요구 사항 또는 재현 방법 추가…`,criteriaPlaceholder:`- [ ] 완료되었음을 무엇으로 알 수 있나요?`,removeCriteria:`인수 조건 제거`,addCriteria:`인수 조건 추가`,savedLocally:`이 기기에 초안이 저장되었습니다`,notSavedLocally:`초안을 저장할 수 없습니다`,discardDraft:`초안 삭제`,createMore:`계속 만들기`,save:`티켓 저장`,create:`티켓 만들기`},resource:{removeConfirm:`{{name}}을(를) 제거할까요?`,uploading:`업로드하는 중…`},attachment:{heading:`첨부 파일`,tooLarge:`각각 10 MB 이하인 파일을 선택하세요.`,attached_other:`파일 {{count, number}}개가 첨부되었습니다`,attach:`파일 첨부`,emptyWritable:`첨부 파일이 없습니다. 여기에 파일을 끌어다 놓으세요.`,empty:`첨부 파일 없음`,remove:`첨부 파일 제거`,fileInput:`파일 (최대 10 MB)`},evidence:{description:`이 티켓에서 작업하는 사람과 연동이 보고한 링크와 결과입니다.`,add:`증빙 추가`,empty:`첨부된 증빙이 없습니다`,added:`증빙이 추가되었습니다`,kindLabel:`유형`,outcomeLabel:`보고된 결과`,commit:`커밋 (전체 해시)`,note:`메모`},link:{heading:`링크`,add:`링크 추가`,edit:`링크 편집`,save:`링크 저장`,remove:`링크 제거`,empty:`링크 없음`,stateUnknown:`상태 알 수 없음`,remote:`{{kind}} · {{state}}`,remoteState:{open:`열림`,closed:`닫힘`,merged:`병합됨`,draft:`초안`,active:`활성`,deleted:`삭제됨`}},activity:{previous:`이전 활동`,next:`다음 활동`},relations:{heading:`관계`,add:`관계 추가`,linkExisting:`기존 티켓 연결`,newChild:`새 하위 티켓`,newChildTitle:`{{key}}의 새 하위 티켓`,children:`하위 티켓 <count>{{done, number}}/{{total, number}}</count>`,previousChildren:`이전 하위 티켓`,nextChildren:`다음 하위 티켓`,empty:`관계 없음`,type:`관계`,ticket:`티켓`,statusOf:`{{key}}의 상태`,assigneeOf:`{{key}}의 담당자`,remove:{blocks:`차단 관계 제거`,related:`관련 관계 제거`,duplicate:`중복 관계 제거`,causes:`원인 관계 제거`,clones:`복제 관계 제거`,implements:`구현 관계 제거`,reviews:`검토 관계 제거`}},discussion:{empty:`아직 댓글이 없습니다`,previous:`이전 댓글`,next:`다음 댓글`,comment:`댓글`,placeholder:`댓글 작성…`,posting:`게시하는 중…`,edited:`수정됨`,edit:`댓글 편집`,delete:`댓글 삭제`,deleteConfirm:`이 댓글을 영구 삭제할까요?`},markdown:{format:{heading:`제목`,bold:`굵게`,italic:`기울임꼴`,link:`링크`,linkHelp:`선택한 텍스트에 링크 연결`,bullets:`글머리 기호 목록`,numbers:`번호 매기기 목록`,tasks:`체크리스트`,code:`코드 블록`},formatting:`{{label}} 서식`,editor:`{{label}} 편집기`,insertFile:`파일 삽입`,insertFileInto:`{{label}}에 파일 삽입`,write:`작성`,visual:`비주얼`,preview:`미리 보기`,unsupported:`이 텍스트에는 HTML이나 각주처럼 비주얼 편집기가 유지할 수 없는 Markdown이 포함되어 있습니다.`,nothingToPreview:`미리 볼 내용이 없습니다`,mention:`멤버 멘션`,insertBlock:`블록 삽입`,block:{quote:`인용`,table:`표`,diagram:`다이어그램`,divider:`구분선`,file:`파일`},table:{addRow:`행 추가`,addColumn:`열 추가`,deleteRow:`행 삭제`,deleteColumn:`열 삭제`,deleteTable:`표 삭제`},linkAddress:`링크 주소`,diagram:`다이어그램`,diagramFailed:`이 다이어그램을 그릴 수 없습니다: {{error}}`,diagramSource:`다이어그램 소스`}},settings:{account:{title:`설정`,security:`로그인 및 보안`,localPassword:`로컬 비밀번호`,localPasswordDescription:`비밀번호를 변경하면 다른 세션에서 로그아웃됩니다.`,changePassword:`비밀번호 변경`,oidcLinked:`이 ID 공급자를 사용하여 같은 계정에 로그인할 수 있습니다.`,oidcUnlinked:`이 공급자로 로그인하기 전에 계정을 연결하세요.`,linked:`연결됨`,link:`{{name}} 연결`,currentPassword:`현재 비밀번호`,newPassword:`새 비밀번호`,confirmPassword:`새 비밀번호 확인`,passwordMismatch:`새 비밀번호가 일치하지 않습니다.`,passwordUpdated:`비밀번호가 업데이트되었습니다. 다른 세션에서 로그아웃되었습니다.`},preferences:{behavior:`동작`,languageDescription:`로그인 페이지를 포함하여 이 브라우저에 적용됩니다.`,weekStart:`한 주의 시작`,weekStartDescription:`모든 날짜 선택기에 적용됩니다.`,weekStartLanguage:`언어 기본값`,sidebar:`시작 시 사이드바`,sidebarDescription:`다음에 Kanvil을 열 때 적용됩니다.`,sidebarLast:`마지막 상태 유지`,sidebarExpanded:`펼침`,sidebarCollapsed:`접음`,ticketLists:`티켓 목록`,reset:`환경설정 초기화`,resetDescription:`이 브라우저에서 이 선택 항목을 기본값으로 되돌립니다.`,resetDone:`환경설정이 초기화되었습니다`},notifications:{title:`알림`,inbox:`받은편지함`,inboxDescription:`팔로우하는 티켓의 업데이트가 Kanvil에 표시됩니다.`,inboxSwitch:`구독한 티켓 업데이트를 받은편지함에 표시`,push:`푸시 알림`,pushDescription:`등록한 기기로 업데이트를 보냅니다.`,pushUnavailable:`이 인스턴스에서는 푸시 전달이 활성화되지 않았습니다.`,pushSwitch:`등록된 기기로 푸시 알림`,categories:`카테고리`,categorySwitch:`{{label}} 알림`,reminder:`마감 임박 알림`,reminderDescription:`팔로우하는 티켓의 마감일 얼마 전에 알릴지 설정합니다.`,reminderUnit:`알림 단위`,reminderAmount:`알림 값`,unit:{minutes:`분`,hours:`시간`,days:`일`,weeks:`주`}},layout:{nav:`설정`,section:`설정 섹션`,nested:`{{parent}} · {{child}}`,name:`이름`,description:`설명`,descriptionPlaceholder:`설명 추가`,noDescription:`설명 없음`,stale:`다른 곳에서 변경되었습니다. 취소하고 다시 시작하세요.`},profile:{title:`프로필`,displayName:`표시 이름`,edit:`프로필 편집`,changePhoto:`사진 변경`,removePhoto:`사진 제거`,photoFile:`프로필 사진 파일`,photoUpdated:`사진이 업데이트되었습니다`,photoRemoved:`사진이 제거되었습니다`,saved:`프로필이 저장되었습니다`},credentials:{global:`전체`,globalDescription:`나중에 접근 권한을 얻는 항목을 포함하여 계정이 접근할 수 있는 모든 프로젝트와 워크스페이스에 접근합니다.`,title:`API 키`,description:`취소할 수 있는 액세스 권한으로 스크립트, 연동, 에이전트를 연결합니다.`,create:`API 키 만들기`,creating:`만드는 중…`,created:`API 키가 생성되었습니다`,name:`이름`,access:`액세스`,projects:`프로젝트`,expires:`만료`,actions:`작업`,unavailableProject:`사용할 수 없는 프로젝트`,untitled:`이름 없는 키`,expired:`만료됨`,disabled:`비활성화됨`,custom:`사용자 지정`,noProjects:`프로젝트 액세스 없음`,never:`없음`,revoke:`API 키 취소`,revokeNamed:`{{name}}을(를) 취소할까요? 이 키를 사용하는 연결은 즉시 액세스 권한을 잃습니다.`,revokeUnnamed:`이 API 키를 취소할까요? 이 키를 사용하는 연결은 즉시 액세스 권한을 잃습니다.`,empty:`API 키 없음`,emptyDescription:`스크립트, 연동 또는 에이전트가 프로젝트에 액세스해야 할 때 키를 만드세요.`,copyNow:`지금 이 키를 복사하세요. 다시 볼 수 없습니다.`,newKey:`새 API 키`,copy:`API 키 복사`,noProjectTitle:`먼저 프로젝트를 선택하세요`,noProjectDescription:`API 키에는 최소 하나의 프로젝트에 대한 액세스 권한이 필요합니다.`,goToProjects:`프로젝트로 이동`,keyName:`키 이름`,keyNamePlaceholder:`예: 릴리스 자동화`,projectAccess:`프로젝트 액세스`,findProject:`프로젝트 찾기`,projectDescription:`{{key}} · {{workspace}}`,workspace:`워크스페이스`,noMatches:`일치하는 프로젝트가 없습니다`,roleLimit:`이 키로 할 수 있는 작업은 기존 프로젝트 역할에 따라 계속 제한됩니다.`,accessLevel:`액세스 수준`,preset:{read:`읽기 전용`,write:`읽기 및 쓰기`,automation:`읽기, 쓰기 및 작업 선점`,custom:`사용자 지정 권한`},permission:{read:{name:`티켓 읽기`,description:`프로젝트, 티켓, 댓글, 첨부 파일을 봅니다.`},write:{name:`티켓 편집`,description:`티켓, 댓글, 첨부 파일을 만들고 업데이트합니다.`},claim:{name:`작업 선점`,description:`티켓 소유권을 선점, 갱신, 해제합니다.`},admin:{name:`프로젝트 및 워크스페이스 관리`,description:`역할이 허용하는 범위에서 프로젝트와 워크스페이스의 설정 및 멤버를 변경합니다.`}},expiry:{7:`7일`,30:`30일`,90:`90일`,365:`1년`,custom:`날짜 지정`,never:`만료 없음`},expiresOn:`만료일`,neverDescription:`키를 삭제할 때까지 작동합니다.`},calendarFeeds:{title:`캘린더 피드`,new:`새 캘린더 피드`,created:`캘린더 피드가 생성되었습니다`,create:`피드 만들기`,adminOnly:`캘린더 피드는 프로젝트 관리자가 공유하고 취소합니다.`,labels:`레이블`,everyLabel:`모든 레이블`,stopped:`· 중지됨: 만든 사람이 더 이상 액세스할 수 없습니다`,revoke:`{{name}} 취소`,revokeDescription:`{{name}}을(를) 구독한 캘린더는 즉시 업데이트가 중지됩니다. 티켓은 변경되지 않습니다.`,revoked:`캘린더 피드가 취소되었습니다`,empty:`캘린더 피드 없음`,copyNow:`지금 이 링크를 캘린더 앱에 복사하세요. 한 번만 표시되며, 링크가 있는 사람은 누구나 공유된 티켓을 볼 수 있습니다.`,link:`피드 링크`,name:`피드 이름`,onlyLabels:`이 레이블이 있는 티켓만`,explanation:`이 피드는 시작일 또는 마감일이 있는 열린 미보관 티켓을 {{zone}} 기준 종일 일정으로 표시합니다. 링크가 있는 사람은 누구나 티켓의 키, 제목, 상태, 우선순위, 날짜를 볼 수 있습니다.`},project:{title:`프로젝트 설정`,edit:`프로젝트 편집`,copyPrefix:`티켓 접두사 복사`,saved:`프로젝트가 저장되었습니다`,noOpenTickets:`열린 티켓 없음`,openTickets_other:`열린 티켓 {{count, number}}개`,overdueTickets_other:`· 기한 지남 {{count, number}}개`,created:`· <time/> 생성됨`,access:`프로젝트 액세스`,accessWorkspace:`워크스페이스 멤버는 워크스페이스 역할에서 액세스 권한을 상속합니다.`,accessPrivate:`추가한 멤버와 워크스페이스 관리자만 이 프로젝트를 볼 수 있습니다.`,accessUpdated:`프로젝트 액세스가 업데이트되었습니다`,visibility:{workspace:`워크스페이스의 모든 사람`,private:`프로젝트 멤버만`},workspace:`워크스페이스`,workspaceSettings:`워크스페이스 설정`,prefix:`티켓 접두사`,prefixDescription:`변경 후에도 이전 접두사와 티켓 키는 계속 작동합니다.`,changePrefix:`접두사 변경`,changePrefixTitle:`티켓 접두사 변경`,changePrefixDescription:`{{name}}의 모든 티켓이 번호를 유지한 채 새 접두사를 사용합니다.`,changing:`변경하는 중…`,prefixChanged:`이제 티켓에 {{key}}이(가) 사용됩니다`,publicLink:`공개 링크`,publicDisclosure:`링크가 있는 사람은 누구나 보관되지 않은 모든 티켓의 제목, 설명, 인수 조건, 상태, 우선순위, 유형, 난이도, 레이블, 스코프, 날짜, 이 프로젝트의 다른 티켓으로 연결되는 링크를 볼 수 있습니다. 사람, 댓글, 활동, 첨부 파일, 증빙, 선점은 비공개로 유지됩니다.`,publicOn:`공개 링크 켜짐`,publicOff:`공개 링크 꺼짐`,off:`꺼짐`,copyPublicLink:`공개 링크 복사`,openPublic:`공개 보기 열기`,stopSharing:`공유 중지`,share:`공개적으로 공유`,background:`배경`,backgroundDescription:`이 프로젝트의 티켓 목록과 보드 뒤에 표시됩니다.`,backgroundUpdated:`배경이 업데이트되었습니다`,backgroundRemoved:`배경이 제거되었습니다`,currentBackground:`현재 배경`,uploading:`업로드하는 중…`,replace:`바꾸기`,upload:`이미지 업로드`,backgroundFile:`프로젝트 배경 파일`},tickets_other:`티켓 {{count, number}}개`,moveUp:`{{name}} 위로 이동`,moveDown:`{{name}} 아래로 이동`,workflow:{title:`워크플로`,new:`새 상태`,edit:`상태 편집`,editNamed:`{{name}} 상태 편집`,deleteNamed:`{{name}} 상태 삭제`,onlyState:`{{name}}은(는) 유일한 {{category}} 상태입니다`,saved:`상태가 저장되었습니다`,name:`상태 이름`,category:`카테고리`,color:`상태 색상`,categoryChange:`이 상태의 티켓은 {{status}} 상태로 바뀝니다.`,save:`상태 저장`,delete:`상태 삭제`,deleteTitle:`{{name}} 삭제`,deleted:`상태가 삭제되었습니다`,reassign_other:`티켓 {{count, number}}개를 이동할 상태`},labels:{title:`레이블`,search:`레이블 검색`,new:`새 레이블`,edit:`레이블 편집`,workspace:`워크스페이스`,editNamed:`{{name}} 레이블 편집`,deleteNamed:`{{name}} 레이블 삭제`,deleteUsed_other:`보관된 티켓을 포함한 티켓 {{count, number}}개에서 {{name}}을(를) 제거할까요? 이 레이블을 사용하는 저장된 보기에서는 레이블 필터가 제거됩니다.`,deleteUsedShared_other:`모든 프로젝트에서 보관된 티켓을 포함한 티켓 {{count, number}}개에서 {{name}}을(를) 제거할까요? 이 레이블을 사용하는 저장된 보기에서는 레이블 필터가 제거됩니다.`,deleteUnused:`사용하지 않는 레이블 {{name}}을(를) 삭제할까요? 이 레이블을 사용하는 저장된 보기에서는 레이블 필터가 제거됩니다.`,deleted:`레이블이 삭제되었습니다`,noMatches:`일치하는 레이블이 없습니다`,empty:`아직 레이블이 없습니다`,saved:`레이블이 저장되었습니다`,name:`레이블 이름`,color:`레이블 색상`,rename:`이름을 변경하면 티켓과 저장된 보기의 이 레이블이 업데이트됩니다.`,renameShared:`이름을 변경하면 모든 프로젝트의 티켓과 저장된 보기에서 이 레이블이 업데이트됩니다.`,adopt:`프로젝트 레이블 가져오기`,adoptDescription:`{{projects}}에 정의되어 있습니다. 해당 티켓은 레이블을 유지하고 이 색상을 사용합니다.`,save:`레이블 저장`},fields:{title:`필드`,new:`새 필드`,edit:`필드 편집`,editNamed:`{{name}} 필드 편집`,deleteNamed:`{{name}} 필드 삭제`,deleteUsed_other:`{{name}}을(를) 삭제하고 보관된 티켓을 포함한 티켓 {{count, number}}개에서 해당 값을 제거할까요? 저장된 보기에서 이 필드의 필터가 제거됩니다.`,deleteUnused:`사용하지 않는 필드 {{name}}을(를) 삭제할까요? 저장된 보기에서 이 필드의 필터가 제거됩니다.`,deleted:`필드가 삭제되었습니다`,empty:`아직 필드가 없습니다`,saved:`필드가 저장되었습니다`,required:`필수`,requiredDescription:`새 티켓에는 값이 필요합니다.`,defaultValue:`기본값 {{value}}`,default:`기본값`,name:`필드 이름`,type:`유형`,options:`옵션`,option:`옵션 {{number}}`,optionInline:`옵션 {{number}}`,optionColor:`{{name}} 색상`,removeOption:`{{name}} 제거`,addOption:`옵션 추가`,reassign:`{{name}}이(가) 있는 티켓`,clearValue:`값 지우기`,moveTo:`{{name}}(으)로 이동`,save:`필드 저장`},lifecycle:{archivedToast:`프로젝트가 보관되었습니다`,restoredToast:`프로젝트가 복원되었습니다`,archivedNotice:`<time/> 보관됨 · 읽기 전용`,restore:`복원`,archive:`보관`,archivedDescription:`<time/> 보관되었습니다. 티켓은 읽기 전용이며 목록, 검색, 내 작업, 캘린더 피드, 에이전트 대기열에 표시되지 않습니다.`,archiveDescription:`프로젝트를 목록, 검색, 내 작업, 캘린더 피드, 에이전트 대기열에서 숨기고 티켓을 읽기 전용으로 만듭니다. 기록은 유지됩니다.`,archiveProject:`프로젝트 보관`,archiveConfirm:`{{name}}은(는) 복원될 때까지 프로젝트 목록과 에이전트 대기열에서 제외됩니다. 선점된 티켓은 먼저 해제해야 합니다.`,blocker:`{{message}}: {{tickets}}`,row:{tickets:`티켓`,losesAccess:`액세스 상실`,gainsAccess:`액세스 획득`,labelsCopied:`복사되는 레이블`,labelsMerged:`병합되는 레이블`,followsRemoved:`제거되는 팔로우`,invitations:`초대`,comments:`댓글`,files:`파일`,kept:`유지`,projects:`프로젝트`,members:`멤버`,sharedLabels:`공유 레이블`,signIn:`로그인`,sessions:`세션`,credentials:`자격 증명`,devices:`기기`,access:`액세스`,claims:`선점`,imports:`가져오기`,profile:`프로필`},transferTickets_other:`{{count, number}}개, 키와 링크 유지`,noOne:`없음`,transferInvitations_other:`대기 중인 초대 {{count, number}}개에서 프로젝트가 제외됩니다`,files_other:`{{count, number}}개 · {{size}}`,keptProject_other:`활동 기록 {{count, number}}개와 {{key}} 접두사`,keptWorkspace_other:`활동 기록 {{count, number}}개와 {{slug}} URL 키`,archivedProject:`보관됨`,membersLoseAccess_other:`{{count, number}}명이 액세스 권한을 잃습니다. 계정은 유지됩니다`,pendingInvitations_other:`대기 중 {{count, number}}개`,move:`이동`,moveTitle:`{{name}} 이동`,moved:`{{name}}(으)로 이동했습니다`,movedUnnamed:`워크스페이스로 이동했습니다`,destination:`대상 워크스페이스`,moveProject:`프로젝트 이동`,moving:`이동하는 중…`,export:`내보내기`,exportDescription:`티켓을 워크플로, 필드, 레이블, 관계, 댓글, 증빙, 링크와 함께 버전이 지정된 JSON으로 내보냅니다. 첨부 파일과 활동 기록은 여기에 남습니다.`,exporting:`내보내는 중…`,exportJson:`JSON 내보내기`,delete:`삭제`,deleteTitle:`{{name}} 삭제`,deleted:`{{name}}이(가) 삭제되었습니다`,typeToConfirm:`확인하려면 {{value}}을(를) 입력하세요`,deleting:`삭제하는 중…`,deleteProject:`프로젝트 삭제`,deleteProjectDescription:`티켓, 댓글, 파일을 영구적으로 제거합니다. 활동 기록은 유지되며 {{key}}은(는) 다시 사용되지 않습니다.`,signInAgain:`다시 로그인`,deleteWorkspace:`워크스페이스 삭제`,deleteWorkspaceDescription:`워크스페이스의 모든 프로젝트를 티켓, 댓글, 파일과 함께 영구 삭제하고 멤버를 제거합니다. 계정과 활동 기록은 유지됩니다.`,noSignInMethods:`연결된 로그인 방법 없음`,sessions_other:`세션 {{count, number}}개 로그아웃됨`,credentials_other:`API 키 또는 앱 연결 {{count, number}}개 취소됨`,devices_other:`기기 또는 알림 채널 {{count, number}}개 제거됨`,workspaceCount_other:`워크스페이스 {{count, number}}개`,directProjectCount_other:`직접 참여한 프로젝트 {{count, number}}개`,accessWorkspaces:`{{workspaces}}에서 제거됨`,accessBoth:`{{workspaces}} 및 {{projects}}에서 제거됨`,claims_other:`선점 {{count, number}}개 해제됨`,imports_other:`가져오기 {{count, number}}개 취소됨`,profileErased:`이름, 이메일, 사진 삭제됨`,commentCount_other:`댓글 {{count, number}}개`,activityCount_other:`활동 기록 {{count, number}}개`,keptAccount:`{{tickets}}, {{comments}}, {{events}}이(가) {{name}}(으)로 표시됨`,deleteAccount:`계정 삭제`,deleteOwnAccount:`로그인, 세션, 키, 기기, 멤버십, 개인 정보를 영구적으로 제거합니다. 티켓, 댓글, 활동은 유지되며 {{name}}(으)로 표시됩니다.`,deleteOtherAccount:`이 계정의 로그인, 세션, 키, 기기, 멤버십, 개인 정보를 영구적으로 제거합니다. 티켓, 댓글, 활동은 유지되며 {{name}}(으)로 표시됩니다.`},icon:{change:`아이콘 변경`,title:`프로젝트 아이콘`,library:`아이콘 라이브러리`,upload:`이미지 업로드`,search:`아이콘 검색`,searchPlaceholder:`아이콘 검색…`,color:`아이콘 색상`,choose:`{{name}} 선택`,noMatches:`일치하는 아이콘이 없습니다`,showMore:`아이콘 더 보기`,uploading:`업로드하는 중…`,chooseImage:`이미지 선택`,formats:`PNG, JPEG 또는 WebP · 최대 10 MB`,file:`프로젝트 아이콘 파일`,reset:`아이콘 초기화`},createProject:{title:`새 프로젝트`,inWorkspace:`{{name}}에 만들기`,everyoneLabel:`이 워크스페이스의 모든 사람`,name:`프로젝트 이름`,namePlaceholder:`모바일 앱`,create:`프로젝트 만들기`},workspace:{title:`워크스페이스 설정`,owner:`소유자`,noOwner:`소유자가 없습니다. 인스턴스 관리자가 지정할 수 있습니다.`,transfer:`소유권 이전`,transferring:`이전하는 중…`,transferred:`이제 {{name}}이(가) {{workspace}}의 소유자입니다`,newOwner:`새 소유자`,noEligible:`소유권은 활성 워크스페이스 관리자에게 이전됩니다. 먼저 다른 멤버를 관리자로 지정하세요.`,chosenCan:`이후 {{name}}이(가) 워크스페이스를 이전하거나 삭제할 수 있습니다.`,newOwnerCan:`새 소유자는 워크스페이스를 이전하거나 삭제할 수 있습니다.`,ownerStays:`{{name}}은(는) 관리자로 유지됩니다.`,unavailable:`워크스페이스를 사용할 수 없습니다`,backToProjects:`프로젝트로 돌아가기`,name:`워크스페이스 이름`,edit:`워크스페이스 편집`,copyKey:`워크스페이스 키 복사`,saved:`워크스페이스가 저장되었습니다`,projects:`프로젝트`,projectCount_other:`이 워크스페이스에서 액세스할 수 있는 프로젝트 {{count, number}}개.`,viewProjects:`프로젝트 보기`,members:`멤버`,membersDescription:`워크스페이스 역할은 워크스페이스 액세스를 사용하는 프로젝트에 적용됩니다.`,manageMembers:`멤버 관리`},members:{title:`멤버`,customRole:`사용자 지정 역할`,search:`멤버 검색`,searchPlaceholder:`이름 또는 이메일…`,add:`멤버 추가`,added:`멤버가 추가되었습니다`,workspaceAccess:`워크스페이스 액세스`,owner:`소유자`,roleFor:`{{name}}의 역할`,useWorkspaceAccess:`워크스페이스 액세스 사용`,remove:`멤버 제거`,removeFromWorkspace:`{{name}}을(를) 이 워크스페이스와 모든 프로젝트에서 제거할까요?`,restoreAccess:`{{name}}의 {{role}} 워크스페이스 액세스를 복원할까요?`,removeFromProject:`{{name}}의 프로젝트 액세스를 제거할까요?`,noMatches:`일치하는 멤버가 없습니다`,empty:`멤버 없음`,projectRole:`프로젝트 역할`,workspaceRole:`워크스페이스 역할`},invitations:{title:`초대`,invite:`이메일로 초대`,removedProjects:`제거된 프로젝트`,wholeWorkspace:`전체 워크스페이스`,selectedProjects:`선택한 프로젝트`,expired:`만료됨`,expires:`<time/> 만료`,resend:`{{email}}(으)로 초대 다시 보내기`,revoke:`초대 취소`,revokeDescription:`{{email}}(으)로 보낸 링크가 더 이상 작동하지 않습니다.`,revoked:`초대가 취소되었습니다`,empty:`대기 중인 초대 없음`,email:`이메일`,role:`역할`,access:`액세스`,projects:`프로젝트`,noProjects:`이 워크스페이스에는 프로젝트가 없습니다.`,linkExpires:`링크 만료`,inDays_other:`{{count, number}}일 후`,submit:`초대`,link:`초대 링크`,copyLink:`초대 링크 복사`,emailed:`{{email}}(으)로 이메일을 보냈습니다. 링크는 해당 주소로 한 번만 사용할 수 있습니다.`,notEmailed:`이 인스턴스에는 이메일이 구성되어 있지 않습니다. 이 링크를 {{email}}에 보내세요. 링크는 해당 주소로 한 번만 사용할 수 있습니다.`,notEmailedUnknown:`이 인스턴스에는 이메일이 구성되어 있지 않습니다. 이 링크를 받는 사람에게 보내세요. 링크는 해당 주소로 한 번만 사용할 수 있습니다.`},workspaces:{title:`워크스페이스`,search:`워크스페이스 검색`,searchPlaceholder:`이름 또는 URL 키…`,noMatches:`일치하는 워크스페이스가 없습니다`,empty:`워크스페이스 없음`,workspace:`워크스페이스`,administrators:`관리자`,members:`멤버`,projects:`프로젝트`,created:`생성일`,actions:`작업`,noAdministrator:`관리자 없음`,manage:`{{name}} 관리`,pagerNoun:`워크스페이스`,private:`비공개`,noProjects:`프로젝트 없음`},roles:{title:`역할`,new:`새 역할`,edit:`역할 편집`,builtIn:`기본 제공`,readOnly:`읽기 외 작업 없음`,memberships_other:`멤버십 {{count, number}}개`,editNamed:`{{name}} 역할 편집`,deleteNamed:`{{name}} 역할 삭제`,deleteUnused:`사용하지 않는 역할 {{name}}을(를) 삭제할까요?`,deleted:`역할이 삭제되었습니다`,empty:`역할 없음`,saved:`역할이 저장되었습니다`,name:`역할 이름`,actions:`작업`,everyoneReads:`모든 멤버는 접근할 수 있는 프로젝트를 읽을 수 있습니다.`,changesApply_other:`변경 사항은 이 역할을 가진 멤버십 {{count, number}}개에 즉시 적용됩니다.`,save:`역할 저장`,delete:`역할 삭제`,reassignDescription_other:`멤버십 {{count, number}}개가 {{name}}을(를) 가지고 있습니다. 이동할 역할을 선택하세요.`,moveTo:`멤버를 이동할 역할`},theme:{mode:{light:`라이트`,dark:`다크`,system:`시스템`},aligned:`Aligned`,hexColor:`6자리 16진수 색상을 사용하세요`,contrast:{light:`라이트 테마의 텍스트 대비를 4.5:1 이상으로 높이세요.`,dark:`다크 테마의 텍스트 대비를 4.5:1 이상으로 높이세요.`},fileTooLarge:`테마 파일은 100 KB보다 작아야 합니다.`,tooMany:`사용자 지정 테마는 최대 50개까지 유지할 수 있습니다.`},appearance:{colorScheme:`색 구성표`,theme:`테마`,themes:`테마`,colorTheme:`색상 테마`,search:`테마 검색`,searchPlaceholder:`테마 검색…`,create:`테마 만들기`,add:`테마 추가`,importFile:`테마 파일 가져오기`,useMode:{light:`{{name}} 라이트 모드 사용`,dark:`{{name}} 다크 모드 사용`},modeOnly:{light:`라이트 모드에만 사용`,dark:`다크 모드에만 사용`},copyName:`{{name}} 사본`,duplicate:`{{name}} 복제`,edit:`{{name}} 편집`,export:`{{name}} 내보내기`,delete:`{{name}} 삭제`,deleteDescription:`이 브라우저에서 {{name}}을(를) 제거할까요? 이 테마를 사용하는 라이트 또는 다크 모양은 기본 테마로 돌아갑니다.`,noMatches:`일치하는 테마가 없습니다`,customTheme:`사용자 지정 테마`,name:`테마 이름`,paletteColor:`{{color}} ({{mode}})`,color:{background:`배경`,foreground:`텍스트`,sidebar:`사이드바`,primary:`강조`,primaryForeground:`강조 텍스트`},save:`테마 저장`},color:{swatch:`{{label}}: {{color}}`,removeCustom:`사용자 지정 색상에서 {{hex}} 제거`,custom:`사용자 지정 색상`,default:`기본`,red:`빨간색`,orange:`주황색`,amber:`호박색`,yellow:`노란색`,lime:`라임색`,green:`초록색`,emerald:`에메랄드색`,teal:`청록색`,cyan:`시안`,sky:`하늘색`,blue:`파란색`,indigo:`남색`,violet:`바이올렛`,purple:`보라색`,fuchsia:`자홍색`,pink:`분홍색`,rose:`장미색`,gray:`회색`}},admin:{instance:{title:`관리`,heading:`인스턴스`,edit:`인스턴스 편집`,name:`이름`,description:`설명`,noDescription:`설명 없음`,version:`애플리케이션 버전`,publicUrl:`공개 URL`,provider:{local:`로컬 PostgreSQL 저장소`,s3:`S3 호환 개체 저장소`,postgres:`기본 제공 PostgreSQL`,elasticsearch:`Elasticsearch 호환 검색`},section:{storage:`파일 저장소`,search:`티켓 검색`,events:`이벤트 전달`},viewConfiguration:`구성 보기`,configure:{storage:`저장소 구성`,search:`검색 구성`,events:`이벤트 전달 구성`},providerTitle:`공급자`,deploymentManaged:`배포에서 관리`,instanceManaged:`인스턴스에서 관리`,transfers:`전송`,indexStatus:`색인 상태`,connection:`연결`,transfersS3:`파일은 로컬에 저장된 후 개체 저장소로 이동됩니다.`,transfersLocal:`새 파일은 PostgreSQL에 저장됩니다.`,searchBuiltIn:`검색은 PostgreSQL에서 직접 실행됩니다.`,searchIndexed:`티켓 변경 사항은 백그라운드에서 색인됩니다.`,eventsConnection:`알림이 소비자를 깨우고, PostgreSQL이 재생 기록을 보관합니다.`,builtIn:`기본 제공`,connected:`연결됨`,upToDate:`최신 상태`,status:{ready:`준비됨`,transferring:`전송 중`,indexing:`색인 중`,connecting:`연결 중`,unavailable:`사용 불가`},pendingTransfers:`대기 중인 전송`,pendingRemain:`전송이 완료될 때까지 이 파일은 PostgreSQL에서 계속 사용할 수 있습니다.`,noPending:`전송 대기 중인 파일이 없습니다.`,bucket:`버킷`,storageEndpoint:`저장소 엔드포인트`,backup:`백업`,backupBuckets:`PostgreSQL과 참조되는 모든 개체 저장소 버킷을 백업하세요.`,backupDatabase:`파일 데이터는 PostgreSQL 백업에 포함됩니다.`,fallback:`대체`,fallbackDescription:`외부 색인이 뒤처지거나 오프라인인 동안 PostgreSQL 검색을 사용할 수 있습니다.`,searchEndpoint:`검색 엔드포인트`,index:`색인`,delivery:`전달`,deliveryDescription:`영구 이벤트와 재생은 PostgreSQL에 유지됩니다. 선택적 브로커가 깨우기 신호를 배포합니다.`,brokerEndpoint:`브로커 엔드포인트`,exchange:`익스체인지`},configure:{storageTitle:`파일 저장소 구성`,searchTitle:`티켓 검색 구성`,eventsTitle:`이벤트 전달 구성`,saved:`인스턴스 설정이 저장되었습니다`,instanceName:`인스턴스 이름`,instanceDescription:`인스턴스 설명`,publicUrlSource:`공개 URL은 배포의 KANVIL_URL로 설정됩니다.`,storageIntro:`첨부 파일과 프로필 사진은 이 공급자를 사용합니다. 기존 파일은 원래 저장 위치를 유지합니다.`,storageProvider:`저장소 공급자`,localDescription:`파일 데이터는 로컬 데이터베이스에 저장되며 PostgreSQL 백업에 포함됩니다.`,s3Endpoint:`S3 엔드포인트`,s3EndpointHint:`Amazon S3의 경우 엔드포인트를 비워 두세요.`,region:`리전`,prefix:`개체 키 접두사`,accessKeyId:`액세스 키 ID`,secretAccessKey:`비밀 액세스 키`,savedSecret:`저장됨. 유지하려면 비워 두세요.`,deploymentCredentials:`생략하면 배포 자격 증명 사용`,pathStyle:`경로 스타일 버킷 URL 사용`,storageVerified:`저장소 연결이 확인되었습니다`,testStorage:`저장소 연결 테스트`,filesWaiting_other:`파일 {{count, number}}개가 전송 대기 중입니다. 대기 중인 파일은 PostgreSQL에서 계속 읽을 수 있습니다.`,transfersComplete:`모든 파일 전송이 완료되었습니다.`,storageDeployment:`저장소는 KANVIL_STORAGE_PROVIDER 및 S3_* 배포 변수로 구성됩니다.`,locations:`기존 저장 위치`,locationFiles_other:`파일 {{count, number}}개`,cleanUp:`사용하지 않는 파일 정리`,cleanUpConfirm:`참조되지 않는 파일과 하루 이상 지난 실패한 업로드를 제거할까요? 티켓이나 프로필에 첨부된 파일은 유지됩니다.`,cleanUpNote:`정리는 자동으로도 실행됩니다. S3 개체는 데이터베이스 백업과 함께 버킷 백업이 필요합니다.`,searchProvider:`검색 공급자`,searchBuiltIn:`기본 제공 PostgreSQL 검색`,indexName:`Kanvil 색인 이름`,searchAuthentication:`검색 인증`,noAuthentication:`인증 없음`,apiKey:`API 키`,basic:`사용자 이름과 비밀번호`,searchApiKey:`검색 API 키`,optional:`선택 사항`,searchUsername:`검색 사용자 이름`,searchPassword:`검색 비밀번호`,searchVerified:`검색 연결이 확인되었습니다`,testSearch:`검색 연결 테스트`,rebuildQueued:`검색 재구성이 대기열에 추가되었습니다`,rebuild:`색인 재구성`,searchNote:`권한과 필터의 기준은 계속 PostgreSQL입니다. 외부 색인이 따라잡는 중이거나 사용할 수 없으면 검색은 PostgreSQL로 대체됩니다.`,brokerProvider:`이벤트 전달 공급자`,brokerBuiltIn:`기본 제공 PostgreSQL 알림`,rabbitUrl:`RabbitMQ 연결 URL`,savedBrokerEndpoint:`저장된 브로커 엔드포인트`,rabbitExchange:`RabbitMQ 익스체인지`,brokerVerified:`RabbitMQ 전달이 확인되었습니다`,testBroker:`브로커 연결 테스트`,brokerNote:`RabbitMQ는 커밋된 이벤트의 깨우기 신호를 Kanvil 인스턴스에 배포하고 백그라운드 워커를 깨웁니다. PostgreSQL은 영구 이벤트와 대기 중인 작업을 보관하며, 브로커를 사용할 수 없을 때 깨우기 신호를 전달합니다.`,brokerDeployment:`이벤트 전달은 KANVIL_BROKER_PROVIDER 및 RABBITMQ_* 배포 변수로 구성됩니다.`,save:`인스턴스 설정 저장`},authentication:{title:`인증`,saved:`인증 설정이 저장되었습니다`,emailPassword:`이메일 및 비밀번호 로그인`,emailPasswordDescription:`이메일 로그인 코드와 비밀번호 재설정을 포함합니다.`,ssoProvision:`SSO에서 사용자 자동 생성`,ssoProvisionDescription:`새 SSO 사용자는 초대될 때까지 워크스페이스나 프로젝트에 액세스할 수 없습니다.`,registration:`공개 이메일 가입`,registrationClosed:`닫힘`,identityProvider:`ID 공급자`,notConfigured:`구성되지 않음`,linkedProviders:`연결된 계정 공급자`,linkedProvidersDescription:`연결한 계정만 로그인할 수 있으며 계정을 만들지 않습니다.`,save:`인증 설정 저장`,discoveryUrl:`OIDC 검색 URL`,clientId:`OIDC 클라이언트 ID`,oidcSetup:`배포에서 OIDC_DISCOVERY_URL, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_NAME 또는 GITHUB_, GOOGLE_, DISCORD_ 중 하나의 CLIENT_ID와 CLIENT_SECRET 쌍을 구성한 후 Kanvil을 다시 시작하세요. 공급자 비밀은 브라우저로 반환되지 않습니다.`,consumers:`소비자 인터페이스`,mcpEndpoint:`MCP 엔드포인트`,eventFeed:`실시간 이벤트 피드`,openApi:`Open API 사양`},users:{title:`사용자`,search:`사용자 검색`,searchPlaceholder:`이름 또는 이메일…`,new:`새 사용자`,roleFilter:`인스턴스 역할 필터`,allRoles:`모든 역할`,administrators:`관리자`,users:`사용자`,statusFilter:`계정 상태 필터`,allAccounts:`모든 계정`,active:`활성`,disabled:`비활성화됨`,noMatches:`일치하는 사용자가 없습니다`,empty:`사용자 없음`,user:`사용자`,role:`역할`,status:`상태`,joined:`가입일`,actions:`작업`,administrator:`관리자`,manage:`{{name}} 관리`,pagerNoun:`사용자`,create:`계정 만들기`,creating:`만드는 중…`,created:`{{email}} 생성됨`,name:`이름`,email:`이메일`,initialPassword:`초기 비밀번호`,instanceRole:`인스턴스 역할`},account:{details:`계정 세부 정보`,joined:`{{date}} 가입`,edit:`계정 편집`,instanceRole:`인스턴스 역할`,adminDescription:`모든 워크스페이스, 계정, 배포 설정을 관리할 수 있습니다.`,userDescription:`워크스페이스 및 프로젝트 역할에 따라 액세스가 결정됩니다.`,changeRole:`역할 변경`,changeRoleTitle:`인스턴스 역할 변경`,signInMethods:`로그인 방법`,setPassword:`로컬 비밀번호 설정`,activeSessions:`활성 세션`,sessions_other:`세션 {{count, number}}개`,revokeSessions:`세션 취소`,revokeConfirm:`모든 기기에서 {{name}}을(를) 로그아웃할까요? API 키는 계속 활성 상태로 유지됩니다.`,sessionsRevoked:`세션이 취소되었습니다`,access:`계정 액세스`,accessDisabled:`로그인 및 API 액세스가 비활성화되었습니다.`,accessPreserved:`계정을 비활성화해도 티켓과 활동 기록은 유지됩니다.`,enable:`계정 활성화`,disable:`계정 비활성화`,enableConfirm:`{{name}}의 로그인을 복원할까요?`,disableConfirm:`{{name}}의 로그인 및 API 액세스를 비활성화하고 세션을 취소할까요?`,enabled:`계정이 활성화되었습니다`,disabledToast:`계정이 비활성화되었습니다`,updateFailed:`계정을 업데이트할 수 없습니다`,workspaces:`워크스페이스`,addToWorkspace:`워크스페이스에 추가`,noWorkspaces:`워크스페이스 멤버십 없음`,projectAccess:`직접 프로젝트 액세스`,updated:`계정이 업데이트되었습니다`,roleUpdated:`인스턴스 역할이 업데이트되었습니다`,workspaceAdded:`워크스페이스 액세스가 추가되었습니다`,passwordMismatch:`새 비밀번호가 일치하지 않습니다.`,passwordSet:`로컬 비밀번호가 설정되고 세션이 취소되었습니다`,name:`이름`,email:`이메일`,user:`사용자`,administrator:`관리자`,adminsNote:`관리자는 모든 워크스페이스, 사용자, 인스턴스 설정을 관리할 수 있습니다.`,workspace:`워크스페이스`,workspaceRole:`워크스페이스 역할`,newPassword:`새 비밀번호`,confirmPassword:`새 비밀번호 확인`,passwordNote:`로컬 비밀번호를 설정하고 모든 기기에서 사용자를 로그아웃합니다.`,save:`변경 사항 저장`},delivery:{field:{address:`이메일 주소`,server:`서버`,topic:`토픽`,accessToken:`액세스 토큰`,applicationToken:`애플리케이션 토큰`,endpointUrl:`엔드포인트 URL`,signingSecret:`서명 비밀`,incomingWebhookUrl:`수신 웹훅 URL`,webhookUrl:`웹훅 URL`,channel:`채널`,botToken:`봇 토큰`,chatId:`채팅 ID`,chatIdPlaceholder:`-1001234567890 또는 @channel`,topicId:`토픽 ID`,optional:`{{label}} (선택 사항)`,removeSaved:`저장된 {{label}} 제거`,savedSecret:`저장됨 · 유지하려면 비워 두기`},failure:{blockedAddress:`허용되지 않은 주소입니다`,redirectBlocked:`엔드포인트가 리디렉션했습니다`,dnsError:`호스트를 찾을 수 없습니다`,networkError:`연결할 수 없습니다`,timeout:`시간 초과`,invalidEndpoint:`잘못된 엔드포인트`,emailUnavailable:`이 서버에는 이메일이 구성되어 있지 않습니다`,smtpError:`메일 서버를 사용할 수 없습니다`,accessRevoked:`연결한 관리자가 액세스 권한을 잃었습니다. 다시 연결하세요`,repositoryMismatch:`다른 저장소에서 전달되었습니다`,http:`HTTP {{status}}(으)로 거부됨`,smtp:`메일 서버 응답: {{code}}`},health:{delivery:{done:`<time/> 전달됨`,pending:`보내는 중…`,none:`아직 보낸 항목 없음`,failed:`{{reason}}`},access:{done:`<time/> 액세스 확인됨`,pending:`액세스 확인 중…`,none:`액세스 확인 안 됨`,failed:`액세스 확인: {{reason}}`},retrying:`다시 시도 중`},paused:`일시 중지됨`,failing:`실패 중`,sendTest:`{{name}}(으)로 테스트 보내기`,testQueued:`테스트가 대기열에 추가되었습니다`,resume:`{{name}} 재개`,pause:`{{name}} 일시 중지`,edit:`{{name}} 편집`,disconnect:`{{name}} 연결 해제`,disconnected:`{{name}} 연결이 해제되었습니다`,name:`이름`,type:`유형`,channels:`채널`,addChannel:`채널 추가`,noChannels:`채널 없음`,editChannel:`채널 편집`,channelSaved:`채널이 저장되었습니다`,channelRemoval:`{{name}}의 연결을 해제할까요? 설정과 대기 중인 알림이 삭제됩니다.`,sendFrom:`알림을 보낼 프로젝트`,routeOff:`없음`,routeAll:`모든 프로젝트`,routeSelected:`선택한 프로젝트`,saveChannel:`채널 저장`,adminsOnly:`연동은 프로젝트 관리자가 관리합니다`,destinations:`전송 대상`,addDestination:`전송 대상 추가`,noDestinations:`전송 대상 없음`,editDestination:`전송 대상 편집`,destinationSaved:`전송 대상이 저장되었습니다`,destinationRemoval:`{{name}}의 연결을 해제할까요? 설정과 대기 중인 메시지가 삭제됩니다.`,send:`보내기`,saveDestination:`전송 대상 저장`},repository:{setup:{github:`토큰에는 저장소 읽기 권한과, 댓글 작성 또는 이슈 동기화를 위한 이슈 및 풀 리퀘스트 쓰기 권한이 필요합니다. 이 저장소 행에서 복사한 URL, 콘텐츠 유형 application/json, 이 비밀, 그리고 Branch or tag creation, Branch or tag deletion, Issues, Issue comments, Pull requests 이벤트로 GitHub 웹훅을 추가하세요.`,gitea:`토큰에는 read:repository 스코프와, 댓글 작성 또는 이슈 동기화를 위한 write:issue가 필요합니다. 이 저장소 행에서 복사한 URL, 콘텐츠 유형 application/json, 이 비밀, 그리고 Create, Delete, Issues, Issue Label, Issue Comment, Pull Request 이벤트로 Gitea 웹훅을 추가하세요.`,gitlab:`토큰에는 read_api 스코프와, 댓글 작성 또는 이슈 동기화를 위한 api가 필요합니다. 이 저장소 행에서 복사한 URL, 이 비밀 토큰, 그리고 Push, Issues, Comments, Merge request 이벤트로 GitLab 웹훅을 추가하세요.`},noWebhook:`수신된 웹훅 없음`,webhookReceived:`<time/> 웹훅 수신됨`,saved:`저장소가 저장되었습니다`,title:`저장소`,connect:`저장소 연결`,empty:`저장소 없음`,checkAccess:`{{repository}} 액세스 확인`,accessQueued:`액세스 확인이 대기열에 추가되었습니다`,copyWebhook:`{{repository}}의 웹훅 URL 복사`,issueSync:`{{repository}}의 이슈 동기화`,removal:`{{repository}}의 연결을 해제할까요? 웹훅이 즉시 작동을 멈춥니다. 이 저장소가 추가한 링크는 티켓에 남습니다.`,edit:`저장소 편집`,host:`호스트`,serverUrl:`서버 URL`,serverUrlOptional:`서버 URL (선택 사항)`,repository:`{{host}} 저장소`,nestedPlaceholder:`group/project`,placeholder:`owner/repository`,accessToken:`액세스 토큰`,webhookSecret:`웹훅 비밀`,savedSecret:`저장됨 · 유지하려면 비워 두기`,commentOnLink:{pull_request:`새로 연결된 이슈와 풀 리퀘스트에 댓글 작성`,merge_request:`새로 연결된 이슈와 머지 리퀘스트에 댓글 작성`},moveTickets:`연결된 티켓 이동`,noMove:`이동 안 함`,save:`저장소 저장`},issueSync:{reason:{labels:`동기화 레이블이 변경되었습니다`,conflict:`양쪽에서 변경되었습니다`,changedWhilePaused:`저장소가 일시 중지된 동안 이슈가 변경되었습니다`,unverified:`호스트의 응답으로 변경을 확인할 수 없습니다`,claimConflict:`티켓이 선점되어 있습니다`,invalidContent:`이슈가 티켓에서 허용하는 길이보다 깁니다`},issuesSyncing_other:`이슈 {{count, number}}개 동기화 중`,linksStopped_other:`링크 {{count, number}}개 중지됨`,match:`일치 조건`,matchAny:`이 레이블 중 하나`,matchAll:`이 레이블 모두`,preview:{matching:`계속 동기화`,export:`만들 새 이슈`,pause:`일시 중지할 링크`,review:`검토할 링크`},applied:`이슈 동기화가 적용되었습니다`,title:`이슈 동기화 · {{repository}}`,outbound:`Kanvil에서 {{host}}(으)로`,exportTickets:`티켓을 이슈로 내보내기`,exportDescription:`열린 티켓마다 새 이슈가 생성되며, 제목, 설명, 상태, 새 댓글이 동기화됩니다.`,ticketLabels:`이 레이블이 있는 티켓만`,everyTicket:`모든 열린 티켓`,inbound:`{{host}}에서 Kanvil로`,importIssues:`이슈를 티켓으로 가져오기`,importDescription:`열린 이슈는 {{host}}이(가) 다음에 보고할 때 가져옵니다.`,issueLabels:`이 레이블이 있는 이슈만`,everyIssue:`모든 열린 이슈`,previewLabel:`미리 보기`,previewAction:`미리 보기`,stopped:`중지된 링크 · {{repository}}`,review:`검토`,linkRemoved:`링크가 제거되었습니다`,resumed:`동기화가 재개되었습니다`,open:`열림`,closed:`닫힘`,reviewTitle:`{{key}} 검토`,mayExist:`{{host}}에 이 이슈가 이미 있을 수 있습니다. 다시 만들기 전에 확인하세요.`,comparison:`비교`,field:{title:`제목`,description:`설명`,state:`상태`},notReported:`보고되지 않음`,unlink:`연결 해제`,keepHost:`{{host}} 유지`,keepKanvil:`Kanvil 유지`,createAgain:`이슈 다시 만들기`,unlinkTicket:`{{key}} 연결 해제`,unlinkConfirm:`{{key}} 동기화를 중지할까요? 티켓과 이슈는 모두 유지됩니다.`},import:{count:{tickets:`티켓`,workflow:`워크플로 상태`,fields:`사용자 지정 필드`,labels:`레이블`,relations:`관계`,comments:`댓글`,evidence:`증빙`,links:`링크`},notExport:`이 파일은 Kanvil 티켓 내보내기 파일이 아닙니다.`,progress_other:`{{status}} · 레코드 {{count, number}}개 중 {{done, number}}개`,progressFailed_other:`{{status}} · 레코드 {{count, number}}개 중 {{done, number}}개 · {{failed, number}}개 실패`,title:`가져오기`,description:`Kanvil 티켓 내보내기 또는 다른 트래커(Linear, Jira, Trello, Plane, PLANKA, Kaneo)에서 프로젝트를 만듭니다.`,action:`프로젝트 가져오기`,detailsOf:`{{name}} 세부 정보`,details:`세부 정보`,exportFile:`Kanvil 내보내기 파일`,source:`소스`,file:`내보내기 파일`,jiraEdition:`Jira 에디션`,siteUrl:`사이트 URL`,accountEmail:`계정 이메일`,apiKey:`API 키`,apiToken:`API 토큰`,personalToken:`개인 액세스 토큰`,token:`토큰`,apiUrl:`API URL`,workspaceSlug:`워크스페이스 URL 키`,signInWith:`로그인 방법`,username:`사용자 이름 또는 이메일`,password:`비밀번호`,checkConnection:`연결 정보를 확인하세요`,noProjects:`이 자격 증명으로는 {{label}}을(를) 읽을 수 없습니다.`,includeComments:`댓글 포함`,projectName:`프로젝트 이름`,start:`가져오기`,connect:`연결`,preview:`미리 보기`,starting:`시작하는 중…`,connecting:`연결하는 중…`,checking:`확인하는 중…`,matched:`일치한 사람`,unmatched:`일치하지 않은 사람`,previewLabel:`가져오기 미리 보기`,errorPrefix:`오류: `,notePrefix:`참고: `,progressLabel:`가져오기 진행 상황`,notImported:`가져오지 못한 레코드`,stop:`가져오기 중지`,openProject:`프로젝트 열기`}},native:{labelValue:`{{label}}: {{value}}`,ui:{dismiss:`닫기`,loading:`불러오는 중`},server:{url:`서버 URL`,connect:`연결`,change:`서버 변경`,invalidOrigin:`경로나 자격 증명 없이 Kanvil 서버의 HTTP 또는 HTTPS 출처를 사용하세요.`,httpsRequired:`Kanvil 서버에 연결하려면 HTTPS를 사용하세요.`},login:{setupTitle:`소유자 계정 만들기`,signIn:`로그인`,signingIn:`로그인하는 중…`,createAccount:`계정 만들기`,signInWith:`{{provider}}(으)로 로그인`,name:`이름`,setupToken:`설정 토큰`,email:`이메일`,password:`비밀번호`},connection:{connecting:`연결 중`,connected:`● 실시간`,offline:`오프라인 · 캐시된 데이터`,closed:`닫힘`,signedOut:`다시 연결하려면 로그인`},screen:{projects:`프로젝트`,inbox:`받은편지함`,settings:`설정`,tickets:`티켓`,ticket:`티켓`,newTicket:`새 티켓`,editTicket:`티켓 편집`},projects:{empty:`아직 프로젝트가 없습니다`,new:`새 프로젝트`,name:`프로젝트 이름`,prefix:`티켓 접두사`,description:`설명`,create:`프로젝트 만들기`},tickets:{search:`티켓 검색`,searchPlaceholder:`제목, 설명 또는 키`,allStatuses:`모든 상태`,empty:`일치하는 티켓이 없습니다`,count:`{{total}}개 중 {{shown}}개`},ticket:{priority:`우선순위: {{priority}}`,noDifficulty:`난이도 미지정`,version:`v{{version}}`,starts:`시작 {{date}}`,due:`마감 {{date}}`},editor:{stale:`이 티켓이 변경되었습니다. 저장된 초안이 아직 버전 {{version}}을(를) 사용합니다.`,discardDraft:`초안 삭제 후 새로고침`,title:`제목`,noDifficulty:`미지정`,labels:`레이블 (쉼표로 구분)`,scopes:`스코프 (쉼표로 구분)`,editMarkdown:`Markdown 편집`,previewMarkdown:`Markdown 미리 보기`,description:`설명 (Markdown)`,acceptanceCriteria:`인수 조건 (Markdown)`,parent:`상위 티켓 ID`,automationReady:`요구 사항과 종속성이 허용하면 에이전트 작업 가능`,holdReason:`보류 사유`,draftSaved:`이 기기에 초안이 저장되었습니다`,save:`티켓 저장`},detail:{archived:`보관됨`,subscribe:`구독`,unsubscribe:`구독 취소`,share:`공유`,description:`설명`,noDescription:`_설명 없음_`,acceptanceCriteria:`인수 조건`,noAcceptanceCriteria:`_인수 조건 없음_`,fields:`필드`,archive:{action:`티켓 보관`,title:`티켓을 보관할까요?`,message:`이 티켓을 활성 목록과 에이전트 작업 대상에서 제외할까요?`},unarchive:{action:`티켓 보관 해제`,title:`티켓 보관을 해제할까요?`,message:`이 티켓을 활성 목록으로 복원할까요?`}},readiness:{title:`에이전트 준비 상태`,ready:`선점 가능`,notReady:`선점 불가`,hold:`보류: {{reason}}`,claimed:`{{worker}}이(가) {{time}}까지 선점했습니다.`,release:{action:`내 선점 해제`,title:`선점을 해제할까요?`,message:`소유권을 해제하기 전에 워커를 중지하세요.`,confirm:`해제`},recover:{action:`만료된 선점 회수`,explanation:`프로젝트 관리자만 만료된 선점을 회수할 수 있습니다. 먼저 워커가 중지되었는지 확인하세요.`,reason:`회수 사유`,confirm:`워커 중지됨 · 회수`}},relations:{title:`관계`,parent:`상위 · {{key}} · {{title}}`,openParent:`상위 티켓 열기`,children:`하위 티켓`,previousChildren:`이전 하위 티켓`,nextChildren:`다음 하위 티켓`,remove:`관계 제거`,removeTitle:`관계를 제거할까요?`,add:`관계 추가`,find:`티켓 찾기`,type:`관계`,ticket:`티켓`,choose:`티켓 선택`},discussion:{title:`토론`,previous:`이전 댓글`,next:`다음 댓글`,field:`댓글 (Markdown)`,submit:`댓글`,you:`나`,edit:`댓글 편집`,editField:`댓글`,delete:`댓글 삭제`,deleteTitle:`댓글을 삭제할까요?`,deleteMessage:`이 댓글을 영구 제거할까요?`,save:`댓글 저장`},attachments:{title:`첨부 파일`,item:`{{name}} · {{size}} kB`,remove:`{{name}} 제거`,removeTitle:`첨부 파일을 제거할까요?`,working:`처리 중…`,add:`첨부 파일 추가`,tooLarge:`10 MB 이하인 파일을 선택하세요.`,sharingUnavailable:`이 기기에서는 파일 공유를 사용할 수 없습니다.`},evidence:{title:`증빙`,explanation:`결과는 제출한 계정이 보고합니다.`,add:`증빙 추가`,name:`제목`,url:`URL`,outcome:`보고된 결과`,commit:`커밋 (전체 해시)`,note:`메모`,save:`증빙 저장`},activity:{title:`활동`,previous:`이전 활동`,next:`다음 활동`},inbox:{markAllRead:`모두 읽음으로 표시`,empty:`알림이 없습니다`},notifications:{title:`알림`,inApp:`구독한 티켓 업데이트를 받은편지함에 표시`,push:`푸시 알림`,enableDevice:`이 기기에서 푸시 사용`,disableDevice:`이 기기에서 푸시 사용 안 함`,unconfigured:`이 빌드에서 푸시를 사용하려면 Expo 프로젝트 ID와 서명 구성이 필요합니다.`,noProjectId:`이 빌드에서 푸시 알림을 사용하려면 Expo 프로젝트 ID가 필요합니다.`,permissionDenied:`푸시를 사용하려면 기기 설정에서 알림을 허용하세요.`,channel:`티켓 업데이트`},settings:{password:{title:`로컬 비밀번호`,current:`현재 비밀번호`,new:`새 비밀번호`,change:`비밀번호 변경`,updated:`비밀번호가 업데이트되었고 다른 세션은 취소되었습니다`},oidc:{linked:`계정 연결됨`,explanation:`이 공급자로 로그인하기 전에 이 계정을 연결하세요.`,link:`{{provider}} 연결`},signOut:{action:`로그아웃`,title:`로그아웃할까요?`,message:`이 계정의 캐시된 티켓과 초안이 이 기기에서 제거됩니다.`},changeServer:{title:`서버를 변경할까요?`,message:`로그아웃하고 이 계정의 로컬 캐시와 초안을 지울까요?`}}}};export{e as default};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Nn as t,Tt as n,Z as r,an as i,i as a,mn as o,r as s}from"./default-BgvtI7HK.js";import{Aa as c,B as l,Do as u,G as d,Hi as f,J as p,K as m,Oa as h,Q as g,To as _,V as v,X as y,Y as b,Zi as x,di as S,it as C,ka as w,q as T,qa as E,rt as D,ut as O}from"./search-ZaQmVnj1.js";import{g as k,l as A}from"./item-Cj8xpMLk.js";import{n as j,r as M}from"./CompositeItem-DgnfVvrF.js";import{Ht as N,n as P}from"./index-BIuqxnJn.js";var F=e(t(),1),I=s();function L({value:e,label:t,selected:n,disabled:r,onSelect:i,tint:a}){let s=a?{className:a}:_(e);return(0,I.jsx)(S,{disabled:r,variant:n?`secondary`:`ghost`,size:`icon`,"aria-label":o(`settings.color.swatch`,{color:u(e),label:t}),"aria-pressed":n,className:s.className,style:s.style,onClick:i,children:(0,I.jsx)(`span`,{className:`size-3 rounded-full bg-current`})})}function R({label:e,value:t,onChange:i,disabled:a=!1,custom:s=!1,defaultTint:l}){let u=E({...f.query(`list_label_colors`,{}),enabled:s,staleTime:0}),d=x(`remove_label_color`),p=u.data?.map(e=>e.value)??[],m=r(t)&&!p.includes(t)?[t,...p]:p,h=e=>i(e);return(0,I.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,role:`group`,"aria-label":e,children:[n.map(n=>(0,I.jsx)(L,{value:n,label:e,selected:t===n,disabled:a,onSelect:()=>h(n),tint:n==="default"?l:void 0},n)),s&&(0,I.jsxs)(I.Fragment,{children:[m.length>0&&(0,I.jsx)(`span`,{className:`mx-1 h-5 w-px bg-border`,"aria-hidden":`true`}),m.map(n=>(0,I.jsxs)(`span`,{className:`group/swatch relative`,children:[(0,I.jsx)(L,{value:n,label:e,selected:t===n,disabled:a,onSelect:()=>h(n)}),p.includes(n)&&(0,I.jsx)(S,{variant:`secondary`,size:`icon-xs`,"aria-label":o(`settings.color.removeCustom`,{hex:n}),disabled:a||d.isPending,className:`absolute -top-1 -right-1 size-4 rounded-full border opacity-0 shadow-sm transition-opacity group-hover/swatch:opacity-100 focus-visible:opacity-100 max-md:opacity-100`,onClick:()=>{d.mutateAsync({value:n}).catch(O)},children:(0,I.jsx)(c,{className:`size-2.5`})})]},n)),(0,I.jsxs)(`label`,{className:w(`relative inline-flex size-8 cursor-pointer items-center justify-center rounded-md border border-dashed text-muted-foreground transition-colors hover:border-foreground/40 hover:text-foreground focus-within:ring-2 focus-within:ring-ring`,a&&`pointer-events-none opacity-50`),title:o(`settings.color.custom`),children:[(0,I.jsx)(k,{className:`size-4`,"aria-hidden":`true`}),(0,I.jsx)(`input`,{type:`color`,"aria-label":o(`settings.color.custom`),disabled:a,value:r(t)?t:`#6366f1`,onChange:e=>h(e.target.value.toLowerCase()),className:`absolute inset-0 size-full cursor-pointer opacity-0`})]})]})]})}function z(e){if(!(e instanceof a)||e.code!==`label_conflict`)return[];let t=e.details;return t&&typeof t==`object`&&`projects`in t?[t.projects].flat().filter(e=>typeof e==`string`):[]}function B({owner:e,canAdmin:t}){let n=`projectId`in e?e.projectId:void 0,r=`workspaceId`in e?e.workspaceId:void 0,a=E({...f.query(`list_project_labels`,{projectId:n??``}),enabled:!!n}),s=E({...f.query(`list_workspace_labels`,{workspaceId:r??``}),enabled:!!r}),c=n?a:s,u=x(`create_project_label`),_=x(`update_project_label`),S=x(`delete_project_label`),w=x(`create_workspace_label`),O=x(`update_workspace_label`),L=x(`delete_workspace_label`),[B,V]=(0,F.useState)(``),[H,U]=(0,F.useState)(null),W=u.isPending||_.isPending||w.isPending||O.isPending,G=u.error??_.error??w.error??O.error,K=z(G),q=c.data??[],J=q.filter(e=>e.name.toLowerCase().includes(B.trim().toLowerCase()));function Y(e){for(let e of[u,_,w,O])e.reset();U({label:e,name:e?.name??``,color:e?.color??`gray`,adopt:!1})}function X(e,t,i,a){if(r)return e?O.mutateAsync({workspaceId:r,labelId:e.id,expectedVersion:e.version,name:t,color:i,adopt:a}):w.mutateAsync({workspaceId:r,name:t,color:i,adopt:a});let o=n??``;return e?_.mutateAsync({projectId:o,labelId:e.id,expectedVersion:e.version,name:t,color:i}):u.mutateAsync({projectId:o,name:t,color:i})}async function Z(e){r?await L.mutateAsync({workspaceId:r,labelId:e.id,expectedVersion:e.version}):await S.mutateAsync({projectId:n??``,labelId:e.id,expectedVersion:e.version}),h.success(o(`settings.labels.deleted`))}return(0,I.jsxs)(`section`,{children:[(0,I.jsx)(C,{title:o(`settings.labels.title`),action:(0,I.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center justify-end gap-2`,children:[!!q.length&&(0,I.jsx)(D,{label:o(`settings.labels.search`),value:B,onChange:V}),t&&(0,I.jsx)(p,{label:o(`settings.labels.new`),variant:`default`,onClick:()=>Y(null),children:(0,I.jsx)(k,{})})]})}),(0,I.jsx)(m,{error:c.error}),c.isPending?(0,I.jsx)(y,{}):J.length?J.map(e=>{let i=o(`settings.tickets`,{count:e.count}),a=t&&(!!r||e.scope===`project`);return(0,I.jsxs)(P,{compact:!0,title:(0,I.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,I.jsx)(A,{tag:e.name,color:e.color,className:`h-auto max-w-full border-0 bg-transparent px-0 text-[13px] font-normal`}),n&&e.scope===`workspace`&&(0,I.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:o(`settings.labels.workspace`)})]}),children:[n?(0,I.jsx)(N,{to:`/projects/$projectId`,params:{projectId:n},search:{label:e.name},className:`text-xs whitespace-nowrap text-muted-foreground tabular-nums hover:text-foreground`,children:i}):(0,I.jsx)(`span`,{className:`text-xs whitespace-nowrap text-muted-foreground tabular-nums`,children:i}),a&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(p,{label:o(`settings.labels.editNamed`,{name:e.name}),onClick:()=>Y(e),children:(0,I.jsx)(M,{})}),(0,I.jsx)(v,{label:o(`settings.labels.deleteNamed`,{name:e.name}),icon:(0,I.jsx)(j,{}),danger:!0,description:e.count?o(r?`settings.labels.deleteUsedShared`:`settings.labels.deleteUsed`,{name:e.name,count:e.count}):o(`settings.labels.deleteUnused`,{name:e.name}),onConfirm:()=>Z(e)})]})]},e.id)}):!c.error&&(0,I.jsx)(d,{title:o(B?`settings.labels.noMatches`:`settings.labels.empty`)}),(0,I.jsx)(g,{title:H?.label?o(`settings.labels.edit`):o(`settings.labels.new`),open:!!H,onOpenChange:e=>{e||U(null)},busy:W,children:H&&(0,I.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),X(H.label,H.name,H.color,H.adopt).then(()=>{U(null),h.success(o(`settings.labels.saved`))}).catch(()=>{})},children:[(0,I.jsx)(b,{label:o(`settings.labels.name`),value:H.name,onChange:e=>U({...H,name:e.target.value,adopt:!1}),maxLength:40,required:!0,autoFocus:!0}),(0,I.jsx)(R,{label:o(`settings.labels.color`),value:H.color,onChange:e=>U({...H,color:e}),disabled:W,custom:!0}),!!H.name.trim()&&(0,I.jsx)(`div`,{className:`mb-4`,children:(0,I.jsx)(A,{tag:H.name.trim(),color:H.color})}),H.label&&H.name.trim()!==H.label.name&&(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(r?`settings.labels.renameShared`:`settings.labels.rename`)}),!!K.length&&(0,I.jsx)(l,{label:o(`settings.labels.adopt`),description:o(`settings.labels.adoptDescription`,{projects:i(K)}),checked:H.adopt,onCheckedChange:e=>U({...H,adopt:e})}),(0,I.jsx)(T,{error:G,pending:W,submitLabel:o(`settings.labels.save`),submitDisabled:!H.name.trim(),onCancel:()=>U(null)})]})})]})}export{R as n,B as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./path-fybaL0A-.js";import{t as n}from"./array-BifhSqXX.js";import{it as r}from"./chunk-7S6XSTFO-CpdNd6Ke.js";function i(e){return e[0]}function a(e){return e[1]}function o(o,s){var c=e(!0),l=null,u=r,d=null,f=t(p);o=typeof o==`function`?o:o===void 0?i:e(o),s=typeof s==`function`?s:s===void 0?a:e(s);function p(e){var t,r=(e=n(e)).length,i,a=!1,p;for(l??(d=u(p=f())),t=0;t<=r;++t)!(t<r&&c(i=e[t],t,e))===a&&((a=!a)?d.lineStart():d.lineEnd()),a&&d.point(+o(i,t,e),+s(i,t,e));if(p)return d=null,p+``||null}return p.x=function(t){return arguments.length?(o=typeof t==`function`?t:e(+t),p):o},p.y=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),p):s},p.defined=function(t){return arguments.length?(c=typeof t==`function`?t:e(!!t),p):c},p.curve=function(e){return arguments.length?(u=e,l!=null&&(d=u(l)),p):u},p.context=function(e){return arguments.length?(e==null?l=d=null:d=u(l=e),p):l},p}export{o as t};
@@ -0,0 +1 @@
1
+ import{l as e,n as t,o as n,r,t as i}from"./src-BWF7jMDv.js";import{i as a,n as o,r as s,t as c}from"./defaultLocale-BFoDCU3G.js";import{t as l}from"./init-C-OQMol4.js";function u(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function d(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function f(e){let t,n,r;e.length===2?(t=e===u||e===d?e:p,n=e,r=e):(t=u,n=(t,n)=>u(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<0?i=t+1:a=t}while(i<a)}return i}function a(e,r,i=0,a=e.length){if(i<a){if(t(r,r)!==0)return a;do{let t=i+a>>>1;n(e[t],r)<=0?i=t+1:a=t}while(i<a)}return i}function o(e,t,n=0,a=e.length){let o=i(e,t,n,a-1);return o>n&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function p(){return 0}function m(e){return e===null?NaN:+e}var h=f(u),g=h.right;h.left,f(m).center;var _=Math.sqrt(50),v=Math.sqrt(10),y=Math.sqrt(2);function b(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=_?10:a>=v?5:a>=y?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/l<e&&++s,c/l>t&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*l<e&&++s,c*l>t&&--c),c<s&&.5<=n&&n<2?b(e,t,n*2):[s,c,l]}function x(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];let r=t<e,[i,a,o]=r?b(t,e,n):b(e,t,n);if(!(a>=i))return[];let s=a-i+1,c=Array(s);if(r){if(o<0)for(let e=0;e<s;++e)c[e]=(a-e)/-o;else for(let e=0;e<s;++e)c[e]=(a-e)*o}else if(o<0)for(let e=0;e<s;++e)c[e]=(i+e)/-o;else for(let e=0;e<s;++e)c[e]=(i+e)*o;return c}function S(e,t,n){return t=+t,e=+e,n=+n,b(e,t,n)[2]}function C(e,t,n){t=+t,e=+e,n=+n;let r=t<e,i=r?S(t,e,n):S(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function w(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function T(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function E(e,t){for(var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o=0;o<r;++o)i[o]=k(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function D(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function O(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=k(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}function k(a,o){var s=typeof o,c;return o==null||s===`boolean`?n(o):(s===`number`?t:s===`string`?(c=e(o))?(o=c,r):i:o instanceof e?r:o instanceof Date?D:T(o)?w:Array.isArray(o)?E:typeof o.valueOf!=`function`&&typeof o.toString!=`function`||isNaN(o)?O:t)(a,o)}function A(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}function j(e){return Math.max(0,-a(Math.abs(e)))}function M(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(a(t)/3)))*3-a(Math.abs(e)))}function N(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,a(t)-a(e))+1}function P(e){return function(){return e}}function F(e){return+e}var I=[0,1];function L(e){return e}function R(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:P(isNaN(t)?NaN:.5)}function z(e,t){var n;return e>t&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function B(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i<r?(r=R(i,r),a=n(o,a)):(r=R(r,i),a=n(a,o)),function(e){return a(r(e))}}function V(e,t,n){var r=Math.min(e.length,t.length)-1,i=Array(r),a=Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=R(e[o],e[o+1]),a[o]=n(t[o],t[o+1]);return function(t){var n=g(e,t,1,r)-1;return a[n](i[n](t))}}function H(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function U(){var e=I,n=I,r=k,i,a,o,s=L,c,l,u;function d(){var t=Math.min(e.length,n.length);return s!==L&&(s=z(e[0],e[t-1])),c=t>2?V:B,l=u=null,f}function f(t){return t==null||isNaN(t=+t)?o:(l||=c(e.map(i),n,r))(i(s(t)))}return f.invert=function(r){return s(a((u||=c(n,e.map(i),t))(r)))},f.domain=function(t){return arguments.length?(e=Array.from(t,F),d()):e.slice()},f.range=function(e){return arguments.length?(n=Array.from(e),d()):n.slice()},f.rangeRound=function(e){return n=Array.from(e),r=A,d()},f.clamp=function(e){return arguments.length?(s=e?!0:L,d()):s!==L},f.interpolate=function(e){return arguments.length?(r=e,d()):r},f.unknown=function(e){return arguments.length?(o=e,f):o},function(e,t){return i=e,a=t,d()}}function W(){return U()(L,L)}function G(e,t,n,r){var i=C(e,t,n),a;switch(r=s(r??`,f`),r.type){case`s`:var l=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=M(i,l))&&(r.precision=a),o(r,l);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=N(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=j(i))&&(r.precision=a-(r.type===`%`)*2)}return c(r)}function K(e){var t=e.domain;return e.ticks=function(e){var n=t();return x(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return G(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s<o&&(l=o,o=s,s=l,l=i,i=a,a=l);u-->0;){if(l=S(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function q(){var e=W();return e.copy=function(){return H(e,q())},l.apply(e,arguments),K(e)}export{f as a,C as i,W as n,H as r,q as t};