Skip to content

Take odrcore 6.13.0 - #645

Merged
andiwand merged 1 commit into
mainfrom
take-odrcore-6.13.0
Sep 5, 2026
Merged

Take odrcore 6.13.0#645
andiwand merged 1 commit into
mainfrom
take-odrcore-6.13.0

Conversation

@andiwand

@andiwand andiwand commented Sep 4, 2026

Copy link
Copy Markdown
Member

Two engine releases in one: 6.12.0 and 6.13.0.

What comes for free

Almost all of it. The format table is unchanged apart from html (below), so SupportedDocumentTypes, the manifest's generated filters and the store copy all stay as they are.

  • ODF drawings and presentations. Charts are drawn from the chart part instead of the flat replacement image beside it; custom shapes from their draw:enhanced-geometry instead of their bounding box; draw:path, polygon, polyline, regular-polygon, connector, ellipse, measure and caption at all; and every shape where its draw:transform puts it.
  • StarView metafiles - the format a lot of ODF charts and clip art are stored as - gained bitmaps, gradients, hatches, transparency, clipping, curves, the remaining primitives, correct map modes and text in the charset the file names. They used to come out as empty frames or a row of floating numbers.
  • Word: a wp:anchor drawing floats at its offset with its wrap, table borders are drawn and no longer four times too thick, and a cell's content starts at the top.
  • PDF: gs applies the /ExtGState stroke parameters, so a producer that only sets line width there - Canva - no longer draws everything at width 1.
  • Spreadsheets: about half the decode memory, and two files that could not open before (an ods repeat count asking for three billion elements, an xlsx mergeCell naming 17 billion positions).
  • A manual page break starts a new page box and prints as break-before:page.
  • Two entries of the same zip can be read at once, so the WebView's image requests no longer serialise behind one lock.

What the app had to answer for

A decrypted document is read-only (6.13.0, breaking). Every save overload now throws for a document decrypted from a password-protected package - it used to write the content back out with the protection stripped, silently. The app already asks document.isEditable && document.isSavable before holding one open, so the Edit button disappears on its own; testDecryptedDocumentIsNotEditable pins it.

html is named but not decoded (6.12.0). FileType.HYPERTEXT_MARKUP_LANGUAGE is classification only - no open, no translate_html, never detected from bytes. It is not claimed anywhere (CORE_FILE_TYPES filters on translateHtml), but declaredType started answering it for a .html, and nameOutranksText says a name outranks text when the core cannot detect the type from content - so every .html, read as text and shown correctly, was reopened as html, failed, and fell back. declaredType now answers only for a type the core has a decoder for.

render-sweep was missing md and markdown from its claimed extensions - stale since #636. The list now matches the manifest exactly.

The one new API, and why it is not used

DocumentFile.thumbnail() (6.13.0) hands back the preview a package carries. The obvious home is the recent documents list. It is not worth it: on the core's own corpus, 27 of 33 ODF files carry a thumbnail and 0 of 33 OOXML files do - Word, Excel and PowerPoint only write one when the author ticks "Save Thumbnail". A recent list with a picture on the .odt rows and nothing on the .docx ones reads as broken. Document.saveToMemory() (6.12.0) is the other addition; the save path writes a file and copies it into the SAF uri, and a byte[] of a whole document is a worse trade on a phone.

Verified

  • spotlessCheck, lintProDebug, testProDebugUnitTest
  • connectedProDebugAndroidTest on a Pixel 6 Pro AVD: 89/89, including the format tests that hold SupportedDocumentTypes against the manifest
  • render-sweep over the corpus' drawings and presentations: 10/10 ok, no crash and no failed render. The .odg of dimension drawings now shows its measure lines.

🤖 Generated with Claude Code

Two releases in one: 6.12.0 and 6.13.0. Almost all of it arrives without a line
of app code - the ODF drawing and chart work, the docx anchors and table
borders, the metafile decoder, the PDF stroke state, and the spreadsheet memory
and repeat-count fixes. CHANGELOG says what a user gets.

Three things the app had to answer for:

A document only held decrypted is no longer savable, so `host` closes it and no
Edit button appears over it. That already works - `isEditable && isSavable` is
what decides - and `testDecryptedDocumentIsNotEditable` holds it, because
saving one used to write the content back out with its protection stripped.

6.12.0 named html in the format table without giving it a decoder, so
`declaredType` now answers only for a type the core can open. Otherwise every
`.html` - read as text, correctly - was reopened as html, failed, and fell back.

render-sweep's list of claimed extensions was missing `md` and `markdown`,
which the manifest has had since 6.11.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T9iat7kbbySjhjy2agH2w1
@andiwand
andiwand merged commit ace5422 into main Sep 5, 2026
7 checks passed
@andiwand
andiwand deleted the take-odrcore-6.13.0 branch September 5, 2026 07:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant