Files
anki/proto
Abdo 8d4a986402 feat: Support upgrades for Briefcase packages (#4725)
## Linked issue

#4695

## Summary

This adds support for app upgrades for Briefcase/PyInstaller packages.
This is done by downloading the latest GitHub release (stable or
prerelease depending on the user's current version) and opening the
installer.


## How to test

1. Change the `ALL_RELEASES_URL`/`LATEST_RELEASE_URL` constants defined
in github.rs to reference my fork so you have some recent releases to
test with: https://github.com/abdnh/anki/releases
2. Use _Tools > Check for Updates_ and confirm you're prompted to update
to 26.04.
3. Accept the prompt and wait for the download to finish and installer
to open. If you're on Linux, you'll be redirected to the direct download
URL on your browser (extraction/installation is not handled for
simplicity).
4. Change .version to `26.04b1` and check for updates again. Confirm
you're prompted to update to 26.04b3.


### Checklist

- [x] I ran `./ninja check` or an equivalent relevant check locally.
- [ ] I added or updated tests when the change is non-trivial or
behavior changed.

### Details

- Anki's automatic update check is left untouched for now. It fetches
the latest release from AnkiWeb, which might (intentionally) lag a few
releases behind GitHub.
- Updates are downloaded and cached to `updates` under the
`AnkiProgramFiles` folder (used for the uv launcher).

## UI evidence

The existing prompt is reused:

<img width="281" height="182" alt="image"
src="https://github.com/user-attachments/assets/d52900b7-645f-4b91-a195-9d5ce016b981"
/>
<img width="312" height="101" alt="image"
src="https://github.com/user-attachments/assets/069f3eba-5f03-4de1-a962-59bbdc6c1e39"
/>


## Scope

- [x] This PR is focused on one change (no unrelated edits).
2026-04-28 17:09:37 +03:00
..
2022-11-27 15:24:20 +10:00

Protobuf files defining the interface the frontend and backend components use to talk to each other, and how Anki stores some of the data inside its SQLite database. These files are used to generate Rust, Python and TypeScript bindings.