Repository navigation
Releases: abooodbah/leandoc
Release list
LeanDoc v0.1.3
LeanDoc v0.1.3
LeanDoc 0.1.3 breaks pages where Word does in documents that Word saved. A
46-page survey with tracked changes showed as 87 pages in 0.1.2. A copy of
it with every letter scrambled, which Word 365 lays out on 48 pages, now
shows as 49 instead of 87.
Release assets
| Platform | Artifact |
|---|---|
| Windows 10 and 11, x64 | LeanDoc-v0.1.3-windows-x64.zip |
| Ubuntu 24.04 and compatible, x86-64 | LeanDoc-v0.1.3-linux-x86_64.deb |
| macOS 12 or later, Intel and Apple silicon | LeanDoc-v0.1.3-macos-universal-preview.zip |
Every artifact has an adjacent .sha256 sidecar. The macOS preview also has
a .metadata.json file that records how it was signed.
Fixes
- Pages in documents Word saved. Word saves where each page started when
it last laid the document out, and the renderer starts a page at each of
those places. When LeanDoc's text ran a few lines past a page, those lines
took a page of their own, so the survey had about twice Word's pages. Text
that runs past such a page start now continues on the page that starts
there. Explicit page and section breaks are unchanged. - An empty page after a page break. Word also saves a page start right
after an explicit page break; LeanDoc broke at both and showed a page with
one empty line. It now breaks once. - Complex-script theme fonts. Text in the
majorBidiorminorBidi
theme font printed in the body font. It now uses the theme's complex-script
font, or the theme's font for the document's bidi language when that is
empty: Times New Roman for Arabic in Office's themes. - Line height. A paragraph whose text and paragraph mark are smaller than
its style was spaced at the style's size: 10 pt references in a 12 pt
style took 18.4 px lines instead of 15.4. An empty paragraph now takes the
size of its paragraph mark. - Contextual spacing. The space between paragraphs of one style that ask
for contextual spacing, such as a list of references, is dropped, as in
Word. - Fixed tables. A table with a fixed layout keeps its column widths.
It was fitted to its content, which wrapped narrow columns and made rows
taller. - Deleted paragraphs. A paragraph whose text and paragraph mark were
deleted as tracked changes showed as an empty line. It is gone, as in Word.
The survey had 129 of them.
Measurements
| Document | Word | 0.1.2 | 0.1.3 |
|---|---|---|---|
| Survey with its letters scrambled (2,048 paragraphs, 9 tables, 4,832 tracked changes as leandoc-inspect counts them) | 48 pages | 87 pages | 49 pages |
| Generated document of 10 saved pages, each 2 lines longer than a page, with one page break (tests/reader/make-saved-pages-docx.mjs) | 21 pages | 12 pages |
The Word figure is the owner's count in Word 365. LeanDoc's figures were
measured in the reader's browser (Chromium), not in the WebView2 window.
Page breaks are unchanged on 86 of 88 documents compared page by page with
0.1.2: the feature fixtures, 50 public test documents, and generated
documents of up to 4,000 table rows. In the other two, emptied paragraphs
with deleted marks are gone, and empty paragraphs with a 16 pt mark are
16 pt tall instead of 11 pt; their page counts are unchanged.
Known gaps
- On the scrambled survey, 8 of Word's 45 saved page starts begin a page in
the same paragraph in LeanDoc. Its scrambled letters are wider than the
original text, so the text runs on past the pages Word saved for the
original. - An empty paragraph is as tall as its font size, not a full line as in
Word. - A paragraph whose mark is deleted but which keeps text is not joined to
the paragraph after it. - Page starts that Word saved inside a table do not start a page.
- Documents of more than 60 pages that already carry page markers are shown
as before.
Installing
On Windows, run the installer from the extracted ZIP:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\installer\install.ps1 -OpenDefaultAppsSettingsInstalling over 0.1.2 keeps your settings and file associations.
Code signing policy
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
The Windows programs in this release are not signed.
Committers and reviewers: abooodbah.
Approvers: abooodbah. LeanDoc is a one-person
project.
Privacy policy: This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
LeanDoc's own code makes no network requests and never fetches anything a
document points to. The page is drawn by the system web runtime (the Microsoft Edge WebView2
Runtime on Windows, a Microsoft component), which may contact its vendor on
its own. The full policy, including how to uninstall, is in the
README.
LeanDoc v0.1.2
LeanDoc v0.1.2
LeanDoc 0.1.2 lays out pages the way Word does for papers in two columns. A
12-page IEEE-style paper written by pandoc showed as 18 pages in 0.1.1; it
now shows as 12 pages, as in Word, with each page starting close to where
Word's does.
Release assets
| Platform | Artifact |
|---|---|
| Windows 10 and 11, x64 | LeanDoc-v0.1.2-windows-x64.zip |
| Ubuntu 24.04 and compatible, x86-64 | LeanDoc-v0.1.2-linux-x86_64.deb |
| macOS 12 or later, Intel and Apple silicon | LeanDoc-v0.1.2-macos-universal-preview.zip |
Every artifact has an adjacent .sha256 sidecar. The macOS preview also has
a .metadata.json file that records how it was signed.
Fixes
- Opening long documents. Splitting a document into pages laid out the
whole rest of the document again at every page, in one step that froze the
window. A 62-page supplement with 52 tables took 21 seconds to open in
0.1.1. Each page now takes its text from a queue, so a split lays out about
one page, and splitting runs in short slices between which the window
responds. The supplement opens in 2.5 seconds, and no step holds the window
for more than 0.45 seconds (the renderer's own reading of the file). Page
breaks are the same as before this change on every document checked: 83
documents, from the author's own papers to generated tables of 4,000 rows. - Resizing the window. Fit and automatic zoom now follow a resize once it
settles for 150 ms, instead of laying out the whole document again on every
frame of a drag. - Columns. A two-column section that runs past a page fills the left
column and then the right, down to the bottom margin. A section that ends
on the page has its columns balanced, and the last section of the document
is not, as in Word. 0.1.1 balanced every section, so each page held about
half of what Word puts on it. - Paragraphs split between lines. A paragraph that reaches the bottom of
a page continues at the top of the next one instead of moving whole. Copy
all text still gives it as one line. - Footnotes. A footnote prints at the foot of the page that refers to it,
under a short rule. 0.1.1 put every footnote on the last page. - Text size and line spacing. Headings take their own style's size, not
the size of the linked "Heading 1 Char" style. Text in a paragraph that
names no style takes the Normal style's size. Single line spacing is Word's
single line rather than the bare font size, and a 9 pt abstract is spaced
as 9 pt, not as the 10 pt of the paragraph around it. - Hyphenation. Text is hyphenated only when the document turns automatic
hyphenation on. 0.1.1 hyphenated every document. - Section breaks. The empty paragraph that carries a continuous section
break takes no space, as in Word. - Tables. A table of automatic width is fitted to its content. A table's
outer borders are drawn on its edges and inside borders between its cells,
so a table ruled above, below, and under its header no longer shows a rule
under every row. Cells have no top or bottom padding unless the document
sets it. A table split across pages keeps its column widths. - Equations. A subscript or superscript made of several runs, such as
E with the subscript "sess", sets on one line instead of one letter per
line.
Measurements
| Document | Word | 0.1.1 | 0.1.2 |
|---|---|---|---|
| IEEE-style paper written by pandoc (734 paragraphs, 9 tables, 128 equations, 13 two-column sections) | 12 pages | 18 pages | 12 pages |
| Generated two-column test document (tests/reader/make-columns-docx.mjs) | 5 pages | 10 pages | 5 pages |
On the paper, every page of 0.1.2 starts within a fifth of a page of where
Word's starts; the first six are within a tenth. In the generated document
the long two-column section has 397 lines in Word and 397 in 0.1.2.
Time to open in page view, measured in the reader's browser on the same
machine (Chromium, not the WebView2 window, which can differ):
| Document | 0.1.1 | 0.1.2 | Longest step in 0.1.2 |
|---|---|---|---|
| 62-page landscape supplement, 52 tables, 1.2 MB | 21.4 s | 2.5 s | 0.45 s |
| Generated 4,000-row table | 27 s | 2.8 s | 0.9 s |
Known gaps
- Switching between page view and reading view reads the file again, which
takes about half a second on a 1.2 MB document, and reading view lays out
the whole document at once (about 0.4 seconds on the same file). - The renderer reads the file in one step that cannot be interrupted: 0.45
seconds on a 1.2 MB document, longer on larger ones. - Line breaks follow the browser's text layout, so a page can start a few
lines earlier or later than in Word, and the difference can add up over a
long document. - Single line spacing uses the line height of Times New Roman and Arial. A
document in Calibri is spaced about 5 percent tighter than Word. - In a two-column section, a footnote spans the page width; Word sets it in
the column of its reference. Footnote numbers show as list numbers. - Find does not match a phrase that runs across a paragraph split between
two pages. - Documents of more than 60 pages that already carry page markers are shown
as before.
Installing
On Windows, run the installer from the extracted ZIP:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\installer\install.ps1 -OpenDefaultAppsSettingsInstalling over 0.1.1 keeps your settings and file associations.
LeanDoc v0.1.1
LeanDoc v0.1.1
LeanDoc 0.1.1 lays out documents that carry no page breaks into pages. In
0.1.0 such a document showed as a single page as tall as all of its text.
Release assets
| Platform | Artifact |
|---|---|
| Windows 10 and 11, x64 | LeanDoc-v0.1.1-windows-x64.zip |
| Ubuntu 24.04 and compatible, x86-64 | LeanDoc-v0.1.1-linux-x86_64.deb |
| macOS 12 or later, Intel and Apple silicon | LeanDoc-v0.1.1-macos-universal-preview.zip |
Every artifact has an adjacent .sha256 sidecar. The macOS preview also has
a .metadata.json file that records how it was signed.
Fix
- Pages for documents without page breaks. LeanDoc's renderer starts a
page only where the document marks one: a manual page break, a section
break, or the page markers Word saves when it lays a document out. Files
written by python-docx, pandoc, and other generators have none of these, so
a whole paper appeared as one page. Page view now measures each page against
its own height and bottom margin and moves what does not fit to a new page
with the same size, margins, header, and footer. Tables split between rows,
a heading stays with the text that follows it, and notes go to the last page.
On a 938-paragraph research paper with no page markers, 0.1.0 showed one page
19,000 pixels tall; 0.1.1 shows 42 pages, each exactly the page height.
Known gaps
- A paragraph is moved to the next page whole rather than split between lines,
so a long paragraph can leave space at the bottom of the page before it. No
text is lost and no page overflows. Word splits such a paragraph by lines. - Documents of more than 60 pages that already carry page markers are shown as
before; the new layout applies to documents of up to 60 marked pages, which
covers every unmarked document. - The header on pages added by the new layout repeats the page's own header; a
different first-page header is not swapped for the default one.
Installing
On Windows, run the installer from the extracted ZIP:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\installer\install.ps1 -OpenDefaultAppsSettingsInstalling over 0.1.0 keeps your settings and file associations.
LeanDoc v0.1.0
LeanDoc v0.1.0
LeanDoc is a read-only desktop viewer for Word documents. It opens a .docx,
shows it as pages, never runs anything inside it, never fetches anything the
document points to, and has one button that hands the file to a real editor.
Release assets
| Platform | Artifact |
|---|---|
| Windows 10 and 11, x64 | LeanDoc-v0.1.0-windows-x64.zip |
| Ubuntu 24.04 and compatible, x86-64 | LeanDoc-v0.1.0-linux-x86_64.deb |
| macOS 12 or later, Intel and Apple silicon | LeanDoc-v0.1.0-macos-universal-preview.zip |
Every artifact has an adjacent .sha256 sidecar. The macOS preview also has
a .metadata.json file that records how it was signed.
What it does
- Opens
.docx,.dotx,.docm, and.dotmfiles. A portable C++ core
reads the file within fixed size limits, checks the ZIP and the XML, and
writes a new package with only allow-listed parts. The reader lays out that
package with docx-preview. It never receives the original file. - Shows page view by default, with a reading view one click away. Zoom runs
from 50 to 300 percent, with fit width. - Names what it does not display, and what it handled for you, in a quiet bar
above the page: tracked changes are shown as accepted, comments are hidden,
macros never run, and remote templates, images, and fields are never
fetched. - Offers a navigation pane from the headings, find, copy all text, and a
System, Light, and Dark theme cycle. The page itself stays on paper colours. - Shows a plain page for
.doc, encrypted documents,.rtf,.odt, and
files that are not Word documents, with the open-in-editor action. - "Open in ..." uses Microsoft Word, then LibreOffice, then the system default
app when it is not LeanDoc, then Word for the web in the browser. On macOS
Pages is checked after LibreOffice. Word for the web cannot receive the file,
so LeanDoc says it must be uploaded there.
Platform notes
Windows
The ZIP is portable. installer/install.ps1 adds an optional per-user
install with Start menu, Open With, and Default Apps entries; it never changes
your default app for you. The executable is unsigned, so Windows may report an
unknown publisher or show a Microsoft Defender SmartScreen warning. The
Microsoft Edge WebView2 Runtime is required. Documents open as tabs in one
window, and a later launch hands its files to that window.
Linux
The Debian package targets Ubuntu 24.04 and compatible x86-64 systems. The
package manager resolves GTK 4 and WebKitGTK 6.0. Documents open as tabs in
one window, and a later launch hands its files to that window.
macOS preview
The ZIP holds a universal build for Intel and Apple silicon. It is ad-hoc
signed and not notarized by Apple, because the project has no Developer ID
credentials yet. Gatekeeper may ask for an explicit approval in System
Settings > Privacy & Security. The SHA-256 sidecar shows that the bytes match
this release; it does not prove who published them. Documents use the
system's window tabs.
Known gaps
- Charts and SmartArt are not displayed. Most text boxes are not displayed;
older VML text boxes are, with tight line spacing. Most equations display;
the forms LeanDoc cannot draw show an "[Equation]" marker. The fidelity bar
names everything that is not displayed and offers the editor. .doc(Word 97 to 2003) files are not rendered. They get a fallback page.- Pages break only where the document saved a page break or has an explicit
break, so page numbers can differ from Word's. - No printing.
- No comments panel. Comments are hidden and counted.
- Links in headers, footers, footnotes, and endnotes are plain text.
- The macOS build is a preview and is not notarized.
- Colours that use a theme shade show the base theme colour.
- Page number fields do not restart at section breaks.
- Over long sessions on Linux, WebKit frees a closed document's memory only
at its next collection, so memory can stay higher for a while after closing
documents. LeanDoc publishes no long-session memory figure for 0.1.0. - Memory and start-up figures are not published yet. They will be, with the
machine, method, and document named, once the owner's measurement run exists.