Skip to content

PAV-178: [Jobs Processor] Otimizar agendamento e distribuição de carga dos providers - #333

Merged
hltav merged 35 commits into
masterfrom
develop
Nov 2, 2026
Merged

hltav merged 35 commits into
masterfrom
develop

Conversation

@hltav

@hltav hltav commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Descricao

Distribui os oito providers em 21 janelas automáticas diárias, com seleção efetiva por ProviderID e coordenação pelo lock global existente. Implementa grupos fixos Greenhouse, deadline absoluto, cobertura de keywords LinkedIn/Adzuna e orçamentos operacionais Gupy/Jooble. Preserva resultados parciais no catálogo PostgreSQL e na projeção Valkey, com status operacional compatível com falhas e timeouts. A integração foi validada com serviços descartáveis; a ativação automática em DEV permanece condicionada à configuração e à validação operacional.

Linear

PAV-178

Close PAV-178

Como foi testado

Resultados comprovados nas rodadas anteriores:

Validação | Resultado -- | -- Testes Go direcionados | 475 aprovados Testes Go com detector de corridas | 414 aprovados Integração Go com PostgreSQL e Valkey descartáveis | 15 aprovados Testes backend direcionados | 56 aprovados Testes backend com Valkey real descartável | 18 aprovados Build Go e verificação TypeScript | Aprovados Hotfix final: cronjob e runlock com -race | Aprovados

Com SCRAPER_PROVIDER_WINDOWS=pav178, os oito providers precisam estar disponíveis no registry mesmo com o scheduler desabilitado, pois a validação ocorre no startup.

Também permanecem necessários PostgreSQL/Valkey, configurações de concorrência e parâmetros de lease existentes. Nenhuma credencial ou arquivo .env está incluído neste PR.

Impacto de contratos e APIs

Preserva o disparo sem seleção explícita e adiciona seleção administrativa por provider, com validação e encaminhamento Node → Go.

O status administrativo expõe resumo da última execução e janelas configuradas. Timeout com vagas persistidas é distinguido de sucesso completo.

A integração mantém tratamento de seleção inválida, conflito de execução, rate limit/Retry-After e indisponibilidade de coordenação.

A busca backend utiliza a versão ativa em scraper:jobs:index-version e documentos em scraper:jobs:ns:<versao>:job:<id>. Índices legados com IDs sem documentos não recuperam conteúdo perdido.

Segurança e privacidade

Mantém autenticação e autorização administrativas existentes no backend. Os endpoints administrativos Go devem permanecer acessíveis pela rede interna prevista.

Não inclui credenciais, .env, binários ou Compose temporário. Não executa seeds, coletas reais, reconstruções de índice ou alterações em produção.

As integrações utilizaram dados e serviços descartáveis.

Riscos e limitações

  • Pré-condição de DEV: confirmar migrations, disponibilidade do catálogo e versão ativa do índice. Estado legado inconsistente pode impedir o startup.
  • Pré-condição do preset: habilitar os providers exigidos e provisionar suas credenciais; Lever vem desabilitado por padrão.
  • Validação pendente: repetir CI após a integração com o develop atualizado.
  • Medição pendente: duração, recursos e cobertura real dos oito providers em DEV. Quotas operacionais não comprovam limites contratuais das fontes.
  • Documentação pendente: parte dos documentos commitados ainda descreve o fluxo legado. O handoff docs/PAV-178-scheduler-automatico.md permanece não rastreado e não integra este PR.
  • Mudanças no catálogo Greenhouse e na lista de queries Gupy exigem tratamento explícito de manifesto/cursor.
  • Histórico detalhado em memória não constitui histórico SQL durável.
  • Deadline e shutdown dependem da cooperação dos adapters com o cancelamento. Encerramento abrupto do processo pode perder resultados ainda em memória.
  • Os testes completos backend/frontend não foram reexecutados nesta preparação por ausência de dependências locais.

Rollback

Manter ou retornar SCRAPER_SCHEDULER_ENABLED=false e utilizar a imagem anterior aprovada em DEV, sem apagar catálogo, índices, checkpoints ou volumes.

Verificar a compatibilidade dos estados persistidos antes de voltar a um scheduler legado. Não remover claims ou contornar locks para recuperar ocorrências perdidas.

Rollback de namespace do índice, quando necessário, exige procedimento separado e validação dos documentos existentes.

Fora do escopo

Deploy, ativação automática, merge, mudanças da PAV-181, reconstrução de índices em produção, remoção de dados demonstrativos já existentes e novas migrations.

Também ficam fora do escopo novas políticas de frequência, aumento de concorrência e um dashboard/histórico completo de execuções — relacionado à PAV-179.

Checklist final

  • P0, P1, P2, P3, P3.1 e P4 registradas na branch.
  • Lock global, concorrência e resultados parciais preservados nos testes.
  • Hotfix de admissão tardia validado com -race.
  • Integrações PostgreSQL/Valkey descartáveis aprovadas nas rodadas anteriores.
  • Comparação atualizada e simulação sem conflitos.
  • Sem alterações de frontend/PAV-181 ou arquivos locais excluídos do escopo.
  • Executar CI e regressões sobre a integração com develop atualizado.
  • Atualizar documentação operacional legada antes da ativação automática.
  • Confirmar flags, credenciais, catálogo e índice no destino DEV.
  • Publicar inicialmente com scheduler desabilitado.
  • Medir os oito providers e validar capacidade antes da ativação controlada.
Descricao
Distribui os oito providers em 21 janelas automáticas diárias, com seleção efetiva por ProviderID e coordenação pelo lock global existente. Implementa grupos fixos Greenhouse, deadline absoluto, cobertura de keywords LinkedIn/Adzuna e orçamentos operacionais Gupy/Jooble. Preserva resultados parciais no catálogo PostgreSQL e na projeção Valkey, com status operacional compatível com falhas e timeouts. A integração foi validada com serviços descartáveis; a ativação automática em DEV permanece condicionada à configuração e à validação operacional.

Linear
PAV-178

Close PAV-178

Como foi testado
Resultados comprovados nas rodadas anteriores:

Validação Resultado
Testes Go direcionados 475 aprovados
Testes Go com detector de corridas 414 aprovados
Integração Go com PostgreSQL e Valkey descartáveis 15 aprovados
Testes backend direcionados 56 aprovados
Testes backend com Valkey real descartável 18 aprovados
Build Go e verificação TypeScript Aprovados
Hotfix final: cronjob e runlock com -race Aprovados
Esses números representam execuções distintas e não devem ser somados como casos únicos.

Na preparação deste PR, os comandos npm test de backend e frontend foram tentados conforme a skill. Ambos terminaram antes de executar casos, com código 127 e vitest: not found, pois esta worktree está sem dependências locais. Não foram instaladas dependências nem repetidas as integrações anteriores.

Reprodução direcionada
Com dependências instaladas e sem apontar configurações de teste para serviços compartilhados:

cd scraper-go
go test ./internal/config ./internal/cronjob ./internal/runlock ./internal/pipeline ./internal/adapters/... -count=1 -timeout=60s
go test -race ./internal/cronjob ./internal/runlock -count=1 -timeout=40s
Para as integrações, configurar PAV125_TEST_DATABASE_URL e PAV125_TEST_VALKEY_URL exclusivamente para instâncias descartáveis dedicadas:

cd scraper-go
go test ./internal/catalogops ./internal/pipeline -count=1 -timeout=120s
A integração backend de busca versionada utiliza:

cd backend
npx --no-install vitest run tests/integration/jobs.valkey.test.ts
npx --no-install tsc --noEmit -p tsconfig.json
Não executar seeds ou scrapers reais como parte desses testes.

Objetivo
Reduzir concentração de carga entre providers e distribuir a atualização do catálogo ao longo do dia, preservando os controles existentes de concorrência, persistência e coordenação.

A grade é a configuração operacional acordada. A caracterização completa de duração, CPU, memória e volume dos oito providers ainda deverá ser medida em DEV; este PR não apresenta essa capacidade como comprovada.

Resumo das alterações
Etapa Entrega
P0 — bf554a5 Preset com 21 janelas, timezone local, identidade independente e deduplicação das ocorrências.
P1 — 284d1c9 Manifesto versionado com quatro grupos fixos Greenhouse.
P2 — 85793e5 Deadline absoluto, reservas para finalização, admissão pontual e coordenação persistente.
P3 — 814026a Cobertura das keywords elegíveis LinkedIn/Adzuna por janela, preservando modos legados.
P3.1 — 9fad872 Orçamentos e cursor Gupy, preservação parcial e reserva atômica da cota Jooble.
P4 — 95e4e34 Testes finais de cobertura/integração e correção da admissão tardia causada pela latência do Valkey.
A branch também inclui os commits anteriores da PAV-178: seleção por ProviderID, controle de ativação, preservação parcial, bloqueio de seeds demonstrativos, otimizações e observabilidade do pipeline.

Arquivos e módulos afetados
Configuração: scraper-go/internal/config/, incluindo provider_schedule.go.
Scheduler: scraper-go/internal/cronjob/, incluindo despacho, manifesto Greenhouse, cursor Gupy e Retry-After.
Coordenação: scraper-go/internal/runlock/.
Pipeline e dados: pipeline/, catalog/, catalogops/, jobstore/, jobindex/, classifier/ e metrics/.
Providers: adapters e respectivos testes de cobertura, orçamento e resultados parciais.
Servidor Go: contratos administrativos em scraper-go/cmd/server/.
Backend: integração administrativa Node → Go, tipos operacionais, proteção de seeds e testes.
Docker: docker/docker-compose.app.yml e docker/docker-compose.migrate.yml.
Documentação commitada: docs/PAV-178-dev.md, docs/PAV-178-PR.md e documentação técnica do Processor.
Nenhuma alteração da PAV-181 integra este PR.

Arquitetura e funcionamento do scheduler
O preset SCRAPER_PROVIDER_WINDOWS=pav178 reutiliza o scheduler e o lock distribuído existentes. A configuração de janelas substitui o acionamento periódico legado nesse modo.

Todos os horários abaixo são locais em America/Sao_Paulo:

Provider Janelas
Greenhouse 00h, 06h, 11h, 17h
Gupy 01h, 07h, 12h, 18h
InHire 02h, 08h, 13h, 19h
LinkedIn 03h, 09h, 16h
Adzuna 04h, 14h
Lever 05h, 15h
The Muse 10h
Jooble 20h
São 21 ocorrências diárias, com IDs estáveis e claims persistidos por data local.

Admissão limitada à tolerância de 30 segundos após o horário previsto.
Revalidação temporal após a coordenação no Valkey, enquanto o lease global está adquirido.
Admissão tardia registrada como missed:admission_late, sem executar o provider.
Ocorrências impedidas não geram backlog, catch-up ou compensação em outro horário.
Execução limitada a 55 minutos totais, com reservas internas para processamento e liberação.
Conclusão antecipada aguarda a próxima janela; não encadeia outro provider.
Pausa global persistente de cinco minutos também protege disparos manuais.
Claims, checkpoints e coordenação dependem da retenção do Valkey.
Cobertura dos providers
Greenhouse: manifesto com 3.339 identidades estáveis, distribuídas em 850/850/850/789. Falhas e timeouts não redistribuem empresas entre janelas. Alterações do catálogo exigem revisão explícita do manifesto.
Gupy: até 120 queries por janela automática, cinco páginas por query e 600 tentativas HTTP, incluindo retries. Coleta sequencial, detecção de páginas repetidas, cursor persistente e preservação parcial.
LinkedIn/Adzuna: conjunto configurado de keywords elegíveis por ocorrência; limites de paginação, taxa e deadline continuam aplicáveis.
InHire: catálogo de 496 tenants.
Lever: catálogo de 44 empresas em ambas as janelas.
The Muse: limite padrão de 50 páginas, com preservação dos resultados parciais.
Jooble: uma janela diária às 20h, até 37 keywords, cursor e cadência existentes; teto compartilhado de até 150 tentativas HTTP/dia, reservado atomicamente antes do envio.
Cobertura planejada não significa conclusão garantida quando a fonte limita requisições ou o deadline é atingido.

Validações realizadas
Foram cobertos seleção exclusiva, horários locais, deduplicação após reinício, sobreposição, timeout, cancelamento, resultados parciais, persistência/indexação, quotas e cobertura dos catálogos.

Os testes finais do hotfix simulam a latência da coordenação sem sleeps longos e confirmam:

admissão dentro da tolerância;
rejeição depois da tolerância;
ausência de execução do provider rejeitado;
liberação do lock e dos recursos de execução;
ocorrência perdida consumida após reinício;
próxima janela elegível;
preservação da pausa global.
A comparação com upstream/develop não apresentou conflitos textuais na simulação de merge. Os testes anteriores foram executados na branch PAV-178, não sobre uma integração com os 34 commits posteriores do destino.

Impacto de banco e migrations
Não há nova migration neste PR.

O catálogo PostgreSQL, IDs estáveis, transações e revisões de indexação existentes são preservados. Falhas de indexação deixam pendências identificáveis por indexed_revision < revision, recuperáveis pelos mecanismos existentes.

O deploy deixa de executar automaticamente o seed demonstrativo. Migrations e backfill legítimo de PII continuam no fluxo.

O startup exige o catálogo migrado e recusa estados que demandem backfill/reconstrução explícita. Não há limpeza ou reconstrução automática de índices.

Impacto de configuração e variáveis de ambiente
A origem das configurações do scraper é o .env global da raiz do repositório, não o .env do backend.

O Compose principal inclui os arquivos modulares com project_directory: .. O serviço scraper-go:

recebe ./.env por env_file;
monta esse arquivo em /app/.env como somente leitura;
recebe valores explícitos em environment, que prevalecem sobre env_file;
recebe DATABASE_URL pelo módulo de migrations e VALKEY_URL pela configuração do serviço.
O carregamento Go utiliza godotenv.Load, sem sobrescrever variáveis já presentes no processo.

Variável Configuração/efeito
SCRAPER_SCHEDULER_ENABLED Manter false em DEV até ativação controlada. O padrão do código é true.
SCRAPER_PROVIDER_WINDOWS pav178 seleciona a grade. Vazio mantém o modo legado quando habilitado.
SCRAPER_SCHEDULE_TIMEZONE O preset utiliza America/Sao_Paulo; rejeita timezone incompatível.
SCRAPER_SCRAPE_TIMEOUT Padrão 50m; coleta limitada também pelo deadline total e reservas de finalização.
GUPY_AUTO_QUERY_LIMIT Padrão 120, exclusivo do modo automático correspondente.
GUPY_AUTO_MAX_PAGES Padrão 5.
GUPY_AUTO_MAX_HTTP_ATTEMPTS Padrão 600, incluindo retries.
JOOBLE_DAILY_HTTP_LIMIT Padrão 150; aceita valores entre 1 e 150.
SCRAPER_GREENHOUSE_BATCH_SIZE Mantido para o fluxo legado/manual; não substitui os grupos fixos do preset.
SCRAPER_SCHEDULER_ENABLED, os três limites automáticos Gupy e JOOBLE_DAILY_HTTP_LIMIT chegam pelo env_file, sem override explícito nesses campos do Compose. Timeout, janelas, concorrência, batches e parâmetros do lock possuem entradas explícitas em environment.

Flags, credenciais e catálogos
Provider Requisitos
LinkedIn Registrado sem flag ou credencial obrigatória nesse registry.
Adzuna ADZUNA_APP_ID e ADZUNA_APP_KEY.
Gupy GUPY_ENABLED=true; preservar as flags de discovery/sweep existentes.
InHire INHIRE_ENABLED=true; catálogo indicado por INHIRE_TENANTS_FILE.
Greenhouse GREENHOUSE_ENABLED=true; catálogo indicado por GREENHOUSE_COMPANIES_FILE, compatível com o manifesto.
Lever LEVER_ENABLED=true; catálogo indicado por LEVER_COMPANIES_FILE. O padrão do Compose é false.
The Muse Registrado sem flag; THEMUSE_API_KEY é opcional no adapter.
Jooble JOOBLE_API_KEY e Valkey disponível para controle de quota.
Com SCRAPER_PROVIDER_WINDOWS=pav178, os oito providers precisam estar disponíveis no registry mesmo com o scheduler desabilitado, pois a validação ocorre no startup.

Também permanecem necessários PostgreSQL/Valkey, configurações de concorrência e parâmetros de lease existentes. Nenhuma credencial ou arquivo .env está incluído neste PR.

Impacto de contratos e APIs
Preserva o disparo sem seleção explícita e adiciona seleção administrativa por provider, com validação e encaminhamento Node → Go.

O status administrativo expõe resumo da última execução e janelas configuradas. Timeout com vagas persistidas é distinguido de sucesso completo.

A integração mantém tratamento de seleção inválida, conflito de execução, rate limit/Retry-After e indisponibilidade de coordenação.

A busca backend utiliza a versão ativa em scraper:jobs:index-version e documentos em scraper:jobs:ns::job:. Índices legados com IDs sem documentos não recuperam conteúdo perdido.

Segurança e privacidade
Mantém autenticação e autorização administrativas existentes no backend. Os endpoints administrativos Go devem permanecer acessíveis pela rede interna prevista.

Não inclui credenciais, .env, binários ou Compose temporário. Não executa seeds, coletas reais, reconstruções de índice ou alterações em produção.

As integrações utilizaram dados e serviços descartáveis.

Riscos e limitações
Pré-condição de DEV: confirmar migrations, disponibilidade do catálogo e versão ativa do índice. Estado legado inconsistente pode impedir o startup.
Pré-condição do preset: habilitar os providers exigidos e provisionar suas credenciais; Lever vem desabilitado por padrão.
Validação pendente: repetir CI após a integração com o develop atualizado.
Medição pendente: duração, recursos e cobertura real dos oito providers em DEV. Quotas operacionais não comprovam limites contratuais das fontes.
Documentação pendente: parte dos documentos commitados ainda descreve o fluxo legado. O handoff docs/PAV-178-scheduler-automatico.md permanece não rastreado e não integra este PR.
Mudanças no catálogo Greenhouse e na lista de queries Gupy exigem tratamento explícito de manifesto/cursor.
Histórico detalhado em memória não constitui histórico SQL durável.
Deadline e shutdown dependem da cooperação dos adapters com o cancelamento. Encerramento abrupto do processo pode perder resultados ainda em memória.
Os testes completos backend/frontend não foram reexecutados nesta preparação por ausência de dependências locais.
Rollback
Manter ou retornar SCRAPER_SCHEDULER_ENABLED=false e utilizar a imagem anterior aprovada em DEV, sem apagar catálogo, índices, checkpoints ou volumes.

Verificar a compatibilidade dos estados persistidos antes de voltar a um scheduler legado. Não remover claims ou contornar locks para recuperar ocorrências perdidas.

Rollback de namespace do índice, quando necessário, exige procedimento separado e validação dos documentos existentes.

Fora do escopo
Deploy, ativação automática, merge, mudanças da PAV-181, reconstrução de índices em produção, remoção de dados demonstrativos já existentes e novas migrations.

Também ficam fora do escopo novas políticas de frequência, aumento de concorrência e um dashboard/histórico completo de execuções — relacionado à PAV-179.

Checklist final
P0, P1, P2, P3, P3.1 e P4 registradas na branch.
Lock global, concorrência e resultados parciais preservados nos testes.
Hotfix de admissão tardia validado com -race.
Integrações PostgreSQL/Valkey descartáveis aprovadas nas rodadas anteriores.
Comparação atualizada e simulação sem conflitos.
Sem alterações de frontend/PAV-181 ou arquivos locais excluídos do escopo.
Executar CI e regressões sobre a integração com develop atualizado.
Atualizar documentação operacional legada antes da ativação automática.
Confirmar flags, credenciais, catálogo e índice no destino DEV.
Publicar inicialmente com scheduler desabilitado.
Medir os oito providers e validar capacidade antes da ativação controlada.

dependabot Bot and others added 30 commits October 12, 2026 16:40
Bumps [framer-motion](https://github.com/motiondivision/motion) from 12.43.0 to 14.0.0.
- [Changelog](https://github.com/motiondivision/motion/blob/main/CHANGELOG.md)
- [Commits](motiondivision/motion@v12.43.0...v14.0.0)

---
updated-dependencies:
- dependency-name: framer-motion
  dependency-version: 14.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 9.2.5 to 10.0.6.
- [Release notes](https://github.com/open-cli-tools/concurrently/releases)
- [Commits](open-cli-tools/concurrently@v9.2.5...v10.0.6)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-version: 10.0.6
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [github.com/lib/pq](https://github.com/lib/pq) from 1.10.9 to 1.12.3.
- [Release notes](https://github.com/lib/pq/releases)
- [Changelog](https://github.com/lib/pq/blob/main/CHANGELOG.md)
- [Commits](lib/pq@v1.10.9...v1.12.3)

---
updated-dependencies:
- dependency-name: github.com/lib/pq
  dependency-version: 1.12.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [concurrently](https://github.com/open-cli-tools/concurrently)
from 9.2.5 to 10.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-cli-tools/concurrently/releases">concurrently's
releases</a>.</em></p>
<blockquote>
<h2>v10.0.6</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update issue link to the transferred repo path by <a
href="https://github.com/yzxcj797"><code>@​yzxcj797</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/609">open-cli-tools/concurrently#609</a></li>
<li>docs: update API example to ESM by <a
href="https://github.com/Bibin-VR"><code>@​Bibin-VR</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/611">open-cli-tools/concurrently#611</a></li>
<li>fix: skip force-kill logging when no processes remain by <a
href="https://github.com/imshunsuke"><code>@​imshunsuke</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/616">open-cli-tools/concurrently#616</a></li>
<li>deps: update shell-quote to 1.12.0 by <a
href="https://github.com/Abicodexi"><code>@​Abicodexi</code></a> and <a
href="https://github.com/Mayvis"><code>@​Mayvis</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/622">open-cli-tools/concurrently#622</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/yzxcj797"><code>@​yzxcj797</code></a>
made their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/609">open-cli-tools/concurrently#609</a></li>
<li><a href="https://github.com/Bibin-VR"><code>@​Bibin-VR</code></a>
made their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/611">open-cli-tools/concurrently#611</a></li>
<li><a
href="https://github.com/imshunsuke"><code>@​imshunsuke</code></a> made
their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/616">open-cli-tools/concurrently#616</a></li>
<li><a href="https://github.com/Abicodexi"><code>@​Abicodexi</code></a>
made their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/622">open-cli-tools/concurrently#622</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/open-cli-tools/concurrently/compare/v10.0.5...v10.0.6">https://github.com/open-cli-tools/concurrently/compare/v10.0.5...v10.0.6</a></p>
<h2>v10.0.5</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: correctly output non-ASCII text on Windows by <a
href="https://github.com/DanielC000"><code>@​DanielC000</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/604">open-cli-tools/concurrently#604</a></li>
<li>fix: expand wildcards from package.json5 when package.json is
missing by <a
href="https://github.com/DSeaStar"><code>@​DSeaStar</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/608">open-cli-tools/concurrently#608</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/DanielC000"><code>@​DanielC000</code></a> made
their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/604">open-cli-tools/concurrently#604</a></li>
<li><a href="https://github.com/DSeaStar"><code>@​DSeaStar</code></a>
made their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/608">open-cli-tools/concurrently#608</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/open-cli-tools/concurrently/compare/v10.0.4...v10.0.5">https://github.com/open-cli-tools/concurrently/compare/v10.0.4...v10.0.5</a></p>
<h2>v10.0.4</h2>
<h2>What's Changed</h2>
<ul>
<li>deps: upgrade shell-quote to 1.9.0 by <a
href="https://github.com/Mayvis"><code>@​Mayvis</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/599">open-cli-tools/concurrently#599</a></li>
<li>fix: avoid kill timeout exit delays by <a
href="https://github.com/rajanpanth"><code>@​rajanpanth</code></a> in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/601">open-cli-tools/concurrently#601</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Mayvis"><code>@​Mayvis</code></a> made
their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/599">open-cli-tools/concurrently#599</a></li>
<li><a
href="https://github.com/rajanpanth"><code>@​rajanpanth</code></a> made
their first contribution in <a
href="https://redirect.github.com/open-cli-tools/concurrently/pull/601">open-cli-tools/concurrently#601</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/open-cli-tools/concurrently/compare/v10.0.3...v10.0.4">https://github.com/open-cli-tools/concurrently/compare/v10.0.3...v10.0.4</a></p>
<h2>v10.0.3</h2>
<p>Republish of <a
href="https://github.com/open-cli-tools/concurrently/releases/tag/v10.0.1">https://github.com/open-cli-tools/concurrently/releases/tag/v10.0.1</a>
with Trusted Publishing enabled (see <a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/595">#595</a>)</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/open-cli-tools/concurrently/compare/v10.0.2...v10.0.3">https://github.com/open-cli-tools/concurrently/compare/v10.0.2...v10.0.3</a></p>
<h2>v10.0.2</h2>
<p>Test version to restore Trusted Publishing. Not published to npm.</p>
<h2>v10.0.1</h2>
<ul>
<li>Ensure <code>FlowController</code> type is exported - <a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/594">#594</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/open-cli-tools/concurrently/compare/v10.0.0...v10.0.1">https://github.com/open-cli-tools/concurrently/compare/v10.0.0...v10.0.1</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/d84bab65cbfdd8406a457787f71075b31bd6ff3f"><code>d84bab6</code></a>
10.0.6</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/d26574e3ab0d831be634b4089a5b4680ba22cd6e"><code>d26574e</code></a>
deps: update shell-quote to 1.12.0 (<a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/622">#622</a>)</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/13bdff120b52794e5528a185d45bbd96e56e4bf6"><code>13bdff1</code></a>
fix: skip force-kill logging when no processes remain (<a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/616">#616</a>)</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/b2580cc75389817e19afac2b66fc05ae151e3300"><code>b2580cc</code></a>
docs: update API example to ESM (<a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/611">#611</a>)</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/3159edbdca97b27c76ada425210011d59ddc02a7"><code>3159edb</code></a>
docs: update issue link to the transferred repo path (<a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/609">#609</a>)</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/1b8cbeba87497e0c2a29097c828276919935a217"><code>1b8cbeb</code></a>
10.0.5</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/544dba0980e06405f7f20bc951526d3d82b0d13e"><code>544dba0</code></a>
docs: make linter happy</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/667b70177b3d07010cd560377ee0a062314d675e"><code>667b701</code></a>
deps: update several dev deps</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/f67c57c4f944bd8e4505c7c62b83959839ea460e"><code>f67c57c</code></a>
vscode: use installed TS version</li>
<li><a
href="https://github.com/open-cli-tools/concurrently/commit/dbb561721625efb6291063b6912b5600602238ee"><code>dbb5617</code></a>
fix: expand wildcards from package.json5 when package.json is missing
(<a
href="https://redirect.github.com/open-cli-tools/concurrently/issues/608">#608</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-cli-tools/concurrently/compare/v9.2.5...v10.0.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=concurrently&package-manager=npm_and_yarn&previous-version=9.2.5&new-version=10.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will 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 version` will 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 dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.4.2 to 18.0.8.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](motdotla/dotenv@v17.4.2...v18.0.8)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 18.0.7
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [framer-motion](https://github.com/motiondivision/motion) from
12.43.0 to 14.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/motiondivision/motion/blob/main/CHANGELOG.md">framer-motion's
changelog</a>.</em></p>
<blockquote>
<h2>[14.0.0] 2026-10-02</h2>
<h3>Changed</h3>
<ul>
<li>Removed internal APIs restored in <code>13.5.1</code> for
compatibility with <code>framer-motion</code>
<code>13.0</code>–<code>13.4</code>. Future removed internal APIs won't
cause cross-compatibility issues since pinning internal
<code>framer-motion</code>, <code>motion-dom</code> and
<code>motion-utils</code> dependencies.</li>
</ul>
<h2>[13.5.1] 2026-10-02</h2>
<h3>Changed</h3>
<ul>
<li><code>&lt;motion&gt;</code>: Fall back to the attribute in
readSVGValue when computed style is empty.</li>
<li><code>&lt;motion&gt;</code>: Internal changes to
<code>animateChanges</code> for size reductions.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>scroll</code>: Temporarily reverted removal of internal
<code>observeTimeline</code> API to fix compatibility with previous
<code>13.x</code> APIs. Moving to pinned dependencies before removing in
<code>14.x</code>.</li>
<li><code>styleEffect</code>: Cleaning up an earlier value no longer
removes a value that was bound to the same key after it.</li>
<li><code>svgEffect</code>: No longer writes transforms and origins as
attributes.</li>
<li><code>&lt;motion&gt;</code>: <code>inherit={false}</code> now
correctly not inheriting parent animations.</li>
<li><code>&lt;motion&gt;</code>: Fix <code>sortNodePosition</code>
throwing when a sibling hasn't mounted</li>
</ul>
<h2>[13.5.0] 2026-10-01</h2>
<h3>Added</h3>
<ul>
<li><code>spring</code>: Now accepts negative <code>bounce</code>
(<code>0</code>-<code>-1</code>) to define overdamped springs.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>&lt;m&gt;</code>: 20% smaller.</li>
<li><code>useSpring</code>: 10% smaller.</li>
<li><code>scroll</code>/<code>useScroll</code>: Use main thread for all
<code>offset</code> animations.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Ensure <code>warning</code> and <code>error</code> messages are
cleaned from production build.</li>
<li>Ensure values are never rendered before they've been resolved.</li>
</ul>
<h2>[13.4.7] 2026-09-30</h2>
<h3>Changed</h3>
<ul>
<li><code>scroll</code>/<code>useScroll</code>: More
<code>offset</code>s are now hardware accelerated via
<code>ViewTimeline</code>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>animate</code>: Reduced size of Motion Studio introspection
call.</li>
<li><code>useTransform</code>: Accelerated values now correctly
clamp.</li>
<li><code>scroll</code>/<code>useScroll</code>: Ensure offsets work the
same across the JS main thread and <code>ViewTimeline</code>.</li>
<li><code>scroll</code>/<code>useScroll</code>: Remove
<code>ScrollTimeline</code>/<code>ViewTimeline</code> observer in favour
of main-thread scroll tracking.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/motiondivision/motion/commit/f5838ce47b323ce2713cb2effc5afaa5b6120a44"><code>f5838ce</code></a>
v14.0.0</li>
<li><a
href="https://github.com/motiondivision/motion/commit/351f7d0c027f4aa7b060afaace711829182e7a41"><code>351f7d0</code></a>
Updating changelog</li>
<li><a
href="https://github.com/motiondivision/motion/commit/5da7dcd8b722f23a87b2ee056e8e77ee2269d4c5"><code>5da7dcd</code></a>
Merge pull request <a
href="https://redirect.github.com/motiondivision/motion/issues/3889">#3889</a>
from motiondivision/cursor/v14-remove-shims-4e79</li>
<li><a
href="https://github.com/motiondivision/motion/commit/0897128336768be9f18d2c1cb5a8ab8e2e1cce67"><code>0897128</code></a>
Remove 13.5.1 compatibility shims for framer-motion 13.0–13.4</li>
<li><a
href="https://github.com/motiondivision/motion/commit/d4638ea17bcd4fc141fe71bc743b2a20eb456cd3"><code>d4638ea</code></a>
v13.5.1</li>
<li><a
href="https://github.com/motiondivision/motion/commit/43cd77e1529347edaf71118f2b1c368598f67005"><code>43cd77e</code></a>
Updating changelog</li>
<li><a
href="https://github.com/motiondivision/motion/commit/700596552d7451bcec07dc4f88e7ad590c021ae9"><code>7005965</code></a>
Merge pull request <a
href="https://redirect.github.com/motiondivision/motion/issues/3888">#3888</a>
from motiondivision/cursor/restore-observe-timeline-...</li>
<li><a
href="https://github.com/motiondivision/motion/commit/7bf77e996bccda745f9325eb7d876c6fe131c76e"><code>7bf77e9</code></a>
Merge pull request <a
href="https://redirect.github.com/motiondivision/motion/issues/3884">#3884</a>
from motiondivision/cursor/sort-node-position-unmoun...</li>
<li><a
href="https://github.com/motiondivision/motion/commit/c0495b0be44eb8bbb03cc105b42f0626996ac7a8"><code>c0495b0</code></a>
Merge pull request <a
href="https://redirect.github.com/motiondivision/motion/issues/3887">#3887</a>
from motiondivision/cursor/exact-internal-deps-4e79</li>
<li><a
href="https://github.com/motiondivision/motion/commit/9a16751399b48bad26bed3c6557c245007172539"><code>9a16751</code></a>
Honour deprecated rangeStart/rangeEnd in attachTimeline</li>
<li>Additional commits viewable in <a
href="https://github.com/motiondivision/motion/compare/v12.43.0...v14.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=framer-motion&package-manager=npm_and_yarn&previous-version=12.43.0&new-version=14.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will 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 version` will 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 dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.4.2 to
18.0.8.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md">dotenv's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.7...v18.0.8">18.0.8</a>
(2026-10-14)</h2>
<h3>Changed</h3>
<ul>
<li>Fast parser should strip appended extra quotes (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1073">#1073</a>)</li>
<li>Type detail improvement (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1074">#1074</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.6...v18.0.7">18.0.7</a>
(2026-10-09)</h2>
<h3>Changed</h3>
<ul>
<li>Treat undefined settings like <code>quiet: true</code> as null
rather than falsey (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1070">#1070</a>)</li>
<li>CLI should honor <code>DOTENV_QUIET</code> setting in
<code>.env</code> file (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1071">#1071</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.5...v18.0.6">18.0.6</a>
(2026-10-06)</h2>
<h3>Changed</h3>
<ul>
<li>Use smarter <code>parseBoolean</code> not Boolean() to fix override
(<a
href="https://redirect.github.com/motdotla/dotenv/pull/1069">#1069</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.4...v18.0.5">18.0.5</a>
(2026-09-30)</h2>
<h3>Changed</h3>
<ul>
<li>Fix missing typescript module declaration (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1068">#1068</a>)</li>
<li>Improve performance for large .env files (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1066">#1066</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.3...v18.0.4">18.0.4</a>
(2026-09-25)</h2>
<h3>Changed</h3>
<ul>
<li><code>import dotenv/config</code> should default quiet: true (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1063">#1063</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.2...v18.0.3">18.0.3</a>
(2026-09-22)</h2>
<h3>Changed</h3>
<ul>
<li>Patch <code>DOTENV_QUIET</code> setting when inside .env file (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1059">#1059</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.1...v18.0.2">18.0.2</a>
(2026-09-21)</h2>
<h3>Changed</h3>
<ul>
<li>Patch additional edge cases for the fast parser (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1056">#1056</a>)</li>
</ul>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.0...v18.0.1">18.0.1</a>
(2026-09-18)</h2>
<h3>Changed</h3>
<ul>
<li>Handle file urls in config logging (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1054">#1054</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/motdotla/dotenv/commit/e2fe95e8e952e881787d8207b654c80326f821d8"><code>e2fe95e</code></a>
18.0.8</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/7aa712ab2914c0cf128ea8ccdaf5e918a867db59"><code>7aa712a</code></a>
type detail improvement</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/53405b0b140debc002e41c5abb671d5da5f3e8f9"><code>53405b0</code></a>
Merge pull request <a
href="https://redirect.github.com/motdotla/dotenv/issues/1074">#1074</a>
from himanshu748/codex/fix-dotenv-populate-undefined...</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/0b4843a90d6d70b110d1f1a309f209c3d8d7cb6e"><code>0b4843a</code></a>
changelog</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/55855ab6bffb017ca94cb273704c055f2d977c57"><code>55855ab</code></a>
Merge pull request <a
href="https://redirect.github.com/motdotla/dotenv/issues/1073">#1073</a>
from xiehuanyi/fix/unicode-unquoting-parity</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/f7578114202cf0b8df31775225a9233ead6b2a80"><code>f757811</code></a>
fix(types): allow undefined values in populate output</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/fde5db2bca73438a013ee8837b021a436e65dac7"><code>fde5db2</code></a>
Keep fast-parser unquoting consistent at Unicode line boundaries</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/295320751866efa323236c719cdc1b5306fa3de7"><code>2953207</code></a>
18.0.7</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/9944723d89e6f776897f171bfc6b945dfad23c57"><code>9944723</code></a>
make more readable for undefined -&gt; null</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/d455db06a7b37acd8b240793a888efaba75885f4"><code>d455db0</code></a>
Merge branch 'master' of github.com:motdotla/dotenv</li>
<li>Additional commits viewable in <a
href="https://github.com/motdotla/dotenv/compare/v17.4.2...v18.0.8">compare
view</a></li>
</ul>
</details>
<br />
…-go (#319)

Bumps [github.com/lib/pq](https://github.com/lib/pq) from 1.10.9 to
1.12.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lib/pq/releases">github.com/lib/pq's
releases</a>.</em></p>
<blockquote>
<h2>v1.12.3</h2>
<ul>
<li>Send datestyle startup parameter, improving compatbility with
database engines that use a different default datestyle such as
EnterpriseDB (<a
href="https://redirect.github.com/lib/pq/issues/1312">#1312</a>).</li>
</ul>
<p><a href="https://redirect.github.com/lib/pq/issues/1312">#1312</a>:
<a
href="https://redirect.github.com/lib/pq/pull/1312">lib/pq#1312</a></p>
<h2>v1.12.2</h2>
<ul>
<li>Treat io.ErrUnexpectedEOF as driver.ErrBadConn so database/sql
discards the connection. Since v1.12.0 this could result in permanently
broken connections, especially with CockroachDB which frequently sends
partial messages (<a
href="https://redirect.github.com/lib/pq/issues/1299">#1299</a>).</li>
</ul>
<p><a href="https://redirect.github.com/lib/pq/issues/1299">#1299</a>:
<a
href="https://redirect.github.com/lib/pq/pull/1299">lib/pq#1299</a></p>
<h2>v1.12.1</h2>
<ul>
<li>
<p>Look for pgpass file in ~/.pgpass instead of ~/.postgresql/pgpass (<a
href="https://redirect.github.com/lib/pq/issues/1300">#1300</a>).</p>
</li>
<li>
<p>Don't clear password if directly set on pq.Config (<a
href="https://redirect.github.com/lib/pq/issues/1302">#1302</a>).</p>
</li>
</ul>
<p><a href="https://redirect.github.com/lib/pq/issues/1300">#1300</a>:
<a href="https://redirect.github.com/lib/pq/pull/1300">lib/pq#1300</a>
<a href="https://redirect.github.com/lib/pq/issues/1302">#1302</a>: <a
href="https://redirect.github.com/lib/pq/pull/1302">lib/pq#1302</a></p>
<h2>v1.12.0</h2>
<ul>
<li>
<p>The next release may change the default sslmode from
<code>require</code> to <code>prefer</code>. See <a
href="https://redirect.github.com/lib/pq/issues/1271">#1271</a> for
details.</p>
</li>
<li>
<p><code>CopyIn()</code> and <code>CopyInToSchema()</code> have been
marked as deprecated. These are simple query builders and not needed for
<code>COPY [..] FROM STDIN</code> support (which is <em>not</em>
deprecated). (<a
href="https://redirect.github.com/lib/pq/issues/1279">#1279</a>)</p>
<pre><code>// Old
tx.Prepare(CopyIn(&quot;temp&quot;, &quot;num&quot;, &quot;text&quot;,
&quot;blob&quot;, &quot;nothing&quot;))
<p>// Replacement
tx.Prepare(<code>copy temp (num, text, blob, nothing) from stdin</code>)
</code></pre></p>
</li>
</ul>
<h3>Features</h3>
<ul>
<li>
<p>Support protocol 3.2, and the <code>min_protocol_version</code> and
<code>max_protocol_version</code> DSN parameters (<a
href="https://redirect.github.com/lib/pq/issues/1258">#1258</a>).</p>
</li>
<li>
<p>Support <code>sslmode=prefer</code> and <code>sslmode=allow</code>
(<a
href="https://redirect.github.com/lib/pq/issues/1270">#1270</a>).</p>
</li>
<li>
<p>Support <code>ssl_min_protocol_version</code> and
<code>ssl_max_protocol_version</code> (<a
href="https://redirect.github.com/lib/pq/issues/1277">#1277</a>).</p>
</li>
<li>
<p>Support connection service file to load connection details (<a
href="https://redirect.github.com/lib/pq/issues/1285">#1285</a>).</p>
</li>
<li>
<p>Support <code>sslrootcert=system</code> and use
<code>~/.postgresql/root.crt</code> as the default value of sslrootcert
(<a href="https://redirect.github.com/lib/pq/issues/1280">#1280</a>, <a
href="https://redirect.github.com/lib/pq/issues/1281">#1281</a>).</p>
</li>
<li>
<p>Add a new <code>pqerror</code> package with PostgreSQL error codes
(<a
href="https://redirect.github.com/lib/pq/issues/1275">#1275</a>).</p>
<p>For example, to test if an error is a UNIQUE constraint
violation:</p>
<pre><code>if pqErr, ok :=
errors.AsType[*pq.Error](https://github.com/lib/pq/blob/HEAD/err); ok
&amp;&amp; pqErr.Code == pqerror.UniqueViolation {
    log.Fatalf(&quot;email %q already exsts&quot;, email)
}
</code></pre>
<p>To make this a bit more convenient, it also adds a
<code>pq.As()</code> function:</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/lib/pq/blob/main/CHANGELOG.md">github.com/lib/pq's
changelog</a>.</em></p>
<blockquote>
<h2>v1.12.3 (2026-04-03)</h2>
<ul>
<li>Send datestyle startup parameter, improving compatbility with
database engines
that use a different default datestyle such as EnterpriseDB (<a
href="https://redirect.github.com/lib/pq/issues/1312">#1312</a>).</li>
</ul>
<p><a href="https://redirect.github.com/lib/pq/issues/1312">#1312</a>:
<a
href="https://redirect.github.com/lib/pq/pull/1312">lib/pq#1312</a></p>
<h2>v1.12.2 (2026-04-02)</h2>
<ul>
<li>Treat io.ErrUnexpectedEOF as driver.ErrBadConn so database/sql
discards the
connection. Since v1.12.0 this could result in permanently broken
connections,
especially with CockroachDB which frequently sends partial messages (<a
href="https://redirect.github.com/lib/pq/issues/1299">#1299</a>).</li>
</ul>
<p><a href="https://redirect.github.com/lib/pq/issues/1299">#1299</a>:
<a
href="https://redirect.github.com/lib/pq/pull/1299">lib/pq#1299</a></p>
<h2>v1.12.1 (2026-03-30)</h2>
<ul>
<li>
<p>Look for pgpass file in ~/.pgpass instead of ~/.postgresql/pgpass (<a
href="https://redirect.github.com/lib/pq/issues/1300">#1300</a>).</p>
</li>
<li>
<p>Don't clear password if directly set on pq.Config (<a
href="https://redirect.github.com/lib/pq/issues/1302">#1302</a>).</p>
</li>
</ul>
<p><a href="https://redirect.github.com/lib/pq/issues/1300">#1300</a>:
<a href="https://redirect.github.com/lib/pq/pull/1300">lib/pq#1300</a>
<a href="https://redirect.github.com/lib/pq/issues/1302">#1302</a>: <a
href="https://redirect.github.com/lib/pq/pull/1302">lib/pq#1302</a></p>
<h2>v1.12.0 (2026-03-18)</h2>
<ul>
<li>
<p>The next release may change the default sslmode from
<code>require</code> to <code>prefer</code>.
See <a href="https://redirect.github.com/lib/pq/issues/1271">#1271</a>
for details.</p>
</li>
<li>
<p><code>CopyIn()</code> and <code>CopyInToSchema()</code> have been
marked as deprecated. These are
simple query builders and not needed for <code>COPY [..] FROM
STDIN</code> support (which
is <em>not</em> deprecated). (<a
href="https://redirect.github.com/lib/pq/issues/1279">#1279</a>)</p>
<pre><code>// Old
tx.Prepare(CopyIn(&quot;temp&quot;, &quot;num&quot;, &quot;text&quot;,
&quot;blob&quot;, &quot;nothing&quot;))
<p>// Replacement
tx.Prepare(<code>copy temp (num, text, blob, nothing) from stdin</code>)
</code></pre></p>
</li>
</ul>
<h3>Features</h3>
<ul>
<li>
<p>Support protocol 3.2, and the <code>min_protocol_version</code> and
<code>max_protocol_version</code> DSN parameters (<a
href="https://redirect.github.com/lib/pq/issues/1258">#1258</a>).</p>
</li>
<li>
<p>Support <code>sslmode=prefer</code> and <code>sslmode=allow</code>
(<a
href="https://redirect.github.com/lib/pq/issues/1270">#1270</a>).</p>
</li>
<li>
<p>Support <code>ssl_min_protocol_version</code> and
<code>ssl_max_protocol_version</code> (<a
href="https://redirect.github.com/lib/pq/issues/1277">#1277</a>).</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lib/pq/commit/1f3e3d92865dd313b4e146968684d7e3836c76e8"><code>1f3e3d9</code></a>
Send datestyle as a startup parameter (<a
href="https://redirect.github.com/lib/pq/issues/1312">#1312</a>)</li>
<li><a
href="https://github.com/lib/pq/commit/32ba56b8f9c09575e3320f0043f4f0bdf0ad2009"><code>32ba56b</code></a>
Expand tests for multiple result sets</li>
<li><a
href="https://github.com/lib/pq/commit/c2cfac15d5048670f784616c0c3dca56f97f49c0"><code>c2cfac1</code></a>
Release v1.12.2</li>
<li><a
href="https://github.com/lib/pq/commit/859f10493799ae5b3fc3706bbef2ee48764dc787"><code>859f104</code></a>
Test CockroachDB</li>
<li><a
href="https://github.com/lib/pq/commit/12e464c3afecfb945fc764001837c137fa764e37"><code>12e464c</code></a>
Allow multiple matches and regexps in pqtest.ErrorContains()</li>
<li><a
href="https://github.com/lib/pq/commit/6d77ced41719616090c9e7eec2c313a18640bc3f"><code>6d77ced</code></a>
Treat io.ErrUnexpectedEOF as driver.ErrBadConn in handleError</li>
<li><a
href="https://github.com/lib/pq/commit/71daecbc4522cf9cb6c399e19b910d22356ebb87"><code>71daecb</code></a>
Ensure transactions are closed in pqtest</li>
<li><a
href="https://github.com/lib/pq/commit/8f448230b50d3c2f796fd20622daaf8ebe3d173c"><code>8f44823</code></a>
Set PGAPPNAME for tests</li>
<li><a
href="https://github.com/lib/pq/commit/4af2196aa02298c23461f2baf538a0679b66a093"><code>4af2196</code></a>
Fix healthcheck</li>
<li><a
href="https://github.com/lib/pq/commit/38a54e44b0a91e12314291c9102714e7f503ba98"><code>38a54e4</code></a>
Split out testdata/init a bit</li>
<li>Additional commits viewable in <a
href="https://github.com/lib/pq/compare/v1.10.9...v1.12.3">compare
view</a></li>
</ul>
</details>
<br />
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.23.2 to 1.25.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.25.0/CHANGELOG.md)
- [Commits](prometheus/client_golang@v1.23.2...v1.25.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…1.25.0 in /scraper-go (#318)

Bumps
[github.com/prometheus/client_golang](https://github.com/prometheus/client_golang)
from 1.23.2 to 1.25.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/client_golang/releases">github.com/prometheus/client_golang's
releases</a>.</em></p>
<blockquote>
<h2>v1.25.0</h2>
<p>:warning: This release raises the minimum required Go version to 1.26
and includes breaking API changes in <code>api/prometheus/v1</code> (see
the [CHANGE] entries below). :warning:</p>
<h2>1.25.0 / 2026-10-07</h2>
<ul>
<li>[CHANGE] Minimum required Go version is now 1.26, only the two
latest Go versions (1.26 and 1.27) are supported from now on. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2138">#2138</a></li>
<li>[CHANGE] api/prometheus/v1: <code>Query</code>,
<code>QueryRange</code>, <code>Series</code>, <code>LabelNames</code>,
and <code>LabelValues</code> now return <code>Infos</code> annotations
in addition to <code>Warnings</code>, matching the Prometheus server's
info annotations. This changes the signatures of these methods and of
<code>api.Client</code>'s <code>Do</code>/<code>DoGetFallback</code>;
custom API client implementations must be updated. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1963">#1963</a></li>
<li>[CHANGE] api/prometheus/v1: Rework <code>TSDBBlocks</code> result
types to align with the Prometheus server's <code>tsdb.BlockMeta</code>:
<code>TSDBBlocksResult</code> now contains <code>Blocks
[]TSDBBlockMeta</code> directly instead of mirroring the full API
envelope, nested types are renamed (<code>TSDBBlockMeta</code>,
<code>TSDBBlockStats</code>, <code>TSDBBlockMetaCompaction</code>), stat
fields are <code>uint64</code> with <code>omitempty</code> tags, and the
optional compaction <code>parents</code> field is included. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1928">#1928</a></li>
<li>[FEATURE] testutil: Add <code>GatherAndFormat</code> to encode a
subset of metrics from a Gatherer. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2091">#2091</a></li>
<li>[FEATURE] promhttp: Add <code>HandlerOpts.AcceptedFormats</code> to
customize the formats negotiated from the incoming <code>Accept</code>
header, enabling opt-in to experimental formats such as OpenMetrics 2.0
without changing default negotiation. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2146">#2146</a></li>
<li>[ENHANCEMENT] promhttp: Negotiated metrics responses now include a
<code>Vary</code> header. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2142">#2142</a></li>
<li>[ENHANCEMENT] prometheus: Regenerate the default runtime collector
metrics for Go 1.25 and Go 1.26. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2090">#2090</a>,
<a
href="https://redirect.github.com/prometheus/client_golang/issues/2095">#2095</a></li>
<li>[ENHANCEMENT] testutil: Finalize OpenMetrics output in
<code>GatherAndFormat</code> and <code>CollectAndFormat</code>
(terminating <code># EOF</code>). <a
href="https://redirect.github.com/prometheus/client_golang/issues/2125">#2125</a></li>
<li>[BUGFIX] api: Match complete URL path placeholders only; a
<code>:foo</code> argument no longer substitutes inside
<code>:foobar</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2136">#2136</a></li>
<li>[BUGFIX] exp/api/remote: Reset the pooled buffer before generic
proto marshaling, preventing corrupted remote-write payloads. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2139">#2139</a></li>
<li>[BUGFIX] testutil/promlint: Fix &quot;mibi&quot; unit prefix to
&quot;mebi&quot;. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2135">#2135</a></li>
</ul>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>fix: Remove unneeded and broken CI badge by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2057">prometheus/client_golang#2057</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2060">prometheus/client_golang#2060</a></li>
<li>build(deps): bump the codeql group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2066">prometheus/client_golang#2066</a></li>
<li>build(deps): bump github.com/klauspost/compress from 1.19.0 to
1.19.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2071">prometheus/client_golang#2071</a></li>
<li>build(deps): bump golang.org/x/sys from 0.46.0 to 0.47.0 in the
golang-org-x group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2069">prometheus/client_golang#2069</a></li>
<li>build(deps): bump github.com/klauspost/compress from 1.19.0 to
1.19.1 in /exp by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2072">prometheus/client_golang#2072</a></li>
<li>build(deps): bump github.com/prometheus/common from 0.69.0 to 0.70.1
in /exp by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2073">prometheus/client_golang#2073</a></li>
<li>build(deps): bump github.com/prometheus/common from 0.69.0 to 0.70.1
by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2070">prometheus/client_golang#2070</a></li>
<li>build(deps): bump google.golang.org/grpc from 1.79.3 to 1.82.1 in
/tutorials/whatsup by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2075">prometheus/client_golang#2075</a></li>
<li>Pin GitHub Actions by <a
href="https://github.com/SuperQ"><code>@​SuperQ</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2074">prometheus/client_golang#2074</a></li>
<li>build(deps): bump actions/checkout from 7.0.0 to 7.0.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2067">prometheus/client_golang#2067</a></li>
<li>promhttp: fix panic on requests with nil URL by <a
href="https://github.com/SAY-5"><code>@​SAY-5</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2065">prometheus/client_golang#2065</a></li>
<li>Return info annotations in addition to warnings in the API by <a
href="https://github.com/zenador"><code>@​zenador</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1963">prometheus/client_golang#1963</a></li>
<li>build(deps): bump ossf/scorecard-action from 2.4.3 to 2.4.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2082">prometheus/client_golang#2082</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2084">prometheus/client_golang#2084</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2086">prometheus/client_golang#2086</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2088">prometheus/client_golang#2088</a></li>
<li>Regenerate Go collector runtime metrics for Go 1.25 and Go 1.26 by
<a href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2090">prometheus/client_golang#2090</a></li>
<li>go.mod: remove obsolete exclude rule by <a
href="https://github.com/thaJeztah"><code>@​thaJeztah</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2077">prometheus/client_golang#2077</a></li>
<li>Synchronize common files from prometheus/prometheus by <a
href="https://github.com/prombot"><code>@​prombot</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2093">prometheus/client_golang#2093</a></li>
<li>README: document the OpenTelemetry OTLP push bridge by <a
href="https://github.com/mvanhorn"><code>@​mvanhorn</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/1987">prometheus/client_golang#1987</a></li>
<li>docs: add AGENTS.md contributor and maintainer guide by <a
href="https://github.com/bwplotka"><code>@​bwplotka</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2056">prometheus/client_golang#2056</a></li>
<li>testutil: add GatherAndFormat helper by <a
href="https://github.com/wieghx"><code>@​wieghx</code></a> in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2091">prometheus/client_golang#2091</a></li>
<li>build(deps): bump the codeql group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2101">prometheus/client_golang#2101</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.11 to 1.36.12
by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2097">prometheus/client_golang#2097</a></li>
<li>build(deps): bump github.com/klauspost/compress from 1.19.1 to
1.19.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2098">prometheus/client_golang#2098</a></li>
<li>build(deps): bump google.golang.org/protobuf from 1.36.11 to 1.36.12
in /exp by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2099">prometheus/client_golang#2099</a></li>
<li>build(deps): bump github.com/klauspost/compress from 1.19.1 to
1.19.2 in /exp by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2100">prometheus/client_golang#2100</a></li>
<li>build(deps): bump github.com/prometheus/procfs from 0.21.1 to 0.22.0
in the prometheus group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/prometheus/client_golang/pull/2096">prometheus/client_golang#2096</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prometheus/client_golang/blob/v1.25.0/CHANGELOG.md">github.com/prometheus/client_golang's
changelog</a>.</em></p>
<blockquote>
<h2>1.25.0 / 2026-10-07</h2>
<ul>
<li>[CHANGE] Minimum required Go version is now 1.26, only the two
latest Go versions (1.26 and 1.27) are supported from now on. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2138">#2138</a></li>
<li>[CHANGE] api/prometheus/v1: <code>Query</code>,
<code>QueryRange</code>, <code>Series</code>, <code>LabelNames</code>,
and <code>LabelValues</code> now return <code>Infos</code> annotations
in addition to <code>Warnings</code>, matching the Prometheus server's
info annotations. This changes the signatures of these methods and of
<code>api.Client</code>'s <code>Do</code>/<code>DoGetFallback</code>;
custom API client implementations must be updated. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1963">#1963</a></li>
<li>[CHANGE] api/prometheus/v1: Rework <code>TSDBBlocks</code> result
types to align with the Prometheus server's <code>tsdb.BlockMeta</code>:
<code>TSDBBlocksResult</code> now contains <code>Blocks
[]TSDBBlockMeta</code> directly instead of mirroring the full API
envelope, nested types are renamed (<code>TSDBBlockMeta</code>,
<code>TSDBBlockStats</code>, <code>TSDBBlockMetaCompaction</code>), stat
fields are <code>uint64</code> with <code>omitempty</code> tags, and the
optional compaction <code>parents</code> field is included. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1928">#1928</a></li>
<li>[FEATURE] testutil: Add <code>GatherAndFormat</code> to encode a
subset of metrics from a Gatherer. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2091">#2091</a></li>
<li>[FEATURE] promhttp: Add <code>HandlerOpts.AcceptedFormats</code> to
customize the formats negotiated from the incoming <code>Accept</code>
header, enabling opt-in to experimental formats such as OpenMetrics 2.0
without changing default negotiation. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2146">#2146</a></li>
<li>[ENHANCEMENT] promhttp: Negotiated metrics responses now include a
<code>Vary</code> header. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2142">#2142</a></li>
<li>[ENHANCEMENT] prometheus: Regenerate the default runtime collector
metrics for Go 1.25 and Go 1.26. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2090">#2090</a>,
<a
href="https://redirect.github.com/prometheus/client_golang/issues/2095">#2095</a></li>
<li>[ENHANCEMENT] testutil: Finalize OpenMetrics output in
<code>GatherAndFormat</code> and <code>CollectAndFormat</code>
(terminating <code># EOF</code>). <a
href="https://redirect.github.com/prometheus/client_golang/issues/2125">#2125</a></li>
<li>[BUGFIX] api: Match complete URL path placeholders only; a
<code>:foo</code> argument no longer substitutes inside
<code>:foobar</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2136">#2136</a></li>
<li>[BUGFIX] exp/api/remote: Reset the pooled buffer before generic
proto marshaling, preventing corrupted remote-write payloads. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2139">#2139</a></li>
<li>[BUGFIX] testutil/promlint: Fix &quot;mibi&quot; unit prefix to
&quot;mebi&quot;. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2135">#2135</a></li>
</ul>
<h2>1.24.1 / 2026-07-23</h2>
<ul>
<li>[BUGFIX] promhttp: Fix panic on requests with nil URL. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2065">#2065</a></li>
</ul>
<h2>1.24.0 / 2026-07-20</h2>
<ul>
<li>[CHANGE] Minimum required Go version is now 1.25, only the two
latest Go versions (1.25 and 1.26) are supported from now on. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1862">#1862</a></li>
<li>[CHANGE] prometheus: Name validation now always uses the UTF-8
scheme instead of the deprecated <code>model.NameValidationScheme</code>
global. Default behavior is unchanged; code that set
<code>NameValidationScheme = LegacyValidation</code> no longer gets
legacy enforcement at metric, label, and push-grouping construction. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2051">#2051</a></li>
<li>[CHANGE] api/prometheus/v1: Support matchers (<code>matches[]</code>
parameter) in <code>Rules</code> method (<code>Rules(ctx
context.Context, matches []string) (RulesResult, error)</code>). <a
href="https://redirect.github.com/prometheus/client_golang/issues/1843">#1843</a></li>
<li>[CHANGE] api/prometheus/v1: Refactor <code>LabelNames</code> method
to return <code>model.LabelNames</code> instead of <code>[]string</code>
for consistency across the API. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1850">#1850</a></li>
<li>[CHANGE] exp/api/remote: Simplify <code>Store</code> interface,
rename <code>Handler</code> to <code>WriteHandler</code>, and
encapsulate write response handling. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1855">#1855</a></li>
<li>[FEATURE] prometheus: Add new Go 1.26 runtime metrics
(<code>/sched/goroutines-created:goroutines</code>,
<code>/sched/goroutines/not-in-go:goroutines</code>,
<code>/sched/goroutines/runnable:goroutines</code>,
<code>/sched/goroutines/running:goroutines</code>,
<code>/sched/goroutines/waiting:goroutines</code>,
<code>/sched/threads/total:threads</code>). <a
href="https://redirect.github.com/prometheus/client_golang/issues/1942">#1942</a></li>
<li>[FEATURE] prometheus: Add <code>WithUnit(unit string)</code> option
and explicit OpenMetrics unit support in <code>CounterOpts</code>,
<code>GaugeOpts</code>, <code>SummaryOpts</code>, and
<code>HistogramOpts</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1392">#1392</a></li>
<li>[FEATURE] prometheus: Expose descriptor construction error through
public <code>Err()</code> method on <code>Desc</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1902">#1902</a></li>
<li>[FEATURE] promhttp: Add opt-in
<code>HandlerOpts.CoalesceGather</code> to deduplicate concurrent
<code>Gather</code> calls so overlapping scrapes share one collection
cycle, preventing goroutine pile-up when the scrape rate outpaces
collection time. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1969">#1969</a></li>
<li>[FEATURE] promhttp: HTTP handlers created by <code>promhttp</code>
package now support metrics filtering by providing one or more
<code>name[]</code> query parameters. The default behavior when none are
provided remains the same, returning all metrics. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1925">#1925</a></li>
<li>[FEATURE] api/prometheus/v1: Add query formatting endpoint support
(<code>/format_query</code>) and <code>FormatQuery(ctx context.Context,
query string) (string, error)</code> method. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1846">#1846</a>,
<a
href="https://redirect.github.com/prometheus/client_golang/issues/1856">#1856</a></li>
<li>[FEATURE] api/prometheus/v1: Add support for
<code>/status/tsdb/blocks</code> endpoint via <code>TSDBBlocks(ctx
context.Context) ([]TSDBBlock, error)</code> method. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1896">#1896</a></li>
<li>[FEATURE] exp/api/remote: Export <code>BackoffConfig</code> to allow
customization when using <code>WithAPIBackoff</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1895">#1895</a></li>
<li>[FEATURE] exp/api/remote: Add <code>RetryCallBack</code> to allow
custom logging or handling on retry attempts in the remote write client.
<a
href="https://redirect.github.com/prometheus/client_golang/issues/1888">#1888</a>,
<a
href="https://redirect.github.com/prometheus/client_golang/issues/1890">#1890</a></li>
<li>[ENHANCEMENT] prometheus/collectors/version: Allow specifying custom
labels when registering the version collector. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1860">#1860</a></li>
<li>[ENHANCEMENT] api: Use cloned <code>http.DefaultTransport</code>
when constructing default HTTP clients to prevent accidental mutations
of shared global transport state. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1885">#1885</a></li>
<li>[BUGFIX] prometheus: Recover from collector panics during
<code>Gather()</code> and return an error instead of crashing the
process. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1961">#1961</a></li>
<li>[BUGFIX] prometheus: Fix <code>cpu-seconds</code> unit suffix
handling for metric
<code>go_cpu_classes_gc_mark_assist_cpu_seconds</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1991">#1991</a></li>
<li>[BUGFIX] promhttp: <code>InstrumentHandlerDuration</code> and
<code>InstrumentHandlerCounter</code> no longer panic when given an
observer/counter that does not implement
<code>ExemplarObserver</code>/<code>ExemplarAdder</code> (e.g. a
<code>SummaryVec</code>). The exemplar is dropped and the value is
recorded via the plain <code>Observe</code>/<code>Add</code> path,
matching the safe-cast already used by
<code>Timer.ObserveDurationWithExemplar</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2005">#2005</a></li>
<li>[BUGFIX] api/prometheus/v1: Fall back to <code>GET</code> requests
when <code>POST</code> requests return <code>403 Forbidden</code> or
method not allowed. <a
href="https://redirect.github.com/prometheus/client_golang/issues/2030">#2030</a></li>
<li>[BUGFIX] api: Respect context cancellation inside
<code>httpClient.Do</code>. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1971">#1971</a></li>
<li>[BUGFIX] exp/api/remote: Fix compression buffer pooling where
compressed buffers were released prematurely, causing corrupted
remote-write payloads. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1889">#1889</a></li>
<li>[BUGFIX] exp/api/remote: Reject malformed snappy payloads declaring
huge decoded sizes. Enforce a 32MB decoded-size limit to prevent OOM
from oversized remote-write requests. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1917">#1917</a></li>
<li>[BUGFIX] exp/api/remote: Ensure remote write v2 headers cannot be
returned on v1 requests. <a
href="https://redirect.github.com/prometheus/client_golang/issues/1927">#1927</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prometheus/client_golang/commit/0d88875bc7494ed8414e067756ff3399e3068c64"><code>0d88875</code></a>
Cut v1.25.0 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/2164">#2164</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/e9946ee846c4916ae4def4318b422b084aad687c"><code>e9946ee</code></a>
Cut v1.25.0-rc.0 (<a
href="https://redirect.github.com/prometheus/client_golang/issues/2154">#2154</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/de866d63fa67a78f723397d33624b89a439dbe73"><code>de866d6</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/client_golang/issues/2152">#2152</a>
from prometheus/dependabot/go_modules/api/prometheus...</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/a37302f6f0677b61954ae08077c85221c21f4883"><code>a37302f</code></a>
prometheus: fix modernize lint findings (<a
href="https://redirect.github.com/prometheus/client_golang/issues/2151">#2151</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/a3fa3807231bcb72fc56c10e65c72e1102013907"><code>a3fa380</code></a>
build(deps): bump google.golang.org/grpc</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/9da3fcc7c7b60c0565771518ecb9043df23f286a"><code>9da3fcc</code></a>
fix: updates for tsdb blocks handling (<a
href="https://redirect.github.com/prometheus/client_golang/issues/1928">#1928</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/0ecb5c28f53c957e8adabe6707ad8609641e50f0"><code>0ecb5c2</code></a>
api: match complete URL placeholders (<a
href="https://redirect.github.com/prometheus/client_golang/issues/2136">#2136</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/2ad001aa7b446e3a245de21c0f397c57289d7d94"><code>2ad001a</code></a>
exp/api/remote: reset buffer before generic marshal (<a
href="https://redirect.github.com/prometheus/client_golang/issues/2139">#2139</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/0db8d43ff97adbb75da10c57fceaf8fb8ee13d05"><code>0db8d43</code></a>
promhttp: vary negotiated metrics responses (<a
href="https://redirect.github.com/prometheus/client_golang/issues/2142">#2142</a>)</li>
<li><a
href="https://github.com/prometheus/client_golang/commit/b1f9c7a6cbb2cd6000042806b7f688cabb9d3771"><code>b1f9c7a</code></a>
Merge pull request <a
href="https://redirect.github.com/prometheus/client_golang/issues/2144">#2144</a>
from prometheus/dependabot/go_modules/exp/github.com...</li>
<li>Additional commits viewable in <a
href="https://github.com/prometheus/client_golang/compare/v1.23.2...v1.25.0">compare
view</a></li>
</ul>
</details>
<br />
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.23.0 to 0.24.0.
- [Commits](golang/sync@v0.23.0...v0.24.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis) from 2.38.0 to 2.40.0.
- [Release notes](https://github.com/alicebob/miniredis/releases)
- [Changelog](https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md)
- [Commits](alicebob/miniredis@v2.38.0...v2.40.0)

---
updated-dependencies:
- dependency-name: github.com/alicebob/miniredis/v2
  dependency-version: 2.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the npm-minor-patch group with 27 updates:

| Package | From | To |
| --- | --- | --- |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `5.0.3` | `5.0.5` |
| [axios](https://github.com/axios/axios) | `1.20.0` | `1.21.0` |
| [dotenv](https://github.com/motdotla/dotenv) | `18.0.8` | `18.0.9` |
| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.2.3` | `21.2.4` |
| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.2.3` | `21.2.4` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.6.5` | `26.6.6` |
| [@types/pdfkit](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pdfkit) | `0.17.6` | `0.17.7` |
| [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) | `26.15.3` | `26.18.0` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `5.0.3` | `5.0.5` |
| [framer-motion](https://github.com/motiondivision/motion) | `14.0.0` | `14.7.1` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `1.55.0` | `1.63.0` |
| [radix-ui](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radix-ui) | `1.7.0` | `1.8.1` |
| [react](https://github.com/react/react/tree/HEAD/packages/react) | `19.3.0` | `19.3.1` |
| [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | `19.3.0` | `19.3.1` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `7.18.4` | `7.18.5` |
| [rolldown](https://github.com/rolldown/rolldown/tree/HEAD/packages/rolldown) | `1.2.13` | `1.2.15` |
| [shadcn](https://github.com/shadcn-ui/ui/tree/HEAD/packages/shadcn) | `4.21.4` | `4.23.0` |
| [zod](https://github.com/colinhacks/zod) | `4.6.5` | `4.6.7` |
| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.6.1` | `10.6.2` |
| [eslint](https://github.com/eslint/eslint) | `10.12.0` | `10.13.0` |
| [jsdom](https://github.com/jsdom/jsdom) | `30.1.2` | `30.1.3` |
| [postcss](https://github.com/postcss/postcss) | `8.5.29` | `8.5.32` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.71.1` | `8.72.1` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.3.4` | `8.3.5` |
| [@react-email/render](https://github.com/resend/react-email/tree/HEAD/packages/render) | `2.1.0` | `2.2.0` |
| [bullmq](https://github.com/taskforcesh/bullmq) | `6.3.12` | `6.5.1` |
| [resend](https://github.com/resend/resend-node) | `6.32.1` | `6.35.0` |


Updates `@vitest/coverage-v8` from 5.0.3 to 5.0.5
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.5/packages/coverage-v8)

Updates `axios` from 1.20.0 to 1.21.0
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.20.0...v1.21.0)

Updates `dotenv` from 18.0.8 to 18.0.9
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](motdotla/dotenv@v18.0.8...v18.0.9)

Updates `@commitlint/cli` from 21.2.3 to 21.2.4
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.2.4/@commitlint/cli)

Updates `@commitlint/config-conventional` from 21.2.3 to 21.2.4
- [Release notes](https://github.com/conventional-changelog/commitlint/releases)
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md)
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.2.4/@commitlint/config-conventional)

Updates `@types/node` from 26.6.5 to 26.6.6
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/pdfkit` from 0.17.6 to 0.17.7
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pdfkit)

Updates `electron-builder` from 26.15.3 to 26.18.0
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/electron-builder@26.18.0/packages/electron-builder/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/electron-builder@26.18.0/packages/electron-builder)

Updates `vitest` from 5.0.3 to 5.0.5
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.5/packages/vitest)

Updates `framer-motion` from 14.0.0 to 14.7.1
- [Changelog](https://github.com/motiondivision/motion/blob/main/CHANGELOG.md)
- [Commits](motiondivision/motion@v14.0.0...v14.7.1)

Updates `lucide-react` from 1.55.0 to 1.63.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.63.0/packages/lucide-react)

Updates `radix-ui` from 1.7.0 to 1.8.1
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radix-ui/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radix-ui)

Updates `react` from 19.3.0 to 19.3.1
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.1/packages/react)

Updates `react-dom` from 19.3.0 to 19.3.1
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.3.1/packages/react-dom)

Updates `react-router-dom` from 7.18.4 to 7.18.5
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@7.18.5/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.18.5/packages/react-router-dom)

Updates `rolldown` from 1.2.13 to 1.2.15
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.2.15/packages/rolldown)

Updates `shadcn` from 4.21.4 to 4.23.0
- [Release notes](https://github.com/shadcn-ui/ui/releases)
- [Changelog](https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/CHANGELOG.md)
- [Commits](https://github.com/shadcn-ui/ui/commits/shadcn@4.23.0/packages/shadcn)

Updates `zod` from 4.6.5 to 4.6.7
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](colinhacks/zod@v4.6.5...v4.6.7)

Updates `autoprefixer` from 10.6.1 to 10.6.2
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](postcss/autoprefixer@10.6.1...10.6.2)

Updates `eslint` from 10.12.0 to 10.13.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.12.0...v10.13.0)

Updates `jsdom` from 30.1.2 to 30.1.3
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v30.1.2...v30.1.3)

Updates `postcss` from 8.5.29 to 8.5.32
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.29...8.5.32)

Updates `typescript-eslint` from 8.71.1 to 8.72.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.72.1/packages/typescript-eslint)

Updates `vite` from 8.3.4 to 8.3.5
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.3.5/packages/vite)

Updates `@react-email/render` from 2.1.0 to 2.2.0
- [Release notes](https://github.com/resend/react-email/releases)
- [Changelog](https://github.com/resend/react-email/blob/canary/packages/render/CHANGELOG.md)
- [Commits](https://github.com/resend/react-email/commits/@react-email/render@2.2.0/packages/render)

Updates `bullmq` from 6.3.12 to 6.5.1
- [Release notes](https://github.com/taskforcesh/bullmq/releases)
- [Commits](taskforcesh/bullmq@v6.3.12...v6.5.1)

Updates `resend` from 6.32.1 to 6.35.0
- [Release notes](https://github.com/resend/resend-node/releases)
- [Changelog](https://github.com/resend/resend-node/blob/canary/CHANGELOG.md)
- [Commits](resend/resend-node@v6.32.1...v6.35.0)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: axios
  dependency-version: 1.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: dotenv
  dependency-version: 18.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@commitlint/cli"
  dependency-version: 21.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@commitlint/config-conventional"
  dependency-version: 21.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@types/node"
  dependency-version: 26.6.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@types/pdfkit"
  dependency-version: 0.17.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: electron-builder
  dependency-version: 26.18.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: vitest
  dependency-version: 5.0.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: framer-motion
  dependency-version: 14.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: lucide-react
  dependency-version: 1.63.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: radix-ui
  dependency-version: 1.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: react
  dependency-version: 19.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: react-dom
  dependency-version: 19.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: react-router-dom
  dependency-version: 7.18.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: rolldown
  dependency-version: 1.2.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: shadcn
  dependency-version: 4.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: zod
  dependency-version: 4.6.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: autoprefixer
  dependency-version: 10.6.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: eslint
  dependency-version: 10.13.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: jsdom
  dependency-version: 30.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: postcss
  dependency-version: 8.5.32
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: typescript-eslint
  dependency-version: 8.72.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: vite
  dependency-version: 8.3.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@react-email/render"
  dependency-version: 2.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: bullmq
  dependency-version: 6.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: resend
  dependency-version: 6.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…-go (#316)

Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.23.0 to
0.24.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sync/commit/36f2d70ecde9857dc4e363242a1369c7645d6770"><code>36f2d70</code></a>
errgroup: modernize the usage of closures in goroutines</li>
<li>See full diff in <a
href="https://github.com/golang/sync/compare/v0.23.0...v0.24.0">compare
view</a></li>
</ul>
</details>
<br />
…0.0 in /scraper-go (#328)

Bumps
[github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis)
from 2.38.0 to 2.40.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/alicebob/miniredis/releases">github.com/alicebob/miniredis/v2's
releases</a>.</em></p>
<blockquote>
<h2>synctest, ZMPOP, BZMPOP, LMPOP</h2>
<ul>
<li>support testing/synctest (thanks <a
href="https://github.com/alexluong"><code>@​alexluong</code></a>)</li>
<li>fix RENAME panic (thanks <a
href="https://github.com/gianzanuz"><code>@​gianzanuz</code></a>)</li>
<li>fix SetError() (thanks <a
href="https://github.com/WillAbides"><code>@​WillAbides</code></a>)</li>
<li>fix LPOST COUNT (thanks <a
href="https://github.com/akezwang"><code>@​akezwang</code></a>)</li>
<li>support ZMPOP and BZMPOP (thanks <a
href="https://github.com/Lephiziel"><code>@​Lephiziel</code></a>)</li>
<li>fix HRANDFIELD (thanks <a
href="https://github.com/anuththedev"><code>@​anuththedev</code></a>)</li>
<li>support LMPOP (thanks <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>)</li>
</ul>
<h2>GEOSEARCH, HPERSIST, PZPOP*</h2>
<ul>
<li>support GEOSEARCH (thanks <a
href="https://github.com/fl4metf"><code>@​fl4metf</code></a>)</li>
<li>support HPERSIST, HTTL, HPTTL, and HSETEX (thanks <a
href="https://github.com/adamrothman"><code>@​adamrothman</code></a>)</li>
<li>support BZPOPMIN and BZPOPMAX (thanks <a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md">github.com/alicebob/miniredis/v2's
changelog</a>.</em></p>
<blockquote>
<h2>v2.40.0</h2>
<ul>
<li>support testing/synctest (thanks <a
href="https://github.com/alexluong"><code>@​alexluong</code></a>)</li>
<li>fix RENAME panic (thanks <a
href="https://github.com/gianzanuz"><code>@​gianzanuz</code></a>)</li>
<li>fix SetError() (thanks <a
href="https://github.com/WillAbides"><code>@​WillAbides</code></a>)</li>
<li>fix LPOST COUNT (thanks <a
href="https://github.com/akezwang"><code>@​akezwang</code></a>)</li>
<li>support ZMPOP and BZMPOP (thanks <a
href="https://github.com/Lephiziel"><code>@​Lephiziel</code></a>)</li>
<li>fix HRANDFIELD (thanks <a
href="https://github.com/anuththedev"><code>@​anuththedev</code></a>)</li>
<li>support LMPOP (thanks <a
href="https://github.com/LuisFigueroaG"><code>@​LuisFigueroaG</code></a>)</li>
</ul>
<h2>v2.39.0</h2>
<ul>
<li>support GEOSEARCH (thanks <a
href="https://github.com/fl4metf"><code>@​fl4metf</code></a>)</li>
<li>support HPERSIST, HTTL, HPTTL, and HSETEX (thanks <a
href="https://github.com/adamrothman"><code>@​adamrothman</code></a>)</li>
<li>support BZPOPMIN and BZPOPMAX (thanks <a
href="https://github.com/ChrisJr404"><code>@​ChrisJr404</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/alicebob/miniredis/commit/cbf5d02196dadb9a243c9cc2ae736c393365dd85"><code>cbf5d02</code></a>
changelog for v2.40.0</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/7052ec861a837e4921b9f7126ea04d1c995c0594"><code>7052ec8</code></a>
Merge pull request <a
href="https://redirect.github.com/alicebob/miniredis/issues/458">#458</a>
from LuisFigueroaG/feat/lmpop</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/79f0933a49658ce02ddcda66242826324099e616"><code>79f0933</code></a>
Merge pull request <a
href="https://redirect.github.com/alicebob/miniredis/issues/457">#457</a>
from januththedev/fix/hrandfield-wrongtype</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/18de1301cf7f26d46ce34da7c3da1555324e9ec1"><code>18de130</code></a>
keep local ip/port</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/9df7508ad63057a3386332ed8e8b9342102193f9"><code>9df7508</code></a>
int test</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/b29f632919f5c14be1c7ebb8fec664eeb83cffa3"><code>b29f632</code></a>
Add LMPOP command</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/ff68fbc3cf80d0f066b2128c0237096de0a1931d"><code>ff68fbc</code></a>
Return WRONGTYPE from HRANDFIELD on a non-hash key</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/e31e1a6a01d480ee113425d7625e50b1cbf354d3"><code>e31e1a6</code></a>
Merge pull request <a
href="https://redirect.github.com/alicebob/miniredis/issues/454">#454</a>
from Lephiziel/add-zmpop-bzmpop</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/77e6d267f31ddfbc80660f69dcce40b6d55055da"><code>77e6d26</code></a>
Document ZMPOP and BZMPOP support</li>
<li><a
href="https://github.com/alicebob/miniredis/commit/6691586259f35e261ca5d178a95a26b958f69eb6"><code>6691586</code></a>
Add ZMPOP and BZMPOP commands</li>
<li>Additional commits viewable in <a
href="https://github.com/alicebob/miniredis/compare/v2.38.0...v2.40.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/alicebob/miniredis/v2&package-manager=go_modules&previous-version=2.38.0&new-version=2.40.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will 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 version` will 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 dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
Bumps the npm-minor-patch group with 27 updates:

| Package | From | To |
| --- | --- | --- |
|
[@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)
| `5.0.3` | `5.0.5` |
| [axios](https://github.com/axios/axios) | `1.20.0` | `1.21.0` |
| [dotenv](https://github.com/motdotla/dotenv) | `18.0.8` | `18.0.9` |
|
[@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli)
| `21.2.3` | `21.2.4` |
|
[@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional)
| `21.2.3` | `21.2.4` |
|
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
| `26.6.5` | `26.6.6` |
|
[@types/pdfkit](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pdfkit)
| `0.17.6` | `0.17.7` |
|
[electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder)
| `26.15.3` | `26.18.0` |
|
[vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)
| `5.0.3` | `5.0.5` |
| [framer-motion](https://github.com/motiondivision/motion) | `14.0.0` |
`14.7.1` |
|
[lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)
| `1.55.0` | `1.63.0` |
|
[radix-ui](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radix-ui)
| `1.7.0` | `1.8.1` |
| [react](https://github.com/react/react/tree/HEAD/packages/react) |
`19.3.0` | `19.3.1` |
|
[react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom)
| `19.3.0` | `19.3.1` |
|
[react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom)
| `7.18.4` | `7.18.5` |
|
[rolldown](https://github.com/rolldown/rolldown/tree/HEAD/packages/rolldown)
| `1.2.13` | `1.2.15` |
| [shadcn](https://github.com/shadcn-ui/ui/tree/HEAD/packages/shadcn) |
`4.21.4` | `4.23.0` |
| [zod](https://github.com/colinhacks/zod) | `4.6.5` | `4.6.7` |
| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.6.1` |
`10.6.2` |
| [eslint](https://github.com/eslint/eslint) | `10.12.0` | `10.13.0` |
| [jsdom](https://github.com/jsdom/jsdom) | `30.1.2` | `30.1.3` |
| [postcss](https://github.com/postcss/postcss) | `8.5.29` | `8.5.32` |
|
[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)
| `8.71.1` | `8.72.1` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) |
`8.3.4` | `8.3.5` |
|
[@react-email/render](https://github.com/resend/react-email/tree/HEAD/packages/render)
| `2.1.0` | `2.2.0` |
| [bullmq](https://github.com/taskforcesh/bullmq) | `6.3.12` | `6.5.1` |
| [resend](https://github.com/resend/resend-node) | `6.32.1` | `6.35.0`
|

Updates `@vitest/coverage-v8` from 5.0.3 to 5.0.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitest-dev/vitest/releases">@​vitest/coverage-v8's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.5</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Keep vite default <code>fs.deny</code> with api token file  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a>,
<strong>Hiroshi Ogawa</strong> and <strong>Claude Opus 5.5</strong> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11578">vitest-dev/vitest#11578</a>
<a href="https://github.com/vitest-dev/vitest/commit/28dc1edfb"><!-- raw
HTML omitted -->(28dc1)<!-- raw HTML omitted --></a></li>
<li>Handle quoted file names in <code>--changed</code>  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11583">vitest-dev/vitest#11583</a>
<a href="https://github.com/vitest-dev/vitest/commit/14921e962"><!-- raw
HTML omitted -->(14921)<!-- raw HTML omitted --></a></li>
<li>Add <code>data</code> to the <code>import.meta.hot</code> stub  - 
by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11590">vitest-dev/vitest#11590</a>
<a href="https://github.com/vitest-dev/vitest/commit/3a8289ac3"><!-- raw
HTML omitted -->(3a828)<!-- raw HTML omitted --></a></li>
<li>Set <code>skip</code> in <code>skipIf</code>, ignore
<code>undefined</code> options  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11591">vitest-dev/vitest#11591</a>
<a href="https://github.com/vitest-dev/vitest/commit/d523a15f2"><!-- raw
HTML omitted -->(d523a)<!-- raw HTML omitted --></a></li>
<li>Skip builtin loading in async leak detector  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11598">vitest-dev/vitest#11598</a>
<a href="https://github.com/vitest-dev/vitest/commit/fe86a64c6"><!-- raw
HTML omitted -->(fe86a)<!-- raw HTML omitted --></a></li>
<li>Keep the import frame in native loader errors  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11599">vitest-dev/vitest#11599</a>
<a href="https://github.com/vitest-dev/vitest/commit/9697b3894"><!-- raw
HTML omitted -->(9697b)<!-- raw HTML omitted --></a></li>
<li>Run hook cleanups when a later hook fails  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11605">vitest-dev/vitest#11605</a>
<a href="https://github.com/vitest-dev/vitest/commit/6c5a44720"><!-- raw
HTML omitted -->(6c5a4)<!-- raw HTML omitted --></a></li>
<li>Release mocks of finished test files  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11607">vitest-dev/vitest#11607</a>
<a href="https://github.com/vitest-dev/vitest/commit/e9c3d72f0"><!-- raw
HTML omitted -->(e9c3d)<!-- raw HTML omitted --></a></li>
<li>Abort all running tests on cancel  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11606">vitest-dev/vitest#11606</a>
<a href="https://github.com/vitest-dev/vitest/commit/6621a72d6"><!-- raw
HTML omitted -->(6621a)<!-- raw HTML omitted --></a></li>
<li><strong>browser</strong>:
<ul>
<li>Ignore synthetic pagehide events  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11582">vitest-dev/vitest#11582</a>
<a href="https://github.com/vitest-dev/vitest/commit/ca0813584"><!-- raw
HTML omitted -->(ca081)<!-- raw HTML omitted --></a></li>
<li>Run plugin buildStart on server creation  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11593">vitest-dev/vitest#11593</a>
<a href="https://github.com/vitest-dev/vitest/commit/ea611e44c"><!-- raw
HTML omitted -->(ea611)<!-- raw HTML omitted --></a></li>
<li>Drop late connections of closed sessions  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11600">vitest-dev/vitest#11600</a>
<a href="https://github.com/vitest-dev/vitest/commit/f161e6df2"><!-- raw
HTML omitted -->(f161e)<!-- raw HTML omitted --></a></li>
<li>Wait 30s for the browser to close  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11601">vitest-dev/vitest#11601</a>
<a href="https://github.com/vitest-dev/vitest/commit/6498b666a"><!-- raw
HTML omitted -->(6498b)<!-- raw HTML omitted --></a></li>
<li>Run global setup once with instances  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11596">vitest-dev/vitest#11596</a>
<a href="https://github.com/vitest-dev/vitest/commit/8dd67c262"><!-- raw
HTML omitted -->(8dd67)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>reporter</strong>:
<ul>
<li>End reason
<code>&amp;[#39](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/39);failed&amp;[#39](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/39);</code>
on worker crash  -  by <a
href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/11568">vitest-dev/vitest#11568</a>
<a href="https://github.com/vitest-dev/vitest/commit/6ae8e89ff"><!-- raw
HTML omitted -->(6ae8e)<!-- raw HTML omitted --></a></li>
</ul>
</li>
</ul>
<h5>    <a
href="https://github.com/vitest-dev/vitest/compare/v5.0.4...v5.0.5">View
changes on GitHub</a></h5>
<h2>v5.0.4</h2>
<h3>   🚀 Features</h3>
<ul>
<li><strong>experimental</strong>:
<ul>
<li>Tag cache directories with CACHEDIR.TAG  -  by <a
href="https://github.com/lifeiscontent"><code>@​lifeiscontent</code></a>
in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/11461">vitest-dev/vitest#11461</a>
<a href="https://github.com/vitest-dev/vitest/commit/a8ea3c8fd"><!-- raw
HTML omitted -->(a8ea3)<!-- raw HTML omitted --></a></li>
<li>Support <code>test.ui.theme</code> option  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11499">vitest-dev/vitest#11499</a>
<a href="https://github.com/vitest-dev/vitest/commit/1da66405d"><!-- raw
HTML omitted -->(1da66)<!-- raw HTML omitted --></a></li>
<li>Highlight selector multiple matches in trace view  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a>,
<strong>Hiroshi Ogawa</strong> and <strong>Claude Opus 5.5</strong> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11489">vitest-dev/vitest#11489</a>
<a href="https://github.com/vitest-dev/vitest/commit/5abba1e1b"><!-- raw
HTML omitted -->(5abba)<!-- raw HTML omitted --></a></li>
<li>Print how many tests were affected and a total when running
<code>--changed</code>  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11424">vitest-dev/vitest#11424</a>
<a href="https://github.com/vitest-dev/vitest/commit/a23368585"><!-- raw
HTML omitted -->(a2336)<!-- raw HTML omitted --></a></li>
<li>Add an option to cache dependencies instead of statically parsing
them  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11515">vitest-dev/vitest#11515</a>
<a href="https://github.com/vitest-dev/vitest/commit/c06012ac8"><!-- raw
HTML omitted -->(c0601)<!-- raw HTML omitted --></a></li>
<li>Add fit and zoom controls to trace viewer  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a>,
<strong>Hiroshi Ogawa</strong> and <strong>Claude Opus 5.5</strong> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11490">vitest-dev/vitest#11490</a>
<a href="https://github.com/vitest-dev/vitest/commit/f5dd99ed0"><!-- raw
HTML omitted -->(f5dd9)<!-- raw HTML omitted --></a></li>
</ul>
</li>
</ul>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Fail the run on git and location filter errors  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11430">vitest-dev/vitest#11430</a>
<a href="https://github.com/vitest-dev/vitest/commit/30d0304d2"><!-- raw
HTML omitted -->(30d03)<!-- raw HTML omitted --></a></li>
<li>Enable fsModuleCache by default  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11435">vitest-dev/vitest#11435</a>
<a href="https://github.com/vitest-dev/vitest/commit/ad208cc29"><!-- raw
HTML omitted -->(ad208)<!-- raw HTML omitted --></a></li>
<li>Track project files and mocks with --changed  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11432">vitest-dev/vitest#11432</a>
<a href="https://github.com/vitest-dev/vitest/commit/b0f2b3bb9"><!-- raw
HTML omitted -->(b0f2b)<!-- raw HTML omitted --></a></li>
<li>Refactor caching, fix <code>:</code> in project and change the shape
of <code>results</code> cache  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11453">vitest-dev/vitest#11453</a>
<a href="https://github.com/vitest-dev/vitest/commit/9673c49a4"><!-- raw
HTML omitted -->(9673c)<!-- raw HTML omitted --></a></li>
<li>Keep full <code>$</code> string values when
<code>taskTitleValueFormatTruncate</code> is 0  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a>,
<strong>Hiroshi Ogawa</strong> and <strong>Claude Opus 5.5</strong> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11485">vitest-dev/vitest#11485</a>
<a href="https://github.com/vitest-dev/vitest/commit/4f7e1799b"><!-- raw
HTML omitted -->(4f7e1)<!-- raw HTML omitted --></a></li>
<li>Resolve node builtins in client environments  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11417">vitest-dev/vitest#11417</a>
<a href="https://github.com/vitest-dev/vitest/commit/56b319ac6"><!-- raw
HTML omitted -->(56b31)<!-- raw HTML omitted --></a></li>
<li>Fix module graph builtin externals after <a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/11421">#11421</a>
 -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a>,
<strong>Hiroshi Ogawa</strong> and <strong>Claude Opus 5.5</strong> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11491">vitest-dev/vitest#11491</a>
and <a
href="https://redirect.github.com/vitest-dev/vitest/issues/11421">vitest-dev/vitest#11421</a>
<a href="https://github.com/vitest-dev/vitest/commit/008e184cb"><!-- raw
HTML omitted -->(008e1)<!-- raw HTML omitted --></a></li>
<li>Wrap module mocks during in-source testing  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11505">vitest-dev/vitest#11505</a>
<a href="https://github.com/vitest-dev/vitest/commit/36d19cb00"><!-- raw
HTML omitted -->(36d19)<!-- raw HTML omitted --></a></li>
<li>Handle line endings in snapshot  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11522">vitest-dev/vitest#11522</a>
<a href="https://github.com/vitest-dev/vitest/commit/4c468aa40"><!-- raw
HTML omitted -->(4c468)<!-- raw HTML omitted --></a></li>
<li>Respect root in projects  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11521">vitest-dev/vitest#11521</a>
<a href="https://github.com/vitest-dev/vitest/commit/26642f793"><!-- raw
HTML omitted -->(26642)<!-- raw HTML omitted --></a></li>
<li>Resolve mocks in directories with spaces  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/11539">vitest-dev/vitest#11539</a>
<a href="https://github.com/vitest-dev/vitest/commit/caaef9416"><!-- raw
HTML omitted -->(caaef)<!-- raw HTML omitted --></a></li>
<li><strong>api</strong>:
<ul>
<li>Publish the api token atomically  -  by <a
href="https://github.com/umairnawaz333"><code>@​umairnawaz333</code></a>
in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/11323">vitest-dev/vitest#11323</a>
<a href="https://github.com/vitest-dev/vitest/commit/6f990fef1"><!-- raw
HTML omitted -->(6f990)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>browser</strong>:</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitest-dev/vitest/commit/7a825db43e2beca0b219d2eadaec334cb81af0c7"><code>7a825db</code></a>
chore: release v5.0.5 (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/11609">#11609</a>)</li>
<li><a
href="https://github.com/vitest-dev/vitest/commit/6a11cf66f99fa610b7364363d5ca42b66d994f40"><code>6a11cf6</code></a>
chore: release v5.0.4 (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/11554">#11554</a>)</li>
<li><a
href="https://github.com/vitest-dev/vitest/commit/2297d93a854968d2ffee6025700c69099e6b7f80"><code>2297d93</code></a>
fix(coverage): v8 browser memory leak between test files (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/11466">#11466</a>)</li>
<li><a
href="https://github.com/vitest-dev/vitest/commit/c74e099a9d17e24e9816878165af4818df84a631"><code>c74e099</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8/issues/11167">#11167</a>)</li>
<li>See full diff in <a
href="https://github.com/vitest-dev/vitest/commits/v5.0.5/packages/coverage-v8">compare
view</a></li>
</ul>
</details>
<br />

Updates `axios` from 1.20.0 to 1.21.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/releases">axios's
releases</a>.</em></p>
<blockquote>
<h2>v1.21.0 — October 21, 2026</h2>
<p>This release adds response timing and opt-in UTF-8 Basic
authentication, improves request handling across runtimes, and changes
how header defaults are recognized.</p>
<h2>⚠️ Breaking Changes &amp; Deprecations</h2>
<ul>
<li><strong>Header Defaults:</strong> Only plain objects, null-prototype
maps, and compatible <code>AxiosHeaders</code> instances are treated as
common or method-specific defaults; literal headers such as
<code>Link</code> are now preserved. Applications using custom class
instances as defaults must convert them to plain maps, for example
<code>{ post: { ...customDefaults } }</code>, or compatible
<code>AxiosHeaders</code>. Otherwise, those instances become literal
header values, including on requests using other methods. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11156">#11156</a></strong>)</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li><strong>Response Timing:</strong> Added
<code>response.duration</code>, in milliseconds, including on
<code>error.response</code> when present. Timing measures adapter
execution and excludes interceptors and transforms; streamed responses
stop timing when the stream becomes available. Axios replaces any
existing <code>duration</code> value supplied by a custom adapter.
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11214">#11214</a></strong>)</li>
<li><strong>UTF-8 Basic Authentication:</strong> Added
<code>transitional.encodeBasicAuthUsername: true</code> to support
Unicode usernames in XHR and Fetch requests. The option defaults to
<code>false</code>, preserving existing authentication behavior;
applications opting in should supply the original Unicode username and
remove manual pre-encoding workarounds. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11159">#11159</a></strong>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Fetch Compatibility:</strong> Restored requests in runtimes
such as Cloudflare Workers that reject the implicit <code>cache:
'default'</code>, while preserving explicit caller settings.
Response-size failures now retain their original
<code>ERR_BAD_RESPONSE</code> and request context when runtime wrappers
replace the underlying stream error. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11194">#11194</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11179">#11179</a></strong>)</li>
<li><strong>Runtime Consistency:</strong> Aligned encoded-byte size
accounting, multipart uploads, proxy routing, same-origin resolution,
parameter merging, and form serialization across adapters. Circular
parameters now reject with <code>ERR_BAD_OPTION_VALUE</code>, and sparse
or non-index numeric form fields serialize as keyed objects. With
<code>proxy: false</code>, native <code>proxyEnv</code> agents using
unsupported pool-management or TLS-session lifecycle overrides now
reject with <code>ERR_BAD_OPTION_VALUE</code>; construct those agents
without <code>proxyEnv</code>. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11242">#11242</a></strong>)</li>
<li><strong>Header Handling:</strong> Preserved headers named
<code>__proto__</code> using safe casing without changing the
<code>AxiosHeaders</code> instance prototype. Function matchers in
<code>has()</code>, <code>delete()</code>, and <code>clear()</code> now
receive the headers instance as <code>this</code>, matching their
declared contract. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11134">#11134</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11216">#11216</a></strong>)</li>
<li><strong>URL and Data URL Parsing:</strong> Accepted case-insensitive
supported URL schemes and Base64 markers, and corrected decoding of
percent-encoded Base64 data URLs. Node data URL allocation estimates
remain aligned with decoding so configured size limits apply before
allocation. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11138">#11138</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11163">#11163</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11294">#11294</a></strong>)</li>
<li><strong>Error Diagnostics:</strong> Preserved short reconstructed
request stacks and appended wrapped error stacks under <code>Caused
by:</code> so tooling that reads only <code>error.stack</code> retains
the original failure context. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11132">#11132</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11142">#11142</a></strong>)</li>
<li><strong>Interceptor Removal:</strong> Restored removal through
canonical numeric-string interceptor IDs, including after registry
compaction. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11139">#11139</a></strong>)</li>
<li><strong>Proxy TLS:</strong> HTTPS CONNECT tunnels now apply current
origin TLS options from an explicit <code>httpsAgent</code>, or from
<code>https.globalAgent</code> when no explicit agent is supplied. This
preserves process-wide custom CA settings through proxy tunnels.
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11178">#11178</a></strong>)</li>
<li><strong>XHR Lifecycle:</strong> Used asynchronous Cookie Store reads
for XSRF tokens where supported, preserving cookie fallback, timeout
accounting, and cancellation. Upload and download progress listeners are
now removed on completion, failure, timeout, and cancellation.
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11166">#11166</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11225">#11225</a></strong>)</li>
<li><strong>HTTP/2 Sessions:</strong> Stopped reusing sessions
immediately after GOAWAY and prevented draining sessions from scheduling
idle timers that could delay process exit. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11210">#11210</a></strong>)</li>
<li><strong>TypeScript Declarations:</strong> Exposed the
response-default marker as a public type to resolve <code>TS2527</code>
when consumers emit declarations involving unresolved response generics,
covering both ESM and CommonJS. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11125">#11125</a></strong>)</li>
</ul>
<h2>🔧 Maintenance &amp; Chores</h2>
<ul>
<li><strong>Configuration Performance:</strong> Reduced request
configuration merge overhead, particularly for requests with many
headers, while preserving merge semantics and prototype-pollution
guards. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11208">#11208</a></strong>)</li>
<li><strong>Same-Origin Checks:</strong> Removed obsolete Internet
Explorer detection without changing origin decisions in supported
environments. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11174">#11174</a></strong>)</li>
<li><strong>Dependencies:</strong> Updated <code>follow-redirects</code>
to 1.16.1 and refreshed development, documentation, test, and GitHub
Actions dependencies. Removed unused <code>dayjs</code> from the docs
package, root <code>chalk</code>, and <code>chai</code> from CJS module
tests. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11169">#11169</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11188">#11188</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11189">#11189</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11195">#11195</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11212">#11212</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11213">#11213</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11218">#11218</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11220">#11220</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11221">#11221</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11230">#11230</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11234">#11234</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11244">#11244</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11245">#11245</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11266">#11266</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11267">#11267</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11268">#11268</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11269">#11269</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11270">#11270</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11271">#11271</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11272">#11272</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11298">#11298</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11302">#11302</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11303">#11303</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11304">#11304</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11305">#11305</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11306">#11306</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11313">#11313</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11321">#11321</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11322">#11322</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11323">#11323</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11342">#11342</a></strong>)</li>
<li><strong>Documentation:</strong> Fixed interceptor test links,
updated README CDN examples to the published 1.20.0 bundle, and
corrected guidance on interceptor options and request lifecycle
ordering. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11228">#11228</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11149">#11149</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11335">#11335</a></strong>)</li>
<li><strong>Contributor Workflow:</strong> Consolidated agent
instructions in <code>AGENTS.md</code>, standardized PR labels, required
prerelease notes and validation evidence, and clarified that <code>npm
test</code> requires installed Playwright browsers. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11238">#11238</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11273">#11273</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11223">#11223</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11284">#11284</a></strong>)</li>
<li><strong>Sponsors and Support:</strong> Added HeroDevs, Code for
Japan, and Sweepico sponsor listings, refreshed sponsor data, and
documented extended security support for Axios v0. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11222">#11222</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11249">#11249</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11252">#11252</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11341">#11341</a></strong>)</li>
<li><strong>Proxy Regression Coverage:</strong> Added a long dotted
request-hostname test for <code>NO_PROXY</code> handling, extending
coverage of an existing denial-of-service fix. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11235">#11235</a></strong>)</li>
<li><strong>Release Preparation:</strong> Updated package version
metadata for 1.21.0. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11346">#11346</a></strong>)</li>
</ul>
<h2>🌟 New Contributors</h2>
<p>Welcome to our 24 new contributors. Thank you for helping improve
Axios:</p>
<ul>
<li><strong><a
href="https://github.com/lazerg"><code>@​lazerg</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11194">#11194</a></strong>)</li>
<li><strong><a
href="https://github.com/QIU-Guanzong"><code>@​QIU-Guanzong</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11228">#11228</a></strong>)</li>
<li><strong><a
href="https://github.com/Iams4kura"><code>@​Iams4kura</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11125">#11125</a></strong>)</li>
<li><strong><a
href="https://github.com/vjymisal0"><code>@​vjymisal0</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11179">#11179</a></strong>)</li>
<li><strong><a
href="https://github.com/jarrensj"><code>@​jarrensj</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11238">#11238</a></strong>)</li>
<li><strong><a
href="https://github.com/LineGu"><code>@​LineGu</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11132">#11132</a></strong>)</li>
<li><strong><a
href="https://github.com/luantaraschi"><code>@​luantaraschi</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11134">#11134</a></strong>)</li>
<li><strong><a
href="https://github.com/Cyberhet"><code>@​Cyberhet</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11284">#11284</a></strong>)</li>
<li><strong><a
href="https://github.com/nyxst4ck"><code>@​nyxst4ck</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11138">#11138</a></strong>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/axios/axios/blob/v1.x/CHANGELOG.md">axios's
changelog</a>.</em></p>
<blockquote>
<h2>v1.21.0 — October 21, 2026</h2>
<p>This release adds response timing and opt-in UTF-8 Basic
authentication, improves request handling across runtimes, and changes
how header defaults are recognized.</p>
<h2>⚠️ Breaking Changes &amp; Deprecations</h2>
<ul>
<li><strong>Header Defaults:</strong> Only plain objects, null-prototype
maps, and compatible <code>AxiosHeaders</code> instances are treated as
common or method-specific defaults; literal headers such as
<code>Link</code> are now preserved. Applications using custom class
instances as defaults must convert them to plain maps, for example
<code>{ post: { ...customDefaults } }</code>, or compatible
<code>AxiosHeaders</code>. Otherwise, those instances become literal
header values, including on requests using other methods. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11156">#11156</a></strong>)</li>
</ul>
<h2>🚀 New Features</h2>
<ul>
<li><strong>Response Timing:</strong> Added
<code>response.duration</code>, in milliseconds, including on
<code>error.response</code> when present. Timing measures adapter
execution and excludes interceptors and transforms; streamed responses
stop timing when the stream becomes available. Axios replaces any
existing <code>duration</code> value supplied by a custom adapter.
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11214">#11214</a></strong>)</li>
<li><strong>UTF-8 Basic Authentication:</strong> Added
<code>transitional.encodeBasicAuthUsername: true</code> to support
Unicode usernames in XHR and Fetch requests. The option defaults to
<code>false</code>, preserving existing authentication behavior;
applications opting in should supply the original Unicode username and
remove manual pre-encoding workarounds. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11159">#11159</a></strong>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li><strong>Fetch Compatibility:</strong> Restored requests in runtimes
such as Cloudflare Workers that reject the implicit <code>cache:
'default'</code>, while preserving explicit caller settings.
Response-size failures now retain their original
<code>ERR_BAD_RESPONSE</code> and request context when runtime wrappers
replace the underlying stream error. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11194">#11194</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11179">#11179</a></strong>)</li>
<li><strong>Runtime Consistency:</strong> Aligned encoded-byte size
accounting, multipart uploads, proxy routing, same-origin resolution,
parameter merging, and form serialization across adapters. Circular
parameters now reject with <code>ERR_BAD_OPTION_VALUE</code>, and sparse
or non-index numeric form fields serialize as keyed objects. With
<code>proxy: false</code>, native <code>proxyEnv</code> agents using
unsupported pool-management or TLS-session lifecycle overrides now
reject with <code>ERR_BAD_OPTION_VALUE</code>; construct those agents
without <code>proxyEnv</code>. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11242">#11242</a></strong>)</li>
<li><strong>Header Handling:</strong> Preserved headers named
<strong><code>__proto__</code></strong> using safe casing without
changing the <code>AxiosHeaders</code> instance prototype. Function
matchers in <code>has()</code>, <code>delete()</code>, and
<code>clear()</code> now receive the headers instance as
<code>this</code>, matching their declared contract. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11134">#11134</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11216">#11216</a></strong>)</li>
<li><strong>URL and Data URL Parsing:</strong> Accepted case-insensitive
supported URL schemes and Base64 markers, and corrected decoding of
percent-encoded Base64 data URLs. Node data URL allocation estimates
remain aligned with decoding so configured size limits apply before
allocation. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11138">#11138</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11163">#11163</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11294">#11294</a></strong>)</li>
<li><strong>Error Diagnostics:</strong> Preserved short reconstructed
request stacks and appended wrapped error stacks under <code>Caused
by:</code> so tooling that reads only <code>error.stack</code> retains
the original failure context. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11132">#11132</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11142">#11142</a></strong>)</li>
<li><strong>Interceptor Removal:</strong> Restored removal through
canonical numeric-string interceptor IDs, including after registry
compaction. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11139">#11139</a></strong>)</li>
<li><strong>Proxy TLS:</strong> HTTPS CONNECT tunnels now apply current
origin TLS options from an explicit <code>httpsAgent</code>, or from
<code>https.globalAgent</code> when no explicit agent is supplied. This
preserves process-wide custom CA settings through proxy tunnels.
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11178">#11178</a></strong>)</li>
<li><strong>XHR Lifecycle:</strong> Used asynchronous Cookie Store reads
for XSRF tokens where supported, preserving cookie fallback, timeout
accounting, and cancellation. Upload and download progress listeners are
now removed on completion, failure, timeout, and cancellation.
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11166">#11166</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11225">#11225</a></strong>)</li>
<li><strong>HTTP/2 Sessions:</strong> Stopped reusing sessions
immediately after GOAWAY and prevented draining sessions from scheduling
idle timers that could delay process exit. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11210">#11210</a></strong>)</li>
<li><strong>TypeScript Declarations:</strong> Exposed the
response-default marker as a public type to resolve <code>TS2527</code>
when consumers emit declarations involving unresolved response generics,
covering both ESM and CommonJS. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11125">#11125</a></strong>)</li>
</ul>
<h2>🔧 Maintenance &amp; Chores</h2>
<ul>
<li><strong>Configuration Performance:</strong> Reduced request
configuration merge overhead, particularly for requests with many
headers, while preserving merge semantics and prototype-pollution
guards. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11208">#11208</a></strong>)</li>
<li><strong>Same-Origin Checks:</strong> Removed obsolete Internet
Explorer detection without changing origin decisions in supported
environments. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11174">#11174</a></strong>)</li>
<li><strong>Dependencies:</strong> Updated <code>follow-redirects</code>
to 1.16.1 and refreshed development, documentation, test, and GitHub
Actions dependencies. Removed unused <code>dayjs</code> from the docs
package, root <code>chalk</code>, and <code>chai</code> from CJS module
tests. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11169">#11169</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11188">#11188</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11189">#11189</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11195">#11195</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11212">#11212</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11213">#11213</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11218">#11218</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11220">#11220</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11221">#11221</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11230">#11230</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11234">#11234</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11244">#11244</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11245">#11245</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11266">#11266</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11267">#11267</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11268">#11268</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11269">#11269</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11270">#11270</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11271">#11271</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11272">#11272</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11298">#11298</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11302">#11302</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11303">#11303</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11304">#11304</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11305">#11305</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11306">#11306</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11313">#11313</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11321">#11321</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11322">#11322</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11323">#11323</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11342">#11342</a></strong>)</li>
<li><strong>Documentation:</strong> Fixed interceptor test links,
updated README CDN examples to the published 1.20.0 bundle, and
corrected guidance on interceptor options and request lifecycle
ordering. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11228">#11228</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11149">#11149</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11335">#11335</a></strong>)</li>
<li><strong>Contributor Workflow:</strong> Consolidated agent
instructions in <code>AGENTS.md</code>, standardized PR labels, required
prerelease notes and validation evidence, and clarified that <code>npm
test</code> requires installed Playwright browsers. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11238">#11238</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11273">#11273</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11223">#11223</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11284">#11284</a></strong>)</li>
<li><strong>Sponsors and Support:</strong> Added HeroDevs, Code for
Japan, and Sweepico sponsor listings, refreshed sponsor data, and
documented extended security support for Axios v0. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11222">#11222</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11249">#11249</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11252">#11252</a></strong>,
<strong><a
href="https://redirect.github.com/axios/axios/pull/11341">#11341</a></strong>)</li>
<li><strong>Proxy Regression Coverage:</strong> Added a long dotted
request-hostname test for <code>NO_PROXY</code> handling, extending
coverage of an existing denial-of-service fix. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11235">#11235</a></strong>)</li>
<li><strong>Release Preparation:</strong> Updated package version
metadata for 1.21.0. (<strong><a
href="https://redirect.github.com/axios/axios/pull/11346">#11346</a></strong>)</li>
</ul>
<h2>🌟 New Contributors</h2>
<p>Welcome to our 24 new contributors. Thank you for helping improve
Axios:</p>
<ul>
<li><strong><a
href="https://github.com/lazerg"><code>@​lazerg</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11194">#11194</a></strong>)</li>
<li><strong><a
href="https://github.com/QIU-Guanzong"><code>@​QIU-Guanzong</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11228">#11228</a></strong>)</li>
<li><strong><a
href="https://github.com/Iams4kura"><code>@​Iams4kura</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11125">#11125</a></strong>)</li>
<li><strong><a
href="https://github.com/vjymisal0"><code>@​vjymisal0</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11179">#11179</a></strong>)</li>
<li><strong><a
href="https://github.com/jarrensj"><code>@​jarrensj</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11238">#11238</a></strong>)</li>
<li><strong><a
href="https://github.com/LineGu"><code>@​LineGu</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11132">#11132</a></strong>)</li>
<li><strong><a
href="https://github.com/luantaraschi"><code>@​luantaraschi</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11134">#11134</a></strong>)</li>
<li><strong><a
href="https://github.com/Cyberhet"><code>@​Cyberhet</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11284">#11284</a></strong>)</li>
<li><strong><a
href="https://github.com/nyxst4ck"><code>@​nyxst4ck</code></a></strong>
(<strong><a
href="https://redirect.github.com/axios/axios/pull/11138">#11138</a></strong>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/axios/axios/commit/aa54a5e1e0e50cd1a2561b854ae5490ff589d065"><code>aa54a5e</code></a>
docs: remove cancelled sponsors from README (<a
href="https://redirect.github.com/axios/axios/issues/11369">#11369</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/e6b79d9cef796ca3a903bb83e51d4752b019fd67"><code>e6b79d9</code></a>
chore(release): prepare release 1.21.0 (<a
href="https://redirect.github.com/axios/axios/issues/11346">#11346</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/fceeb10997ea71778ad8bc9671ad53e9195a707c"><code>fceeb10</code></a>
chore(deps-dev): bump the development_dependencies group with 4 updates
(<a
href="https://redirect.github.com/axios/axios/issues/11342">#11342</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/7d15df3f4cff1be2f1ed397f98170aadef399071"><code>7d15df3</code></a>
docs: refresh sponsor data (<a
href="https://redirect.github.com/axios/axios/issues/11341">#11341</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/8d8e84401d38c2a9c62acd18b3df17478a0caf6b"><code>8d8e844</code></a>
docs: correct interceptor options and request lifecycle guide (<a
href="https://redirect.github.com/axios/axios/issues/11335">#11335</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/326843a3902d73c9f6af9bad7b55e2412566a251"><code>326843a</code></a>
test(no-proxy): cover the request-hostname path with a long dotted host
(<a
href="https://redirect.github.com/axios/axios/issues/11235">#11235</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/e5195ecf405cf791b7ad2715156d6bc98b5f3928"><code>e5195ec</code></a>
feat(core): expose request duration on the response (<a
href="https://redirect.github.com/axios/axios/issues/11214">#11214</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/8d415e6af9cd50a8ae27331a53b4aaf9f7e24612"><code>8d415e6</code></a>
fix(headers): bind matcher callbacks to the headers instance (<a
href="https://redirect.github.com/axios/axios/issues/11216">#11216</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/b16dd7787807f7f15e5fb1a3e39b7d190c312b2e"><code>b16dd77</code></a>
fix(xhr): remove progress event listeners on request completion (<a
href="https://redirect.github.com/axios/axios/issues/11225">#11225</a>)</li>
<li><a
href="https://github.com/axios/axios/commit/790b2ca8b6d8486dde3ce54cda20990ba91b0831"><code>790b2ca</code></a>
chore(deps): bump the github-actions group with 3 updates (<a
href="https://redirect.github.com/axios/axios/issues/11323">#11323</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/axios/axios/compare/v1.20.0...v1.21.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `dotenv` from 18.0.8 to 18.0.9
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md">dotenv's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/motdotla/dotenv/compare/v18.0.8...v18.0.9">18.0.9</a>
(2026-10-14)</h2>
<h3>Changed</h3>
<ul>
<li>Permit DOTENV_PATH being empty string with the CLI (<a
href="https://redirect.github.com/motdotla/dotenv/pull/1076">#1076</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/motdotla/dotenv/commit/8d1ab850aa628781929f08bfd0d71ba1d1bf0a23"><code>8d1ab85</code></a>
18.0.9</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/59a40ce5876a661d3964cc0269208267174ea39b"><code>59a40ce</code></a>
changelog</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/88228bd02b9ce98a79442ddcd619e4c31199474c"><code>88228bd</code></a>
Merge pull request <a
href="https://redirect.github.com/motdotla/dotenv/issues/1076">#1076</a>
from Enesuygurs/fix/cli-empty-dotenv-path</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/bc6ef941200c2015ffcc17d40c4f8f76ffe24026"><code>bc6ef94</code></a>
fix(cli): load the default .env when DOTENV_PATH is empty</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/6d6e6c58074adc12131ec6ab6eac92fb92484dbc"><code>6d6e6c5</code></a>
Merge pull request <a
href="https://redirect.github.com/motdotla/dotenv/issues/1075">#1075</a>
from kory-kaai/test/fast-parser-branch-coverage</li>
<li><a
href="https://github.com/motdotla/dotenv/commit/10218f1b0fa1f83f0714dc3c8133d0daa54752ff"><code>10218f1</code></a>
test(parse-fast): cover the size-dependent and export-prefix
branches</li>
<li>See full diff in <a
href="https://github.com/motdotla/dotenv/compare/v18.0.8...v18.0.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `@commitlint/cli` from 21.2.3 to 21.2.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/conventional-changelog/commitlint/releases">@​commitlint/cli's
releases</a>.</em></p>
<blockquote>
<h2>v21.2.4</h2>
<h2><a
href="https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4">21.2.4</a>
(2026-10-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fix(load): replace config file arrays with seed arrays by <a
href="https://github.com/escapedcat"><code>@​escapedcat</code></a> in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5056">conventional-changelog/commitlint#5056</a></li>
<li>fix: update dependency jsonc to v3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5020">conventional-changelog/commitlint#5020</a></li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>perf(load): load typescript configs with jiti directly by <a
href="https://github.com/escapedcat"><code>@​escapedcat</code></a> in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5052">conventional-changelog/commitlint#5052</a></li>
</ul>
<h3>Docs, etc</h3>
<ul>
<li>docs: add AGENTS.md with commit type guidance by <a
href="https://github.com/escapedcat"><code>@​escapedcat</code></a> in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5053">conventional-changelog/commitlint#5053</a></li>
<li>test(ensure): pin case conversion of digits, punctuation and accents
by <a href="https://github.com/escapedcat"><code>@​escapedcat</code></a>
in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5055">conventional-changelog/commitlint#5055</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4">https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md">@​commitlint/cli's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4">21.2.4</a>
(2026-10-18)</h2>
<p><strong>Note:</strong> Version bump only for package
<code>@​commitlint/cli</code></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/conventional-changelog/commitlint/commit/d8e36560a485c5e5a0a74ebbb48591b3e2e08ca7"><code>d8e3656</code></a>
v21.2.4</li>
<li>See full diff in <a
href="https://github.com/conventional-changelog/commitlint/commits/v21.2.4/@commitlint/cli">compare
view</a></li>
</ul>
</details>
<br />

Updates `@commitlint/config-conventional` from 21.2.3 to 21.2.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/conventional-changelog/commitlint/releases">@​commitlint/config-conventional's
releases</a>.</em></p>
<blockquote>
<h2>v21.2.4</h2>
<h2><a
href="https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4">21.2.4</a>
(2026-10-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>fix(load): replace config file arrays with seed arrays by <a
href="https://github.com/escapedcat"><code>@​escapedcat</code></a> in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5056">conventional-changelog/commitlint#5056</a></li>
<li>fix: update dependency jsonc to v3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5020">conventional-changelog/commitlint#5020</a></li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>perf(load): load typescript configs with jiti directly by <a
href="https://github.com/escapedcat"><code>@​escapedcat</code></a> in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5052">conventional-changelog/commitlint#5052</a></li>
</ul>
<h3>Docs, etc</h3>
<ul>
<li>docs: add AGENTS.md with commit type guidance by <a
href="https://github.com/escapedcat"><code>@​escapedcat</code></a> in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5053">conventional-changelog/commitlint#5053</a></li>
<li>test(ensure): pin case conversion of digits, punctuation and accents
by <a href="https://github.com/escapedcat"><code>@​escapedcat</code></a>
in <a
href="https://redirect.github.com/conventional-changelog/commitlint/pull/5055">conventional-changelog/commitlint#5055</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4">https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md">@​commitlint/config-conventional's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/conventional-changelog/commitlint/compare/v21.2.3...v21.2.4">21.2.4</a>
(2026-10-18)</h2>
<p><strong>Note:</strong> Version bump only for package
<code>@​commitlint/config-conventional</code></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/conventional-changelog/commitlint/commit/d8e36560a485c5e5a0a74ebbb48591b3e2e08ca7"><code>d8e3656</code></a>
v21.2.4</li>
<li>See full diff in <a
href="https://github.com/conventional-changelog/commitlint/commits/v21.2.4/@commitlint/config-conventional">compare
view</a></li>
</ul>
</details>
<br />

Updates `@types/node` from 26.6.5 to 26.6.6
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />

Updates `@types/pdfkit` from 0.17.6 to 0.17.7
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pdfkit">compare
view</a></li>
</ul>
</details>
<br />

Updates `electron-builder` from 26.15.3 to 26.18.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/electron-userland/electron-builder/releases">electron-builder's
releases</a>.</em></p>
<blockquote>
<h2>electron-builder@26.18.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(nsis): warn when differentialPackage &quot;store-asar&quot;
finds no app.asar (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10246">#10246</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10249">electron-userland/electron-builder#10249</a></li>
<li>test(archive): make stored-member assertions independent of 7-Zip
folder order (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10247">#10247</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10251">electron-userland/electron-builder#10251</a></li>
<li>fix(nsis): keep installer extraction in sync with the payload format
when useZip is set (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10248">#10248</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10252">electron-userland/electron-builder#10252</a></li>
<li>fix(pnpm): read the app's own package.json when its name matches a
dependency (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10278">#10278</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10282">electron-userland/electron-builder#10282</a></li>
<li>fix: import blake2b from <code>@noble/hashes/blake2.js</code> by <a
href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10292">electron-userland/electron-builder#10292</a></li>
<li>fix: encode GitLab package path segments (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10140">#10140</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10299">electron-userland/electron-builder#10299</a></li>
<li>fix(updater): validate cached update filenames (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10115">#10115</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10300">electron-userland/electron-builder#10300</a></li>
<li>fix: escape Squirrel project URLs in nuspec XML (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10141">#10141</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10301">electron-userland/electron-builder#10301</a></li>
<li>fix: enforce workspace path boundaries for asar (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10135">#10135</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10314">electron-userland/electron-builder#10314</a></li>
<li>fix(app-builder-lib): bump <code>@​electron/rebuild</code> to 4.2.1
(v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10308">#10308</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10315">electron-userland/electron-builder#10315</a></li>
<li>feat(blockmap): finer content-defined blocks for the stored app.asar
region (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10235">#10235</a>)
by <a href="https://github.com/imlucas"><code>@​imlucas</code></a> in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10309">electron-userland/electron-builder#10309</a></li>
<li>fix(pnpm): collect packages that <code>pnpm list</code> only prints
as deduped stubs by <a
href="https://github.com/mmaietta"><code>@​mmaietta</code></a> in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10323">electron-userland/electron-builder#10323</a></li>
<li>fix: contain mapped app file destinations (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10137">#10137</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10330">electron-userland/electron-builder#10330</a></li>
<li>fix(snap): don't request allow-sandbox by default for core24 (v26
backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10294">#10294</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10331">electron-userland/electron-builder#10331</a></li>
<li>fix(snap): don't delete chrome-sandbox from the shared
linux-unpacked dir in template builds (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10327">#10327</a>)
by <a href="https://github.com/yokomohoyo"><code>@​yokomohoyo</code></a>
in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10333">electron-userland/electron-builder#10333</a></li>
<li>fix(forge): make electron-builder makers loadable by current
Electron Forge (v26 backport) by <a
href="https://github.com/claude"><code>@​claude</code></a>[bot] in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10352">electron-userland/electron-builder#10352</a></li>
<li>chore(deploy): Release (v26) by <a
href="https://github.com/electron-builder-release-bot"><code>@​electron-builder-release-bot</code></a>[bot]
in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10250">electron-userland/electron-builder#10250</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/electron-userland/electron-builder/compare/electron-builder@26.17.0...electron-builder@26.18.0">https://github.com/electron-userland/electron-builder/compare/electron-builder@26.17.0...electron-builder@26.18.0</a></p>
<h2>electron-builder@26.17.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: detect pnpm workspace root on Windows without shelling out to
pwd (v26 backport) by <a
href="https://github.com/claude"><code>@​claude</code></a>[bot] in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10189">electron-userland/electron-builder#10189</a></li>
<li>test: pin globTest &quot;failed peer dep&quot; deps via lockfile
fixture and update snapshot for moment 2.31.0 (v26 backport of <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/10197">#10197</a>)
by <a href="https://github.com/claude"><code>@​claude</code></a>[bot] in
<a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10198">electron-userland/electron-builder#10198</a></li>
<li>feat(nsis): &quot;store-asar&quot; mode for proportional
differential updates (v26 backport) by <a
href="https://github.com/claude"><code>@​claude</code></a>[bot] in <a
href="https://redirect.github.com/electron-userland/electron-builder/pull/10201">electron-userland/electron-builder#10201</a></li>
<li>test(v26): bump package manager pins and disable dependency
lifecycle scripts in fixture installs (backport <a
href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-buil…
hltav and others added 5 commits November 2, 2026 01:06
…a dos providers (#332)

## Descricao

Distribui os oito providers em 21 janelas automáticas diárias, com
seleção efetiva por ProviderID e coordenação pelo lock global existente.
Implementa grupos fixos Greenhouse, deadline absoluto, cobertura de
keywords LinkedIn/Adzuna e orçamentos operacionais Gupy/Jooble. Preserva
resultados parciais no catálogo PostgreSQL e na projeção Valkey, com
status operacional compatível com falhas e timeouts. A integração foi
validada com serviços descartáveis; a ativação automática em DEV
permanece condicionada à configuração e à validação operacional.

## Linear 


[PAV-178](https://linear.app/candidateappbr/issue/PAV-178/jobs-processor-otimizar-agendamento-e-distribuicao-de-carga-dos)

Close PAV-178

## Como foi testado

Resultados comprovados nas rodadas anteriores:

| Validação | Resultado |
|---|---|
| Testes Go direcionados | 475 aprovados |
| Testes Go com detector de corridas | 414 aprovados |
| Integração Go com PostgreSQL e Valkey descartáveis | 15 aprovados |
| Testes backend direcionados | 56 aprovados |
| Testes backend com Valkey real descartável | 18 aprovados |
| Build Go e verificação TypeScript | Aprovados |
| Hotfix final: `cronjob` e `runlock` com `-race` | Aprovados |

Esses números representam execuções distintas e **não devem ser somados
como casos únicos**.

Na preparação deste PR, os comandos `npm test` de backend e frontend
foram tentados conforme a skill. Ambos terminaram antes de executar
casos, com código 127 e `vitest: not found`, pois esta worktree está sem
dependências locais. Não foram instaladas dependências nem repetidas as
integrações anteriores.

### Reprodução direcionada

Com dependências instaladas e sem apontar configurações de teste para
serviços compartilhados:

```bash
cd scraper-go
go test ./internal/config ./internal/cronjob ./internal/runlock ./internal/pipeline ./internal/adapters/... -count=1 -timeout=60s
go test -race ./internal/cronjob ./internal/runlock -count=1 -timeout=40s
```

Para as integrações, configurar `PAV125_TEST_DATABASE_URL` e
`PAV125_TEST_VALKEY_URL` exclusivamente para instâncias descartáveis
dedicadas:

```bash
cd scraper-go
go test ./internal/catalogops ./internal/pipeline -count=1 -timeout=120s
```

A integração backend de busca versionada utiliza:

```bash
cd backend
npx --no-install vitest run tests/integration/jobs.valkey.test.ts
npx --no-install tsc --noEmit -p tsconfig.json
```

Não executar seeds ou scrapers reais como parte desses testes.

## Objetivo

Reduzir concentração de carga entre providers e distribuir a atualização
do catálogo ao longo do dia, preservando os controles existentes de
concorrência, persistência e coordenação.

A grade é a configuração operacional acordada. A caracterização completa
de duração, CPU, memória e volume dos oito providers ainda deverá ser
medida em DEV; este PR não apresenta essa capacidade como comprovada.

## Resumo das alterações

| Etapa | Entrega |
|---|---|
| P0 — `bf554a5` | Preset com 21 janelas, timezone local, identidade
independente e deduplicação das ocorrências. |
| P1 — `284d1c9` | Manifesto versionado com quatro grupos fixos
Greenhouse. |
| P2 — `85793e5` | Deadline absoluto, reservas para finalização,
admissão pontual e coordenação persistente. |
| P3 — `814026a` | Cobertura das keywords elegíveis LinkedIn/Adzuna por
janela, preservando modos legados. |
| P3.1 — `9fad872` | Orçamentos e cursor Gupy, preservação parcial e
reserva atômica da cota Jooble. |
| P4 — `95e4e34` | Testes finais de cobertura/integração e correção da
admissão tardia causada pela latência do Valkey. |

A branch também inclui os commits anteriores da PAV-178: seleção por
ProviderID, controle de ativação, preservação parcial, bloqueio de seeds
demonstrativos, otimizações e observabilidade do pipeline.

## Arquivos e módulos afetados

- **Configuração:** `scraper-go/internal/config/`, incluindo
`provider_schedule.go`.
- **Scheduler:** `scraper-go/internal/cronjob/`, incluindo despacho,
manifesto Greenhouse, cursor Gupy e Retry-After.
- **Coordenação:** `scraper-go/internal/runlock/`.
- **Pipeline e dados:** `pipeline/`, `catalog/`, `catalogops/`,
`jobstore/`, `jobindex/`, `classifier/` e `metrics/`.
- **Providers:** adapters e respectivos testes de cobertura, orçamento e
resultados parciais.
- **Servidor Go:** contratos administrativos em
`scraper-go/cmd/server/`.
- **Backend:** integração administrativa Node → Go, tipos operacionais,
proteção de seeds e testes.
- **Docker:** `docker/docker-compose.app.yml` e
`docker/docker-compose.migrate.yml`.
- **Documentação commitada:** `docs/PAV-178-dev.md`,
`docs/PAV-178-PR.md` e documentação técnica do Processor.

Nenhuma alteração da PAV-181 integra este PR.

## Arquitetura e funcionamento do scheduler

O preset `SCRAPER_PROVIDER_WINDOWS=pav178` reutiliza o scheduler e o
lock distribuído existentes. A configuração de janelas substitui o
acionamento periódico legado nesse modo.

Todos os horários abaixo são locais em `America/Sao_Paulo`:

| Provider | Janelas |
|---|---|
| Greenhouse | 00h, 06h, 11h, 17h |
| Gupy | 01h, 07h, 12h, 18h |
| InHire | 02h, 08h, 13h, 19h |
| LinkedIn | 03h, 09h, 16h |
| Adzuna | 04h, 14h |
| Lever | 05h, 15h |
| The Muse | 10h |
| Jooble | 20h |

São 21 ocorrências diárias, com IDs estáveis e claims persistidos por
data local.

- Admissão limitada à tolerância de 30 segundos após o horário previsto.
- Revalidação temporal após a coordenação no Valkey, enquanto o lease
global está adquirido.
- Admissão tardia registrada como `missed:admission_late`, sem executar
o provider.
- Ocorrências impedidas não geram backlog, catch-up ou compensação em
outro horário.
- Execução limitada a 55 minutos totais, com reservas internas para
processamento e liberação.
- Conclusão antecipada aguarda a próxima janela; não encadeia outro
provider.
- Pausa global persistente de cinco minutos também protege disparos
manuais.
- Claims, checkpoints e coordenação dependem da retenção do Valkey.

### Cobertura dos providers

- **Greenhouse:** manifesto com 3.339 identidades estáveis, distribuídas
em 850/850/850/789. Falhas e timeouts não redistribuem empresas entre
janelas. Alterações do catálogo exigem revisão explícita do manifesto.
- **Gupy:** até 120 queries por janela automática, cinco páginas por
query e 600 tentativas HTTP, incluindo retries. Coleta sequencial,
detecção de páginas repetidas, cursor persistente e preservação parcial.
- **LinkedIn/Adzuna:** conjunto configurado de keywords elegíveis por
ocorrência; limites de paginação, taxa e deadline continuam aplicáveis.
- **InHire:** catálogo de 496 tenants.
- **Lever:** catálogo de 44 empresas em ambas as janelas.
- **The Muse:** limite padrão de 50 páginas, com preservação dos
resultados parciais.
- **Jooble:** uma janela diária às 20h, até 37 keywords, cursor e
cadência existentes; teto compartilhado de até 150 tentativas HTTP/dia,
reservado atomicamente antes do envio.

Cobertura planejada não significa conclusão garantida quando a fonte
limita requisições ou o deadline é atingido.

## Validações realizadas

Foram cobertos seleção exclusiva, horários locais, deduplicação após
reinício, sobreposição, timeout, cancelamento, resultados parciais,
persistência/indexação, quotas e cobertura dos catálogos.

Os testes finais do hotfix simulam a latência da coordenação sem sleeps
longos e confirmam:

- admissão dentro da tolerância;
- rejeição depois da tolerância;
- ausência de execução do provider rejeitado;
- liberação do lock e dos recursos de execução;
- ocorrência perdida consumida após reinício;
- próxima janela elegível;
- preservação da pausa global.

A comparação com `upstream/develop` não apresentou conflitos textuais na
simulação de merge. Os testes anteriores foram executados na branch
PAV-178, não sobre uma integração com os 34 commits posteriores do
destino.

## Impacto de banco e migrations

Não há nova migration neste PR.

O catálogo PostgreSQL, IDs estáveis, transações e revisões de indexação
existentes são preservados. Falhas de indexação deixam pendências
identificáveis por `indexed_revision < revision`, recuperáveis pelos
mecanismos existentes.

O deploy deixa de executar automaticamente o seed demonstrativo.
Migrations e backfill legítimo de PII continuam no fluxo.

O startup exige o catálogo migrado e recusa estados que demandem
backfill/reconstrução explícita. Não há limpeza ou reconstrução
automática de índices.

## Impacto de configuração e variáveis de ambiente

A origem das configurações do scraper é o **`.env` global da raiz do
repositório**, não o `.env` do backend.

O Compose principal inclui os arquivos modulares com `project_directory:
.`. O serviço `scraper-go`:

- recebe `./.env` por `env_file`;
- monta esse arquivo em `/app/.env` como somente leitura;
- recebe valores explícitos em `environment`, que prevalecem sobre
`env_file`;
- recebe `DATABASE_URL` pelo módulo de migrations e `VALKEY_URL` pela
configuração do serviço.

O carregamento Go utiliza `godotenv.Load`, sem sobrescrever variáveis já
presentes no processo.

| Variável | Configuração/efeito |
|---|---|
| `SCRAPER_SCHEDULER_ENABLED` | **Manter `false` em DEV até ativação
controlada.** O padrão do código é `true`. |
| `SCRAPER_PROVIDER_WINDOWS` | `pav178` seleciona a grade. Vazio mantém
o modo legado quando habilitado. |
| `SCRAPER_SCHEDULE_TIMEZONE` | O preset utiliza `America/Sao_Paulo`;
rejeita timezone incompatível. |
| `SCRAPER_SCRAPE_TIMEOUT` | Padrão `50m`; coleta limitada também pelo
deadline total e reservas de finalização. |
| `GUPY_AUTO_QUERY_LIMIT` | Padrão `120`, exclusivo do modo automático
correspondente. |
| `GUPY_AUTO_MAX_PAGES` | Padrão `5`. |
| `GUPY_AUTO_MAX_HTTP_ATTEMPTS` | Padrão `600`, incluindo retries. |
| `JOOBLE_DAILY_HTTP_LIMIT` | Padrão `150`; aceita valores entre 1 e
150. |
| `SCRAPER_GREENHOUSE_BATCH_SIZE` | Mantido para o fluxo legado/manual;
não substitui os grupos fixos do preset. |

`SCRAPER_SCHEDULER_ENABLED`, os três limites automáticos Gupy e
`JOOBLE_DAILY_HTTP_LIMIT` chegam pelo `env_file`, sem override explícito
nesses campos do Compose. Timeout, janelas, concorrência, batches e
parâmetros do lock possuem entradas explícitas em `environment`.

### Flags, credenciais e catálogos

| Provider | Requisitos |
|---|---|
| LinkedIn | Registrado sem flag ou credencial obrigatória nesse
registry. |
| Adzuna | `ADZUNA_APP_ID` e `ADZUNA_APP_KEY`. |
| Gupy | `GUPY_ENABLED=true`; preservar as flags de discovery/sweep
existentes. |
| InHire | `INHIRE_ENABLED=true`; catálogo indicado por
`INHIRE_TENANTS_FILE`. |
| Greenhouse | `GREENHOUSE_ENABLED=true`; catálogo indicado por
`GREENHOUSE_COMPANIES_FILE`, compatível com o manifesto. |
| Lever | `LEVER_ENABLED=true`; catálogo indicado por
`LEVER_COMPANIES_FILE`. O padrão do Compose é `false`. |
| The Muse | Registrado sem flag; `THEMUSE_API_KEY` é opcional no
adapter. |
| Jooble | `JOOBLE_API_KEY` e Valkey disponível para controle de quota.
|

Com `SCRAPER_PROVIDER_WINDOWS=pav178`, os oito providers precisam estar
disponíveis no registry **mesmo com o scheduler desabilitado**, pois a
validação ocorre no startup.

Também permanecem necessários PostgreSQL/Valkey, configurações de
concorrência e parâmetros de lease existentes. Nenhuma credencial ou
arquivo `.env` está incluído neste PR.

## Impacto de contratos e APIs

Preserva o disparo sem seleção explícita e adiciona seleção
administrativa por provider, com validação e encaminhamento Node → Go.

O status administrativo expõe resumo da última execução e janelas
configuradas. Timeout com vagas persistidas é distinguido de sucesso
completo.

A integração mantém tratamento de seleção inválida, conflito de
execução, rate limit/Retry-After e indisponibilidade de coordenação.

A busca backend utiliza a versão ativa em `scraper:jobs:index-version` e
documentos em `scraper:jobs:ns:<versao>:job:<id>`. Índices legados com
IDs sem documentos não recuperam conteúdo perdido.

## Segurança e privacidade

Mantém autenticação e autorização administrativas existentes no backend.
Os endpoints administrativos Go devem permanecer acessíveis pela rede
interna prevista.

Não inclui credenciais, `.env`, binários ou Compose temporário. Não
executa seeds, coletas reais, reconstruções de índice ou alterações em
produção.

As integrações utilizaram dados e serviços descartáveis.

## Riscos e limitações

- **Pré-condição de DEV:** confirmar migrations, disponibilidade do
catálogo e versão ativa do índice. Estado legado inconsistente pode
impedir o startup.
- **Pré-condição do preset:** habilitar os providers exigidos e
provisionar suas credenciais; Lever vem desabilitado por padrão.
- **Validação pendente:** repetir CI após a integração com o `develop`
atualizado.
- **Medição pendente:** duração, recursos e cobertura real dos oito
providers em DEV. Quotas operacionais não comprovam limites contratuais
das fontes.
- **Documentação pendente:** parte dos documentos commitados ainda
descreve o fluxo legado. O handoff
`docs/PAV-178-scheduler-automatico.md` permanece não rastreado e não
integra este PR.
- Mudanças no catálogo Greenhouse e na lista de queries Gupy exigem
tratamento explícito de manifesto/cursor.
- Histórico detalhado em memória não constitui histórico SQL durável.
- Deadline e shutdown dependem da cooperação dos adapters com o
cancelamento. Encerramento abrupto do processo pode perder resultados
ainda em memória.
- Os testes completos backend/frontend não foram reexecutados nesta
preparação por ausência de dependências locais.

## Rollback

Manter ou retornar `SCRAPER_SCHEDULER_ENABLED=false` e utilizar a imagem
anterior aprovada em DEV, sem apagar catálogo, índices, checkpoints ou
volumes.

Verificar a compatibilidade dos estados persistidos antes de voltar a um
scheduler legado. Não remover claims ou contornar locks para recuperar
ocorrências perdidas.

Rollback de namespace do índice, quando necessário, exige procedimento
separado e validação dos documentos existentes.

## Fora do escopo

Deploy, ativação automática, merge, mudanças da PAV-181, reconstrução de
índices em produção, remoção de dados demonstrativos já existentes e
novas migrations.

Também ficam fora do escopo novas políticas de frequência, aumento de
concorrência e um dashboard/histórico completo de execuções —
relacionado à PAV-179.

## Checklist final

- [x] P0, P1, P2, P3, P3.1 e P4 registradas na branch.
- [x] Lock global, concorrência e resultados parciais preservados nos
testes.
- [x] Hotfix de admissão tardia validado com `-race`.
- [x] Integrações PostgreSQL/Valkey descartáveis aprovadas nas rodadas
anteriores.
- [x] Comparação atualizada e simulação sem conflitos.
- [x] Sem alterações de frontend/PAV-181 ou arquivos locais excluídos do
escopo.
- [ ] Executar CI e regressões sobre a integração com `develop`
atualizado.
- [ ] Atualizar documentação operacional legada antes da ativação
automática.
- [ ] Confirmar flags, credenciais, catálogo e índice no destino DEV.
- [ ] Publicar inicialmente com scheduler desabilitado.
- [ ] Medir os oito providers e validar capacidade antes da ativação
controlada.
@hltav
hltav merged commit bd15c51 into master Nov 2, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in JobAtlas – Kanban Nov 2, 2026
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.

3 participants