Skip to content

Releases: alazarteka/klms

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 09 Oct 07:48
v0.2.4
99528f7

klms 0.2.4

Correctness

  • Courses that use KLMS's paged week layout now show every week. That layout
    renders only the current weeks on the course page and hides earlier weeks
    behind a week picker, so activities list, files list, assignments,
    quizzes, videos, boards and library sync previously missed earlier
    weeks, and --week N for a past week returned nothing. When the picker offers
    "All", klms now also reads that view and merges its activities without
    duplicates. Courses in other layouts are unchanged and make no extra request.

No command grammar, JSON envelope version, dependency, or SQLite migration
changes.

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 07 Oct 06:19
v0.2.3
11bc1c5

klms 0.2.3

Correctness

  • Korean KLMS pages no longer fail with UPSTREAM_SHAPE_CHANGED when listing
    assignments or quizzes, or when reading grade and attendance reports. Report
    and coursework headers, week labels, empty-page messages, and absolute or
    relative dates are recognized in Korean as well as English. Compact grade
    reports without the Percentage and Contribution columns also work.
  • Calendar events use the card heading as their title instead of the submission
    button text, and read structural timestamps first, falling back to English or
    Korean date text in Asia/Seoul. Deadlines that were previously left out of
    klms today and klms upcoming now appear. Resource URLs keep their numeric
    ID and drop action parameters. A visible date that cannot be parsed remains an
    explicit error rather than being silently dropped.
  • Scripts, templates, and hidden text are ignored when checking for empty
    pages, and grade and attendance reports require enough matching columns to
    avoid picking an unrelated table. Thanks to @AidenGeunGeun for the fix.

Other text locales are not verified; an unrecognized dated event fails agenda
generation rather than being omitted.

No command grammar, JSON envelope version, dependency, or SQLite migration
changes.

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 01 Oct 08:02
v0.2.2
80bf81d

klms 0.2.2

Correctness

  • klms today and klms upcoming no longer fail with UPSTREAM_SHAPE_CHANGED
    when a calendar event has no date at all, such as a quiz with no close date.
    Undated events are skipped and a warning points to klms calendar list. An
    event whose time is present but unreadable is still an error, because that
    suggests the upstream markup changed. Thanks to @Jeon0001 for the fix.

Security

  • Update rustls to 0.23.45 for GHSA-2mjx-qc3c-rqvc (RUSTSEC-2026-0285), which
    accepted TLS 1.3 handshake messages at the wrong encryption level. The
    handshake transcript stays authenticated, so this is a defense-in-depth fix.
    The baseline cargo-vet exemption moves to the new version; it is recorded as
    an unaudited carry-over in supply-chain/BASELINE.md.

Development checks

  • Update the pinned astral-sh/setup-uv action to v10.2.0 (full commit SHA).

No command grammar, JSON envelope version, or SQLite migration changes.

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 03:15
ec69052

klms 0.2.1

Install and update

  • Add klms update, the upgrade alias, and update --check. Updates use the
    official stable release, verify its checksum and binary version, and update
    the invoked executable without requiring a KLMS session or downgrading.
  • Use one candidate installer for bootstrap, source installs, and updates.
    Skill-path conflicts preserve the previous executable; ordinary binary
    replacement failures restore the previous skill.
  • Test both release targets and smoke-test packaged archives and installation
    before publication. Release tags must match the binary version.

Users on 0.2.0 or earlier need to rerun the standalone installer once to gain
the update command.

Correctness

  • Reject incomplete HTTP byte ranges in direct downloads before publishing a file.

  • Preserve supported Moodle/ISO dates and space-separated timestamps; reject
    malformed date suffixes instead of silently discarding times.

  • Reject typed detail redirects that change the requested resource identity.

  • Return successful JSON help and version results rather than usage errors.

  • Canonicalize library reference aliases before storing edits and retractions.

  • Retain fresh file validators even when downloaded bytes are unchanged, avoiding
    redundant downloads without duplicating blobs or reporting a false byte change.

  • Keep bounded object-store reads inside the corpus module and preserve UTF-8
    text previews when their byte bound falls inside a character.

  • Clarify that absence is recorded per complete collection observation, even
    when another part of a sync fails.

  • Bound SSO responses and curation file/stdin reads while streaming.

  • Reject malformed resource IDs and ambiguous table headers instead of returning
    unusable references or combining unrelated title/link columns.

  • Reject curation on immutable blob references before writing and report malformed
    stored JSON as library corruption instead of empty data.

  • Make file-validation traversal deterministic and simplify command coordination,
    library query rows, and skill installation internals without changing the public
    command grammar or JSON fields.

Development checks

  • Replace source-spelling supply-chain assertions with parsed workflow/policy
    checks and behavioral fixtures, including real bootstrap rejection of untrusted
    archives. The YAML parser and CI runner are pinned development tools.
  • Run shared fixture self-tests once, keep private updater tests beside their
    implementation, and consolidate archive tests across both supported formats.

No Rust dependency updates, trust-exemption changes, JSON envelope version
change, or SQLite migration are required.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 23:41

klms 0.2.0

This release adds a private, versioned course library to klms. It keeps a
local history of selected KLMS data so that notices, files, and local notes can
be searched and inspected without repeatedly fetching the same pages.

Highlights

  • klms library sync records courses, resources, notices, links, and optional
    downloaded file bytes. Subsequent commands can search the local collection,
    inspect changes and history, and show stable references.
  • Downloaded files are deduplicated by SHA-256. library content provides a
    bounded preview, while library export writes the complete verified bytes
    without overwriting an existing file.
  • Local summaries, notes, tags, and typed relationships are revisioned rather
    than updated in place. Retraction preserves their history.
  • Notice extraction now records the post itself instead of surrounding page
    navigation and counters. Notice text and attachment recovery are presented
    separately when file bytes have not been downloaded.
  • klms spec exposes the executable command grammar, and klms completions
    generates scripts for Bash, Elvish, Fish, PowerShell, and Zsh.
  • klms skill install installs the matching companion Agent Skill embedded in
    the binary.

Operational behavior

Library status distinguishes storage readiness from sync outcome and scope.
Partial, truncated, and unfinished attempts are reported explicitly; an
unfinished record does not claim that its original process is still running.
File downloads remain opt-in, and local-library operations never write to
KLMS or follow authenticated third-party links.

The machine-readable envelope is schema version 4. The local SQLite schema is
version 1 and remains experimental during the 0.x series.

Install

Prebuilt archives are available for Apple Silicon macOS and x86-64 Linux. Each
archive has a SHA-256 sidecar. The verified installer downloads the newest
release and installs both the binary and its companion skill:

curl --proto '=https' --tlsv1.2 -fsSLo install-klms.sh \
  https://raw.githubusercontent.com/alazarteka/klms/main/scripts/install.sh
less install-klms.sh
bash install-klms.sh

Building from source requires Rust 1.86 or newer.

Known limitation

klms videos currently exposes a Panopto LTI launcher, not the recordings
behind it. Recording discovery is tracked in
issue #6.

v0.1.0

Choose a tag to compare

@alazarteka alazarteka released this 01 Sep 15:01