Skip to content

fix(ods): the generator is hucre, not the name the project used to have - #560

Merged
productdevbook merged 1 commit into
mainfrom
fix/ods-generator-name
Aug 13, 2026
Merged

fix(ods): the generator is hucre, not the name the project used to have#560
productdevbook merged 1 commit into
mainfrom
fix/ods-generator-name

Conversation

@productdevbook

Copy link
Copy Markdown
Owner

Every ODS hucre has ever written says this in meta.xml:

<meta:generator>defter</meta:generator>

defter is what the project was called before it was renamed. The XLSX
writer has said hucre in docProps/app.xml's <Application> the whole
time, so the two writers disagreed about what produced the file, and one
of them was naming software that does not exist.

ODF §4.3.2.1 has meta:generator name the producing application —
LibreOffice records it on open, and it is the first thing asked for when a
document is reported as malformed. Anyone tracing a bad ODS back to its
producer had a name with no project behind it.

Why it lasted this long

The test that pinned it pinned it by name:

it("writes Application: defter in meta.xml", )
  expect(getElementText(generator)).toBe("defter")

A rename sweep over the source finds defter in a string literal and
stops, because a test asserts it — the test looks like the requirement
rather than a copy of it. Renaming the test as well is the point: it now
says "names itself as the generator", which stays true through the next
rename.

The surviving Defters in src/errors.ts are the deliberate deprecated
DefterError alias and stay.

pnpm test green — 10,583 tests, 234 files. The ODS output still
validates against the OASIS grammar.

🤖 Generated with Claude Code

Every ODS hucre writes has been stamping

    <meta:generator>defter</meta:generator>

— the project's former name — since the ODS writer was written. The XLSX
writer has said `hucre` in `docProps/app.xml`'s `<Application>` all along,
so the two disagreed about what produced the file.

ODF §4.3.2.1 has `meta:generator` name the producing application. A
consumer that keys off it (LibreOffice records it, and support threads
routinely ask for it) was being told about software that does not exist.

The test that pinned the old string pinned it by name — "writes
Application: defter" — which is how it survived the rename.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@productdevbook
productdevbook merged commit 585480f into main Aug 13, 2026
6 checks passed
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