Skip to content

Releases: markbeep/vvzapi

v1.11.0

27 Feb 22:55
48e13ad

Choose a tag to compare

1.11.0 (2026-02-27)

Features

  • scraper: add "Last updated" indicator on unit page (d09b996)
  • scraper: add logic for handling flagged (outdated) pages to force targeted refreshes of scraped and cached pages (d09b996)
  • search: add llms.txt to help llms search for courses (8344c83)

Bug Fixes

  • search: fix 'cannonical' typo to 'canonical' (ff7cf35)
  • search: retain query when directly being redirected to a single unit after searching (2e16bd4)

Miscellaneous Chores

  • scraper: deprecate unit changes and stop tracking changes in preparation for removing it completely (d09b996)

Code Refactoring

  • scraper: refactor rescrape functionality to properly refresh a few (unit) details every now and then (d09b996)
  • scraper: use sqlite for html cache instead of default scrapy file-based httpcache (d09b996)

Continuous Integration

  • remove deprecated set-output from build action (e649347)
  • update dockerfiles to correctly execute alembic migrations (956f929)

v1.10.3

25 Feb 08:59
f7a8a4e

Choose a tag to compare

1.10.3 (2026-02-23)

Bug Fixes

  • search: fix browser history not working with fixi (af91496)
  • search: fix html not being correctly escaped for query on results (c48f033)

Miscellaneous Chores

  • search: add contact email and notice about not being affiliated with eth (d3660ea)

v1.10.2

21 Feb 21:11
1021655

Choose a tag to compare

1.10.2 (2026-02-21)

Bug Fixes

  • search: fix search query not transferring over when visiting a unit (a568734)

Performance Improvements

  • search: add fixi.js for lightweight DOM replacement when changing pages (b960a1d)
  • search: aggressively preload next page and search queries (b960a1d)
  • search: improve search query performance by splitting it into two concurrent queries (aaa40e0)

Miscellaneous Chores

  • api: add influxdb support for more detailed analytics (99417b9)
  • api: prometheus endpoint for gathering metrics (2b0543d)

v1.10.1

20 Feb 17:07

Choose a tag to compare

1.10.1 (2026-02-20)

Features

  • api: add OpenTelemetry for more detailed traces (ab5d27e)

Bug Fixes

  • api: remove static path from api docs (9bd84f2)
  • search: allow for utf8 letters in queries (de17fb3)

Performance Improvements

  • api: replace database acceses with async connections (99d59bc)
  • search: add async db access, resulting in over 4x req/s under heavy load (05eeee4)
  • search: add db indices to improve performance on title/credits queries (9d404d6)
  • search: add materialized tables for section paths and departments (05eeee4)

Miscellaneous Chores

  • search: simplify plausible condition for analytics (c39b422)

Tests

  • search: benchmark search queries with k6s (2535276)

v1.10.0

11 Feb 23:12
510d557

Choose a tag to compare

1.10.0 (2026-02-11)

Features

  • scraper: scrape course review ratings (16a66bf)
  • search: add coursereview operator to query by average rating (5151c8e)
  • search: allow querying by lecturer by clicking on name on unit page (1ea359b)

Bug Fixes

  • search: escape title/description in header (926800a)

Documentation

  • add terms of use for clarity (2f870f5)
  • added readme banner (e3b9aab)

Miscellaneous Chores

  • add k6 for benchmarking the website (aa4bafd)
  • search: update index page description (75e093b)

v1.9.0

07 Feb 12:27
d99fbe0

Choose a tag to compare

1.9.0 (2026-02-07)

Features

  • search: add compact mode for viewing search results (b87c342)
  • search: prefetch script on mousedown for anchor tags (a2112d5)

Bug Fixes

  • scraper: allow for lecturers to not have a title (119fbba)
  • search: allow searches to be scraped according to robots.txt (619df0d)
  • search: fix tabbing index to skip stacked results in search page (29d1bc2)

Miscellaneous Chores

  • search: adjust the title/description metadata tags to more updated keywords (915c510)
  • search: make AND/OR operators lower-case in query information (29d1bc2)
  • search: update favicon to blue lines (a4d4533)

Code Refactoring

  • search: switch to jinjax for templating and fix a few typing (38395ff)

Continuous Integration

  • fix missing ruff formatter (20194d3)

v1.8.0

05 Feb 10:57
3ad6aed

Choose a tag to compare

1.8.0 (2026-02-05)

Features

  • scraper: add lecturer title and department (30b591b)
  • search: add animated search placeholders on root page (a765f14)

Bug Fixes

  • fix ints being read out as strings from json array (ddfcacb)
  • search: add cannonical link to unit pages leading to newest page (9491f1a)

Performance Improvements

  • search: improve page load metrics (e5f1db7)

Miscellaneous Chores

  • add example commands for how to solely scrape lecturers (1b6242a)
  • install arm tools in devcontainer (30b591b)

Continuous Integration

  • enable type/tests to run on pull requests (99fde66)

v1.7.0

01 Feb 12:37
e01b01e

Choose a tag to compare

1.7.0 (2026-02-01)

Features

  • search: add notice when viewing out-of-date units (c7cfddc)
  • search: match department on short acronym/name (e2718d2)

Bug Fixes

  • search: add cache busting to site CSS to circumvent cloudflare (eb6df48)
  • search: add reference to favicon in header (d2ff3bb)
  • search: fix robots.txt not being returned (6c5fcf8)
  • vacuum db into separate file to prevent file corruption (9d1fc6e)

Dependencies

  • update dependencies for python 3.14 compatibility (f5bf30e)
  • update python to 3.14 (ab908d9)

Miscellaneous Chores

  • add GPLv3 license (ff6c5b1)
  • add jj to devcontainer (cc9483e)
  • add justfile for local development (625f501)
  • api: send more info to plausible (d810e07)
  • set type checking mode to more strict "all" (757bf6e)
  • test mise for local development (652525f)

Build System

  • reduce scraper docker image size by removing uv from final step (b688a53)

v1.6.0

09 Jan 21:57
9bd0f36

Choose a tag to compare

1.6.0 (2026-01-09)

Features

  • api: data dump endpoint to download database. Closes #27 (cb62114)
  • search: add link anchors to guide page (efa91cc)
  • search: make external links more clear with an icon (42bc492)
  • search: show last scraped_at time on unit details page (799c6f4)

Bug Fixes

  • search: fix offered in typo (a38350d)
  • search: fix order of operator parsing to correctly match >= and <= (4637d95)
  • search: fix wrongly overflowing text about filter negation on guide page (41db41e)

Reverts

  • "feat(search): show last scraped_at time on unit details page" (d59c37c)

Documentation

  • update readme with model name explanation and details on how to contribute (cb62114)

Continuous Integration

  • increase basedpyright typing from 'recommended' to 'strict' (af123b0)

v1.5.0

08 Jan 22:01
76df434

Choose a tag to compare

1.5.0 (2026-01-08)

Features

  • search: add query time to results (c9378cf)
  • search: OR operator and parentheses for more complex queries (45227ea)
  • search: remove awkward '!:' operator and instead use prefixed minus operator for negation (3c76208)

Bug Fixes

  • api: fix wrong path in guide for first example (80d6452)
  • search: fix course numbers not being matched by regex (3c76208)
  • search: fix query from becoming infinitely big and fix invalid offered in results page filters (231d929)

Miscellaneous Chores

  • add back warnings for basedpyright (05906df)