Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

All notable changes to PaperRoute Tracker will be documented here.

## [Unreleased] — v0.7 Deadline Center
## [0.7.0] - 2026-09-28

v0.7.0-rc.1 is available on the Preview channel. Development is tracked in [PR #78](https://github.com/JUhalt/PaperRoute-Tracker/pull/78) and the [v0.7 milestone](https://github.com/JUhalt/PaperRoute-Tracker/milestone/9).
PaperRoute v0.7.0 — **Deadline Center** — was released on September 28, 2026 from [PR #78](https://github.com/JUhalt/PaperRoute-Tracker/pull/78), after the v0.7.0-rc.1 Preview. Certification is recorded in [#79](https://github.com/JUhalt/PaperRoute-Tracker/issues/79). v0.7 upgrades the library to Schema 7.

### Added

Expand All @@ -23,6 +23,9 @@ v0.7.0-rc.1 is available on the Preview channel. Development is tracked in [PR #

- Revision deadlines now name their journal on the Deadlines page and in calendar exports.
- The **First deadline** date in Add Manuscript shows in full at 150% display scaling ([#76](https://github.com/JUhalt/PaperRoute-Tracker/issues/76)).
- The update prompt opens on **Download & Restart** instead of with its release notes selected.
- About PaperRoute scales with the display instead of clipping its text at 150%, and describes PaperRoute in its one-line description.
- Check for Publications says there is nothing to check yet when the library is empty, instead of that everything is already published.

## [0.6.0] - 2026-09-27

Expand Down
10 changes: 9 additions & 1 deletion ManualCertification/V04Demo/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ private static void Main(string[] args)
return;
}

var surfaces = new[] { "vault", "readiness", "packet", "packet-new", "file", "file-new", "notes", "submission", "responses", "workflow", "board", "publications", "fill" };
var surfaces = new[] { "vault", "readiness", "packet", "packet-new", "file", "file-new", "notes", "submission", "responses", "workflow", "board", "publications", "fill", "about" };
var positional = args.Where(argument => !argument.StartsWith("--")).ToArray();
var surface = positional.FirstOrDefault()?.ToLowerInvariant() ?? "vault";
var minimum = args.Contains("--minimum", StringComparer.OrdinalIgnoreCase);
Expand Down Expand Up @@ -78,6 +78,14 @@ private static void Main(string[] args)
return;
}

if (surface == "about")
{
using var about = new AboutForm();
ConfigureDisplayEvidence(about, primary);
about.ShowDialog();
return;
}

if (surface == "publications" || surface == "fill")
{
using var check = PublicationDemo.Create(surface);
Expand Down
5 changes: 4 additions & 1 deletion ManuscriptPipeline/Forms/AboutForm.vb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ Namespace Forms
Me.FormBorderStyle = FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
' Sizes below are at 96 DPI and scale with the display; without the
' base dimensions the text grew at 150% but the dialog did not.
Me.AutoScaleDimensions = New SizeF(96.0F, 96.0F)
Me.ClientSize = New Size(640, 410)
Me.Font = New Font("Segoe UI", 10.0F)
Me.AutoScaleMode = AutoScaleMode.Dpi
Expand Down Expand Up @@ -92,7 +95,7 @@ Namespace Forms

Dim lblDescription As New Label With {
.Text =
"Track manuscripts from idea through submission, peer review, revision, publication—or the File Drawer—while keeping your workflow data on your own computer." &
ProductInfo.Description &
Environment.NewLine & Environment.NewLine &
"Open source • Local first • Built for academic publishing workflows.",
.Dock = DockStyle.Fill,
Expand Down
4 changes: 3 additions & 1 deletion ManuscriptPipeline/Forms/PublicationCheckForm.vb
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,9 @@ Namespace Forms

If _eligible.Count = 0 Then
lstManuscripts.Enabled = False
lblSelected.Text = "Every manuscript is already on the Published shelf."
lblSelected.Text = If(_library.Count = 0,
"Add a manuscript first; there is nothing to check yet.",
"Every manuscript is already on the Published shelf.")
End If

UpdateSelection()
Expand Down
9 changes: 9 additions & 0 deletions ManuscriptPipeline/Forms/UpdatePromptForm.vb
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,15 @@ Namespace Forms

Me.AcceptButton = btnInstall
Me.CancelButton = btnLater

' The notes box is first in tab order, and a text box that takes
' focus on opening selects all its text. Start on the default
' button instead, with nothing selected.
AddHandler Me.Shown,
Sub(sender, e)
Me.ActiveControl = btnInstall
txtNotes.Select(0, 0)
End Sub
Me.Controls.Add(root)

End Sub
Expand Down
4 changes: 2 additions & 2 deletions ManuscriptPipeline/ManuscriptPipeline.vbproj
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>0.7.0-rc.1</Version>
<Version>0.7.0</Version>
<AssemblyVersion>0.7.0.0</AssemblyVersion>
<FileVersion>0.7.0.0</FileVersion>
<AssemblyName>PaperRouteTracker</AssemblyName>
<RootNamespace>ManuscriptPipeline</RootNamespace>
<Product>PaperRoute Tracker</Product>
<Title>PaperRoute Tracker</Title>
<Authors>Joshua Uhalt</Authors>
<Description>Local-first academic manuscript tracking for researchers.</Description>
<Description>Local-first, privacy-focused app for tracking academic manuscripts from draft through submission, revision, and publication.</Description>
<ApplicationIcon>Assets\PaperRoute.ico</ApplicationIcon>
<Company>PaperRoute</Company>
<Copyright>Copyright © Joshua Uhalt 2026</Copyright>
Expand Down
2 changes: 1 addition & 1 deletion ManuscriptPipeline/Services/ProductInfo.vb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Namespace Services
Public Const DisplayName As String = "PaperRoute"
Public Const ProductName As String = "PaperRoute Tracker"
Public Const Tagline As String = "Track • Submit • Publish"
Public Const Description As String = "Local-first academic manuscript tracking for researchers."
Public Const Description As String = "Local-first, privacy-focused app for tracking academic manuscripts from draft through submission, revision, and publication."

' Current PaperRoute storage names.
Public Const DataFolderName As String = "PaperRoute"
Expand Down
31 changes: 31 additions & 0 deletions PaperRoute.Tests/UiTextMnemonicTests.vb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,37 @@ Public Class UiTextMnemonicTests

End Sub

' Found while certifying v0.7.0-rc.1: the update prompt opened with its
' release notes all selected.
<TestMethod>
Public Sub UpdatePrompt_OpensOnItsDefaultButtonWithNothingSelected()

Dim failure As Exception = Nothing
Dim thread As New Threading.Thread(
Sub()
Try
Using prompt As New UpdatePromptForm("0.6.0", "0.7.0", "Stable", "First line." & Environment.NewLine & "Second line.")
prompt.StartPosition = FormStartPosition.Manual
prompt.Location = New Drawing.Point(-20000, -20000)
prompt.ShowInTaskbar = False
prompt.Show()
Application.DoEvents()
Dim notes As TextBox = Descendants(prompt).OfType(Of TextBox)().Single()
Assert.AreEqual(0, notes.SelectionLength, "No text is selected.")
Assert.AreEqual("Download & Restart", prompt.ActiveControl.Text.Replace("&&", "&"))
prompt.Close()
End Using
Catch ex As Exception
failure = ex
End Try
End Sub)
thread.SetApartmentState(Threading.ApartmentState.STA)
thread.Start()
thread.Join()
If failure IsNot Nothing Then Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(failure).Throw()

End Sub

' #71: names typed by the user keep their ampersands in dialogs.
<TestMethod>
Public Sub DialogsShowUserDataWithLiteralAmpersands()
Expand Down
22 changes: 15 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,24 @@
[![Latest Release](https://img.shields.io/github/v/release/JUhalt/PaperRoute-Tracker)](https://github.com/JUhalt/PaperRoute-Tracker/releases/latest)
[![License: GPL-3.0-only](https://img.shields.io/badge/License-GPL--3.0--only-blue.svg)](LICENSE.txt)

**A local-first academic manuscript tracker for researchers.**
**Local-first, privacy-focused app for tracking academic manuscripts from draft through submission, revision, and publication.**

> **Track • Submit • Publish**

PaperRoute Tracker helps researchers manage manuscripts from idea through submission, peer review, revision, publication—or the File Drawer—without requiring an account or sending the core workflow database to a cloud service.

## Current status

- **Stable:** [v0.6.0 — Workspace](https://github.com/JUhalt/PaperRoute-Tracker/releases/tag/v0.6.0) brings PaperRoute into one main window with pages, a tabbed page for each manuscript with a single save step, and a calmer card-based design, with no change to your library. See the [release notes](docs/releases/0.6.0.md) and the [user guide](docs/USER_GUIDE.md).
- **Preview:** [v0.7.0-rc.1 — Deadline Center](https://github.com/JUhalt/PaperRoute-Tracker/releases/tag/v0.7.0-rc.1) replaces Reminders with a **Deadlines** page for everything that needs action, and when, and adds a user-initiated **publication check**. It upgrades the library to Schema 7; read the [release notes](docs/releases/0.7.0-rc.1.md) and [upgrade notes](UPGRADE_NOTES.md) before trying it.
- **Stable:** [v0.7.0 — Deadline Center](https://github.com/JUhalt/PaperRoute-Tracker/releases/tag/v0.7.0) puts everything that needs action, and when, on one **Deadlines** page, and adds a **publication check** that runs only when you ask. See the [release notes](docs/releases/0.7.0.md) and the [user guide](docs/USER_GUIDE.md).
- **Next:** [v0.8 — Route Analytics & Reports](https://github.com/JUhalt/PaperRoute-Tracker/milestone/10): your own journal history, route statistics, shareable reports, and work types and tags.

v0.6 uses the same Schema 6 library as v0.5, so upgrading from v0.5 changes no data. v0.7 moves the library to Schema 7, which v0.6 cannot open, so keep a backup made with v0.6 first. The [upgrade notes](UPGRADE_NOTES.md) explain the save and compatibility boundaries.
v0.7 moves the library to Schema 7, which v0.6 cannot open, so keep a backup made with v0.6 before upgrading. The [upgrade notes](UPGRADE_NOTES.md) explain the save and compatibility boundaries.

**New to PaperRoute?** Start with the [PaperRoute User Guide](https://github.com/JUhalt/PaperRoute-Tracker/blob/v0.6.0/docs/USER_GUIDE.md) for a Quick Start, feature tour, and task-oriented "How do I...?" reference.
**New to PaperRoute?** Start with the [PaperRoute User Guide](https://github.com/JUhalt/PaperRoute-Tracker/blob/v0.7.0/docs/USER_GUIDE.md) for a Quick Start, feature tour, and task-oriented "How do I...?" reference.

<p align="center">
<img src="docs/images/board.png" width="860" alt="The PaperRoute board: pipeline cards with stage, what needs attention, target journal, and each manuscript's route so far (fictional sample data)">
</p>

## What PaperRoute does

Expand All @@ -33,6 +37,10 @@ v0.6 uses the same Schema 6 library as v0.5, so upgrading from v0.5 changes no d
- **Visual Route View** showing submissions, decisions, revisions, and reroutes in order.
- **Version History** with immutable managed snapshots, linked files, or metadata-only versions associated with submissions, decisions, and revision rounds.

<p align="center">
<img src="docs/images/deadlines.png" width="860" alt="The Deadlines page: overdue, today, next 7 days, later, and undated items, each with its own actions (fictional sample data)">
</p>

### Prepare and submit

- **Journal submission history** with manuscript numbers, dates, notes, and publisher portal links.
Expand Down Expand Up @@ -188,8 +196,8 @@ PaperRoute is an independent, open-source project. Its implementation, local-fir
| --- | --- | --- |
| **Released** | v0.5 — Reviewer Response Workflow | Response matrix, drafting, and Markdown export |
| **Released** | v0.6 — Workspace | One window, manuscript pages, one save step, calmer design |
| **Preview** | [v0.7 — Deadline Center](https://github.com/JUhalt/PaperRoute-Tracker/milestone/9) | Everything that needs action, and when; the publication check |
| **Then** | [v0.8 — Route Analytics & Reports](https://github.com/JUhalt/PaperRoute-Tracker/milestone/10) | Your own turnaround data, route and status reports, types and tags |
| **Released** | v0.7 — Deadline Center | Everything that needs action, and when; the publication check |
| **Now** | [v0.8 — Route Analytics & Reports](https://github.com/JUhalt/PaperRoute-Tracker/milestone/10) | Your own turnaround data, route and status reports, types and tags |
| | [v0.9 — 1.0 Hardening](https://github.com/JUhalt/PaperRoute-Tracker/milestone/11) | Onboarding, accessibility, recovery, certification |
| **Goal** | [v1.0 — Trusted Research Workflow](https://github.com/JUhalt/PaperRoute-Tracker/milestone/12) | "I trust this application with my research workflow." |

Expand Down
8 changes: 4 additions & 4 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ Targets are directional rather than promises. Data integrity, migrations, backup
| **v0.4** | Submission Readiness ✅ | What exactly am I preparing and sending to this journal? |
| **v0.5** | Reviewer Response Workflow ✅ | What did the journal ask me to change, and how am I responding? |
| **v0.6** | Workspace UI ✅ | Can I find and act on everything from one calm, uncluttered workspace? |
| **v0.7** | **Deadline Center — active** | What requires action, and when? |
| **v0.8** | Route Analytics & Reports | What does this publication journey show me—and how can I communicate it? |
| **v0.7** | Deadline Center ✅ | What requires action, and when? |
| **v0.8** | **Route Analytics & Reports — next** | What does this publication journey show me—and how can I communicate it? |
| **v0.9** | 1.0 Hardening | Is the entire workflow polished, resilient, and certifiable? |
| **v1.0** | Trusted Research Workflow | Would I trust this with my real publication pipeline? |

Expand Down Expand Up @@ -275,7 +275,7 @@ PaperRoute v0.6.0 was released on September 27, 2026 from [PR #75](https://githu

---

# ACTIVE — v0.7 Deadline Center
## COMPLETE — v0.7 Deadline Center

Milestone: **[v0.7.0 — Deadline Center](https://github.com/JUhalt/PaperRoute-Tracker/milestone/9)**

Expand All @@ -299,7 +299,7 @@ Planned slices, tracked in the v0.7 integration PR:
4. **Carry-over:** [#76](https://github.com/JUhalt/PaperRoute-Tracker/issues/76).
5. **Certification and release.** Preview, then Stable, using the v0.6 procedure: in-app updater only, an unlocked host for VM checks, and snapshots before each VM step.

Slices 1–4 are complete in [PR #78](https://github.com/JUhalt/PaperRoute-Tracker/pull/78). v0.7.0-rc.1 is the Preview candidate; certification is tracked in the v0.7 release-certification issue.
PaperRoute v0.7.0 was released on September 28, 2026 from [PR #78](https://github.com/JUhalt/PaperRoute-Tracker/pull/78), after the v0.7.0-rc.1 Preview. It moved the library to Schema 7 with a marker-only upgrade. Certification (published-asset verification, an installed v0.6.0 upgraded through the live Preview updater with byte-identical data files, clean installation, and the live Stable updater) is recorded in [#79](https://github.com/JUhalt/PaperRoute-Tracker/issues/79).

---

Expand Down
4 changes: 2 additions & 2 deletions UPGRADE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Use **Settings → Backup Library...** to create a portable backup. In v0.5 and

## Moving from v0.6 to v0.7

PaperRoute v0.7 replaces the Reminders page with **Deadlines** and adds the publication check. It upgrades the library to **Schema 7**, which remembers possible publications you have reviewed.
PaperRoute v0.7 replaces the Reminders page with **Deadlines** and adds the publication check. **v0.7.0 is the current Stable release.** It upgrades the library to **Schema 7**, which remembers possible publications you have reviewed.

Before upgrading, create a portable ZIP backup with v0.6 (**Settings → Backup Library...**) and keep it separately.

Expand All @@ -35,7 +35,7 @@ After upgrading:

## Moving from v0.5 to v0.6

PaperRoute v0.6 changes where things live and how they look. **v0.6.0 is the current Stable release.** It does **not** migrate your data: the library stays on **Schema 6**, so v0.5 can still open a library that v0.6 has used, and portable backups made by either version restore in both. A backup before upgrading is still a sensible precaution.
PaperRoute v0.6 changes where things live and how they look. It does **not** migrate your data: the library stays on **Schema 6**, so v0.5 can still open a library that v0.6 has used, and portable backups made by either version restore in both. A backup before upgrading is still a sensible precaution.

What to expect after upgrading:

Expand Down
10 changes: 4 additions & 6 deletions docs/USER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -862,16 +862,14 @@ PaperRoute ships a local copy of this guide. Open it with **Help** at the bottom

---

## What Comes After v0.5?
## What Comes Next?

The Route, Version History, readiness profiles, submission packets, and reviewer responses form one connected manuscript record. Later releases build on that record:
The Route, Version History, readiness profiles, submission packets, reviewer responses, and Deadlines form one connected manuscript record. Later releases build on that record:

- **v0.6 — Workspace UI:** one main window with pages for the Board, Library, Journals, Reminders (now Deadlines), and Import & Export; each manuscript opens as a tabbed page with a single Save / Discard step; a calmer card-based design; and faster Add Manuscript from a pasted title page.
- **v0.7 — Deadline Center:** richer action and deadline management, plus user-initiated checks for publications and missing metadata.
- **v0.8 — Route Analytics & Reports:** timing analytics, your history with each journal, printable route and pipeline-status reports, and work types and tags.
- **v0.8 — Route Analytics & Reports:** your own history with each journal, route statistics from recorded dates, printable route and pipeline-status reports, and work types and tags.
- **v0.9 — 1.0 Hardening:** guided onboarding, accessibility, consistency, recovery, and release certification.

Optional AI assistance for extracting reviewer actions remains a proposal for after 1.0. Planned releases are directional and may change; see the [roadmap](https://github.com/JUhalt/PaperRoute-Tracker/blob/master/ROADMAP.md).
Planned releases are directional and may change; see the [roadmap](https://github.com/JUhalt/PaperRoute-Tracker/blob/master/ROADMAP.md).

The in-app `?` guidance is intentionally reusable so a future guided tutorial can teach the same concepts without maintaining a second vocabulary.

Expand Down
Binary file added docs/images/board.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/deadlines.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading