Releases: brsloan/lastmilepdf
Releases · brsloan/lastmilepdf
Release list
v0.6.0
Added
- A contents sidebar in the Help and Quickstart dialogs. Both are long
enough to have to scroll for the part you wanted, so each now lists its own
section headings down the left-hand side: click one to jump to it, and the
entry for wherever you have scrolled to stays marked as you read. Quickstart
also lists the sub-headings of its table walkthroughs, nested under the
section they belong to. The list is built from the headings themselves when
the app starts rather than written out alongside them, so it cannot fall out
of step with a Help or Quickstart doc that has been rewritten. In a narrow
window it moves to the top of the dialog instead, rather than squeezing the
prose. - Drag a PDF onto the Page Preview pane to open it. While nothing is
loaded, the empty pane is a drop target: drag a PDF in from the file
manager and it opens the same way File > Open would, joining Open Recent
afterwards. The pane outlines itself while a file is over it, and the
placeholder says so. It only takes a drop while it is empty - with a
document open that pane belongs to Add Figures and Select Content, and a
stray drop there would be a document swap nobody asked for. Dropping a
file anywhere else in the window now does nothing at all, where before it
would have replaced the whole app with Chromium's view of that file. - B groups the selection into a Block Quotation. A new tagging shortcut,
configurable like the rest, for the quoted passages a scan is full of and
which until now had to be typed into the Role field by hand. It groups
rather than relabels, because a BlockQuote is a block of paragraphs
attributed to someone other than the surrounding author: one selected
paragraph comes out as a quotation holding that paragraph, and three come
out as one quotation of three paragraphs, rather than three quotations that
have each stopped being a paragraph. A selected tag that already names a
block of its own - a heading, list, table or figure - is kept as it is
inside the quotation; a Span, or page content with no tag of its own,
becomes the paragraph the quotation holds. B answers a Select Content
rectangle too, putting the text it covered in a paragraph inside the new
quotation. Pressing P on a quotation dissolves it again and hands back the
blocks it was holding, so there is a way out as well as a way in. - A quick start, in the app and as a PDF. Help > Quickstart is a short
tutorial on the keyboard-first way of working - the tag shortcuts, what the
toolbar buttons do, the three ways to build a table, and a suggested AI
workflow - written for someone opening the app for the first time, where the
existing Help doc is a reference for someone already in it. Help > Open
Quickstart PDF opens the same text as a tagged PDF, which a first run opens
by itself so the app starts with something on screen rather than an empty
window. It is a document to practise on as much as one to read: correctly
tagged headings, paragraphs and nested lists to re-level, join, split and
artifact, and a list item carried across a page break. It opens from a copy
in the user data folder, so it saves like any other document; a later
version's tutorial replaces that copy only while it is still untouched. - What changed, after an update. The first launch on a new version opens
a What's New dialog saying what came with it, taken from that version's
section of the changelog - the same text the release notes on GitHub are
made of, now shipped inside the build and shown at the one moment it is
worth reading. Until now an update announced itself as "Update 0.5.0
downloaded" and never said what was in it. An update that skipped releases
lists those too (up to five), since from here they all arrived at once.
Help > What's New reopens the running version's entry any time. Nothing
appears on a fresh install, after a downgrade, or for a version the
changelog has no section for, which keeps a build run from source quiet. - Documents reopen where you left them. A PDF opened again comes back to
the tag that was selected, the tags that were expanded, how far down the tag
tree was scrolled and the page the preview was on, instead of the structure
root with everything collapsed - which on a long document meant re-expanding
the same dozen levels at the start of every session. Remembered per file, for
the twenty most recently opened. A document closed while proofreading reopens
proofreading, resuming from the tag that had been reached, with the caret at
the start of its Actual Text rather than selecting the whole field - a resumed
read is not the place to leave a tag's text one keystroke from being wiped.
Opening a document never turns that mode off, whatever the file was last read
in. A file that has been edited since - elsewhere, or here with the changes
never saved - opens the old way: what was recorded is checked against the
document's structure before any of it is trusted, since a tag's id only means
anything against the exact tree it came from. - The tagging shortcuts on a right-click menu. Every structural edit in
the Tag Tree was a keystroke and nothing else - fast once the keys are
learned, and a dead end before that. Right-clicking a tag now opens the same
edits as a menu, each row printed with the key it is bound to, so the menu
teaches the shortcut rather than standing in for it, and the rarely-used
edits are reachable without a trip to the Shortcuts dialog. A key remapped
in Preferences is what the menu shows, and an action whose key has been
cleared still appears - which is exactly when the menu is the only way to
reach it. Right-clicking outside the selection selects that tag first;
right-clicking inside a multi-tag selection leaves it alone, so the menu
acts on the whole block the way the keys do. It steers by keyboard too -
arrows, Home/End, Esc back to the row it was opened on - and the Menu key
opens it anchored to the focused row. - Artifacts tab. The Tag Tree pane now has a second tab listing everything
the document marks/Artifact- the content deliberately left out of the
tag tree, which assistive technology skips: running heads, footers, page
numbers, rules, the background image of a scanned page, and anything this
app artifacted itself (deleting a tag does, and so do Smartifact and Repair
Orphaned Content). Each row says what the artifact is made of, the PDF's own
name for it where it has one, any text it paints and its page; clicking one
jumps to that page and outlines it, the same way clicking a tag does.
The tagging shortcuts turn the selection back into tagged content, with the
role the shortcut names: the same keys as in the tag tree, configured in the
same place - 1-6, P, F, C, D, H - so an artifact is tagged as what it should
have been rather than as a placeholder to correct afterwards. The new tag
lands selected in the tree. L, I, T, R and J are answered with a hint
instead: each regroups tags that already exist, and an artifact has no tag
yet. Rows select like tag tree rows do (Shift+click, Ctrl/Cmd+click,
Shift+arrows), and several selected together become one tag holding all of
them in reading order, rather than one each - which is what a running head
the file artifacted as three separate spans actually needs. Artifacting was
a one-way door until now; this is the way back from a heading deleted by
accident, or a figure Smartifact took for a scan background. - Select Content → Table. With a rectangle selected on the page, T no
longer just says that tables are built from the tree: it lays a grid over
the rectangle. Click to place column dividers, Enter, click to place row
dividers, Enter again to see the cells with the text each will receive
outlined inside it. Drag or Shift+click to select cells, M to merge them
into one spanning cell, H to switch header and data cells (the top row
starts as headers), then Enter builds the Table, TR and TH/TD tags in one
undo step, cutting every text run at the cell edges the same way the
rectangle already cuts at its own - so a scanned table whose OCR painted
each row as one run comes out one cell per column. Header scope is set as
Scope Tables would set it. The grid starts with the dividers guessed
from the text - rows from the gaps between lines (a wrapped cell's
tighter line pitch is told apart from the space between rows), columns
from the white space no line of text runs across, a spanning header
excepted - and the status line says how many it guessed. Every divider is still yours to correct, and nothing is built
until the cells have been looked at: the Table Editor can fix headers
and spans afterwards but can't move text between cells, so a grid that's
a few points off could only be undone, not corrected. G guesses the
current step again, Delete clears it, Esc drops the grid and keeps the
selection. A, or the Try with AI button shown while a grid is up,
sends an image of the box and the words in it to the configured AI
provider and replaces the whole grid with its reading of the table -
dividers, merged cells and header cells - landing on the cells step. The
AI names which words belong in which cell; the dividers are then drawn
halfway between neighbouring cells' words, so where its reading
contradicts where the text actually sits the status line says how many
dividers cut through a cell's text or how many words land in a different
cell from the one it named. Needs a provider and model that can read
images. - A Fill with AI button beside the Alt text label when a Figure or a
Formula is selected. It sends an image of just that tag's own part of the
page to the configured AI provider and writes what comes back into the
field: a description of what a figure shows, or a formula read out in
words the way ...
v0.5.0
Added
- In Proofread mode, the highlighted changes in the Actual Text field are now
mirrored on the page: while an AI fix or a Show AT Changes flag is showing
its diff, the words the OCR read differently are marked on the preview, and
a thin amber bar marks where words were added that the OCR missed
entirely. Positions within a line are estimated from character counts, so
they point at the right spot rather than outline it exactly. - The tag tree now shows where the PDF's pages break: a dotted red line
between the two tags a break falls between, and through the middle of a tag
whose own content carries over onto the next page. The line is drawn behind
the tags, so it never covers a role or a text preview.
Changed
- In the tag properties panel, Fix with AI now comes before Pull Content,
which also puts Pull Content - the rare start-over - last in the tab order.
Fixed
- Pressing
Pon several content elements at once now leaves the paragraphs
it made selected. It used to hand back a partial selection of whichever
other tags had inherited those positions, because wrapping each element in
a paragraph shifts everything after it along. - Clearing the selection now redraws the tag tree, so rows can no longer be
left looking selected when nothing is. - Pressing
Pon tags that are already paragraphs no longer clears the
selection, which left the tree without a focused tag until it was clicked
back into. Any conversion that only relabels now keeps the selection put. - Join no longer refuses tags that sit on the same page but disagree about
where their/Pgis written - the case that blocked joining paragraphs
holdingSubtags. Joining across a page break works too: the moved
content now carries its own page instead of being rejected. - The text cursor no longer vanishes while it sits inside a highlighted word
in the Actual Text field. The highlight layer was painting over the caret;
the layers are now the other way round. - Pull Content and Fix with AI no longer react to the pointer outside their
own buttons. The whole Actual Text field was acting as Pull Content's
label, so hovering beside the field's caption highlighted the button, and
clicking there ran it.
Full diff: v0.4.3...v0.5.0
v0.4.3
Changed
- Tightened the in-app Help text throughout, and moved the shortcut list out of
Help in favour of pointing at Help > Shortcuts. - The Help text now round-trips to
docs/help.mdfor editing:npm run help:exportwrites the Markdown,npm run help:importwrites it back into
the dialog, andnpm run help:checkreports drift between the two.
Full diff: v0.4.2...v0.4.3
v0.4.2
Fixed
- Flatten now removes
Subtags along withDiv,Sect,PartandSpan. - The tag properties panel refreshes after Scope Tables, instead of showing the
scopes the table had before the command ran.
Full diff: v0.4.1...v0.4.2
v0.4.1
v0.4.0
v0.3.0
v0.2.0
v0.1.0
Full Changelog: https://github.com/brsloan/lastmilepdf/commits/v0.1.0