Refactor download handling and improve test management - #26
Conversation
…oad handling and improve update installation scripts
… and streamline directory resolution logic
…r consistent version tagging
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
🚧 Files skipped from review as they are similar to previous changes (4)
📝 WalkthroughWalkthroughO PR altera o download de atualizações, configura diretórios temporários, ajusta o relançamento em Linux e macOS, atualiza a versão para ChangesFluxo de atualização
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant UpdateModal
participant marked
participant DOMPurify
UpdateModal->>marked: converte as notas Markdown em HTML
marked-->>UpdateModal: retorna HTML
UpdateModal->>DOMPurify: sanitiza o HTML
DOMPurify-->>UpdateModal: retorna HTML sanitizado
UpdateModal->>UpdateModal: renderiza as notas de release
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
backend/src/test/java/com/devaulty/backend/application/impl/release/DownloadUpdateImplTest.java (1)
49-57: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win
@TempDirnão isola uma propriedade de sistema compartilhada.Se as classes rodarem em paralelo, uma sobrescreve
devaulty.temp.dirda outra e os testes passam a usar o diretório incorreto.
backend/src/test/java/com/devaulty/backend/application/impl/release/DownloadUpdateImplTest.java#L49-L57: adicione@ResourceLock(Resources.SYSTEM_PROPERTIES)ou injete o resolvedor de diretório.backend/src/test/java/com/devaulty/backend/application/impl/release/InstallUpdateImplTest.java#L36-L44: aplique o mesmo bloqueio/abstração.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@backend/src/test/java/com/devaulty/backend/application/impl/release/DownloadUpdateImplTest.java` around lines 49 - 57, Os testes compartilham a propriedade de sistema devaulty.temp.dir e não são seguros em execução paralela. Em DownloadUpdateImplTest.java (linhas 49-57) e InstallUpdateImplTest.java (linhas 36-44), adicione o bloqueio JUnit ResourceLock para Resources.SYSTEM_PROPERTIES aos testes ou classes que configuram essa propriedade, preservando a configuração e limpeza existentes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@backend/src/main/java/com/devaulty/backend/application/impl/release/DownloadUpdateImpl.java`:
- Around line 104-127: Move the blocking outputStream.write operation in the
downloadAsset concatMap within DownloadUpdateImpl to
Schedulers.boundedElastic(), while preserving concatMap’s sequential chunk
ordering and DataBufferUtils.release cleanup. Keep progress accounting and error
propagation intact.
In
`@backend/src/main/java/com/devaulty/backend/application/impl/release/ReleaseTempFolder.java`:
- Around line 18-24: Valide o diretório configurado no fluxo de customDir antes
de retorná-lo: após mkdirs(), confirme que tempDir existe e é um diretório,
tratando falha de criação ou caminho apontando para arquivo com a mesma
estratégia de fallback/erro já usada pelo método ReleaseTempFolder. Não retorne
tempDir enquanto essa validação não for satisfeita.
In
`@backend/src/test/java/com/devaulty/backend/application/impl/release/InstallUpdateImplTest.java`:
- Around line 30-34: Atualize o setup de InstallUpdateImplTest para criar o spy
de InstallUpdateImpl somente após a inicialização dos `@Mock`, garantindo que
applicationContext seja injetado corretamente. Abstraia ou injete o mecanismo de
shutdown usado por InstallUpdateImpl e substitua-o no teste por uma
implementação controlada, evitando agendar System.exit em uma thread que possa
encerrar a JVM do runner.
In `@frontend/src/utils/versionUtils.ts`:
- Around line 7-12: Atualize a lógica de normalização de versão para remover
espaços externos, tratar entradas compostas apenas por espaços como vazias e
eliminar todos os prefixos iniciais “v” sem diferenciar maiúsculas de minúsculas
antes de adicionar exatamente um “v” minúsculo. Preserve o retorno vazio para
valores ausentes e normalize casos como “ V0.1 ” e “vv0.1” para o formato
esperado.
---
Nitpick comments:
In
`@backend/src/test/java/com/devaulty/backend/application/impl/release/DownloadUpdateImplTest.java`:
- Around line 49-57: Os testes compartilham a propriedade de sistema
devaulty.temp.dir e não são seguros em execução paralela. Em
DownloadUpdateImplTest.java (linhas 49-57) e InstallUpdateImplTest.java (linhas
36-44), adicione o bloqueio JUnit ResourceLock para Resources.SYSTEM_PROPERTIES
aos testes ou classes que configuram essa propriedade, preservando a
configuração e limpeza existentes.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro
Run ID: e258f2cd-1c10-4f5e-8463-421a9518004b
📒 Files selected for processing (10)
backend/src/main/java/com/devaulty/backend/application/impl/release/DownloadUpdateImpl.javabackend/src/main/java/com/devaulty/backend/application/impl/release/InstallUpdateImpl.javabackend/src/main/java/com/devaulty/backend/application/impl/release/ReleaseTempFolder.javabackend/src/main/resources/application.yamlbackend/src/test/java/com/devaulty/backend/application/impl/release/DownloadUpdateImplTest.javabackend/src/test/java/com/devaulty/backend/application/impl/release/InstallUpdateImplTest.javafrontend/src/components/RootLayout.tsxfrontend/src/features/releases/components/UpdateModal.module.cssfrontend/src/features/releases/components/UpdateModal.tsxfrontend/src/utils/versionUtils.ts
…ling, and enhance version normalization
This pull request introduces several improvements and fixes to the update and installation flows, enhances test isolation, and polishes the frontend update modal for a better user experience. The backend now uses standard output streams for file downloads and allows overriding the temp directory for tests. The frontend update modal now renders rich Markdown release notes and improves version display formatting.
Backend improvements:
AsynchronousFileChanneltoOutputStreamfor file downloads inDownloadUpdateImpl, simplifying buffer handling and ensuring proper resource cleanup. [1] [2] [3] [4]devaulty.temp.dirsystem property inReleaseTempFolder, enabling better test isolation and flexibility.InstallUpdateImplto always relaunch the app after installation attempts, ensuring the user is not left without a running instance. [1] [2]0.1.5-alphainapplication.yaml.Test enhancements:
DownloadUpdateImplandInstallUpdateImplto use a temporary directory isolated per test run, leveraging the newdevaulty.temp.dirproperty for safety and reliability. [1] [2] [3] [4] [5] [6]Frontend improvements:
markedandDOMPurify, supporting links, lists, code, and more, with improved styling for readability. [1] [2] [3] [4]These changes collectively improve robustness, testability, and the user interface for update-related workflows.
Summary by CodeRabbit
Novos Recursos
v.Correções
Atualização
0.1.5-alpha.Testes