Skip to content

release: texforge v0.8.0 - #23

Merged
JheisonMB merged 64 commits into
mainfrom
develop
Aug 13, 2026
Merged

release: texforge v0.8.0#23
JheisonMB merged 64 commits into
mainfrom
develop

Conversation

@JheisonMB

Copy link
Copy Markdown
Collaborator

Promotes the current develop branch to main.

JheisonMB and others added 30 commits July 15, 2026 11:56
…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
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.
JheisonMB and others added 26 commits August 11, 2026 18:54
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.
@JheisonMB JheisonMB added the target:main Targets the main branch label Aug 13, 2026
@JheisonMB JheisonMB changed the title release: promote develop to main release: texforge v0.8.0 Aug 13, 2026
@JheisonMB
JheisonMB merged commit 67ad846 into main Aug 13, 2026
4 checks passed
@JheisonMB
JheisonMB deployed to production August 13, 2026 23:17 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

target:main Targets the main branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant