@peaske7/readit 0.2.1 → 0.3.0-rc.1

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 (367) hide show
  1. package/dist/.vite/manifest.json +1111 -0
  2. package/dist/assets/_basePickBy-BMMA4Tou.js +1 -0
  3. package/dist/assets/_baseUniq-D40qku1I.js +1 -0
  4. package/dist/assets/arc-Ckg65iy8.js +1 -0
  5. package/dist/assets/architecture-YZFGNWBL-Dv3EY0zV.js +1 -0
  6. package/dist/assets/architectureDiagram-Q4EWVU46-ClRss4cm.js +36 -0
  7. package/dist/assets/array-Bjz-wYpJ.js +1 -0
  8. package/dist/assets/blockDiagram-DXYQGD6D-CBcFvoK1.js +132 -0
  9. package/dist/assets/c4Diagram-AHTNJAMY-D4d3ZLam.js +10 -0
  10. package/dist/assets/channel-D9EJxDy_.js +1 -0
  11. package/dist/assets/chunk-2KRD3SAO-DaFfaCGO.js +1 -0
  12. package/dist/assets/chunk-336JU56O-yLEQoF0v.js +2 -0
  13. package/dist/assets/chunk-426QAEUC-Uyzd4wAA.js +1 -0
  14. package/dist/assets/chunk-4BX2VUAB-DRuTD7x5.js +1 -0
  15. package/dist/assets/chunk-4TB4RGXK-3xbpIi_o.js +206 -0
  16. package/dist/assets/chunk-55IACEB6-BExiaAoD.js +1 -0
  17. package/dist/assets/chunk-5FUZZQ4R-DatVvHnF.js +62 -0
  18. package/dist/assets/chunk-5PVQY5BW-BKgvrGh8.js +2 -0
  19. package/dist/assets/chunk-67CJDMHE-DMt8LNEX.js +1 -0
  20. package/dist/assets/chunk-7N4EOEYR-CzLGefVf.js +1 -0
  21. package/dist/assets/chunk-AA7GKIK3-B6GFAk4U.js +1 -0
  22. package/dist/assets/chunk-BSJP7CBP-BK29yehL.js +1 -0
  23. package/dist/assets/chunk-CIAEETIT-D7hBXImP.js +1 -0
  24. package/dist/assets/chunk-Dlc7tRH4.js +1 -0
  25. package/dist/assets/chunk-EDXVE4YY-PYJdlmyH.js +1 -0
  26. package/dist/assets/chunk-ENJZ2VHE-DUHKBv6x.js +10 -0
  27. package/dist/assets/chunk-FMBD7UC4-2FWyCCAV.js +15 -0
  28. package/dist/assets/chunk-FOC6F5B3-DKFHrt4K.js +1 -0
  29. package/dist/assets/chunk-ICPOFSXX-Bh__D0ec.js +122 -0
  30. package/dist/assets/chunk-K5T4RW27-D51O7IkG.js +94 -0
  31. package/dist/assets/chunk-KGLVRYIC-DMHSCH4T.js +1 -0
  32. package/dist/assets/chunk-LIHQZDEY-C2aANxt9.js +1 -0
  33. package/dist/assets/chunk-ORNJ4GCN-Db_37NRX.js +1 -0
  34. package/dist/assets/chunk-OYMX7WX6-BltXOJLJ.js +231 -0
  35. package/dist/assets/chunk-QZHKN3VN-8Lcg9gti.js +1 -0
  36. package/dist/assets/chunk-U2HBQHQK-ByS6tilY.js +70 -0
  37. package/dist/assets/chunk-X2U36JSP-Bm-4Gqg_.js +1 -0
  38. package/dist/assets/chunk-XPW4576I-Bqbompq4.js +32 -0
  39. package/dist/assets/chunk-YZCP3GAM-CsC0imPb.js +1 -0
  40. package/dist/assets/chunk-ZZ45TVLE-CG-CqfPC.js +1 -0
  41. package/dist/assets/classDiagram-6PBFFD2Q-Jy1uFUk4.js +1 -0
  42. package/dist/assets/classDiagram-v2-HSJHXN6E-ChiLl3rR.js +1 -0
  43. package/dist/assets/clone-BBjvuERA.js +1 -0
  44. package/dist/assets/cose-bilkent-S5V4N54A-q90QeGKv.js +1 -0
  45. package/dist/assets/cytoscape.esm-BfXff3fb.js +321 -0
  46. package/dist/assets/dagre-KV5264BT-BQWiLFJB.js +4 -0
  47. package/dist/assets/dagre-nn_aIZ2E.js +1 -0
  48. package/dist/assets/defaultLocale-BwmRmqJp.js +1 -0
  49. package/dist/assets/diagram-5BDNPKRD-CJa7Y97H.js +10 -0
  50. package/dist/assets/diagram-G4DWMVQ6-tVQGBWfY.js +24 -0
  51. package/dist/assets/diagram-MMDJMWI5-CpimFldm.js +43 -0
  52. package/dist/assets/diagram-TYMM5635-D11WQVgy.js +24 -0
  53. package/dist/assets/dist-BNz65Ibc.js +1 -0
  54. package/dist/assets/erDiagram-SMLLAGMA-C2bLd0jS.js +85 -0
  55. package/dist/assets/flowDiagram-DWJPFMVM-Kw3fOOLT.js +162 -0
  56. package/dist/assets/ganttDiagram-T4ZO3ILL-fyMhyE2X.js +292 -0
  57. package/dist/assets/gitGraph-7Q5UKJZL-BGFRt2qs.js +1 -0
  58. package/dist/assets/gitGraphDiagram-UUTBAWPF-D4JoiOvg.js +106 -0
  59. package/dist/assets/graphlib-DGcD9J2L.js +1 -0
  60. package/dist/assets/index-Cow3qpoq.css +2 -0
  61. package/dist/assets/index-DUf7okYi.js +14 -0
  62. package/dist/assets/info-OMHHGYJF-DI6-Z9vh.js +1 -0
  63. package/dist/assets/infoDiagram-42DDH7IO-D1ZkeMBy.js +2 -0
  64. package/dist/assets/init-TPm5RB77.js +1 -0
  65. package/dist/assets/isArrayLikeObject-69BLnVNM.js +1 -0
  66. package/dist/assets/isEmpty-DUS28g5f.js +1 -0
  67. package/dist/assets/ishikawaDiagram-UXIWVN3A-Dv8hzjZB.js +70 -0
  68. package/dist/assets/journeyDiagram-VCZTEJTY-COeB7F5r.js +139 -0
  69. package/dist/assets/kanban-definition-6JOO6SKY-BbYmxCYU.js +89 -0
  70. package/dist/assets/katex-5SGEXwpi.js +261 -0
  71. package/dist/assets/line-_v2NGEdn.js +1 -0
  72. package/dist/assets/linear-CXMqTN8N.js +1 -0
  73. package/dist/assets/mermaid-config-C8a4L22x.js +1 -0
  74. package/dist/assets/mermaid-parser.core-CFmphzPP.js +4 -0
  75. package/dist/assets/mermaid.core-DnHAupTp.js +11 -0
  76. package/dist/assets/mindmap-definition-QFDTVHPH-D7_lIep7.js +96 -0
  77. package/dist/assets/ordinal-D7l-8DAO.js +1 -0
  78. package/dist/assets/packet-4T2RLAQJ-DidW3JFc.js +1 -0
  79. package/dist/assets/path-BVpCanzE.js +1 -0
  80. package/dist/assets/pie-ZZUOXDRM-Bff2e5hg.js +1 -0
  81. package/dist/assets/pieDiagram-DEJITSTG-DDvYHCT_.js +30 -0
  82. package/dist/assets/quadrantDiagram-34T5L4WZ-DcLcIrdi.js +7 -0
  83. package/dist/assets/radar-PYXPWWZC-CsdZBH3M.js +1 -0
  84. package/dist/assets/requirementDiagram-MS252O5E-DLX6ld7D.js +84 -0
  85. package/dist/assets/rough.esm-BoTisKeL.js +1 -0
  86. package/dist/assets/sankeyDiagram-XADWPNL6-D-1GtsHM.js +10 -0
  87. package/dist/assets/sequenceDiagram-FGHM5R23-Bwxs0YQg.js +157 -0
  88. package/dist/assets/src-CrmkjRpa.js +1 -0
  89. package/dist/assets/stateDiagram-FHFEXIEX-DW7rOcnQ.js +1 -0
  90. package/dist/assets/stateDiagram-v2-QKLJ7IA2-Jm-24vQ2.js +1 -0
  91. package/dist/assets/timeline-definition-GMOUNBTQ-DVdHyzxS.js +120 -0
  92. package/dist/assets/treeView-SZITEDCU-DPKseaET.js +1 -0
  93. package/dist/assets/treemap-W4RFUUIX-DH-7GZe_.js +1 -0
  94. package/dist/assets/vennDiagram-DHZGUBPP-DJaC6xmI.js +34 -0
  95. package/dist/assets/wardley-RL74JXVD-AgyXyBN5.js +1 -0
  96. package/dist/assets/wardleyDiagram-NUSXRM2D-CTKERPKv.js +20 -0
  97. package/dist/assets/xychartDiagram-5P7HB3ND-BuExiLXc.js +7 -0
  98. package/{index.html → dist/index.html} +2 -1
  99. package/dist/index.js +2539 -0
  100. package/package.json +11 -1
  101. package/.agents/skills/remotion-best-practices/SKILL.md +0 -61
  102. package/.agents/skills/remotion-best-practices/rules/3d.md +0 -86
  103. package/.agents/skills/remotion-best-practices/rules/animations.md +0 -27
  104. package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +0 -178
  105. package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +0 -100
  106. package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +0 -108
  107. package/.agents/skills/remotion-best-practices/rules/assets.md +0 -78
  108. package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +0 -198
  109. package/.agents/skills/remotion-best-practices/rules/audio.md +0 -169
  110. package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +0 -134
  111. package/.agents/skills/remotion-best-practices/rules/can-decode.md +0 -75
  112. package/.agents/skills/remotion-best-practices/rules/charts.md +0 -120
  113. package/.agents/skills/remotion-best-practices/rules/compositions.md +0 -154
  114. package/.agents/skills/remotion-best-practices/rules/display-captions.md +0 -184
  115. package/.agents/skills/remotion-best-practices/rules/extract-frames.md +0 -229
  116. package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +0 -38
  117. package/.agents/skills/remotion-best-practices/rules/fonts.md +0 -152
  118. package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +0 -58
  119. package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +0 -68
  120. package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +0 -60
  121. package/.agents/skills/remotion-best-practices/rules/gifs.md +0 -141
  122. package/.agents/skills/remotion-best-practices/rules/images.md +0 -134
  123. package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +0 -69
  124. package/.agents/skills/remotion-best-practices/rules/light-leaks.md +0 -73
  125. package/.agents/skills/remotion-best-practices/rules/lottie.md +0 -70
  126. package/.agents/skills/remotion-best-practices/rules/maps.md +0 -412
  127. package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +0 -34
  128. package/.agents/skills/remotion-best-practices/rules/measuring-text.md +0 -140
  129. package/.agents/skills/remotion-best-practices/rules/parameters.md +0 -109
  130. package/.agents/skills/remotion-best-practices/rules/sequencing.md +0 -118
  131. package/.agents/skills/remotion-best-practices/rules/sfx.md +0 -26
  132. package/.agents/skills/remotion-best-practices/rules/subtitles.md +0 -36
  133. package/.agents/skills/remotion-best-practices/rules/tailwind.md +0 -11
  134. package/.agents/skills/remotion-best-practices/rules/text-animations.md +0 -20
  135. package/.agents/skills/remotion-best-practices/rules/timing.md +0 -179
  136. package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +0 -70
  137. package/.agents/skills/remotion-best-practices/rules/transitions.md +0 -197
  138. package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +0 -106
  139. package/.agents/skills/remotion-best-practices/rules/trimming.md +0 -51
  140. package/.agents/skills/remotion-best-practices/rules/videos.md +0 -171
  141. package/.agents/skills/remotion-best-practices/rules/voiceover.md +0 -99
  142. package/.agents/skills/simple/SKILL.md +0 -52
  143. package/.agents/skills/vercel-react-best-practices/AGENTS.md +0 -3254
  144. package/.agents/skills/vercel-react-best-practices/README.md +0 -123
  145. package/.agents/skills/vercel-react-best-practices/SKILL.md +0 -141
  146. package/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  147. package/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
  148. package/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
  149. package/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
  150. package/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -80
  151. package/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -51
  152. package/.agents/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
  153. package/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
  154. package/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -59
  155. package/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
  156. package/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
  157. package/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  158. package/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
  159. package/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
  160. package/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
  161. package/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
  162. package/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
  163. package/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
  164. package/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
  165. package/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
  166. package/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
  167. package/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
  168. package/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
  169. package/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
  170. package/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
  171. package/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
  172. package/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
  173. package/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
  174. package/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
  175. package/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
  176. package/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
  177. package/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  178. package/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
  179. package/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
  180. package/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  181. package/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  182. package/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  183. package/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
  184. package/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
  185. package/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
  186. package/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  187. package/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
  188. package/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
  189. package/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  190. package/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
  191. package/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
  192. package/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  193. package/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  194. package/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
  195. package/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  196. package/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
  197. package/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  198. package/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
  199. package/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  200. package/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
  201. package/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
  202. package/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
  203. package/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
  204. package/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
  205. package/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -142
  206. package/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
  207. package/.agents/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
  208. package/.claude/CLAUDE.md +0 -184
  209. package/.claude/commands/review.md +0 -120
  210. package/.claude/commands/sync-docs.md +0 -71
  211. package/.claude/roadmap.md +0 -121
  212. package/.claude/rules/style-guide.md +0 -830
  213. package/.claude/settings.json +0 -18
  214. package/.claude/user-stories.md +0 -333
  215. package/AGENTS.md +0 -68
  216. package/Makefile +0 -32
  217. package/biome.json +0 -79
  218. package/bun.lock +0 -854
  219. package/bunfig.toml +0 -2
  220. package/docs/design.md +0 -563
  221. package/docs/perf-baseline.md +0 -130
  222. package/docs/plans/2026-03-13-client-mode-design.md +0 -86
  223. package/docs/plans/2026-03-13-client-mode-plan.md +0 -605
  224. package/docs/plans/2026-03-13-keyboard-shortcuts-design.md +0 -129
  225. package/docs/plans/2026-03-13-keyboard-shortcuts-plan.md +0 -1471
  226. package/docs/plans/2026-03-13-multi-document-design.md +0 -183
  227. package/docs/plans/2026-03-13-performance-benchmarks-design.md +0 -121
  228. package/docs/superpowers/plans/2026-03-26-surgical-pruning.md +0 -1176
  229. package/docs/superpowers/specs/2026-03-27-go-server-rewrite-design.md +0 -284
  230. package/e2e/comments.spec.ts +0 -81
  231. package/e2e/document-load.spec.ts +0 -32
  232. package/e2e/export.spec.ts +0 -58
  233. package/e2e/fixtures/sample.md +0 -7
  234. package/e2e/perf/add-comment.spec.ts +0 -116
  235. package/e2e/perf/fixtures/generate.ts +0 -327
  236. package/e2e/perf/initial-load.spec.ts +0 -49
  237. package/e2e/perf/perf.setup.ts +0 -23
  238. package/e2e/perf/perf.teardown.ts +0 -9
  239. package/e2e/perf/screenshot-final.png +0 -0
  240. package/e2e/perf/scroll.spec.ts +0 -39
  241. package/e2e/perf/tab-switch.spec.ts +0 -69
  242. package/e2e/perf/text-selection.spec.ts +0 -119
  243. package/e2e/perf/utils/metrics.ts +0 -350
  244. package/e2e/perf/utils/perf-cli.ts +0 -86
  245. package/e2e/persistence-file.spec.ts +0 -357
  246. package/e2e/utils/cli.ts +0 -84
  247. package/e2e/utils/selection.ts +0 -79
  248. package/go/cmd/readit/main.go +0 -416
  249. package/go/go.mod +0 -20
  250. package/go/go.sum +0 -41
  251. package/go/internal/server/anchor.go +0 -302
  252. package/go/internal/server/anchor_test.go +0 -111
  253. package/go/internal/server/comments.go +0 -390
  254. package/go/internal/server/documents.go +0 -113
  255. package/go/internal/server/embed.go +0 -17
  256. package/go/internal/server/headings.go +0 -33
  257. package/go/internal/server/headings_test.go +0 -75
  258. package/go/internal/server/htmltext.go +0 -123
  259. package/go/internal/server/markdown.go +0 -157
  260. package/go/internal/server/markdown_bench_test.go +0 -42
  261. package/go/internal/server/markdown_test.go +0 -79
  262. package/go/internal/server/server.go +0 -453
  263. package/go/internal/server/server_bench_test.go +0 -122
  264. package/go/internal/server/settings.go +0 -110
  265. package/go/internal/server/sse.go +0 -140
  266. package/go/internal/server/storage.go +0 -275
  267. package/go/internal/server/storage_test.go +0 -118
  268. package/go/internal/server/template.go +0 -66
  269. package/go/internal/server/types.go +0 -101
  270. package/go/internal/server/watcher.go +0 -74
  271. package/lefthook.yml +0 -8
  272. package/nvim-readit/lua/readit/health.lua +0 -64
  273. package/nvim-readit/lua/readit/init.lua +0 -463
  274. package/nvim-readit/plugin/readit.lua +0 -19
  275. package/playwright.config.ts +0 -34
  276. package/skills-lock.json +0 -20
  277. package/src/App.svelte +0 -881
  278. package/src/cli.ts +0 -881
  279. package/src/components/ActionsMenu.svelte +0 -95
  280. package/src/components/CommentBadge.svelte +0 -67
  281. package/src/components/CommentErrorBanner.svelte +0 -33
  282. package/src/components/CommentInput.svelte +0 -75
  283. package/src/components/CommentListItem.svelte +0 -95
  284. package/src/components/CommentManager.svelte +0 -129
  285. package/src/components/CommentNav.svelte +0 -109
  286. package/src/components/DocumentViewer.svelte +0 -218
  287. package/src/components/FloatingComment.svelte +0 -107
  288. package/src/components/Header.svelte +0 -76
  289. package/src/components/InlineEditor.svelte +0 -72
  290. package/src/components/MarginNote.svelte +0 -167
  291. package/src/components/MarginNotesContainer.svelte +0 -33
  292. package/src/components/RawModal.svelte +0 -126
  293. package/src/components/ReanchorConfirm.svelte +0 -30
  294. package/src/components/SettingsModal.svelte +0 -220
  295. package/src/components/ShortcutCapture.svelte +0 -82
  296. package/src/components/ShortcutList.svelte +0 -145
  297. package/src/components/TabBar.svelte +0 -52
  298. package/src/components/TableOfContents.svelte +0 -125
  299. package/src/components/ui/ActionLink.svelte +0 -40
  300. package/src/components/ui/Button.svelte +0 -53
  301. package/src/components/ui/Dialog.svelte +0 -97
  302. package/src/components/ui/DropdownMenu.svelte +0 -85
  303. package/src/components/ui/DropdownMenuItem.svelte +0 -38
  304. package/src/components/ui/DropdownMenuSeparator.svelte +0 -11
  305. package/src/components/ui/Text.svelte +0 -42
  306. package/src/env.d.ts +0 -6
  307. package/src/index.css +0 -754
  308. package/src/lib/__fixtures__/bench-data.ts +0 -114
  309. package/src/lib/anchor.bench.ts +0 -91
  310. package/src/lib/anchor.test.ts +0 -527
  311. package/src/lib/anchor.ts +0 -381
  312. package/src/lib/comment-storage.bench.ts +0 -49
  313. package/src/lib/comment-storage.test.ts +0 -632
  314. package/src/lib/comment-storage.ts +0 -222
  315. package/src/lib/export.bench.ts +0 -21
  316. package/src/lib/export.ts +0 -36
  317. package/src/lib/headings.test.ts +0 -103
  318. package/src/lib/headings.ts +0 -44
  319. package/src/lib/highlight/core.test.ts +0 -93
  320. package/src/lib/highlight/dom.ts +0 -187
  321. package/src/lib/highlight/highlight-registry.ts +0 -221
  322. package/src/lib/highlight/highlight.bench.ts +0 -92
  323. package/src/lib/highlight/highlighter.ts +0 -247
  324. package/src/lib/highlight/resolver.ts +0 -38
  325. package/src/lib/highlight/types.ts +0 -17
  326. package/src/lib/html-text.test.ts +0 -162
  327. package/src/lib/html-text.ts +0 -161
  328. package/src/lib/i18n/en.ts +0 -116
  329. package/src/lib/i18n/index.ts +0 -3
  330. package/src/lib/i18n/ja.ts +0 -118
  331. package/src/lib/i18n/translations.ts +0 -27
  332. package/src/lib/i18n/types.ts +0 -122
  333. package/src/lib/margin-layout.bench.ts +0 -61
  334. package/src/lib/margin-layout.ts +0 -71
  335. package/src/lib/markdown-renderer.test.ts +0 -154
  336. package/src/lib/markdown-renderer.ts +0 -177
  337. package/src/lib/mermaid-config.ts +0 -38
  338. package/src/lib/mermaid-renderer.ts +0 -162
  339. package/src/lib/mermaid-worker.ts +0 -60
  340. package/src/lib/positions.ts +0 -157
  341. package/src/lib/shortcut-registry.ts +0 -244
  342. package/src/lib/utils.ts +0 -15
  343. package/src/main.ts +0 -16
  344. package/src/schema.ts +0 -92
  345. package/src/server.ts +0 -1220
  346. package/src/stores/app.svelte.ts +0 -231
  347. package/src/stores/locale.svelte.ts +0 -46
  348. package/src/stores/settings.svelte.ts +0 -90
  349. package/src/stores/shortcuts.svelte.ts +0 -104
  350. package/src/stores/ui.svelte.ts +0 -12
  351. package/src/template.ts +0 -104
  352. package/src/test-setup.ts +0 -48
  353. package/svelte.config.js +0 -5
  354. package/test.md +0 -74
  355. package/tsconfig.cli.json +0 -12
  356. package/tsconfig.json +0 -20
  357. package/vite.config.ts +0 -47
  358. package/vitest.config.ts +0 -15
  359. package/vscode-readit/.mcp.json +0 -7
  360. package/vscode-readit/.vscodeignore +0 -7
  361. package/vscode-readit/bun.lock +0 -78
  362. package/vscode-readit/icon.svg +0 -10
  363. package/vscode-readit/package.json +0 -110
  364. package/vscode-readit/src/extension.ts +0 -117
  365. package/vscode-readit/src/server-manager.ts +0 -272
  366. package/vscode-readit/src/webview-provider.ts +0 -204
  367. package/vscode-readit/tsconfig.json +0 -20
@@ -1,18 +0,0 @@
1
- {
2
- "project": {
3
- "name": "readit",
4
- "description": "CLI tool for reviewing Markdown documents with inline comments",
5
- "version": "0.1.0"
6
- },
7
- "context": {
8
- "entryPoints": ["src/cli.ts", "src/App.tsx"],
9
- "documentation": ["CLAUDE.md", ".claude/user-stories.md"],
10
- "testFile": "test.md"
11
- },
12
- "preferences": {
13
- "language": "typescript",
14
- "style": "functional",
15
- "formatting": "prettier",
16
- "imports": "esm"
17
- }
18
- }
@@ -1,333 +0,0 @@
1
- # User Stories
2
-
3
- ## Core Workflow
4
-
5
- ### US-001: View Document in Browser
6
-
7
- **As a** writer/reviewer
8
- **I want to** view my Markdown or HTML document rendered in a browser
9
- **So that** I can review the content in a more readable format
10
-
11
- **Acceptance Criteria:**
12
-
13
- - Run `readit document.md` or `readit document.html` and browser opens with rendered content
14
- - markdown-it for Markdown (server-side rendering with shiki syntax highlighting)
15
- - Clean light theme with good typography for reading
16
-
17
- ---
18
-
19
- ### US-002: Add Comment to Selected Text
20
-
21
- **As a** reviewer
22
- **I want to** select text and add a comment
23
- **So that** I can note feedback or changes needed
24
-
25
- **Acceptance Criteria:**
26
-
27
- - Select any text in the document
28
- - Input area appears in margin to enter comment
29
- - ⌘+Enter saves the comment
30
- - Comment appears as margin note next to highlighted text
31
- - Selection is preserved as reference
32
-
33
- ---
34
-
35
- ### US-003: Manage Comments
36
-
37
- **As a** reviewer
38
- **I want to** edit, delete, and copy individual comments
39
- **So that** I can refine my feedback
40
-
41
- **Acceptance Criteria:**
42
-
43
- - Each margin note shows: selected text (truncated) + comment text
44
- - Click to edit → inline textarea editing
45
- - Delete button → removes comment and highlight
46
- - Copy button → copies "Selected: ... Comment: ..." format
47
-
48
- ---
49
-
50
- ### US-004: Export All Comments
51
-
52
- **As a** reviewer
53
- **I want to** export all comments at once
54
- **So that** I can use them with AI or share with others
55
-
56
- **Acceptance Criteria:**
57
-
58
- - "Copy All" button copies formatted prompt to clipboard
59
- - "Export JSON" button downloads JSON file with all comments
60
- - Format is AI-friendly (clear structure)
61
-
62
- ---
63
-
64
- ### US-005: Persistent Comments ✅
65
-
66
- **As a** reviewer
67
- **I want to** close and reopen the tool without losing comments
68
- **So that** I can continue review sessions
69
-
70
- **Acceptance Criteria:**
71
-
72
- - Comments saved to `.comments.md` files in `~/.readit/comments/`
73
- - Comments restored when reopening same file
74
- - Different files have separate comment storage
75
- - Human-readable markdown format for LLM/git compatibility
76
-
77
- **Status:** Implemented (file-based storage)
78
-
79
- ---
80
-
81
- ## Planned Features
82
-
83
- ### US-006: File-Based Comment Storage ✅
84
-
85
- **As a** reviewer
86
- **I want to** have my comments stored in a plain markdown file
87
- **So that** I can version them with git, share them, and use them with LLMs and other tools
88
-
89
- **Acceptance Criteria:**
90
-
91
- - Comments stored in `~/.readit/comments/{hashed-path}/{filename}.comments.md`
92
- - Format is human-readable markdown (selected text as quote, comment below)
93
- - ~~Existing localStorage comments migrated on first run~~ (localStorage removed)
94
- - Comments auto-save to file on add/edit/delete
95
- - ~~`--storage local|file` flag~~ (file-only, no flag needed)
96
- - File can be edited manually and changes reflected on refresh
97
-
98
- **Status:** Implemented
99
-
100
- ---
101
-
102
- ### US-007: Comment Resolution Workflow
103
-
104
- **As a** reviewer
105
- **I want to** mark comments as resolved/unresolved and navigate between them
106
- **So that** I can systematically address feedback with LLM assistance
107
-
108
- **Acceptance Criteria:**
109
-
110
- - Each comment has `unresolved` or `resolved` status
111
- - New comments default to `unresolved`
112
- - Visual indicators: yellow = unresolved, green/muted = resolved
113
- - Navigate to next/previous unresolved comment (keyboard shortcuts)
114
- - Unresolved count displayed in header
115
- - Copy single comment with context for LLM discussion (⌘⇧C on margin note)
116
- - Toggle status with one click, optionally auto-navigate to next
117
-
118
- **Status:** Not implemented (planned for v0.3.0)
119
-
120
- ---
121
-
122
- ### US-008: Highlight Commented Text ✅
123
-
124
- **As a** reviewer
125
- **I want to** see which parts of the document have comments
126
- **So that** I can quickly identify reviewed sections
127
-
128
- **Acceptance Criteria:**
129
-
130
- - Text with comments has yellow background highlight (`<mark>` tags)
131
- - Margin notes are positioned next to their corresponding highlights
132
- - Clicking highlight scrolls to margin note
133
- - Clicking quoted text in margin note scrolls to highlight
134
-
135
- **Status:** Implemented
136
-
137
- ---
138
-
139
- ### US-009: Comment Categories
140
-
141
- **As a** reviewer
142
- **I want to** categorize comments (TODO, Question, Suggestion, etc.)
143
- **So that** I can organize and filter feedback
144
-
145
- **Acceptance Criteria:**
146
-
147
- - Dropdown to select category when adding comment
148
- - Visual indicator (color/icon) per category
149
- - Filter sidebar by category
150
- - Export includes category information
151
-
152
- **Status:** Not implemented
153
-
154
- ---
155
-
156
- ### US-010: Review Multiple Files ✅
157
-
158
- **As a** reviewer
159
- **I want to** review multiple Markdown files in one session
160
- **So that** I can review an entire document set
161
-
162
- **Acceptance Criteria:**
163
-
164
- - ~~`readit docs/*.md` opens multi-file view~~ `readit file1.md file2.md` or `readit <dir>` opens multi-file view
165
- - File tabs or sidebar navigation (TabBar.svelte)
166
- - Comments stored per file
167
- - Bulk export across all files
168
-
169
- **Status:** Implemented (multi-file args, directory scanning, `open` command, tab bar UI). Glob patterns not yet supported.
170
-
171
- ---
172
-
173
- ### US-011: Collaborative Review
174
-
175
- **As a** team lead
176
- **I want to** share review sessions with teammates
177
- **So that** we can collaborate on document feedback
178
-
179
- **Acceptance Criteria:**
180
-
181
- - Generate shareable link
182
- - Real-time sync of comments
183
- - Author attribution on comments
184
- - Conflict resolution for simultaneous edits
185
-
186
- **Status:** Not implemented (future consideration)
187
-
188
- ---
189
-
190
- ### US-012: Export Document as PDF with Comments
191
-
192
- **As a** reviewer
193
- **I want to** export the current document view as a PDF
194
- **So that** I can share or archive the reviewed document with all highlights and comments visible
195
-
196
- **Acceptance Criteria:**
197
-
198
- - "Export PDF" button in the header
199
- - PDF includes the rendered document with highlighted text
200
- - Margin notes are included next to their corresponding highlights
201
- - PDF preserves the visual layout of the review interface
202
- - Filename follows pattern: `{original-filename}-reviewed.pdf`
203
-
204
- **Status:** Not implemented (future consideration)
205
-
206
- ---
207
-
208
- ### US-013: Shell Integration with File Autocomplete ✅
209
-
210
- **As a** CLI user
211
- **I want to** autocomplete markdown file paths with `@<TAB>` in my shell
212
- **So that** I can quickly find and open documents without typing full paths
213
-
214
- **Acceptance Criteria:**
215
-
216
- - `readit @<TAB>` launches fzf picker for markdown files in cwd
217
- - `readit @partial<TAB>` pre-filters the picker with "partial" as query
218
- - Standard Tab completion works for subcommands and options
219
- - `readit completion zsh|bash|fish` outputs shell-specific setup scripts
220
- - `eval "$(readit completion zsh)"` installs everything in one line
221
-
222
- **Status:** Implemented (v0.7.0)
223
-
224
- ---
225
-
226
- ### US-014: Neovim Plugin ✅
227
-
228
- **As a** Neovim user
229
- **I want to** render and review markdown documents directly from my editor
230
- **So that** I can stay in my editing workflow while reviewing
231
-
232
- **Acceptance Criteria:**
233
-
234
- - `:ReaditOpen` starts server and opens current buffer in browser
235
- - `:ReaditStop` stops the server
236
- - `:ReaditReload` saves buffer and triggers browser refresh
237
- - `:ReaditStatus` shows server info
238
- - Configurable keymaps (default `<leader>r` prefix)
239
- - Server auto-cleanup on VimLeavePre
240
- - `:checkhealth readit` verifies dependencies
241
-
242
- **Status:** Implemented (v0.7.0)
243
-
244
- ---
245
-
246
- ### US-015: Live Reload on File Changes ✅
247
-
248
- **As a** reviewer
249
- **I want to** see the browser update automatically when I edit the source document
250
- **So that** I can see my changes reflected in real time
251
-
252
- **Acceptance Criteria:**
253
-
254
- - Browser updates within ~200ms of file save
255
- - Works with Vim/Neovim saves (write-to-temp-then-rename pattern)
256
- - SSE connection auto-reconnects if server restarts (exponential backoff)
257
- - Document HTML and comments fetched in parallel for fast reload
258
-
259
- **Status:** Implemented (enhanced in v0.7.0, base SSE existed since v0.1.0)
260
-
261
- ---
262
-
263
- ## Technical Stories
264
-
265
- ### TS-001: CLI Argument Parsing
266
-
267
- - Use Commander.js for CLI
268
- - Main command: `<file>`, `--port`, `--host`, `--no-open`, `--clean`
269
- - Subcommands: `list` (show all commented files), `show <file>` (display comments for a file)
270
- - Validate file exists and is Markdown (.md) or HTML (.html)
271
- - Graceful error messages
272
-
273
- ### TS-002: Server Architecture
274
-
275
- - Bun.serve() serves API + static files
276
- - `/api/documents` list and add documents
277
- - `/api/document` fetch individual document HTML and headings
278
- - `/api/comments` CRUD operations for comments
279
- - `/api/settings` get/update user settings
280
- - `/api/heartbeat` SSE for browser connection tracking
281
- - `/api/document/stream` SSE for document updates (live reload)
282
- - Development mode proxies to Vite dev server
283
- - Production mode serves built assets from dist/
284
-
285
- ### TS-003: Build System
286
-
287
- - Vite for frontend bundling
288
- - `bun build` for CLI bundling (target bun, ESM)
289
- - Single `bun run build` produces complete distributable
290
- - `bunx readit` works without global install
291
-
292
- ### TS-004: File-Based Comment Storage
293
-
294
- - Store comments in `~/.readit/comments/{hashed-path}/{filename}.comments.md`
295
- - Markdown format for human/LLM readability:
296
-
297
- ```markdown
298
- ## Comment 1
299
- > Selected text here
300
-
301
- Comment text here
302
-
303
- ---
304
- ```
305
-
306
- - API endpoints: `GET/POST/PUT/DELETE /api/comments` for CRUD operations
307
- - Watch file for external changes (optional)
308
-
309
- ### TS-005: Shell Integration Architecture
310
-
311
- - `shell/_readit` - Standard zsh compdef for subcommands, options, file args
312
- - `shell/readit.zsh` - Rich widget: `@` prefix triggers fzf markdown file picker
313
- - Uses `fd` for fast file listing, falls back to `find`
314
- - fzf with bat/head preview, initial query from text after `@`
315
- - `readit completion zsh|bash|fish` CLI subcommand outputs setup scripts
316
- - Bash completion via `complete -F`, Fish via `complete -c`
317
-
318
- ### TS-006: Neovim Plugin Architecture
319
-
320
- - `nvim-readit/lua/readit/init.lua` - Core: setup, server management, commands, keymaps
321
- - `nvim-readit/plugin/readit.lua` - Auto-loader on markdown FileType
322
- - `nvim-readit/lua/readit/health.lua` - `:checkhealth` module
323
- - Discovers existing servers via `~/.readit/server.json`
324
- - Starts server with `jobstart()`, attaches files via `POST /api/documents`
325
- - Communicates with server via curl (non-blocking `jobstart`)
326
-
327
- ### TS-007: File Watcher Resilience
328
-
329
- - `fs.watch()` with both `"change"` and `"rename"` event handling
330
- - On rename: retry loop (10 attempts, 200ms apart) to re-establish watcher
331
- - Debounced re-render (200ms) to avoid thrashing on rapid saves
332
- - SSE auto-reconnect with exponential backoff (1s -> 30s max)
333
- - Parallel fetch of document HTML + comments on reload
package/AGENTS.md DELETED
@@ -1,68 +0,0 @@
1
- # AGENTS.md
2
-
3
- Instructions for AI coding agents working on this project.
4
-
5
- ## Project Context
6
-
7
- readit is a CLI tool for reviewing Markdown and HTML documents with inline comments. The workflow is:
8
-
9
- 1. User runs `readit document.md`
10
- 2. Server renders Markdown to HTML (markdown-it + shiki for syntax highlighting)
11
- 3. Bun.serve() starts and opens browser with Svelte 5 frontend
12
- 4. User selects text and adds comments
13
- 5. Comments are saved as `.comments.md` files in `~/.readit/comments/`
14
- 6. User can export comments for AI or apply back to Markdown
15
-
16
- ## Development Commands
17
-
18
- ```bash
19
- bun install # Install dependencies
20
- bun dev # Start development (CLI with --watch)
21
- bun run dev:client # Start Vite dev server only
22
- bun run build # Build for production (Vite + CLI)
23
- bun run test # Run unit tests (Vitest)
24
- bun run test:e2e # Run e2e tests (Playwright)
25
- bun run typecheck # TypeScript check
26
- bun run check # Biome lint + format check
27
- bun run check:fix # Fix lint + format issues
28
- bun run format # Format code with Biome
29
- ```
30
-
31
- ## Code Organization
32
-
33
- - `src/cli.ts` - CLI entry point (Commander.js)
34
- - `src/server.ts` - Bun.serve() server + API routes
35
- - `src/components/` - Svelte 5 UI components
36
- - `src/stores/` - Svelte 5 reactive stores (`.svelte.ts`)
37
- - `src/lib/` - Utility functions, rendering, i18n
38
- - `src/schema.ts` - TypeScript types
39
- - `shell/` - Zsh/Bash/Fish completions and `@` file picker widget
40
- - `nvim-readit/` - Neovim plugin (Lua)
41
- - `vscode-readit/` - VS Code extension
42
-
43
- ## Testing
44
-
45
- - Unit tests are co-located with source files (`*.test.ts`)
46
- - E2E tests live in `e2e/` (Playwright)
47
- - Run `bun run test` before committing
48
-
49
- ## Commit Guidelines
50
-
51
- - Use conventional commits (feat:, fix:, docs:, etc.)
52
- - Keep commits focused and atomic
53
- - Run `bun run typecheck && bun run check` before committing
54
-
55
- ## Adding Features
56
-
57
- 1. Check `.claude/user-stories.md` for planned features
58
- 2. Update types in `src/schema.ts` first
59
- 3. Create/update stores if needed (`src/stores/`)
60
- 4. Create/update Svelte components (`src/components/`)
61
- 5. Add tests
62
-
63
- ## Key Files to Review
64
-
65
- - `CLAUDE.md` - Project overview and architecture
66
- - `.claude/user-stories.md` - User stories and acceptance criteria
67
- - `.claude/roadmap.md` - Development roadmap
68
- - `package.json` - Scripts and dependencies
package/Makefile DELETED
@@ -1,32 +0,0 @@
1
- .PHONY: dev build build-client build-server test test-client test-e2e clean
2
-
3
- # Development: Go server manages Vite child process
4
- dev:
5
- cd go && go run ./cmd/readit -- --dev $(ARGS)
6
-
7
- # Production build: frontend first, then Go embeds it
8
- build: build-client build-server
9
-
10
- build-client:
11
- bunx vite build
12
-
13
- build-server: build-client
14
- rm -rf go/internal/server/dist
15
- mkdir -p go/internal/server/dist
16
- cp -r dist/. go/internal/server/dist/
17
- cd go && go build -o ../dist/readit ./cmd/readit
18
-
19
- # Tests
20
- test:
21
- cd go && go test ./...
22
-
23
- test-client:
24
- bun run test
25
-
26
- test-e2e:
27
- bun run test:e2e
28
-
29
- clean:
30
- rm -rf dist go/internal/server/dist
31
- mkdir -p go/internal/server/dist
32
- touch go/internal/server/dist/.gitkeep
package/biome.json DELETED
@@ -1,79 +0,0 @@
1
- {
2
- "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
3
- "vcs": {
4
- "enabled": true,
5
- "clientKind": "git",
6
- "useIgnoreFile": true
7
- },
8
- "formatter": {
9
- "enabled": true,
10
- "indentWidth": 2,
11
- "indentStyle": "space"
12
- },
13
- "assist": {
14
- "enabled": true
15
- },
16
- "linter": {
17
- "enabled": true,
18
- "rules": {
19
- "style": {
20
- "noNonNullAssertion": "off"
21
- },
22
- "correctness": {},
23
- "complexity": {
24
- "noForEach": "off",
25
- "noImportantStyles": "off"
26
- },
27
- "suspicious": {
28
- "noArrayIndexKey": "warn",
29
- "noExplicitAny": "warn",
30
- "noUnknownAtRules": "off"
31
- },
32
- "a11y": {
33
- "useKeyWithClickEvents": "off",
34
- "noSvgWithoutTitle": "off",
35
- "useSemanticElements": "warn",
36
- "useFocusableInteractive": "warn"
37
- },
38
- "security": {}
39
- }
40
- },
41
- "css": {
42
- "parser": {
43
- "tailwindDirectives": true
44
- }
45
- },
46
- "files": {
47
- "includes": [
48
- "**",
49
- "!!**/dist",
50
- "!!**/build",
51
- "!!**/node_modules",
52
- "!!**/generated",
53
- "!!**/prisma/generated",
54
- "!!**/supabase/generated",
55
- "!!**/.next",
56
- "!!**/.turbo",
57
- "!!**/.git",
58
- "!!**/.temp",
59
- "!!**/.wrangler",
60
- "!!**/playwright-report",
61
- "!!**/test-results"
62
- ],
63
- "ignoreUnknown": true
64
- },
65
- "overrides": [
66
- {
67
- "includes": ["**/*.svelte"],
68
- "linter": {
69
- "rules": {
70
- "correctness": {
71
- "noUnusedImports": "off",
72
- "noUnusedVariables": "off",
73
- "noUnusedFunctionParameters": "off"
74
- }
75
- }
76
- }
77
- }
78
- ]
79
- }