Skip to content

v1.2.0

Choose a tag to compare

@FilipNowakowicz FilipNowakowicz released this 21 Jul 00:15
· 84 commits to main since this release
798de28

What's new

Added

  • Preferred time-of-day window: a dual-handle time slider in Settings (and earliest_slot_hour / latest_slot_hour in config.json) so only slots within your chosen hours count as matches. A slot outside the window is ignored entirely — no push, no dashboard entry.
  • Experimental reschedule automation (opt-in, off by default, under Settings → Automation) — extends the existing reschedule assist past the date picker:
    • Auto-select the matching slot (auto_select_slot): after opening the reschedule date picker for your booking, selects the exact matching slot (right exam type + time) and advances to the summary/review screen.
    • Auto-confirm the reservation change (auto_confirm_reschedule): goes one step further and clicks the final confirm — actually submitting the reservation change — but only after re-verifying the summary screen matches the intended slot. Requires auto-select, is gated behind a browser confirm dialog, and is UNVERIFIED against the live site (written from screenshots). Read docs/ADVANCED.md and confirm auto-select works reliably before ever enabling it.
    • Supporting safety around the above: automation output is logged to reschedule.log, critical outcomes send a phone push, a 15-minute cooldown blocks repeat confirm attempts, and current_slot_date is auto-updated after a verified reschedule.

Changed

  • Urgency is now exclusive: a found slot only counts as urgent (red dashboard / phone push / auto-open browser) if it's on a strictly earlier date than your booked slot — a different time on the same day no longer triggers.
  • The WORD exam-center dropdown now closes after each selection instead of staying open.
  • Internal cleanup: split app.py's HTML/JS into templates.py; deduplicated repeated plumbing (browser poll loops, the empty-status shape, browser-trigger outcome constants, the session-expired handler); cached the static exam-center list; the dashboard page is assembled once at startup.

Documentation

  • Documented the session-expiry countdown and three previously-undocumented config keys (poll_interval_seconds, earliest_slot_hour / latest_slot_hour); fixed the stale "checks every 60 seconds" note now that the interval is user-configurable (15–1800s).
  • Trimmed changelog-style narration from code comments and CLAUDE.md, keeping rationale and live-verification notes.