Skip to content

fix: 2FA recovery codes display, sync rate limit, taste strip gap, bt… #1166

fix: 2FA recovery codes display, sync rate limit, taste strip gap, bt…

fix: 2FA recovery codes display, sync rate limit, taste strip gap, bt… #1166

Triggered via push April 14, 2026 04:03
Status Success
Total duration 11m 0s
Artifacts 10

build.yml

on: push
detect-changes
5s
detect-changes
run-code-quality  /  code-quality
2m 15s
run-code-quality / code-quality
list-sub-projects  /  list-sub-projects
4s
list-sub-projects / list-sub-projects
Matrix: run-e2e-tests / e2e-test
run-security  /  Python Security
49s
run-security / Python Security
run-security  /  Semgrep CE Scan
48s
run-security / Semgrep CE Scan
run-security  /  Rust Security
21s
run-security / Rust Security
run-security  /  Secret Scanning
12s
run-security / Secret Scanning
run-security  /  Container Scanning
29s
run-security / Container Scanning
run-docker-compose-validate  /  validate-compose
12s
run-docker-compose-validate / validate-compose
run-tests  /  test-api
49s
run-tests / test-api
run-tests  /  test-common
52s
run-tests / test-common
run-tests  /  test-dashboard
56s
run-tests / test-dashboard
run-tests  /  test-explore
31s
run-tests / test-explore
run-tests  /  test-insights
28s
run-tests / test-insights
run-tests  /  test-mcp-server
23s
run-tests / test-mcp-server
run-tests  /  test-brainzgraphinator
24s
run-tests / test-brainzgraphinator
run-tests  /  test-graphinator
38s
run-tests / test-graphinator
run-tests  /  test-schema-init
25s
run-tests / test-schema-init
run-tests  /  test-tableinator
41s
run-tests / test-tableinator
run-tests  /  test-brainztableinator
22s
run-tests / test-brainztableinator
run-tests  /  test-js
26s
run-tests / test-js
run-tests  /  test-extractor
3m 2s
run-tests / test-extractor
Matrix: run-docker-validate / validate-dockerfiles
aggregate-results
2s
aggregate-results
Matrix: build-discogsography
Fit to window
Zoom out
Zoom in

Annotations

44 warnings and 20 notices
run-code-quality / code-quality
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, alexellis/arkade-get@1eef818e467c387d3f50cfe0d2c565d1cbe82b03, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-docker-compose-validate / validate-compose
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: alexellis/arkade-get@1eef818e467c387d3f50cfe0d2c565d1cbe82b03. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-mcp-server
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-brainzgraphinator
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-schema-init
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-insights
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-security / Container Scanning
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-explore
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-brainztableinator
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-graphinator
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-tableinator
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-security / Python Security
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-api
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-common
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-tests / test-dashboard
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-e2e-tests / Test webkit
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-e2e-tests / Test chromium
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-e2e-tests / Test firefox
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-e2e-tests / Test webkit - iPhone 15
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
run-e2e-tests / Test webkit - iPad Pro 11
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (insights, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (insights, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (api, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (api, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sensitive data should not be used in the ARG or ENV commands: api/Dockerfile#L113
SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "POSTGRES_PASSWORD") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
Sensitive data should not be used in the ARG or ENV commands: api/Dockerfile#L113
SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "JWT_SECRET_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
build-discogsography (tableinator, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (tableinator, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (explore, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (explore, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (dashboard, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (dashboard, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (graphinator, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (graphinator, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (extractor, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (extractor, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (brainztableinator, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (brainztableinator, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
build-discogsography (schema-init, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (schema-init, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sensitive data should not be used in the ARG or ENV commands: schema-init/Dockerfile#L92
SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "POSTGRES_PASSWORD") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
Sensitive data should not be used in the ARG or ENV commands: schema-init/Dockerfile#L92
SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NEO4J_PASSWORD") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
build-discogsography (brainzgraphinator, true)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/setup-python@v5, astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build-discogsography (brainzgraphinator, true)
embed field value must be shorter than 1024, got 2697 [`3070826`](https://github.com/SimplicityGuy/discogsography/commit/3070826ceb98b35888d11c6cc7585a95d2189460) fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger (#302) * fix: 2FA recovery codes display, sync rate limit, taste strip gap, btn-danger - Recovery codes were read from /api/auth/2fa/confirm response which only returns {message}; now read from cached _setupData.recovery_codes returned by /api/auth/2fa/setup. Also fixes Copy Codes copying empty string. - Defined .btn-danger Tailwind component class so the Disable 2FA button picks up flex centering from btn-base. The class was used by settings.js but never defined. - Loosened sync rate limit from 2/10minute to 10/minute and cooldown from 600s to 60s. Frontend now reads 429 message body instead of showing a generic "Please try again later" alert. - Hide #tasteStrip when empty so taste-fingerprint timeouts/unavailability no longer leave a blank gap between the stats cards and the collection table. - Removed dead X-Mailin-Track headers from password reset email; Brevo's v3 transactional API rejects standard email headers per the SDK's own signature ("Standard email headers are not supported"), so per-message click tracking control is impossible. Click tracking has to be disabled in the Brevo dashboard. Added comment explaining why. - Settings test mocks now match real API contract (setup returns otpauth_uri + recovery_codes; confirm returns {message}). The wrong mocks let the recovery codes bug ship. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set NLQ toggle to display:flex explicitly Clearing the inline `style="display: none;"` to '' should fall back to the Tailwind `flex` class via the cascade, but in some browsers the layout doesn't update until something else triggers a reflow. Setting display explicitly to 'flex' is unambiguous and removes the dependency on cascade ordering for elements with both inline-style hide and class-based show. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: cover new triggerSync branches in user-panes Add 5 tests for the branches introduced by the sync 429 handling: - 503 returns the service-unavailable message - 429 with empty body falls back to the default cooldown message - generic non-ok with body.detail surfaces the detail text - generic non-ok with body.message surfaces the message text - ok:true success path schedules the four pane reloads via setTimeout Closes the codecov gap on PR #302. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cache Performance
Docker cache hit for insights
Build Metrics
Service: insights, Duration: 106s, Cache Used: true
Cache Performance
Docker cache hit for api
Build Metrics
Service: api, Duration: 114s, Cache Used: true
Cache Performance
Docker cache hit for tableinator
Build Metrics
Service: tableinator, Duration: 126s, Cache Used: true
Cache Performance
Docker cache hit for explore
Build Metrics
Service: explore, Duration: 126s, Cache Used: true
Cache Performance
Docker cache hit for dashboard
Build Metrics
Service: dashboard, Duration: 132s, Cache Used: true
Cache Performance
Docker cache hit for graphinator
Build Metrics
Service: graphinator, Duration: 145s, Cache Used: true
Cache Performance
Docker cache hit for extractor
Build Metrics
Service: extractor, Duration: 179s, Cache Used: true
Cache Performance
Docker cache hit for brainztableinator
Build Metrics
Service: brainztableinator, Duration: 181s, Cache Used: true
Cache Performance
Docker cache hit for schema-init
Build Metrics
Service: schema-init, Duration: 189s, Cache Used: true
Cache Performance
Docker cache hit for brainzgraphinator
Build Metrics
Service: brainzgraphinator, Duration: 223s, Cache Used: true

Artifacts

Produced during runtime
Name Size Digest
SimplicityGuy~discogsography~BNIU66.dockerbuild
84 KB
sha256:6316671af18c9669c7f960bbeb516f028f32d3b7a565b8ab79c5eddc148c031e
SimplicityGuy~discogsography~C633B0.dockerbuild
108 KB
sha256:b9a27e08d1f68371f4c3a7e1002e1662b4c4457738d3fadd1d06ffd369af09fe
SimplicityGuy~discogsography~D7CQFY.dockerbuild
84.4 KB
sha256:fef2a1690e22046b21159c12800108eceb1150b14211abc00d1929e47b686938
SimplicityGuy~discogsography~EO4CV2.dockerbuild
77.1 KB
sha256:c06ad2e1290ceef8bbf87c209999c6d832abfb2c7458d2b2284ef8e9c3d859f9
SimplicityGuy~discogsography~GJN5SB.dockerbuild
83.7 KB
sha256:13f66f14f2f751e5982da03f9103fa215215b46d5522b1c9afa54a952a5ba0d5
SimplicityGuy~discogsography~GW1553.dockerbuild
88 KB
sha256:fcdb80be9f51a8a52bf1ab2ad7c4c313bb289c3e3c18318f7cf5fc2e8c33d754
SimplicityGuy~discogsography~NPQBKB.dockerbuild
83.7 KB
sha256:45b91ede4d71a804b910c9a7a66b77d877eee27d51a8eacdc9e87ea17540065c
SimplicityGuy~discogsography~QY9F12.dockerbuild
83.8 KB
sha256:c82ee09c286ec590363eb8043bd805ab96ed63c4582f0a919b685802d38302dc
SimplicityGuy~discogsography~TZ16I8.dockerbuild
114 KB
sha256:4aeaa93dfcc9bed97fedcc9d32f657ef66ce694215c033cc5420067175b9452b
SimplicityGuy~discogsography~U4Q5MW.dockerbuild
106 KB
sha256:475fcb2ac4e03a6c0895464359a5f7e0573ea29c2545bc8b9456efa529304e84