Skip to content

feat(login): retry a typed repeater or room password on timeout - #444

Merged
kNoAPP merged 2 commits into
developfrom
kNoAPP/none-feat-retry-typed-login
Sep 26, 2026
Merged

kNoAPP merged 2 commits into
developfrom
kNoAPP/none-feat-retry-typed-login

Conversation

@kNoAPP

@kNoAPP kNoAPP commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

Description

A password typed into the repeater or room server sign-in form got one attempt. A node at the edge of range often drops that one packet, so the user had to resubmit by hand until one got through. A remembered credential already got a bounded cycle of LOGIN_ATTEMPTS (3) with a 3 s backoff, where the last attempt resets the stored route and floods.

signIn in useRepeaterAutoLogin now runs that same cycle. Repeaters and room servers share the hook and RepeaterLoginGate, so both change together. The Retry / Reset route and retry buttons on a failed remembered credential still send one attempt, because the user is choosing to try again.

Trade-off: a wrong password and an out-of-range node look the same on the wire (the node stays silent), so a mistyped password now takes the whole cycle, about half a minute, to fail. Its last attempt also resets the node's stored route to flood, and with no reply there is nothing to learn a new route from. That reset is kept on purpose: it is what reaches a node whose stored route went stale, and the companion firmware floods a login only when the contact has no path. A rejection the radio reports still ends the cycle at once, and a typed password is still never remembered unless it succeeds.

Verified on hardware (npm run dev, USB companion):

  • BCARC Room Server, Member sign-in with a blank password typed into the form. Attempts 1 and 2 timed out over the stored 3-hop route. Attempt 3 reset the route to flood and signed in as Member.
  • Sandpoint City repeater, wrong admin password typed into the form. The gate shows Signing in… (1 of 3) where it used to show Logging in… (screenshots below).
Before After
before after

Issues

None

Type of Change

  • ❌ ! -- Breaking change (fix or feature that would cause existing
    functionality to change)
  • ✨ feat -- New feature (non-breaking change which adds functionality)
  • 🛠️ fix -- Bug fix (non-breaking change which fixes an issue)
  • 📝 docs -- Additional or updated documentation
  • 🎨 style -- Code style changes (formatting, missing semi colons, etc)
  • 🧹 refactor -- Code refactor
  • ⚡ perf -- Performance improvement
  • 🧪 test -- Tests (adding or updating tests)
  • 🏗️ build -- Build system or external dependencies changes
  • ✅ ci -- Build configuration change
  • 🗑️ chore -- Grunt tasks
  • ⏪ revert -- Revert previous changes

A password typed into the sign-in form got a single attempt, so a node at
the edge of range needed the user to resubmit by hand. It now gets the
same bounded cycle a remembered credential does: three attempts, the last
one flooding. A mistyped password is silence on the wire too, so it now
takes the whole cycle to fail.
@github-actions github-actions Bot added the state label Sep 26, 2026
@github-actions github-actions Bot added the ui label Sep 26, 2026
@kNoAPP
kNoAPP merged commit 63b9dcd into develop Sep 26, 2026
10 checks passed
@kNoAPP
kNoAPP deleted the kNoAPP/none-feat-retry-typed-login branch September 26, 2026 04:13
@github-actions github-actions Bot mentioned this pull request Sep 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant