Skip to content

Releases: dumixthestpd/sustech_survival

2026.10.17 — correct package authorship

Choose a tag to compare

@dumixthestpd dumixthestpd released this 17 Oct 05:37

Metadata-only release. 2026.10.16 shipped with the wrong author in its package metadata (an agent-side identity override); PyPI metadata is immutable, so this version republishes the same code with Author-email: dumixthestpd <dumixthestpd@hotmail.com>. .mailmap now folds the tool-default identities into that one name. No code changes — see 2026.10.16 for the changelog.

2026.10.16 — first PyPI release

Choose a tag to compare

@dumixthestpd dumixthestpd released this 17 Oct 05:30

First PyPI release. Published from main at the merge of #30 / #31 / #32.

Added

  • bb.query.walk_contents(..., unavailable=...) collects metadata for content excluded from discovery; discover_pages() reports the excluded count on stderr.
  • lib.search.LibraryError — authentication, browser and Primo read failures are now errors instead of an empty result list.
  • sso/_tls.LegacyTLSAdapter — the CAS/Primo legacy-TLS policy applied to direct and proxied connection pools.
  • pms: receipts carry job_id, status, observed_job_ids, response format and verification URL; uploaded=None means "unknown, check the queue".

Changed

  • Breaking (library): lib.search.search() / detail() raise LibraryError instead of returning [] / None. sustech lib search exits nonzero on failure and prints no results (exit 0) only for a confirmed empty result window.
  • Breaking (library): bb.query.discover_pages() / walk_contents() propagate read failures instead of returning an empty listing; partial results are never cached.
  • Breaking (wire): PMS duplex codes now follow the queue labels — long/双面长边 sends dwDuplex=2, short/双面短边 sends 3 (previously reversed). Numeric inputs keep their wire value.
  • pms.PrintJob.is_duplex is Optional[bool]; None means the queue flags are missing or contradictory. New duplex_flag / duplex_edge fields preserve the server tokens.
  • Primo scope values and route updated to the current discovery endpoints (MyInst_and_CI / CentralIndex / MyInstitution, /discovery/search).
  • CAS failures now report the stage and host, redact tickets/cookies, and stop before submitting credentials when an interactive challenge appears.

Fixed

  • PMS login had no working ticket/session flow, and a failed ensure() was ignored; uploads now use the real queue page, send one POST, and reconcile against a pre-upload queue snapshot instead of trusting a redirect body.
  • Library Primo login through an environment proxy failed with UNSAFE_LEGACY_RENEGOTIATION_DISABLED and surfaced as a successful empty search.
  • Blackboard discovery read content explicitly marked availability.available = "No", duplicated the root listing, ignored pagination, and cached failed reads as empty.
  • Primo detail metadata was contaminated by UI headings and recommendations; keyed prm-service-details fields are parsed instead.

Install

pip install sustech_survival
pip install "sustech_survival[webui]"   # + web UI
pip install "sustech_survival[all]"     # everything

2026.8.27 — CLI import bug fix + docs CI

Choose a tag to compare

@dumixthestpd dumixthestpd released this 26 Aug 23:01

Fixed

  • cli/main.py — level-1 sibling-relative imports (from .X) failed at runtime because main.py lives in sustech_survival.cli, not sustech_survival.cli.X. Restores transit / faculty / booking / pms / lib-booking / selectcourse / papers commands in the unified CLI (silently broken since 2026.8.25 webui refactor). Thanks @Xiao-La for PR #7.
  • docs.yml — switched from mkdocs gh-deploy --force to actions/upload-pages-artifact + actions/deploy-pages@v4 (the official GitHub Pages flow). Fixes 7 failing Docs CI runs on main caused by github-actions[bot] lacking push permission under the official Pages flow.

Added

  • README.md / README_cn.md — Related projects entry for wormforce/sustech-cli (TypeScript behavioral rewrite; this repo remains the Python behavioral reference) + surface comparison covering CLI runtime, OS keychain, machine-readable contracts, Web UI, off-campus publisher modules, sustech_quickread companion, and license differences.
  • .mailmap — unifies Xiao-La's two commit identities (xiao-la <836772730@qq.com> + Joyslog <47178126+Xiao-La@users.noreply.github.com>) into one canonical row on the contributors graph.

Tests

9 new tests (CliRunner + monkeypatch, no network). Full suite passes on macOS and Ubuntu CI.