docrev 0.11.1 → 0.11.3

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 (144) hide show
  1. package/.gitattributes +1 -1
  2. package/CHANGELOG.md +207 -197
  3. package/PLAN-tables-and-postprocess.md +850 -850
  4. package/README.md +433 -433
  5. package/bin/rev.js +11 -11
  6. package/bin/rev.ts +145 -145
  7. package/completions/rev.bash +127 -127
  8. package/completions/rev.ps1 +210 -210
  9. package/completions/rev.zsh +207 -207
  10. package/dist/lib/annotations.d.ts.map +1 -1
  11. package/dist/lib/annotations.js +28 -0
  12. package/dist/lib/annotations.js.map +1 -1
  13. package/dist/lib/build.d.ts +28 -0
  14. package/dist/lib/build.d.ts.map +1 -1
  15. package/dist/lib/build.js +81 -4
  16. package/dist/lib/build.js.map +1 -1
  17. package/dist/lib/commands/comments.d.ts.map +1 -1
  18. package/dist/lib/commands/comments.js +58 -28
  19. package/dist/lib/commands/comments.js.map +1 -1
  20. package/dist/lib/commands/context.d.ts +1 -0
  21. package/dist/lib/commands/context.d.ts.map +1 -1
  22. package/dist/lib/commands/context.js +1 -0
  23. package/dist/lib/commands/context.js.map +1 -1
  24. package/dist/lib/commands/core.d.ts.map +1 -1
  25. package/dist/lib/commands/core.js +25 -8
  26. package/dist/lib/commands/core.js.map +1 -1
  27. package/dist/lib/commands/response.js +1 -1
  28. package/dist/lib/commands/response.js.map +1 -1
  29. package/dist/lib/commands/utilities.js +164 -164
  30. package/dist/lib/commands/word-tools.js +8 -8
  31. package/dist/lib/grammar.js +3 -3
  32. package/dist/lib/import.d.ts +14 -0
  33. package/dist/lib/import.d.ts.map +1 -1
  34. package/dist/lib/import.js +23 -0
  35. package/dist/lib/import.js.map +1 -1
  36. package/dist/lib/input.d.ts +67 -0
  37. package/dist/lib/input.d.ts.map +1 -0
  38. package/dist/lib/input.js +164 -0
  39. package/dist/lib/input.js.map +1 -0
  40. package/dist/lib/macro-filter.lua +201 -201
  41. package/dist/lib/pdf-comments.js +44 -44
  42. package/dist/lib/plugins.js +57 -57
  43. package/dist/lib/pptx-color-filter.lua +37 -37
  44. package/dist/lib/pptx-themes.js +115 -115
  45. package/dist/lib/response.d.ts +1 -1
  46. package/dist/lib/response.d.ts.map +1 -1
  47. package/dist/lib/response.js +5 -2
  48. package/dist/lib/response.js.map +1 -1
  49. package/dist/lib/schema.d.ts.map +1 -1
  50. package/dist/lib/schema.js +8 -2
  51. package/dist/lib/schema.js.map +1 -1
  52. package/dist/lib/spelling.js +2 -2
  53. package/dist/lib/templates.js +387 -387
  54. package/dist/lib/themes.js +51 -51
  55. package/eslint.config.js +27 -27
  56. package/lib/anchor-match.ts +307 -307
  57. package/lib/annotations.ts +695 -664
  58. package/lib/build.ts +2047 -1956
  59. package/lib/citations.ts +160 -160
  60. package/lib/commands/build.ts +885 -885
  61. package/lib/commands/citations.ts +515 -515
  62. package/lib/commands/comments.ts +1077 -1050
  63. package/lib/commands/context.ts +185 -176
  64. package/lib/commands/core.ts +328 -309
  65. package/lib/commands/doi.ts +451 -451
  66. package/lib/commands/file-ops.ts +372 -372
  67. package/lib/commands/history.ts +320 -320
  68. package/lib/commands/index.ts +87 -87
  69. package/lib/commands/init.ts +259 -259
  70. package/lib/commands/merge-resolve.ts +378 -378
  71. package/lib/commands/preview.ts +178 -178
  72. package/lib/commands/project-info.ts +244 -244
  73. package/lib/commands/quality.ts +517 -517
  74. package/lib/commands/response.ts +454 -454
  75. package/lib/commands/section-boundaries.ts +82 -82
  76. package/lib/commands/sections.ts +451 -451
  77. package/lib/commands/sync.ts +689 -689
  78. package/lib/commands/text-ops.ts +449 -449
  79. package/lib/commands/utilities.ts +448 -448
  80. package/lib/commands/verify-anchors.ts +272 -272
  81. package/lib/commands/word-tools.ts +340 -340
  82. package/lib/comment-realign.ts +99 -99
  83. package/lib/config.ts +84 -84
  84. package/lib/crossref.ts +781 -781
  85. package/lib/csl.ts +191 -191
  86. package/lib/dependencies.ts +132 -132
  87. package/lib/diff-engine.ts +465 -465
  88. package/lib/doi-cache.ts +115 -115
  89. package/lib/doi.ts +879 -879
  90. package/lib/equations.ts +506 -506
  91. package/lib/errors.ts +350 -350
  92. package/lib/format.ts +541 -541
  93. package/lib/git.ts +326 -326
  94. package/lib/grammar.ts +303 -303
  95. package/lib/image-registry.ts +180 -180
  96. package/lib/import.ts +932 -906
  97. package/lib/input.ts +174 -0
  98. package/lib/journals.ts +543 -543
  99. package/lib/macro-filter.lua +201 -201
  100. package/lib/macros.ts +273 -273
  101. package/lib/merge.ts +633 -633
  102. package/lib/ooxml.ts +768 -768
  103. package/lib/orcid.ts +144 -144
  104. package/lib/pdf-comments.ts +263 -263
  105. package/lib/pdf-import.ts +524 -524
  106. package/lib/plugins.ts +362 -362
  107. package/lib/postprocess.ts +188 -188
  108. package/lib/pptx-color-filter.lua +37 -37
  109. package/lib/pptx-template.ts +469 -469
  110. package/lib/pptx-themes.ts +483 -483
  111. package/lib/protect-restore.ts +520 -520
  112. package/lib/rate-limiter.ts +127 -127
  113. package/lib/response.ts +200 -197
  114. package/lib/restore-references.ts +240 -240
  115. package/lib/review.ts +327 -327
  116. package/lib/schema.ts +494 -488
  117. package/lib/scientific-words.ts +73 -73
  118. package/lib/sections.ts +428 -428
  119. package/lib/slides.ts +756 -756
  120. package/lib/spelling.ts +334 -334
  121. package/lib/templates.ts +526 -526
  122. package/lib/themes.ts +742 -742
  123. package/lib/trackchanges.ts +166 -166
  124. package/lib/tui.ts +450 -450
  125. package/lib/types.ts +546 -546
  126. package/lib/undo.ts +250 -250
  127. package/lib/utils.ts +69 -69
  128. package/lib/variables.ts +179 -179
  129. package/lib/word-extraction.ts +525 -525
  130. package/lib/word.ts +526 -526
  131. package/lib/wordcomments.ts +789 -789
  132. package/package.json +1 -1
  133. package/scripts/postbuild.js +47 -47
  134. package/skill/REFERENCE.md +550 -550
  135. package/skill/SKILL.md +302 -302
  136. package/tsconfig.json +26 -26
  137. package/types/index.d.ts +531 -531
  138. package/issues.md +0 -180
  139. package/site/assets/extra.css +0 -208
  140. package/site/commands.html +0 -926
  141. package/site/configuration.html +0 -469
  142. package/site/index.html +0 -288
  143. package/site/troubleshooting.html +0 -461
  144. package/site/workflow.html +0 -518
package/skill/SKILL.md CHANGED
@@ -1,302 +1,302 @@
1
- ---
2
- name: docrev
3
- description: "Document revision workflow tool (CLI: `rev`). Use when working with Word documents containing reviewer comments, importing track changes to markdown, replying to reviewer comments, building PDF/DOCX outputs, generating response letters, validating citations/DOIs, or any document revision task."
4
- ---
5
-
6
- # docrev - Document Revision Tool
7
-
8
- `rev` is a CLI tool for document workflows with Word ↔ Markdown round-trips.
9
-
10
- Works for any document that goes through Word-based review: scientific papers, contracts, reports, proposals, manuals.
11
-
12
- ## Content and Layout, Separated
13
-
14
- In Markdown, you focus on content. Write text, add citations with `[@key]`, insert equations with `$...$`, reference figures with `@fig:label`. No fiddling with fonts or styles.
15
-
16
- Layout is controlled in `rev.yaml`:
17
-
18
- ```yaml
19
- title: "My Document"
20
- docx:
21
- reference: template.docx
22
- ```
23
-
24
- Change the template, rebuild, and every document gets the new formatting.
25
-
26
- ## Core Workflow
27
-
28
- ### 1. Create or import a project
29
-
30
- ```bash
31
- rev new my-document # Start from scratch
32
- rev import manuscript.docx # Start from existing Word doc
33
- ```
34
-
35
- ### 2. Build and share
36
-
37
- ```bash
38
- rev build docx # Generate Word document
39
- ```
40
-
41
- Send to reviewers. They add comments and track changes in Word.
42
-
43
- ### 3. Import feedback
44
-
45
- ```bash
46
- rev sync reviewed.docx # Updates markdown with annotations
47
- rev sync # Auto-detect most recent .docx
48
- rev sync reviewed.docx --comments-only # Insert comments only; never modify prose
49
- rev verify-anchors reviewed.docx # Report which anchors still match current prose
50
- ```
51
-
52
- Use `--comments-only` when the markdown has been revised between sending the
53
- docx out and receiving it back. Without the flag, track changes from a stale
54
- draft would clobber newer edits. With it, only comments are imported, placed
55
- at fuzzy-matched anchors against the current prose. Run `rev verify-anchors`
56
- first to see which comments will land cleanly and which need manual placement.
57
-
58
- ### 4. View and address comments
59
-
60
- ```bash
61
- rev status # Project overview
62
- rev todo # List all pending comments
63
- rev next # Show next pending comment
64
- rev comments methods.md # List all comments with context
65
- ```
66
-
67
- ### 5. Reply to reviewer comments
68
-
69
- **Always use the non-interactive reply mode:**
70
-
71
- ```bash
72
- rev reply methods.md -n 1 -m "Added clarification about sampling methodology"
73
- rev reply results.md -n 3 -m "Updated figure to include 95% CI"
74
- ```
75
-
76
- Replies appear as: `{>>Reviewer: Original<<} {>>User: Reply<<}`
77
-
78
- ### 6. Resolve addressed comments
79
-
80
- ```bash
81
- rev resolve methods.md -n 1 # Mark comment #1 as resolved
82
- ```
83
-
84
- ### 7. Rebuild with comment threads
85
-
86
- ```bash
87
- rev build docx --dual # Produces clean + annotated versions
88
- rev build docx --show-changes # Single DOCX with visible track changes
89
- rev build docx --dual --show-changes # One DOCX: tracked changes + threaded comments
90
- ```
91
-
92
- `--dual` produces:
93
- - `output/<title>.docx` — clean, for submission
94
- - `output/<title>_comments.docx` — comment threads as Word comments
95
-
96
- `--show-changes` produces a single audit DOCX (`<title>-changes.docx`) where
97
- every accepted/rejected revision is rendered as a visible Word track change.
98
- Useful when a co-author wants to see what changed since the last shared version.
99
-
100
- `--dual --show-changes` combines both into one `<title>-changes.docx`: my
101
- `{++..++}`/`{--..--}` edits as tracked changes *and* the reviewer's `{>>..<<}`
102
- comments with my threaded replies. This is the file a supervisor opens,
103
- reviews next to each other, and hands back. Add `--reference <docx>` to
104
- realign comment anchors against a reviewer's copy first.
105
-
106
- Outputs land in `output/` by default; set `outputDir: null` in `rev.yaml`
107
- to keep them alongside `paper.md` (legacy layout). The basename is derived
108
- from `title:` unless overridden — set `output: { docx: foo.docx, pdf: foo.pdf }`
109
- in `rev.yaml` or pass `-o, --output <path>` on the CLI. See REFERENCE.md →
110
- "Choosing output filenames".
111
-
112
- For pandoc flags rev doesn't surface directly (Lua filters, custom variables,
113
- templates), use `--pandoc-arg` (repeatable) or `pandoc-args:` in `rev.yaml`
114
- (both top-level and per-format). Run with `--verbose` to see the exact pandoc
115
- invocation. See REFERENCE.md → "Passing custom pandoc args" for details.
116
-
117
- ### 8. Archive reviewer files
118
-
119
- ```bash
120
- rev archive # Move reviewer files to archive/
121
- ```
122
-
123
- ### 9. Generate response letter
124
-
125
- ```bash
126
- rev response # Generate point-by-point response letter
127
- ```
128
-
129
- ## Annotation Syntax (CriticMarkup)
130
-
131
- - `{++inserted text++}` - Additions
132
- - `{--deleted text--}` - Deletions
133
- - `{~~old~>new~~}` - Substitutions
134
- - `{>>Author: comment<<}` - Comments
135
- - `{>>Author: comment [RESOLVED]<<}` - Resolved comment
136
-
137
- ## Quick Commands
138
-
139
- | Task | Command |
140
- |------|---------|
141
- | Create project | `rev new my-project` |
142
- | Create LaTeX project | `rev new my-project --template latex` |
143
- | Import Word doc | `rev import manuscript.docx` |
144
- | Sync Word feedback | `rev sync reviewed.docx` |
145
- | Sync comments only (prose unchanged) | `rev sync reviewed.docx --comments-only` |
146
- | Verify anchors against current prose | `rev verify-anchors reviewed.docx` |
147
- | Sync PDF comments | `rev sync annotated.pdf` |
148
- | Extract PDF comments | `rev pdf-comments annotated.pdf` |
149
- | Extract with highlighted text | `rev pdf-comments file.pdf --with-text` |
150
- | Append PDF comments | `rev pdf-comments annotated.pdf --append methods.md` |
151
- | Project status | `rev status` |
152
- | Next pending | `rev next` |
153
- | List pending | `rev todo` |
154
- | Filter by author | `rev comments file.md --author "Reviewer 2"` |
155
- | Reply to all pending | `rev reply file.md --all -m "Addressed"` |
156
- | Accept all changes | `rev accept file.md -a` |
157
- | Build Word | `rev build docx` |
158
- | Build PDF | `rev build pdf` |
159
- | Build clean + annotated Word | `rev build docx --dual` |
160
- | Build clean + annotated PDF | `rev build pdf --dual` |
161
- | Build with visible track changes | `rev build docx --show-changes` |
162
- | Show contributors | `rev contributors` |
163
- | Lookup ORCID | `rev orcid 0000-0002-1825-0097` |
164
- | Archive reviewer files | `rev archive` |
165
- | Word count per section | `rev word-count` |
166
- | Project dashboard | `rev stats` |
167
- | Search all sections | `rev search "query"` |
168
- | Pre-submission check | `rev check` |
169
- | Validate citations | `rev citations` |
170
- | Check grammar/style | `rev grammar` |
171
- | Check spelling | `rev spelling` |
172
- | Open PDF preview | `rev preview pdf` |
173
- | Auto-rebuild on changes | `rev watch` |
174
- | Check for updates | `rev upgrade --check` |
175
-
176
- ## DOI Management
177
-
178
- ```bash
179
- rev doi check references.bib # Validate DOIs
180
- rev doi lookup references.bib # Find missing DOIs
181
- rev doi add 10.1234/example # Add citation from DOI
182
- ```
183
-
184
- ## Validation
185
-
186
- ```bash
187
- rev validate --journal nature # Check journal requirements
188
- rev validate --list # List 22 available journal profiles
189
- rev lint # Check broken refs, missing citations
190
- ```
191
-
192
- ## Cross-References
193
-
194
- Use in markdown files:
195
- - `@fig:label` - Figure reference (becomes "Figure 1" in Word)
196
- - `@tbl:label` - Table reference
197
- - `@eq:label` - Equation reference
198
- - `{#fig:label}` - Anchor for figures
199
-
200
- Insert a figure with the format-portable syntax (renders in both PDF and Word):
201
-
202
- ```markdown
203
- ![Caption text.](figures/foo.pdf){#fig:foo width=80%}
204
- ```
205
-
206
- Raw `\begin{figure}...\end{figure}` LaTeX blocks are PDF-only. For docx
207
- builds, `rev` auto-translates the common shape (single `\includegraphics`
208
- with optional `\caption{...}` and `\label{...}`) to the markdown form above
209
- so figures still render. Exotic blocks (`\subfloat`, `\rotatebox`, multiple
210
- `\includegraphics`) are left alone and warned about — convert them by hand
211
- or supply a custom Lua filter via `--pandoc-arg`. Opt out of auto-translate
212
- with `docx.translateRawFigures: false` in `rev.yaml`.
213
-
214
- ## Template Variables
215
-
216
- Available in section files (processed during build):
217
- - `{{date}}` - Current date (YYYY-MM-DD)
218
- - `{{date:MMMM D, YYYY}}` - Custom format
219
- - `{{title}}` - Document title
220
- - `{{author}}` - First author
221
- - `{{word_count}}` - Total word count
222
-
223
- ## Project Structure
224
-
225
- ```
226
- my-document/
227
- ├── rev.yaml # Project config
228
- ├── introduction.md # Section files with annotations
229
- ├── methods.md
230
- ├── results.md
231
- ├── discussion.md
232
- ├── references.bib # Bibliography
233
- ├── figures/ # Images
234
- ├── paper.md # Combined sections (auto-generated)
235
- └── output/ # Built artefacts
236
- ├── my-document.docx
237
- └── my-document.pdf
238
- ```
239
-
240
- Set `outputDir: null` in `rev.yaml` to write outputs alongside `paper.md`
241
- instead.
242
-
243
- ## PDF Comment Workflow
244
-
245
- For reviewers who annotate PDFs instead of Word documents:
246
-
247
- ### 1. Extract comments from PDF
248
-
249
- ```bash
250
- rev pdf-comments annotated.pdf # Display all comments
251
- rev pdf-comments annotated.pdf --by-author # Group by reviewer
252
- rev pdf-comments annotated.pdf --json # Output as JSON
253
- ```
254
-
255
- ### 2. Import into markdown
256
-
257
- ```bash
258
- rev sync annotated.pdf # Auto-import to sections
259
- rev pdf-comments annotated.pdf --append methods.md # Append to specific file
260
- ```
261
-
262
- ### 3. Build PDF with margin notes
263
-
264
- ```bash
265
- rev build pdf --dual
266
- ```
267
-
268
- Produces:
269
- - `paper.pdf` — clean version for submission
270
- - `paper_comments.pdf` — comments rendered as LaTeX margin notes
271
-
272
- **Supported PDF Annotations:**
273
- - Sticky notes, text boxes, highlights, underlines, strikethrough, squiggly
274
-
275
- ## When Helping Users
276
-
277
- 1. **Setup**: Ensure `rev config user "Name"` is set for replies
278
- 2. **Sync phase**: Run `rev sync` to get feedback (works with both Word and PDF)
279
- 3. **Review phase**: Use `rev todo` and `rev next` to navigate comments, `rev reply` to respond
280
- 4. **Accept phase**: Use `rev accept -a` or `rev review` to handle track changes
281
- 5. **Build phase**: Run `rev build docx --dual` or `rev build pdf --dual` for annotated versions
282
- 6. **Archive phase**: Run `rev archive` to move reviewer files
283
- 7. **Validation phase**: Run `rev check` before submission
284
- 8. **Response letter**: Use `rev response` to generate point-by-point responses
285
-
286
- ## Critical: Ask Questions When Unsure
287
-
288
- When addressing reviewer comments or editing documents:
289
-
290
- - **Never guess methods or numbers** - If a comment asks for clarification about methodology, sample sizes, statistical parameters, dates, or any quantitative information, ASK the user rather than inventing values
291
- - **Placeholders are acceptable** - Use `[???]` or `[TODO: specify X]` when information is missing rather than fabricating data
292
- - **Search online for references** - When comments request citations, use web search to find appropriate references rather than guessing
293
- - **Clarify ambiguous requests** - If a reviewer comment could be interpreted multiple ways, ask the user which interpretation they prefer
294
- - **Verify existing values** - When editing numbers that already exist in the document, confirm changes with the user if there's any doubt
295
-
296
- Example scenarios requiring user input:
297
- - "Add a reference for this claim" → Search online OR ask user for specific citation
298
- - "Clarify the sample size" → Ask user for the correct number
299
- - "Specify the statistical test used" → Ask user which test was actually used
300
- - "Add the date of data collection" → Ask user for the actual date
301
-
302
- For complete command reference, see [REFERENCE.md](REFERENCE.md).
1
+ ---
2
+ name: docrev
3
+ description: "Document revision workflow tool (CLI: `rev`). Use when working with Word documents containing reviewer comments, importing track changes to markdown, replying to reviewer comments, building PDF/DOCX outputs, generating response letters, validating citations/DOIs, or any document revision task."
4
+ ---
5
+
6
+ # docrev - Document Revision Tool
7
+
8
+ `rev` is a CLI tool for document workflows with Word ↔ Markdown round-trips.
9
+
10
+ Works for any document that goes through Word-based review: scientific papers, contracts, reports, proposals, manuals.
11
+
12
+ ## Content and Layout, Separated
13
+
14
+ In Markdown, you focus on content. Write text, add citations with `[@key]`, insert equations with `$...$`, reference figures with `@fig:label`. No fiddling with fonts or styles.
15
+
16
+ Layout is controlled in `rev.yaml`:
17
+
18
+ ```yaml
19
+ title: "My Document"
20
+ docx:
21
+ reference: template.docx
22
+ ```
23
+
24
+ Change the template, rebuild, and every document gets the new formatting.
25
+
26
+ ## Core Workflow
27
+
28
+ ### 1. Create or import a project
29
+
30
+ ```bash
31
+ rev new my-document # Start from scratch
32
+ rev import manuscript.docx # Start from existing Word doc
33
+ ```
34
+
35
+ ### 2. Build and share
36
+
37
+ ```bash
38
+ rev build docx # Generate Word document
39
+ ```
40
+
41
+ Send to reviewers. They add comments and track changes in Word.
42
+
43
+ ### 3. Import feedback
44
+
45
+ ```bash
46
+ rev sync reviewed.docx # Updates markdown with annotations
47
+ rev sync # Auto-detect most recent .docx
48
+ rev sync reviewed.docx --comments-only # Insert comments only; never modify prose
49
+ rev verify-anchors reviewed.docx # Report which anchors still match current prose
50
+ ```
51
+
52
+ Use `--comments-only` when the markdown has been revised between sending the
53
+ docx out and receiving it back. Without the flag, track changes from a stale
54
+ draft would clobber newer edits. With it, only comments are imported, placed
55
+ at fuzzy-matched anchors against the current prose. Run `rev verify-anchors`
56
+ first to see which comments will land cleanly and which need manual placement.
57
+
58
+ ### 4. View and address comments
59
+
60
+ ```bash
61
+ rev status # Project overview
62
+ rev todo # List all pending comments
63
+ rev next # Show next pending comment
64
+ rev comments methods.md # List all comments with context
65
+ ```
66
+
67
+ ### 5. Reply to reviewer comments
68
+
69
+ **Always use the non-interactive reply mode:**
70
+
71
+ ```bash
72
+ rev reply methods.md -n 1 -m "Added clarification about sampling methodology"
73
+ rev reply results.md -n 3 -m "Updated figure to include 95% CI"
74
+ ```
75
+
76
+ Replies appear as: `{>>Reviewer: Original<<} {>>User: Reply<<}`
77
+
78
+ ### 6. Resolve addressed comments
79
+
80
+ ```bash
81
+ rev resolve methods.md -n 1 # Mark comment #1 as resolved
82
+ ```
83
+
84
+ ### 7. Rebuild with comment threads
85
+
86
+ ```bash
87
+ rev build docx --dual # Produces clean + annotated versions
88
+ rev build docx --show-changes # Single DOCX with visible track changes
89
+ rev build docx --dual --show-changes # One DOCX: tracked changes + threaded comments
90
+ ```
91
+
92
+ `--dual` produces:
93
+ - `output/<title>.docx` — clean, for submission
94
+ - `output/<title>_comments.docx` — comment threads as Word comments
95
+
96
+ `--show-changes` produces a single audit DOCX (`<title>-changes.docx`) where
97
+ every accepted/rejected revision is rendered as a visible Word track change.
98
+ Useful when a co-author wants to see what changed since the last shared version.
99
+
100
+ `--dual --show-changes` combines both into one `<title>-changes.docx`: my
101
+ `{++..++}`/`{--..--}` edits as tracked changes *and* the reviewer's `{>>..<<}`
102
+ comments with my threaded replies. This is the file a supervisor opens,
103
+ reviews next to each other, and hands back. Add `--reference <docx>` to
104
+ realign comment anchors against a reviewer's copy first.
105
+
106
+ Outputs land in `output/` by default; set `outputDir: null` in `rev.yaml`
107
+ to keep them alongside `paper.md` (legacy layout). The basename is derived
108
+ from `title:` unless overridden — set `output: { docx: foo.docx, pdf: foo.pdf }`
109
+ in `rev.yaml` or pass `-o, --output <path>` on the CLI. See REFERENCE.md →
110
+ "Choosing output filenames".
111
+
112
+ For pandoc flags rev doesn't surface directly (Lua filters, custom variables,
113
+ templates), use `--pandoc-arg` (repeatable) or `pandoc-args:` in `rev.yaml`
114
+ (both top-level and per-format). Run with `--verbose` to see the exact pandoc
115
+ invocation. See REFERENCE.md → "Passing custom pandoc args" for details.
116
+
117
+ ### 8. Archive reviewer files
118
+
119
+ ```bash
120
+ rev archive # Move reviewer files to archive/
121
+ ```
122
+
123
+ ### 9. Generate response letter
124
+
125
+ ```bash
126
+ rev response # Generate point-by-point response letter
127
+ ```
128
+
129
+ ## Annotation Syntax (CriticMarkup)
130
+
131
+ - `{++inserted text++}` - Additions
132
+ - `{--deleted text--}` - Deletions
133
+ - `{~~old~>new~~}` - Substitutions
134
+ - `{>>Author: comment<<}` - Comments
135
+ - `{>>Author: comment [RESOLVED]<<}` - Resolved comment
136
+
137
+ ## Quick Commands
138
+
139
+ | Task | Command |
140
+ |------|---------|
141
+ | Create project | `rev new my-project` |
142
+ | Create LaTeX project | `rev new my-project --template latex` |
143
+ | Import Word doc | `rev import manuscript.docx` |
144
+ | Sync Word feedback | `rev sync reviewed.docx` |
145
+ | Sync comments only (prose unchanged) | `rev sync reviewed.docx --comments-only` |
146
+ | Verify anchors against current prose | `rev verify-anchors reviewed.docx` |
147
+ | Sync PDF comments | `rev sync annotated.pdf` |
148
+ | Extract PDF comments | `rev pdf-comments annotated.pdf` |
149
+ | Extract with highlighted text | `rev pdf-comments file.pdf --with-text` |
150
+ | Append PDF comments | `rev pdf-comments annotated.pdf --append methods.md` |
151
+ | Project status | `rev status` |
152
+ | Next pending | `rev next` |
153
+ | List pending | `rev todo` |
154
+ | Filter by author | `rev comments file.md --author "Reviewer 2"` |
155
+ | Reply to all pending | `rev reply file.md --all -m "Addressed"` |
156
+ | Accept all changes | `rev accept file.md -a` |
157
+ | Build Word | `rev build docx` |
158
+ | Build PDF | `rev build pdf` |
159
+ | Build clean + annotated Word | `rev build docx --dual` |
160
+ | Build clean + annotated PDF | `rev build pdf --dual` |
161
+ | Build with visible track changes | `rev build docx --show-changes` |
162
+ | Show contributors | `rev contributors` |
163
+ | Lookup ORCID | `rev orcid 0000-0002-1825-0097` |
164
+ | Archive reviewer files | `rev archive` |
165
+ | Word count per section | `rev word-count` |
166
+ | Project dashboard | `rev stats` |
167
+ | Search all sections | `rev search "query"` |
168
+ | Pre-submission check | `rev check` |
169
+ | Validate citations | `rev citations` |
170
+ | Check grammar/style | `rev grammar` |
171
+ | Check spelling | `rev spelling` |
172
+ | Open PDF preview | `rev preview pdf` |
173
+ | Auto-rebuild on changes | `rev watch` |
174
+ | Check for updates | `rev upgrade --check` |
175
+
176
+ ## DOI Management
177
+
178
+ ```bash
179
+ rev doi check references.bib # Validate DOIs
180
+ rev doi lookup references.bib # Find missing DOIs
181
+ rev doi add 10.1234/example # Add citation from DOI
182
+ ```
183
+
184
+ ## Validation
185
+
186
+ ```bash
187
+ rev validate --journal nature # Check journal requirements
188
+ rev validate --list # List 22 available journal profiles
189
+ rev lint # Check broken refs, missing citations
190
+ ```
191
+
192
+ ## Cross-References
193
+
194
+ Use in markdown files:
195
+ - `@fig:label` - Figure reference (becomes "Figure 1" in Word)
196
+ - `@tbl:label` - Table reference
197
+ - `@eq:label` - Equation reference
198
+ - `{#fig:label}` - Anchor for figures
199
+
200
+ Insert a figure with the format-portable syntax (renders in both PDF and Word):
201
+
202
+ ```markdown
203
+ ![Caption text.](figures/foo.pdf){#fig:foo width=80%}
204
+ ```
205
+
206
+ Raw `\begin{figure}...\end{figure}` LaTeX blocks are PDF-only. For docx
207
+ builds, `rev` auto-translates the common shape (single `\includegraphics`
208
+ with optional `\caption{...}` and `\label{...}`) to the markdown form above
209
+ so figures still render. Exotic blocks (`\subfloat`, `\rotatebox`, multiple
210
+ `\includegraphics`) are left alone and warned about — convert them by hand
211
+ or supply a custom Lua filter via `--pandoc-arg`. Opt out of auto-translate
212
+ with `docx.translateRawFigures: false` in `rev.yaml`.
213
+
214
+ ## Template Variables
215
+
216
+ Available in section files (processed during build):
217
+ - `{{date}}` - Current date (YYYY-MM-DD)
218
+ - `{{date:MMMM D, YYYY}}` - Custom format
219
+ - `{{title}}` - Document title
220
+ - `{{author}}` - First author
221
+ - `{{word_count}}` - Total word count
222
+
223
+ ## Project Structure
224
+
225
+ ```
226
+ my-document/
227
+ ├── rev.yaml # Project config
228
+ ├── introduction.md # Section files with annotations
229
+ ├── methods.md
230
+ ├── results.md
231
+ ├── discussion.md
232
+ ├── references.bib # Bibliography
233
+ ├── figures/ # Images
234
+ ├── paper.md # Combined sections (auto-generated)
235
+ └── output/ # Built artefacts
236
+ ├── my-document.docx
237
+ └── my-document.pdf
238
+ ```
239
+
240
+ Set `outputDir: null` in `rev.yaml` to write outputs alongside `paper.md`
241
+ instead.
242
+
243
+ ## PDF Comment Workflow
244
+
245
+ For reviewers who annotate PDFs instead of Word documents:
246
+
247
+ ### 1. Extract comments from PDF
248
+
249
+ ```bash
250
+ rev pdf-comments annotated.pdf # Display all comments
251
+ rev pdf-comments annotated.pdf --by-author # Group by reviewer
252
+ rev pdf-comments annotated.pdf --json # Output as JSON
253
+ ```
254
+
255
+ ### 2. Import into markdown
256
+
257
+ ```bash
258
+ rev sync annotated.pdf # Auto-import to sections
259
+ rev pdf-comments annotated.pdf --append methods.md # Append to specific file
260
+ ```
261
+
262
+ ### 3. Build PDF with margin notes
263
+
264
+ ```bash
265
+ rev build pdf --dual
266
+ ```
267
+
268
+ Produces:
269
+ - `paper.pdf` — clean version for submission
270
+ - `paper_comments.pdf` — comments rendered as LaTeX margin notes
271
+
272
+ **Supported PDF Annotations:**
273
+ - Sticky notes, text boxes, highlights, underlines, strikethrough, squiggly
274
+
275
+ ## When Helping Users
276
+
277
+ 1. **Setup**: Ensure `rev config user "Name"` is set for replies
278
+ 2. **Sync phase**: Run `rev sync` to get feedback (works with both Word and PDF)
279
+ 3. **Review phase**: Use `rev todo` and `rev next` to navigate comments, `rev reply` to respond
280
+ 4. **Accept phase**: Use `rev accept -a` or `rev review` to handle track changes
281
+ 5. **Build phase**: Run `rev build docx --dual` or `rev build pdf --dual` for annotated versions
282
+ 6. **Archive phase**: Run `rev archive` to move reviewer files
283
+ 7. **Validation phase**: Run `rev check` before submission
284
+ 8. **Response letter**: Use `rev response` to generate point-by-point responses
285
+
286
+ ## Critical: Ask Questions When Unsure
287
+
288
+ When addressing reviewer comments or editing documents:
289
+
290
+ - **Never guess methods or numbers** - If a comment asks for clarification about methodology, sample sizes, statistical parameters, dates, or any quantitative information, ASK the user rather than inventing values
291
+ - **Placeholders are acceptable** - Use `[???]` or `[TODO: specify X]` when information is missing rather than fabricating data
292
+ - **Search online for references** - When comments request citations, use web search to find appropriate references rather than guessing
293
+ - **Clarify ambiguous requests** - If a reviewer comment could be interpreted multiple ways, ask the user which interpretation they prefer
294
+ - **Verify existing values** - When editing numbers that already exist in the document, confirm changes with the user if there's any doubt
295
+
296
+ Example scenarios requiring user input:
297
+ - "Add a reference for this claim" → Search online OR ask user for specific citation
298
+ - "Clarify the sample size" → Ask user for the correct number
299
+ - "Specify the statistical test used" → Ask user which test was actually used
300
+ - "Add the date of data collection" → Ask user for the actual date
301
+
302
+ For complete command reference, see [REFERENCE.md](REFERENCE.md).
package/tsconfig.json CHANGED
@@ -1,26 +1,26 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "NodeNext",
5
- "moduleResolution": "NodeNext",
6
- "lib": ["ES2022"],
7
- "outDir": "./dist",
8
- "rootDir": ".",
9
- "declaration": true,
10
- "declarationMap": true,
11
- "sourceMap": true,
12
- "strict": true,
13
- "noImplicitAny": true,
14
- "strictNullChecks": true,
15
- "noImplicitReturns": true,
16
- "noUncheckedIndexedAccess": false,
17
- "esModuleInterop": true,
18
- "skipLibCheck": true,
19
- "forceConsistentCasingInFileNames": true,
20
- "resolveJsonModule": true,
21
- "allowJs": true,
22
- "checkJs": false
23
- },
24
- "include": ["lib/**/*", "bin/**/*"],
25
- "exclude": ["node_modules", "dist", "test"]
26
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "lib": ["ES2022"],
7
+ "outDir": "./dist",
8
+ "rootDir": ".",
9
+ "declaration": true,
10
+ "declarationMap": true,
11
+ "sourceMap": true,
12
+ "strict": true,
13
+ "noImplicitAny": true,
14
+ "strictNullChecks": true,
15
+ "noImplicitReturns": true,
16
+ "noUncheckedIndexedAccess": false,
17
+ "esModuleInterop": true,
18
+ "skipLibCheck": true,
19
+ "forceConsistentCasingInFileNames": true,
20
+ "resolveJsonModule": true,
21
+ "allowJs": true,
22
+ "checkJs": false
23
+ },
24
+ "include": ["lib/**/*", "bin/**/*"],
25
+ "exclude": ["node_modules", "dist", "test"]
26
+ }