Skip to content

Releases: brsloan/lastmilepdf

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 19:58

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 ...
Read more

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 17:28

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 P on 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 P on 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 /Pg is written - the case that blocked joining paragraphs
    holding Sub tags. 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

Choose a tag to compare

@github-actions github-actions released this 11 Sep 16:05

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.md for editing: npm run help:export writes the Markdown, npm run help:import writes it back into
    the dialog, and npm run help:check reports drift between the two.

Full diff: v0.4.2...v0.4.3

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 10 Sep 20:18

Fixed

  • Flatten now removes Sub tags along with Div, Sect, Part and Span.
  • 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

Choose a tag to compare

@github-actions github-actions released this 10 Sep 18:42

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 10 Sep 17:31

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Sep 14:01

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 02:18

What's Changed

New Contributors

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 19:50