From bbf1d2d72a093e7db2e32b3d0307e1f8938fc9e5 Mon Sep 17 00:00:00 2001 From: SongshGeo Date: Tue, 2 Jun 2026 13:43:02 +0200 Subject: [PATCH 1/2] release: rename plugin id to longform-paperbell, 2.2.0-beta.4 Distinguish this maintained fork from upstream Longform so it installs and updates independently via BRAT. Changes plugin id/name in both manifests; keeps the `longform` frontmatter key and CSS classes intact for drop-in compatibility with existing vaults. Co-Authored-By: Claude Opus 4.8 (1M context) --- manifest-beta.json | 6 +++--- manifest.json | 6 +++--- package.json | 2 +- versions.json | 3 ++- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/manifest-beta.json b/manifest-beta.json index 7ebeadf..3802d42 100644 --- a/manifest-beta.json +++ b/manifest-beta.json @@ -1,7 +1,7 @@ { - "id": "longform", - "name": "Longform", - "version": "2.0.0", + "id": "longform-paperbell", + "name": "Longform (PaperBell)", + "version": "2.2.0-beta.4", "minAppVersion": "1.0", "description": "Write novels, screenplays, and other long projects in Obsidian.", "author": "Kevin Barrett", diff --git a/manifest.json b/manifest.json index da57b42..d07bdc9 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { - "id": "longform", - "name": "Longform", - "version": "2.2.0-beta.3", + "id": "longform-paperbell", + "name": "Longform (PaperBell)", + "version": "2.2.0-beta.4", "minAppVersion": "1.0", "description": "Write novels, screenplays, and other long projects in Obsidian.", "author": "Kevin Barrett", diff --git a/package.json b/package.json index e814c20..ecf069f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "longform", - "version": "2.2.0-beta.3", + "version": "2.2.0-beta.4", "description": "Write novels, screenplays, and other long projects in Obsidian (https://obsidian.md).", "main": "main.js", "scripts": { diff --git a/versions.json b/versions.json index 134306e..1e2d717 100644 --- a/versions.json +++ b/versions.json @@ -15,5 +15,6 @@ "1.0.0": "0.12.0", "2.2.0-beta.1": "1.0", "2.2.0-beta.2": "1.0", - "2.2.0-beta.3": "1.0" + "2.2.0-beta.3": "1.0", + "2.2.0-beta.4": "1.0" } From b4e3de8ac3804cf560b68294205f1919121573ba Mon Sep 17 00:00:00 2001 From: SongshGeo Date: Sat, 6 Jun 2026 14:30:45 +0200 Subject: [PATCH 2/2] feat: :sparkles: add options to suppress opening compiled all drafts - Introduced an optional parameter `suppressOpenAfter` in the compile function to control whether the compiled result opens in a new pane, particularly useful during batch compilations. - Updated related components and types to accommodate this new functionality, enhancing user experience during multi-draft compilations. - Added new submission project files and structured metadata for a complete submission package example. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/compile/index.ts | 4 +- src/compile/steps/abstract-compile-step.ts | 5 + src/compile/steps/write-to-note.ts | 15 ++- src/view/compile/CompileView.svelte | 103 ++++++++++++++++-- src/view/explorer/ExplorerPane.ts | 12 +- .../.obsidian/community-plugins.json | 2 +- .../.hotreload | 0 .../plugins/longform-paperbell/manifest.json | 1 + .../plugins/longform-paperbell/styles.css | 1 + .../Cover Letter (Index).md | 13 +++ .../Main Manuscript (Index).md | 16 +++ .../PaperDraft_Cover Letter.md | 44 ++++++++ .../PaperDraft_Main Manuscript.md | 70 ++++++++++++ .../PaperDraft_Response to Reviewers.md | 56 ++++++++++ .../PaperDraft_Supplementary Materials.md | 48 ++++++++ .../Response to Reviewers (Index).md | 14 +++ .../Supplementary Materials (Index).md | 14 +++ .../submission-project/cover/cover letter.md | 12 ++ .../submission-project/manuscript.md | 44 ++++++++ .../manuscript/discussion and conclusion.md | 5 + .../manuscript/introduction.md | 5 + .../submission-project/manuscript/methods.md | 5 + .../submission-project/manuscript/results.md | 5 + .../submission-project/metadata.json | 35 ++++++ .../submission-project/response/reviewer 1.md | 9 ++ .../submission-project/response/reviewer 2.md | 9 ++ .../supplementary/supplementary methods.md | 5 + .../supplementary/supplementary results.md | 5 + 28 files changed, 542 insertions(+), 15 deletions(-) rename test-longform-vault/.obsidian/plugins/{longform => longform-paperbell}/.hotreload (100%) create mode 120000 test-longform-vault/.obsidian/plugins/longform-paperbell/manifest.json create mode 120000 test-longform-vault/.obsidian/plugins/longform-paperbell/styles.css create mode 100644 test-longform-vault/submission-project/Cover Letter (Index).md create mode 100644 test-longform-vault/submission-project/Main Manuscript (Index).md create mode 100644 test-longform-vault/submission-project/PaperDraft_Cover Letter.md create mode 100644 test-longform-vault/submission-project/PaperDraft_Main Manuscript.md create mode 100644 test-longform-vault/submission-project/PaperDraft_Response to Reviewers.md create mode 100644 test-longform-vault/submission-project/PaperDraft_Supplementary Materials.md create mode 100644 test-longform-vault/submission-project/Response to Reviewers (Index).md create mode 100644 test-longform-vault/submission-project/Supplementary Materials (Index).md create mode 100644 test-longform-vault/submission-project/cover/cover letter.md create mode 100644 test-longform-vault/submission-project/manuscript.md create mode 100644 test-longform-vault/submission-project/manuscript/discussion and conclusion.md create mode 100644 test-longform-vault/submission-project/manuscript/introduction.md create mode 100644 test-longform-vault/submission-project/manuscript/methods.md create mode 100644 test-longform-vault/submission-project/manuscript/results.md create mode 100644 test-longform-vault/submission-project/metadata.json create mode 100644 test-longform-vault/submission-project/response/reviewer 1.md create mode 100644 test-longform-vault/submission-project/response/reviewer 2.md create mode 100644 test-longform-vault/submission-project/supplementary/supplementary methods.md create mode 100644 test-longform-vault/submission-project/supplementary/supplementary results.md diff --git a/src/compile/index.ts b/src/compile/index.ts index 1a3c262..fdcc88e 100644 --- a/src/compile/index.ts +++ b/src/compile/index.ts @@ -185,7 +185,8 @@ export async function compile( draft: Draft, workflow: Workflow, kinds: CompileStepKind[], - statusCallback: (status: CompileStatus) => void + statusCallback: (status: CompileStatus) => void, + options?: { suppressOpenAfter?: boolean } ): Promise { let currentInput: any; @@ -249,6 +250,7 @@ export async function compile( utilities: { normalizePath, }, + suppressOpenAfter: options?.suppressOpenAfter, }; console.log( diff --git a/src/compile/steps/abstract-compile-step.ts b/src/compile/steps/abstract-compile-step.ts index 5319af2..e3ea023 100644 --- a/src/compile/steps/abstract-compile-step.ts +++ b/src/compile/steps/abstract-compile-step.ts @@ -132,6 +132,11 @@ export type CompileContext = { /** Obsidian’s normalizePath function. Converts an arbitrary file path string into a normalized one. */ normalizePath: (path: string) => string; }; + /** + * When true, steps that would open the compiled result in a new pane should skip doing so. + * Set during batch ("Compile All Drafts") runs to avoid spawning a pane per draft. + */ + suppressOpenAfter?: boolean; }; /** diff --git a/src/compile/steps/write-to-note.ts b/src/compile/steps/write-to-note.ts index dacb327..d5eb249 100644 --- a/src/compile/steps/write-to-note.ts +++ b/src/compile/steps/write-to-note.ts @@ -17,7 +17,7 @@ export const WriteToNoteStep = makeBuiltinStep({ id: "target", name: "Output path", description: - "Path for the created manuscript note. Paths starting with '/' are relative to your vault root; otherwise relative to your project. $1 will be replaced with your project's title.", + "Path for the created manuscript note. Paths starting with '/' are relative to your vault root; otherwise relative to your project. $1 is replaced with your project's title; $2 is replaced with this draft's name (e.g. \"compiled/$2.md\" gives each draft its own file).", type: CompileStepOptionType.Text, default: "manuscript.md", }, @@ -37,8 +37,17 @@ export const WriteToNoteStep = makeBuiltinStep({ if (context.kind !== CompileStepKind.Manuscript) { throw new Error("Cannot write non-manuscript as note."); } else { + const indexBasename = context.draft.vaultPath + .split("/") + .last() + .replace(/\.md$/, ""); + const draftName = context.draft.draftTitle ?? indexBasename; let target = context.optionValues["target"] as string; - target = target.replace("$1", context.draft.title); + target = target + .split("$2") + .join(draftName) + .split("$1") + .join(context.draft.title); const openAfter = context.optionValues["open-after"] as boolean; if (!target || target.length == 0) { @@ -48,7 +57,7 @@ export const WriteToNoteStep = makeBuiltinStep({ const filePath = resolvePath(context.projectPath, target); await writeToFile(context.app, filePath, input.contents); - if (openAfter) { + if (openAfter && !context.suppressOpenAfter) { console.log("[Longform] Attempting to open:", filePath); context.app.workspace.openLinkText(filePath, "/", true).catch((err) => { diff --git a/src/view/compile/CompileView.svelte b/src/view/compile/CompileView.svelte index b52edca..b6ccc45 100644 --- a/src/view/compile/CompileView.svelte +++ b/src/view/compile/CompileView.svelte @@ -18,7 +18,10 @@ selectedDraft, workflows, currentWorkflow, + selectedProject, + selectedProjectHasMultipleDrafts, } from "src/model/stores"; + import { draftTitle } from "src/model/draft-utils"; import CompileStepView from "./CompileStepView.svelte"; import SortableList from "../sortable/SortableList.svelte"; import AutoTextArea from "../components/AutoTextArea.svelte"; @@ -241,8 +244,12 @@ draft: Draft, workflow: Workflow, kinds: CompileStepKind[], - statusCallback: (status: CompileStatus) => void - ) => Vault = getContext("compile"); + statusCallback: (status: CompileStatus) => void, + options?: { suppressOpenAfter?: boolean } + ) => Promise = getContext("compile"); + + let isCompiling = false; + function doCompile() { compile( $selectedDraft, @@ -251,6 +258,68 @@ onCompileStatusChange ); } + + async function doCompileAll() { + const projectDrafts = $selectedProject ?? []; + if (projectDrafts.length === 0) { + return; + } + + isCompiling = true; + let compiledCount = 0; + + for (let i = 0; i < projectDrafts.length; i++) { + const draft = projectDrafts[i]; + const label = `${draftTitle(draft)} (${i + 1}/${projectDrafts.length})`; + + const workflow = draft.workflow + ? $workflows[draft.workflow] + : $currentWorkflow; + if (!workflow) { + new Notice(`Skipped ${label}: no workflow assigned.`); + continue; + } + + const [validationResult, kinds] = calculateWorkflow( + workflow, + draft.format === "scenes" + ); + if (validationResult.error !== WorkflowError.Valid) { + new Notice(`Skipped ${label}: ${validationResult.error}`); + continue; + } + + // Prefix per-step status with which draft we're on; swallow the per-draft + // success notice so we only announce once at the end. + const wrappedStatus = (status: CompileStatus) => { + if (status.kind === "CompileStatusStep") { + compileStatus.innerText = `Compiling ${label} — step ${ + status.stepIndex + 1 + }/${status.totalSteps}`; + } else if (status.kind === "CompileStatusError") { + onCompileStatusChange(status); + } + }; + + try { + await compile(draft, workflow, kinds, wrappedStatus, { + suppressOpenAfter: true, + }); + compiledCount++; + } catch (error) { + console.error("[Longform]", error); + new Notice(`Failed to compile ${label}. See console for details.`); + } + } + + isCompiling = false; + compileStatus.innerText = `Compiled ${compiledCount} draft${ + compiledCount === 1 ? "" : "s" + }.`; + compileStatus.classList.add("compile-status-success"); + restoreDefaultStatusAfter(); + new Notice(`Compiled ${compiledCount} draft${compiledCount === 1 ? "" : "s"}.`); + } {#if $selectedDraft} @@ -369,12 +438,23 @@
{#if $currentWorkflow && $currentWorkflow.steps.length > 0} - +
+ + {#if $selectedProjectHasMultipleDrafts} + + {/if} +
{validation.error === WorkflowError.Valid ? defaultCompileStatus @@ -507,6 +587,13 @@ margin-top: var(--size-4-8); } + .longform-compile-buttons { + display: flex; + flex-direction: row; + align-items: center; + gap: var(--size-4-2); + } + .longform-compile-run-container .compile-status { color: var(--text-muted); } diff --git a/src/view/explorer/ExplorerPane.ts b/src/view/explorer/ExplorerPane.ts index 39fa16c..2f2ec5a 100644 --- a/src/view/explorer/ExplorerPane.ts +++ b/src/view/explorer/ExplorerPane.ts @@ -270,9 +270,17 @@ export class ExplorerPane extends ItemView { draft: Draft, workflow: Workflow, kinds: CompileStepKind[], - statusCallback: (status: CompileStatus) => void + statusCallback: (status: CompileStatus) => void, + options?: { suppressOpenAfter?: boolean } ) => { - compile(this.app, draft, workflow, kinds, statusCallback); + return compile( + this.app, + draft, + workflow, + kinds, + statusCallback, + options + ); } ); diff --git a/test-longform-vault/.obsidian/community-plugins.json b/test-longform-vault/.obsidian/community-plugins.json index 6059914..2ff7d6d 100644 --- a/test-longform-vault/.obsidian/community-plugins.json +++ b/test-longform-vault/.obsidian/community-plugins.json @@ -1,4 +1,4 @@ [ - "longform", + "longform-paperbell", "templater-obsidian" ] \ No newline at end of file diff --git a/test-longform-vault/.obsidian/plugins/longform/.hotreload b/test-longform-vault/.obsidian/plugins/longform-paperbell/.hotreload similarity index 100% rename from test-longform-vault/.obsidian/plugins/longform/.hotreload rename to test-longform-vault/.obsidian/plugins/longform-paperbell/.hotreload diff --git a/test-longform-vault/.obsidian/plugins/longform-paperbell/manifest.json b/test-longform-vault/.obsidian/plugins/longform-paperbell/manifest.json new file mode 120000 index 0000000..3b65e69 --- /dev/null +++ b/test-longform-vault/.obsidian/plugins/longform-paperbell/manifest.json @@ -0,0 +1 @@ +../../../../manifest.json \ No newline at end of file diff --git a/test-longform-vault/.obsidian/plugins/longform-paperbell/styles.css b/test-longform-vault/.obsidian/plugins/longform-paperbell/styles.css new file mode 120000 index 0000000..71866ec --- /dev/null +++ b/test-longform-vault/.obsidian/plugins/longform-paperbell/styles.css @@ -0,0 +1 @@ +../../../../styles.css \ No newline at end of file diff --git a/test-longform-vault/submission-project/Cover Letter (Index).md b/test-longform-vault/submission-project/Cover Letter (Index).md new file mode 100644 index 0000000..cad22cb --- /dev/null +++ b/test-longform-vault/submission-project/Cover Letter (Index).md @@ -0,0 +1,13 @@ +--- +longform: + format: scenes + title: PaperDraft + draftTitle: Cover Letter + workflow: Default Workflow + sceneFolder: cover + scenes: + - cover letter + ignoredFiles: [] +--- + +This is the cover letter draft, a single act addressed to the editor. It shares the same `metadata.json` as the rest of the submission package. diff --git a/test-longform-vault/submission-project/Main Manuscript (Index).md b/test-longform-vault/submission-project/Main Manuscript (Index).md new file mode 100644 index 0000000..70185e0 --- /dev/null +++ b/test-longform-vault/submission-project/Main Manuscript (Index).md @@ -0,0 +1,16 @@ +--- +longform: + format: scenes + title: PaperDraft + draftTitle: Main Manuscript + workflow: Default Workflow + sceneFolder: manuscript + scenes: + - introduction + - methods + - results + - discussion and conclusion + ignoredFiles: [] +--- + +This is the main manuscript draft of the submission package. It is organized in four acts and shares its publication metadata with the other drafts via `metadata.json` in this folder. diff --git a/test-longform-vault/submission-project/PaperDraft_Cover Letter.md b/test-longform-vault/submission-project/PaperDraft_Cover Letter.md new file mode 100644 index 0000000..55b24e1 --- /dev/null +++ b/test-longform-vault/submission-project/PaperDraft_Cover Letter.md @@ -0,0 +1,44 @@ +--- +title: "A Complete Submission Package" +date: "2026-06-06" +authors: + - name: "Doe, Jane" + affiliation: [1, 2] + corresponding: "yes" + - name: "Roe, Rick" + affiliation: [3] +affiliations: + - index: 1 + name: "Institute for Worked Examples" + - index: 2 + name: "Aspen Institute" + - index: 3 + name: "Center for Placeholder Studies" +abstract: "A worked example bundling a four-act main manuscript, a two-act supplement, a point-by-point response to reviewers, and a cover letter, used to exercise the Add Zenodo Frontmatter step across multiple drafts that share one metadata file." +keywords: + - "longform" + - "submission" + - "metadata" + - "zenodo" +target: "Journal of Reproducible Examples" +acronym: "ACSP" +csl: "nature" +template: "default" +lineno: "true" +numbersections: true +--- + +# cover letter + +# Cover Letter + +Dear Editor, + +We are pleased to submit our manuscript, "A Complete Submission Package," for consideration at the Journal of Reproducible Examples. The work presents a coordinated set of documents — main text, supplement, response to reviewers, and this letter — that share a single publication metadata record. + +We confirm that the manuscript is original, is not under consideration elsewhere, and that all authors have approved the submission. We have no conflicts of interest to declare. + +Thank you for your consideration. + +Sincerely, +Jane Doe, on behalf of all authors diff --git a/test-longform-vault/submission-project/PaperDraft_Main Manuscript.md b/test-longform-vault/submission-project/PaperDraft_Main Manuscript.md new file mode 100644 index 0000000..492f2e6 --- /dev/null +++ b/test-longform-vault/submission-project/PaperDraft_Main Manuscript.md @@ -0,0 +1,70 @@ +--- +title: "A Complete Submission Package" +date: "2026-06-06" +authors: + - name: "Doe, Jane" + affiliation: [1, 2] + corresponding: "yes" + - name: "Roe, Rick" + affiliation: [3] +affiliations: + - index: 1 + name: "Institute for Worked Examples" + - index: 2 + name: "Aspen Institute" + - index: 3 + name: "Center for Placeholder Studies" +abstract: "A worked example bundling a four-act main manuscript, a two-act supplement, a point-by-point response to reviewers, and a cover letter, used to exercise the Add Zenodo Frontmatter step across multiple drafts that share one metadata file." +keywords: + - "longform" + - "submission" + - "metadata" + - "zenodo" +target: "Journal of Reproducible Examples" +acronym: "ACSP" +csl: "nature" +template: "default" +lineno: "true" +numbersections: true +--- + +# introduction + +# Introduction + +Long-form scholarly writing often spans several documents that must stay consistent with one another. The main manuscript, its supplement, the response to reviewers, and the cover letter are usually authored separately, yet they describe the same study and should carry the same publication metadata. + +In this worked example we motivate the problem, state the gap our approach addresses, and outline the contributions developed in the sections that follow. + + +--- + +# methods + +# Methods + +We describe the materials and procedures used to produce the results reported below. The design is intentionally generic so that the example remains domain-agnostic. + +Data were collected under a fixed protocol, processed with a documented pipeline, and analyzed using standard statistical tests. Full parameter settings and additional checks are deferred to the supplementary methods. + + +--- + +# results + +# Results + +The analysis yields three main findings. First, the primary outcome moves in the predicted direction and is statistically distinguishable from the baseline. Second, the effect is stable across the robustness checks we ran. Third, a secondary measure corroborates the primary result. + +Extended tables and the full set of sensitivity analyses appear in the supplementary results. + + +--- + +# discussion and conclusion + +# Discussion and Conclusion + +Taken together, the results support the hypothesis introduced earlier and are consistent with prior work. We discuss the main threats to validity, note the boundaries of the design, and suggest directions for future study. + +In conclusion, the example demonstrates an end-to-end submission package whose four drafts remain coordinated through a single shared metadata record. diff --git a/test-longform-vault/submission-project/PaperDraft_Response to Reviewers.md b/test-longform-vault/submission-project/PaperDraft_Response to Reviewers.md new file mode 100644 index 0000000..0336ef5 --- /dev/null +++ b/test-longform-vault/submission-project/PaperDraft_Response to Reviewers.md @@ -0,0 +1,56 @@ +--- +title: "A Complete Submission Package" +date: "2026-06-06" +authors: + - name: "Doe, Jane" + affiliation: [1, 2] + corresponding: "yes" + - name: "Roe, Rick" + affiliation: [3] +affiliations: + - index: 1 + name: "Institute for Worked Examples" + - index: 2 + name: "Aspen Institute" + - index: 3 + name: "Center for Placeholder Studies" +abstract: "A worked example bundling a four-act main manuscript, a two-act supplement, a point-by-point response to reviewers, and a cover letter, used to exercise the Add Zenodo Frontmatter step across multiple drafts that share one metadata file." +keywords: + - "longform" + - "submission" + - "metadata" + - "zenodo" +target: "Journal of Reproducible Examples" +acronym: "ACSP" +csl: "nature" +template: "default" +lineno: "true" +numbersections: true +--- + +# reviewer 1 + +# Response to Reviewer #1 + +We thank Reviewer #1 for the careful reading and constructive comments. Below we respond to each point in turn; reviewer comments are in italics and our replies follow. + +*Comment 1.1 — The motivation could be stated more clearly.* +We have revised the introduction to state the gap and contributions explicitly. + +*Comment 1.2 — Please clarify the analysis parameters.* +The full parameter settings are now reported in the supplementary methods, and we reference them from the main text. + + +--- + +# reviewer 2 + +# Response to Reviewer #2 + +We are grateful to Reviewer #2 for the thoughtful feedback, which has improved the manuscript. We address each comment below. + +*Comment 2.1 — The robustness of the main result was unclear.* +We have added a full set of sensitivity analyses to the supplementary results and summarize them in the discussion. + +*Comment 2.2 — Some limitations should be acknowledged.* +We have expanded the discussion to state the threats to validity and the boundaries of the design. diff --git a/test-longform-vault/submission-project/PaperDraft_Supplementary Materials.md b/test-longform-vault/submission-project/PaperDraft_Supplementary Materials.md new file mode 100644 index 0000000..8e63d53 --- /dev/null +++ b/test-longform-vault/submission-project/PaperDraft_Supplementary Materials.md @@ -0,0 +1,48 @@ +--- +title: "A Complete Submission Package" +date: "2026-06-06" +authors: + - name: "Doe, Jane" + affiliation: [1, 2] + corresponding: "yes" + - name: "Roe, Rick" + affiliation: [3] +affiliations: + - index: 1 + name: "Institute for Worked Examples" + - index: 2 + name: "Aspen Institute" + - index: 3 + name: "Center for Placeholder Studies" +abstract: "A worked example bundling a four-act main manuscript, a two-act supplement, a point-by-point response to reviewers, and a cover letter, used to exercise the Add Zenodo Frontmatter step across multiple drafts that share one metadata file." +keywords: + - "longform" + - "submission" + - "metadata" + - "zenodo" +target: "Journal of Reproducible Examples" +acronym: "ACSP" +csl: "nature" +template: "default" +lineno: "true" +numbersections: true +--- + +# supplementary methods + +# Supplementary Methods + +This section provides the full procedural detail omitted from the main text for brevity. We list every parameter value, the exact preprocessing steps, and the software versions used. + +We also report the additional validation runs that confirm the pipeline behaves as intended on held-out inputs. + + +--- + +# supplementary results + +# Supplementary Results + +Here we present the extended tables and the complete set of sensitivity analyses referenced in the main results. Each robustness check is reported with its full distribution rather than a summary statistic. + +The supplementary findings are consistent with the conclusions drawn in the main manuscript. diff --git a/test-longform-vault/submission-project/Response to Reviewers (Index).md b/test-longform-vault/submission-project/Response to Reviewers (Index).md new file mode 100644 index 0000000..509e565 --- /dev/null +++ b/test-longform-vault/submission-project/Response to Reviewers (Index).md @@ -0,0 +1,14 @@ +--- +longform: + format: scenes + title: PaperDraft + draftTitle: Response to Reviewers + workflow: Default Workflow + sceneFolder: response + scenes: + - reviewer 1 + - reviewer 2 + ignoredFiles: [] +--- + +This is the point-by-point response to reviewers, with one act per reviewer. It shares the same `metadata.json` as the rest of the submission package. diff --git a/test-longform-vault/submission-project/Supplementary Materials (Index).md b/test-longform-vault/submission-project/Supplementary Materials (Index).md new file mode 100644 index 0000000..b916e54 --- /dev/null +++ b/test-longform-vault/submission-project/Supplementary Materials (Index).md @@ -0,0 +1,14 @@ +--- +longform: + format: scenes + title: PaperDraft + draftTitle: Supplementary Materials + workflow: Default Workflow + sceneFolder: supplementary + scenes: + - supplementary methods + - supplementary results + ignoredFiles: [] +--- + +This is the supplementary materials draft. It expands on the methods and results of the main manuscript and shares the same `metadata.json`. diff --git a/test-longform-vault/submission-project/cover/cover letter.md b/test-longform-vault/submission-project/cover/cover letter.md new file mode 100644 index 0000000..cb6d943 --- /dev/null +++ b/test-longform-vault/submission-project/cover/cover letter.md @@ -0,0 +1,12 @@ +# Cover Letter + +Dear Editor, + +We are pleased to submit our manuscript, "A Complete Submission Package," for consideration at the Journal of Reproducible Examples. The work presents a coordinated set of documents — main text, supplement, response to reviewers, and this letter — that share a single publication metadata record. + +We confirm that the manuscript is original, is not under consideration elsewhere, and that all authors have approved the submission. We have no conflicts of interest to declare. + +Thank you for your consideration. + +Sincerely, +Jane Doe, on behalf of all authors diff --git a/test-longform-vault/submission-project/manuscript.md b/test-longform-vault/submission-project/manuscript.md new file mode 100644 index 0000000..55b24e1 --- /dev/null +++ b/test-longform-vault/submission-project/manuscript.md @@ -0,0 +1,44 @@ +--- +title: "A Complete Submission Package" +date: "2026-06-06" +authors: + - name: "Doe, Jane" + affiliation: [1, 2] + corresponding: "yes" + - name: "Roe, Rick" + affiliation: [3] +affiliations: + - index: 1 + name: "Institute for Worked Examples" + - index: 2 + name: "Aspen Institute" + - index: 3 + name: "Center for Placeholder Studies" +abstract: "A worked example bundling a four-act main manuscript, a two-act supplement, a point-by-point response to reviewers, and a cover letter, used to exercise the Add Zenodo Frontmatter step across multiple drafts that share one metadata file." +keywords: + - "longform" + - "submission" + - "metadata" + - "zenodo" +target: "Journal of Reproducible Examples" +acronym: "ACSP" +csl: "nature" +template: "default" +lineno: "true" +numbersections: true +--- + +# cover letter + +# Cover Letter + +Dear Editor, + +We are pleased to submit our manuscript, "A Complete Submission Package," for consideration at the Journal of Reproducible Examples. The work presents a coordinated set of documents — main text, supplement, response to reviewers, and this letter — that share a single publication metadata record. + +We confirm that the manuscript is original, is not under consideration elsewhere, and that all authors have approved the submission. We have no conflicts of interest to declare. + +Thank you for your consideration. + +Sincerely, +Jane Doe, on behalf of all authors diff --git a/test-longform-vault/submission-project/manuscript/discussion and conclusion.md b/test-longform-vault/submission-project/manuscript/discussion and conclusion.md new file mode 100644 index 0000000..2a34fd9 --- /dev/null +++ b/test-longform-vault/submission-project/manuscript/discussion and conclusion.md @@ -0,0 +1,5 @@ +# Discussion and Conclusion + +Taken together, the results support the hypothesis introduced earlier and are consistent with prior work. We discuss the main threats to validity, note the boundaries of the design, and suggest directions for future study. + +In conclusion, the example demonstrates an end-to-end submission package whose four drafts remain coordinated through a single shared metadata record. diff --git a/test-longform-vault/submission-project/manuscript/introduction.md b/test-longform-vault/submission-project/manuscript/introduction.md new file mode 100644 index 0000000..7efffd0 --- /dev/null +++ b/test-longform-vault/submission-project/manuscript/introduction.md @@ -0,0 +1,5 @@ +# Introduction + +Long-form scholarly writing often spans several documents that must stay consistent with one another. The main manuscript, its supplement, the response to reviewers, and the cover letter are usually authored separately, yet they describe the same study and should carry the same publication metadata. + +In this worked example we motivate the problem, state the gap our approach addresses, and outline the contributions developed in the sections that follow. diff --git a/test-longform-vault/submission-project/manuscript/methods.md b/test-longform-vault/submission-project/manuscript/methods.md new file mode 100644 index 0000000..bd09b9d --- /dev/null +++ b/test-longform-vault/submission-project/manuscript/methods.md @@ -0,0 +1,5 @@ +# Methods + +We describe the materials and procedures used to produce the results reported below. The design is intentionally generic so that the example remains domain-agnostic. + +Data were collected under a fixed protocol, processed with a documented pipeline, and analyzed using standard statistical tests. Full parameter settings and additional checks are deferred to the supplementary methods. diff --git a/test-longform-vault/submission-project/manuscript/results.md b/test-longform-vault/submission-project/manuscript/results.md new file mode 100644 index 0000000..e5e62c2 --- /dev/null +++ b/test-longform-vault/submission-project/manuscript/results.md @@ -0,0 +1,5 @@ +# Results + +The analysis yields three main findings. First, the primary outcome moves in the predicted direction and is statistically distinguishable from the baseline. Second, the effect is stable across the robustness checks we ran. Third, a secondary measure corroborates the primary result. + +Extended tables and the full set of sensitivity analyses appear in the supplementary results. diff --git a/test-longform-vault/submission-project/metadata.json b/test-longform-vault/submission-project/metadata.json new file mode 100644 index 0000000..9535626 --- /dev/null +++ b/test-longform-vault/submission-project/metadata.json @@ -0,0 +1,35 @@ +{ + "title": "A Complete Submission Package", + "publication_date": "2026-06-06", + "upload_type": "publication", + "publication_type": "article", + "description": "A worked example bundling a four-act main manuscript, a two-act supplement, a point-by-point response to reviewers, and a cover letter, used to exercise the Add Zenodo Frontmatter step across multiple drafts that share one metadata file.", + "creators": [ + { + "name": "Doe, Jane", + "affiliation": "Institute for Worked Examples", + "orcid": "0000-0000-0000-0001" + }, + { + "name": "Roe, Rick", + "affiliation": "Center for Placeholder Studies", + "orcid": "0000-0000-0000-0002" + } + ], + "keywords": ["longform", "submission", "metadata", "zenodo"], + "journal_title": "Journal of Reproducible Examples", + "version": "v1.0", + "_longform": { + "acronym": "ACSP", + "csl": "nature", + "template": "default", + "lineno": true, + "figures_at_end": false, + "author_affiliations": { + "Doe, Jane": ["Institute for Worked Examples", "Aspen Institute"], + "Roe, Rick": ["Center for Placeholder Studies"] + }, + "corresponding": ["Doe, Jane"], + "extra_yaml": "numbersections: true\n" + } +} diff --git a/test-longform-vault/submission-project/response/reviewer 1.md b/test-longform-vault/submission-project/response/reviewer 1.md new file mode 100644 index 0000000..2281ba8 --- /dev/null +++ b/test-longform-vault/submission-project/response/reviewer 1.md @@ -0,0 +1,9 @@ +# Response to Reviewer #1 + +We thank Reviewer #1 for the careful reading and constructive comments. Below we respond to each point in turn; reviewer comments are in italics and our replies follow. + +*Comment 1.1 — The motivation could be stated more clearly.* +We have revised the introduction to state the gap and contributions explicitly. + +*Comment 1.2 — Please clarify the analysis parameters.* +The full parameter settings are now reported in the supplementary methods, and we reference them from the main text. diff --git a/test-longform-vault/submission-project/response/reviewer 2.md b/test-longform-vault/submission-project/response/reviewer 2.md new file mode 100644 index 0000000..89ccf14 --- /dev/null +++ b/test-longform-vault/submission-project/response/reviewer 2.md @@ -0,0 +1,9 @@ +# Response to Reviewer #2 + +We are grateful to Reviewer #2 for the thoughtful feedback, which has improved the manuscript. We address each comment below. + +*Comment 2.1 — The robustness of the main result was unclear.* +We have added a full set of sensitivity analyses to the supplementary results and summarize them in the discussion. + +*Comment 2.2 — Some limitations should be acknowledged.* +We have expanded the discussion to state the threats to validity and the boundaries of the design. diff --git a/test-longform-vault/submission-project/supplementary/supplementary methods.md b/test-longform-vault/submission-project/supplementary/supplementary methods.md new file mode 100644 index 0000000..cd80bb1 --- /dev/null +++ b/test-longform-vault/submission-project/supplementary/supplementary methods.md @@ -0,0 +1,5 @@ +# Supplementary Methods + +This section provides the full procedural detail omitted from the main text for brevity. We list every parameter value, the exact preprocessing steps, and the software versions used. + +We also report the additional validation runs that confirm the pipeline behaves as intended on held-out inputs. diff --git a/test-longform-vault/submission-project/supplementary/supplementary results.md b/test-longform-vault/submission-project/supplementary/supplementary results.md new file mode 100644 index 0000000..e46dc7d --- /dev/null +++ b/test-longform-vault/submission-project/supplementary/supplementary results.md @@ -0,0 +1,5 @@ +# Supplementary Results + +Here we present the extended tables and the complete set of sensitivity analyses referenced in the main results. Each robustness check is reported with its full distribution rather than a summary statistic. + +The supplementary findings are consistent with the conclusions drawn in the main manuscript.