diff --git a/provision-agent.py b/provision-agent.py
index 35075ac..7f7e799 100644
--- a/provision-agent.py
+++ b/provision-agent.py
@@ -326,24 +326,24 @@ def cloudron_panel_login(page: Page, agent: dict, bw: BitwardenHelper) -> bool:
# If redirected to OIDC login page, fill that too
# (Cloudron login.html and OIDC login look similar, both use #inputUsername/#inputPassword)
- # Fill Cloudron login form (same selectors as invite page)
+ # Fill Cloudron login form (Pankow/Vue needs keyboard events, not fill())
page.wait_for_selector("#inputPassword", timeout=15000)
- page.fill("#inputUsername", cloudron_email)
- page.fill("#inputPassword", password)
+ page.click("#inputUsername")
+ page.keyboard.type(cloudron_email)
+ page.click("#inputPassword")
+ page.keyboard.type(password)
- # Submit: Cloudron uses different button types on panel vs OIDC pages
- page.evaluate("""() => {
- const selectors = [
- "button.btn-primary",
- 'button[type="submit"]',
- 'input[type="submit"]',
- "#loginSubmitButton",
- ];
- for (const sel of selectors) {
- const el = document.querySelector(sel);
- if (el) { el.click(); return; }
- }
- }""")
+ # Submit: Cloudron Pankow UI uses
instead of