Skip to content

Add PyPI-backed watcher version dropdowns and drop unused channel field - #158

Merged
wasimxyz merged 3 commits into
stagingfrom
feat/watcher-version-dropdowns
Jul 17, 2026
Merged

Add PyPI-backed watcher version dropdowns and drop unused channel field#158
wasimxyz merged 3 commits into
stagingfrom
feat/watcher-version-dropdowns

Conversation

@wasimxyz

@wasimxyz wasimxyz commented Jul 17, 2026

Copy link
Copy Markdown
Member

Summary

  • Replace free-text latest/min-supported version inputs on /settings/watchers with searchable PyPI-backed comboboxes (free-text fallback when PyPI is unreachable)
  • Remove the unused cosmetic channel field from the release config UI, API, OpenAPI schema, DB (migration 0033), and watcher client
  • Keep the currently saved version selectable even when it is not on PyPI (e.g. test pins like 9.9.9)

Test plan

  • Apply migration (npm run db:migrate or db:push in web/) and open /settings/watchers as an admin
  • Confirm Latest version and Minimum supported version show PyPI releases newest-first, with a None option
  • Save a version from the dropdown and verify GET /api/v1/watchers/:id/update-check returns it without a channel field
  • With a non-PyPI saved value (e.g. 9.9.9), confirm it appears as (current) in the combobox
  • Run make check-all and relevant watcher/web tests

Made with Cursor

Let admins pick latest/min-supported versions from published releases instead of free-text, and remove the cosmetic release channel from the API, DB, and watcher.

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
data-hub Ready Ready Preview, Comment Jul 17, 2026 9:12pm

Request Review

@wasimxyz

Copy link
Copy Markdown
Member Author

All test-plan items passed.

Step Result
Apply migration Applied DROP COLUMN channel on data-hub-local (drizzle migrate journal was empty locally, so ran SQL directly). Column gone.
Open /settings/watchers as admin Signed in as dev@local, page loaded with two comboboxes; no channel field.
PyPI dropdowns + None Latest: None — disable self-updates, then 0.5.20.1.0 newest-first. Min: None — no version floor, same release list.
Save + update-check Saved 0.5.2; toast “Watcher release saved”. GET .../update-check{"latest_version":"0.5.2","min_supported_version":"0.1.0","mandatory":false} — no channel.
Non-PyPI (current) With saved 9.9.9, Latest dropdown showed 9.9.9 (current) above PyPI releases.
Checks / tests make check-all passed; watcher unit tests 76 passed; web integration watcher-release + watchers 49 passed.

Local DB latest_version is now 0.5.2 from the UI save. Dev server was restarted afterward.

@wasimxyz wasimxyz changed the title Add PyPI-backed watcher version dropdowns and drop unused channel Add PyPI-backed watcher version dropdowns and drop unused channel field Jul 17, 2026
Shorten the PyPI revalidate window so fresh publishes show up sooner, extract VersionField, share VERSION_REGEX, and cover fetchWatcherVersions with unit tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@wasimxyz
wasimxyz merged commit 99ec90a into staging Jul 17, 2026
5 of 6 checks passed
@wasimxyz
wasimxyz deleted the feat/watcher-version-dropdowns branch July 17, 2026 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant