chore(deps)(deps): bump actions/setup-node from 4 to 6#2
Closed
dependabot[bot] wants to merge 1 commit into
Closed
chore(deps)(deps): bump actions/setup-node from 4 to 6#2dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@v4...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
ntatschner
pushed a commit
that referenced
this pull request
May 11, 2026
Drift-audit fix #2. crates/starstats-server had two pub structs both named `ListResponse` registered under utoipa's #[derive(ToSchema)]: one in query.rs (events list), one in submission_routes.rs (submissions list). utoipa keys component schemas by Rust type name (rightmost path segment, not fully-qualified), so the second registration silently overwrote the first in the generated OpenAPI document. Net effect: `components.schemas.ListResponse` only ever held the submissions shape; the events shape vanished from the spec entirely. The drift wasn't visible at compile time — both files compile fine, the spec is structurally valid, and CI's drift-detection step only checks regen idempotency, not semantic correctness. The fingerprint was apps/web/src/lib/api.ts where someone had patched around the missing schema with `Omit<ListResponse, 'events'|'next_after'> & {events, next_after}` — the Omit removed nothing because ListResponse in the spec was the submissions shape (with `submissions` field), not the events shape, so the resulting type silently leaked the `submissions` field into ListEventsResponse. Fix: * Rename query.rs::ListResponse -> EventsListResponse (10 callsites in this file: definition, utoipa::path body, tests). The submission-side ListResponse keeps its name — it currently wins the collision so renaming nothing on that side keeps the wire name stable for existing clients. * openapi.rs:182 references the renamed type. * Regenerate packages/api-client-ts/src/generated/schema.ts — diff confirms BOTH schemas now exist as distinct components. * Drop the Omit/intersection workaround in apps/web/src/lib/api.ts in favour of a direct interface declaration. The local type now correctly mirrors the server with no implicit coupling to a schema name that could collide again. Verification: cargo test (266/266 server) + cargo clippy -D warnings + pnpm web typecheck + pnpm api-client-ts typecheck — all clean. The wire URL (GET /v1/me/events) and JSON field names are unchanged; this is an internal type-name refactor with no observable behaviour delta.
ntatschner
pushed a commit
that referenced
this pull request
May 20, 2026
The bulk-sync lane previously updated Config on disk silently when the piggyback pull found a remote change. The tray panel kept showing stale config until next user interaction. Threading AppHandle through start/respawn/spawn_lane lets the lane emit config-changed and sync-revoked just like the launch + focus triggers (C7) do. Closes follow-up #2 from PR #63.
ntatschner
pushed a commit
that referenced
this pull request
May 20, 2026
The bulk-sync lane previously updated Config on disk silently when the piggyback pull found a remote change. The tray panel kept showing stale config until next user interaction. Threading AppHandle through start/respawn/spawn_lane lets the lane emit config-changed and sync-revoked just like the launch + focus triggers (C7) do. Closes follow-up #2 from PR #63.
6 tasks
ntatschner
added a commit
that referenced
this pull request
May 28, 2026
…132) A 10+ hour outage on 2026-05-28 surfaced three architectural bugs in the tray's auth-loss handling. All three fed each other: ## Bug 1 — hangar worker unilaterally sabotages the sync worker On a 401 from the hangar push (`POST /v1/me/hangar`), the hangar worker called `clear_persisted_device_token()` AND set `account_status.auth_lost = true` tray-wide. The intent was "if our push 401s, the sync worker's calls will also 401, save a round-trip". But the hangar push and sync drain are independent surfaces, and they can race: the sync worker captures `api_url`/`access_token` at respawn-time, so a fresh post-pair token can be live in the sync worker's locals while the hangar worker is still using the pre-pair config snapshot. The hangar 401 in that race wipes the just-paired token AND flips global auth_lost — for everyone. Fix: hangar logs + records `hangar_stats.last_error` and bails its own cycle. Tray-wide auth_lost decisions stay with the sync worker's own 401 handlers. ## Bug 2 — sync worker with auth_lost loops silently forever `sync.rs::spawn_lane` checked `if !auth_lost` and skipped the drain on every tick when set. Workers stayed alive but did no work — no HTTP, no `sync_stats` updates, no log lines. The user saw 10+ hours of zero activity with no diagnostic signal. Fix: when the worker sees `auth_lost`, it logs once, emits `sync-paused` so the UI can react, and BREAKS out of the loop. The worker re-spawns on the next `respawn()` (pair_device / save_config / set_sync_preset), so re-pair recovers automatically. ## Bug 3 — health pill shows green forever on frozen sync_stats The pill derived from `sync_stats.last_success_at` with no staleness check, so a worker that died at noon would have its "last green reading" displayed until the user restarted the app. Fix: extend `deriveSyncHealth` with a staleness threshold (2× `bulk interval_secs`, floored at 60s). Adds `STALE` and `PAUSED` variants. Precedence is now OFF > PAUSED > IDLE > ERR > STALE > OK — ERR beats STALE because a known error is more useful than "we don't know"; STALE catches silent-failure modes like bug #2. Plus a `sync-paused` listener in SettingsPane that surfaces a notice ("Sync paused: the server rejected this uplink's token. Re-pair the device to resume.") and clears on toggle-back-on, mirroring the existing `sync-revoked` notice plumbing. ## Tests - 210 starstats-client cargo tests pass (no new tests — the sync.rs change is a control-flow refactor exercised by the existing fixture surface). - 162 tray-ui vitest tests pass (was 160; added STALE and PAUSED tests in SettingsPane.test.tsx). Existing OK test updated to use a fresh timestamp so the new staleness check doesn't fire. - `cargo fmt -p starstats-client --check` clean. - `cargo clippy -p starstats-client --bin starstats-client --tests -- -D warnings` clean. Co-authored-by: Nigel Tatschner <n Tatschner@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps actions/setup-node from 4 to 6.
Release notes
Sourced from actions/setup-node's releases.
... (truncated)
Commits
48b55a0Update Node.js versions in versions.yml and bump package to v6.4.0 (#1533)ab72c7eUpgrade@actionsdependencies (#1525)53b8394Bump minimatch from 3.1.2 to 3.1.5 (#1498)54045abScope test lockfiles by package manager and update cache tests (#1495)c882bffReplace uuid with crypto.randomUUID() (#1378)774c1d6feat(node-version-file): support parsingdevEnginesfield (#1283)efcb663fix: remove hardcoded bearer (#1467)d02c89dFix npm audit issues (#1491)6044e13Docs: bump actions/checkout from v5 to v6 (#1468)8e49463Fix README typo (#1226)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)