Releases: torlyai/Schengen-master
v1.3.4 — More reliable Premium auto-booking + selector-miss diagnostics
What's new
-
Adaptive confirm wait (Premium auto-booking) — the booking driver now polls for the confirm button for up to 5.5s instead of waiting a fixed 500ms. Slow networks and multi-step confirmation forms no longer fail the booking.
-
Selector-miss diagnostics — when the driver misses (slot not matched, confirm button not found, or confirmation page not detected), the extension records a structural DOM outline into its diagnostic ring buffer. Privacy-preserving by design: text content is never recorded — only structural counts, scrubbed class tokens, and digit-masked URL paths. This finally gives us real-world selector evidence to harden future builds against TLScontact UI changes.
Upgrade
Most installs will receive v1.3.4 automatically over the next few hours via Chrome Web Store auto-update. To force-update now: open chrome://extensions, enable Developer mode, and click "Update".
v1.3.3 — Reliable Premium auto-booking → capture
Premium-tier reliability release. Fixes the auto-booking → £19 capture chain so a confirmed TLScontact booking is actually captured, with correct appointment times.
What's fixed
- Capture handoff — after the booking is confirmed on TLS, the extension now verifies the confirmation from the service worker and drives the capture directly, instead of relying solely on a page reload. This was the main reason confirmed bookings could complete without being captured.
- No more silent stalls — every auto-booking failure path now ends in a clear "booking failed" state immediately, instead of a 60-second frozen "Booking in progress…".
- Correct appointment times — slot times read from the TLS page are now converted from the venue's local timezone to UTC correctly (previously non-UK times — and UK times during BST — were stored an hour or two off).
- Smarter confirm-button detection — no longer mis-clicks navigation links like "Booking history", "My bookings" or "Cancel booking".
- Cleaner licence handling — a cancelled Premium licence now notifies you and tidies up booking state, and won't interrupt a booking that's mid-capture.
Free tier
Unchanged. Still 100% local — no network calls outside the TLS tab + optional Telegram, never reads your credentials.
Under the hood
New automated test harness covering the booking state machine (26 tests across 5 suites). No new permissions; no change to what Premium sends to torly.ai.
v1.3.1 — Auto-booking lands + liveness ping
What's new
Auto-booking implementation (PR #1). driveBookingFlow() is no longer a stub — Premium users now get automated slot click + confirm via chrome.scripting.executeScript. Includes the long-awaited UTC→venue-local time fix (Europe/London, Europe/Paris, Europe/Rome, …) so slot times actually match the DOM.
CWS listing optimizations.
- i18n setup via
__MSG_*__placeholders +default_locale: "en". - Onboarding restructured into a multi-step wizard (welcome step 2 — release windows + Telegram test).
- 5-star review prompt once a slot has been found.
Liveness ping (Patch B). New VM_LICENSE_STATUS daily alarm POSTs to /license/status so the backend finally sees who's polling, what version they're on, and which browser. Fixes the gap where all installs reported extension_version=NULL despite PRD 17 promising the data flow. Premium-only by design (Free never reaches torly.ai).
Tier 2 opt-in diagnostic report (Settings → Build report). User-initiated only, with privacy-whitelist redaction and mailto: hybrid transport. The full JSON is auto-copied to clipboard; the summary lands in the email body. No DOM, no credentials, no PII.
Caveats
driveBookingFlow() is functional but fragile — see CLAUDE.md Known Open Items for the 6 documented limitations (loose confirm-button match, hardcoded 500ms wait, missing Italian/Polish/Russian button text, no extension-side click idempotency, no click-success verification).
Install
Auto-update via Chrome rolls out from CWS over the next 24–48h. New installs grab the latest from the Chrome Web Store.
v1.3.0 — CWS listing optimizations
Visa Master v1.3.0
Submitted to Chrome Web Store — pending review. Free-tier trust boundary unchanged. No new permissions. No backend deploy required.
What's new
🌐 Localized Chrome Web Store listing
The extension name and description now render in the user's browser language on the Chrome Web Store:
- English: Visa Master — Schengen Visa Slot Watcher (TLScontact: France, Italy, Spain)
- 中文: Visa Master — 申根签证预约助手 (法国, 意大利, 西班牙, TLScontact)
Chinese-language users searching for "申根签证" or "法签预约" can now discover Visa Master on the store.
⭐ Review prompt after value delivered
A small "Rate us" card appears in the popup only after the extension has successfully found a visa slot for you. Both "Rate 5 Stars" and "Dismiss" permanently hide the card — you'll never be asked again.
- Appears in Monitoring and Paused states only (never during errors or attention-needed states)
- Opens the CWS review page via
chrome.tabs.create(reliable in popup context) - Zero network calls — fully local
🧭 Guided onboarding (Welcome page step 2)
New users now configure two key settings during onboarding, before monitoring starts:
- Release windows — customize the time slots when Visa Master polls more frequently
- Telegram alerts — set up bot token + chat ID with a mandatory test before proceeding
The "Start watching" button is disabled until the Telegram test succeeds (when Telegram is enabled), reducing misconfigured-bot support requests.
Hardening
setReviewPrompt()moved afternotify()in slot-found path — storage failures can no longer block the slot notificationuseSettings()gainsflush()— prevents debounce-race data loss when closing the welcome pageonConsent()resets on failure — user can't get stuck with a disabled buttonsendMessagecatch block now logs warnings instead of swallowing silently- Bootstrap catch blocks log warnings instead of
/* ignore */ - Monotonicity guard on review prompt flags —
hasEverFoundSlotandpromptDismissedcan only transition false → true
Upgrade path
| If you are… | What happens |
|---|---|
| v1.2.0 user on Chrome Web Store | Chrome auto-updates within ~5 hours of CWS approval. All settings preserved. |
| Sideloading from this Releases page | Download the ZIP below and load unpacked. Existing data preserved. |
| New installer | Install from CWS once approved, or sideload from the ZIP below. |
Install (no Node / no terminal required)
- Download
visa-master-v1.3.0.zipfrom the Assets section below. - Unzip it. You'll get one folder.
- Open Chrome →
chrome://extensions→ Developer mode ON. - Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension activates.
Full bilingual instructions in the README and 中文 README.
Support
- Bug / question / feedback: open an issue or email support@torly.ai
- MIT licensed — audit, fork, or contribute freely.
v1.2.0
Visa Master v1.2.0
Live on the Chrome Web Store since 2026-05-22. Existing v1.1.0 users auto-update to v1.2.0 over the following ~24h. Four improvements aimed at Premium users — and a long-standing fix. Free-tier behaviour is unchanged.
If you only read one line: after a successful Premium booking, the extension can now book follow-up appointments for family members on the same TLS account.
What's new
🔄 Multi-booking after the refund window
Until now, after Visa Master booked a slot for you, it stayed in the Booked state indefinitely — useful for the 24-hour refund window, but unhelpful if you needed to book a second appointment (e.g. for a family member on the same TLS account, or because you'd missed a date).
In v1.2.0:
- 24 hours after a booking, when the refund window closes, the extension automatically returns to watching for slots. The next slot that matches your travel window triggers a second £19 booking.
- A new "Done — stop watching" button on the Booked screen lets you explicitly stop monitoring as soon as you're satisfied — no need to wait 24 hours.
- If you were already in a Booked state with a stale booking (>24h old) when v1.2.0 installs, the extension auto-rescues you to the watching state on first run.
📧 Email notifications for Premium
Premium users now get transactional emails alongside their existing Telegram + desktop notifications. Four events fire automatically:
- Booking confirmed — slot booked + £19 captured
- Booking failed — booking attempted but Stripe charge declined or 60-second timeout reached
- Refund issued — refund processed within the 24h window
- Auto-login disabled — 3 failed TLS login attempts; auto-login paused for 1 hour to protect your account
Emails are sent to the Stripe email you provided at activation. The extension never sends your email address to torly.ai — the backend resolves it from your install record. Same trust model as the existing Telegram channel.
Heads-up: there's no per-event opt-out toggle yet (planned for the next release). For now, Premium users with email notifications get all four event types.
🧾 Refund evidence
The 24h refund flow now asks you for a short description of what TLS told you about the cancellation (minimum 20 characters). The refund still processes automatically — there's no human-in-the-loop — but the evidence is stored alongside the refund record for honesty + audit.
If you have a TLS cancellation email handy, paste a relevant sentence. If TLS told you over the phone, describe what they said. Refunds with suspiciously generic or duplicate evidence may be reviewed.
A secondary "Send full evidence with screenshots" link opens a pre-filled email to support@torly.ai for users who want to provide more.
📊 Install metadata + attribution
On Premium activation, the extension now sends a few non-personal fields to help us improve the product: extension version, browser, OS, and (if you choose to share) where you heard about us. The uiLang field is also sent so transactional emails render in your language.
Behind the scenes
🛠 Fix: Stripe activation redirect
Some new Premium users couldn't complete activation in early days of the launch because of a Stripe {CHECKOUT_SESSION_ID} substitution that wasn't being recognised by the activation page. v1.2.0 ships the fix end-to-end. The backend also retroactively self-heals any historic activation that got stranded — you should not see this issue again.
🪄 Smaller UX fixes
- "Never mind" on the refund screen now returns you to your booking screen, not the active-monitoring view.
- The new "Done — stop watching" link sits properly on its own line below the existing "Slot was cancelled by TLS" link.
- The "Slot was cancelled by TLS" link now opens the proper refund screen instead of firing the refund directly with no confirmation.
Upgrade path
| If you are… | What happens |
|---|---|
| v1.1.0 user on Chrome Web Store | Chrome auto-updates within ~5 hours of CWS approval. License, settings, target URL, and any saved booking state all preserved. |
| v1.1.0 user with a Booked state past 24h | On first run of v1.2.0, the extension auto-recovers you to the watching state — no action needed. |
| Sideloading from this Releases page | Download the ZIP below and follow the install instructions. Existing chrome.storage.local data is preserved. |
| New installer | Once CWS approves, install one-click from the store listing. Until then, sideload from the ZIP below. |
Install (no Node / no terminal required)
- Download
visa-master-v1.2.0.zipfrom the Assets section below. - Double-click the ZIP to unzip it. You'll get one folder.
- Open Chrome and visit
chrome://extensions. - Toggle Developer mode ON (top-right).
- Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension badge turns green.
Full step-by-step bilingual instructions are in the README (English) and 中文 README.
Support
- Bug / question / feedback: open an issue or email support@torly.ai
- The extension is MIT licensed — audit, fork, or contribute freely.
Built from commit 3fe191ab6f9e361691f55749da11ce7a1edad175.
v1.1.5
Install (no Node / no terminal required)
- Download
visa-master-v1.2.0.zipfrom the Assets section below. - Double-click the ZIP to unzip it. You'll get one folder.
- Open Chrome and visit
chrome://extensions. - Toggle Developer mode ON (top-right).
- Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension badge turns green.
Full step-by-step bilingual instructions are in the
README.
Built from commit 3fe191ab6f9e361691f55749da11ce7a1edad175 by GitHub Actions.
Full Changelog: v1.2.0...v1.1.5
v1.1.0
Install (no Node / no terminal required)
- Download
visa-master-v1.1.0.zipfrom the Assets section below. - Double-click the ZIP to unzip it. You'll get one folder.
- Open Chrome and visit
chrome://extensions. - Toggle Developer mode ON (top-right).
- Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension badge turns green.
Full step-by-step bilingual instructions are in the
README.
Built from commit e3f3a905a9bee2bfaa2d4fadba0c7da5254718b4 by GitHub Actions.
Full Changelog: v1.0.9...v1.1.0
v1.0.9
Install (no Node / no terminal required)
- Download
visa-master-v1.0.9.zipfrom the Assets section below. - Double-click the ZIP to unzip it. You'll get one folder.
- Open Chrome and visit
chrome://extensions. - Toggle Developer mode ON (top-right).
- Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension badge turns green.
Full step-by-step bilingual instructions are in the
README.
Built from commit e0cbf5df1c9bf384f466c40f6a4c2b6bc2db4754 by GitHub Actions.
Full Changelog: v1.0.8...v1.0.9
v1.0.8
Install (no Node / no terminal required)
- Download
visa-master-v1.0.8.zipfrom the Assets section below. - Double-click the ZIP to unzip it. You'll get one folder.
- Open Chrome and visit
chrome://extensions. - Toggle Developer mode ON (top-right).
- Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension badge turns green.
Full step-by-step bilingual instructions are in the
README.
Built from commit 37f57e14708faeb84639cd7d40dc8c15713148d1 by GitHub Actions.
Full Changelog: v1.0.7...v1.0.8
v1.0.7
Install (no Node / no terminal required)
- Download
visa-master-v1.0.7.zipfrom the Assets section below. - Double-click the ZIP to unzip it. You'll get one folder.
- Open Chrome and visit
chrome://extensions. - Toggle Developer mode ON (top-right).
- Click Load unpacked and select the unzipped folder.
- Open your TLScontact appointment page — the extension badge turns green.
Full step-by-step bilingual instructions are in the
README.
Built from commit 469fee53fbab307631b940a324a996529cf5dae2 by GitHub Actions.
Full Changelog: v1.0.6...v1.0.7