Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

fix(extensions): a failed upgrade deletes the working extension; local and marketplace installs differ

Open
#1,562 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
dart, flutter
Domain
desktop, devtools

Research direction

Start with lib/core/extensions/local_extension_installer.dart around lines 125–172 and compare its archive extraction and rollback with HttpMarketplaceRepository.install. Trace validateDriverPackage, ensureDriverExecutables, and common-root stripping to identify how both install paths handle files. Done means both use one path that stages and validates the new extension, swaps it in safely, restores the old version on failure, and removes files absent from the new version.

Written by the indexing model from the issue text.

Description

bug marketplace P2 stability

Problem

LocalExtensionInstaller.installFromArchive deletes the existing extensions/<id>/ before extracting (lib/core/extensions/local_extension_installer.dart:125-128). If validateDriverPackage / ensureDriverExecutables / extraction then fails, the rollback deletes the new folder too (:163-172), so a failed upgrade destroys the working extension.

The marketplace path (HttpMarketplaceRepository.install) goes the other way: it never cleans the old folder, so files removed in the new version stay on disk and versions get mixed. The two paths also differ in common-root stripping.

Expected

  • Extract into a temp sibling directory, validate there, then swap (rename old to backup, rename new, delete backup; restore backup on failure).
  • Use the same code path for local and marketplace installs.
Dominant language
Dart
Stars
23
Forks
1
Avg merge
45m
Merged PRs (30d)
529

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from QueryaHub/Querya-Desktop

All issues in QueryaHub/Querya-Desktop

Similar issues

More Dart issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.