feat: accent-aware spell check, outline-driven page map, template refresh and uninstall (0.9.0) - #24
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Six specs through the loop (qwen3.7-plus implementer, claude-sonnet-5 reviewer), plus three fixes found by using the result.
What the loop delivered
f1b1bf5spell — LaTeX accent macros are resolved before word splitting.violaci\'onwas being read asviolaci+on; on a real thesis document that was 154 of 200 warnings.fd08c09install — the skills wizard gets a terminal undercurl … | sh, and degrades cleanly where there is none. The guard opens/dev/ttyrather than testing-t 0, because under a pipe stdin is not a terminal while/dev/ttystill is.c579ea8templates — a TTL-based refresh with offline fallback, plustexforge template refresh. Downloaded templates used to be cached forever with a version field nobody read.da4cca4uninstall —texforge uninstall, plan first and ask, itemised with sizes. The personal spell dictionary is treated as the user's own writing: preserved unless--include-spell-wordsis passed.b3f0fd2+df6df8epdf pages — the page → section map now comes from the PDF outline instead of matching heading text. The outline carries the section number in its destination name (subsection.2.4), so nothing is inferred from the title.Three fixes from actually running it
273a2aa— pre-existing clippy errors from Rust 1.98's newchunks_exact_to_as_chunkslint, unrelated to any spec but fatal to a-D warningsgate. Fixed separately, which is where they belonged.4b60835— the accent fix left one case open:impor\-tanciastill split, because\-is a discretionary hyphen, not an accent.\-and\/are now transparent — no character, and no word break either. Measured on the same document: 53 → 51 warnings, the last two fragments gone.6baeaf2— the outline path attributed each page to the last section that opened it instead of the first, contradicting the rule4947308established. Checked against the PDF's own table of contents: page 2 opens sections 1, 1.1, 1.2, 2, 2.1, 2.2 and 2.3, and the answer is 1, not 2.3. Four of five multi-section pages were wrong. A test in the previous commit asserted the wrong behaviour — it described what the code did rather than what the command promises — and was corrected with the measured ground truth.Measured end to end
Against a real thesis document (
clasificacion-exoplanetas):Against the committed capabilities PDF, every multi-section page now matches the document's own table of contents.
Gate green:
cargo fmt --all,cargo clippy --all-targets -- -D warnings, 732 tests.