Skip to content

fix(probe): fall back to the base credential pool per provider and keep the vendor check time - #43

Merged
Adolanium merged 1 commit into
mainfrom
fix/36-40-profile-pool-observed-at
Oct 17, 2026
Merged

Adolanium merged 1 commit into
mainfrom
fix/36-40-profile-pool-observed-at

Conversation

@Adolanium

Copy link
Copy Markdown
Owner

Two fixes, one for #36 and one for the part of #40 left open after #41.

Profiles without their own Claude rows (#36)

A named profile with no credential_pool rows for a provider now reads the base home's rows, the same rule Hermes's read_credential_pool() uses. That holds even when the profile has an auth.json of its own for other providers, so the Claude card no longer disappears on a profile that runs on the base Claude login. The change stays inside _pool_entries(). .env lookups, caches and .anthropic_oauth.json stay per-profile.

Real check time through the probe cache (#40)

Each probe snapshot now carries observed_at, the time the vendor answered. The probe cache keeps it, and caches written before this change get their fetched_at. The page's "checked" label and the popup's checked time and stale marker use the oldest observation behind the cards (observedAt), not the time the UI asked. checkedAt stays the request time, so polling and the 24-hour popup snapshot behave as before. The popup snapshot saves observedAt too.

Tests

  • New test_profile_pool_fallback.py: a profile with no auth.json, a profile whose auth.json only has another provider, a profile with its own Claude rows, and a home outside profiles/. Also covers observed_at surviving a cache read and old entries being backfilled.
  • test_quick_usage.cjs: probeObservedAt picks the oldest valid observation, and the saved popup snapshot keeps it.
  • Two existing cache fixtures now include observed_at, so their exact-equality checks still hold.
  • The whole CI list passes locally, including build_catalog.py --check and the HERMES_TEST_CATALOG=1 run.

Closes #36

…ep the vendor check time

A named profile with no rows for a provider now reads the base home's
rows, as Hermes does, so the Claude card stays on profiles that run on
the base login (#36).

Probe snapshots carry observed_at from the vendor response through the
probe cache, and the page and popup show that time instead of the time
the UI asked (#40).
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.

Claude (and other pool-based) cards disappear when Desktop is on a named profile that has no auth.json of its own

1 participant