Conversation
…anifest, placeholders, linter, formatter, utils, version_checker
- Add 5 tests for config serialization/deserialization edge cases - Add 11 tests for SemVer Display, parse edge cases, and ordering - All 239 tests passing
- Add tests for commands/config, commands/template, commands/fmt - Add tests for domain/project, compiler, templates, version_checker - All 295 tests passing, 81.05% line coverage
ci: increase test coverage
Introduce Error/Warning severity levels on LintFinding so texforge check fails only on real errors. All existing rules emit Error, preserving current behavior. - Add Severity enum and severity field to LintFinding - Rename LintError → LintFinding (no aliases left behind) - check exits non-zero on Error only; --deny-warnings promotes warnings - Console output grouped by severity (errors first) with counts - Tests for severity tagging and clean-project behavior
Single-pass tokenizer that produces Vec<Token> with Text, Command, Section, BeginMath/EndMath, BeginVerbatim/EndVerbatim, Comment, and BeginDocument/EndDocument variants. Handles all spec'd constructs: inline/display math ($, 196658, \[, \(), math environments), verbatim environments, comments (respecting \%), \url/\href, prose vs non-prose command arguments, sectioning commands, and preamble detection. Extracts collect_tex_files, strip_comment, extract_commands, and resolve_tex_path from linter into src/texutil.rs for shared reuse. 33 tests covering every named construct plus nested cases and malformed-input safety.
Add --reproducible flag and project.toml build.reproducible key that set SOURCE_DATE_EPOCH for the Tectonic invocation so identical source plus an identical Tectonic version yields an identical PDF. Without an explicit value a fixed default epoch (1700000000) is used; an explicit epoch can pin a release-specific timestamp. The CLI flag wins over project.toml. New files: src/compiler/mod.rs, src/commands/build.rs, src/domain/project.rs, src/cli/mod.rs, docs/building.md, docs/cli-reference.md, docs/configuration.md.
… URL The URL printed on an available update was texforge-<version>-<arch>, while the release workflow publishes texforge-v<version>-<target-triple>.tar.gz — missing the v, the full triple and the extension, so the link 404s. Same defect canopy had in its auto-update path, found the same day. Added a test that pins the asset name to the workflow's shape, since the two live in different repositories and nothing else would catch the drift.
Strip empty groups ({}) from source words so ligature workarounds
like workf{}lows match the rendered workflows in the PDF. Exclude
tabular column specs from the significant-word stream by consuming
them at the tokenizer level. Metadata checks are unchanged.
…with global scope
TE14: (and list/remove) now write to ~/.texforge/spell-words by default. selects the project whitelist. remains accepted as a redundant explicit default. The two flags are mutually exclusive via clap conflicts_with.
…stalls Implements download_and_install to fetch the release tarball, extract the binary, and atomically replace std::env::current_exe() (rename with copy fallback for cross-filesystem). Refuses to touch binaries installed via cargo install, printing the correct cargo command instead. Tests cover cargo root precedence, canonicalization failure handling, archive extraction, permission preservation, and temp-file cleanup.
The link read 'Visit texforge.univerlab.org' while pointing at univerlab.org/texforge. texforge.univerlab.org has no DNS record, so anyone typing what the link said would get nothing. It also promised full documentation, guides and examples; that page is the project page. Command-level documentation is in docs/, which the line now says.
…gration - Fix configuration.md to clarify language config is a fallback; document declarations win - Add 'Updating texforge' section to installation.md with guidance for cargo vs script installs - Update index.md to include spell-check in smart linting capabilities - Add one-sentence note in quickstart.md about spell-check detection
The new Updating section said a newer version prompts you 'during normal command execution'. check_for_updates() is called from exactly one place — commands/init.rs:31, inside init's execute() — so a reader building documents every day would never see it and would assume they were on the latest version.
…o PNG SVG→PDF conversion via svg2pdf keeps diagram art vector in the typeset document so labels stay sharp at any zoom. Falls back to PNG with a warning when conversion fails (e.g. deep nesting), preserving a successful build.
… last or a stale carry-forward
feature/document quality
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.
Promotes the current
developbranch tomain.