Repository navigation
Bump version to 1.7.0: envelope templates and mixed-batch carrier/service - #102
Merged
Merged
Conversation
…vice Envelope printing: six envelope-size label templates (DL, C5, C4, #10, 6×9, 9×12) added to the existing die-cut and plain-paper sheet templates. Each is a 1×1 grid where the page matches the envelope, with 5 mm edge margins. All calibration, printer margin, and preview infrastructure works unchanged. Mixed carrier/service batches: the xlsx batch template now includes a carrier dropdown and a visible Service Reference sheet listing every service code per carrier. Per-row carrier and service values are validated at import — carrier without service (or vice versa) is flagged, and unknown codes are caught against the live catalogue before a batch is created. Version bumped to 1.7.0 across config.py, AppxManifest.xml, all download pages, and release notes added. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The four new carrier/service validation error keys were added to en.json but not propagated to the other 49 locale files, failing the i18n key parity test in CI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The test seeds trackers with last_checked_at in September 2026 and the problem window is 30 days. DashboardView.refresh() calls load_summary() with now=datetime.now(), so after October 10 the seeded problem tracker ages out and the assertion fails. Pin now=NOW (Sept 11, 2026) in the view tests so they stay deterministic. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PySide6/Qt writes cleanup messages to stderr at process exit (e.g. "QObject: shared QObject was deleted directly"). PowerShell on windows-latest converts native-command stderr into a non-zero exit, causing the step to report failure despite 1199/1199 tests passing. Using bash for the test step avoids this; the actual pytest exit code is what matters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PySide6/Qt can segfault during process-exit cleanup on macOS CI runners after every test has passed, replacing pytest's exit 0 with exit 139. The junitxml file is flushed before cleanup runs, so it captures the real result. The step now runs pytest with || true and checks the XML for actual failures — an incomplete XML (mid-run crash) fails the parse. Also add test-results.xml to .gitignore. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
carrierandservicecolumns in the xlsx template let one batch ship via different carriers. The downloaded template now includes a carrier dropdown and a visible Service Reference sheet.Test plan
pytest tests/test_label_sheet.py— 35 tests including 16 new envelope testspytest tests/test_batches.py— 22 tests including 8 new carrier/service validation testspytest tests/test_batch_customs.py tests/test_batch_rate_preview.py— 62 tests, no regressions🤖 Generated with Claude Code