-
-
Notifications
You must be signed in to change notification settings - Fork 123
Desktop app (GPUI) + durable chat history #218
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jlucaso1
wants to merge
49
commits into
main
Choose a base branch
from
feat-call-ui
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
49 commits
Select commit
Hold shift + click to select a range
ef03d9f
feat(desktop): GPUI desktop app as a standalone nested workspace
jlucaso1 aefcb96
fix(desktop): record outgoing messages before sending
claude 68595ce
fix(desktop): correct durable-history hydration semantics
claude 6101959
fix(desktop): review round — dedupe, history merge, UI correctness
claude 46f0011
fix(desktop): pass the input area's own context to set_recording
claude 5b14a5c
style(desktop): rustfmt the call-overwrite warnings
claude b750fe6
fix(desktop): same-second live siblings still badge
claude 655f80d
fix(desktop): real ids for optimistic bubbles + receipt cache refresh
claude 6df4721
fix(desktop): honor a cancel that lands before the call starts
claude 40e7787
fix(desktop): render the renamed optimistic bubble immediately
claude f67380e
fix(desktop): scope the client mutex, keep image metadata on failure
claude d84b247
feat(desktop): hydrate media metadata from stored history
claude 22c58be
fix(desktop): read-tick cache refresh on open, cancelled-set cleanup
claude 502c453
fix(desktop): audio/video pipeline correctness batch
claude 9b08c87
ci(desktop): the apt-cache action's major tag is v1, not v2
claude 7d5d4bb
fix(desktop): review batch — send failures surfaced, history via Stor…
claude 2074e76
docs+ci(desktop): run tests in CI, tighten workflow, refresh README
claude 5a93fcc
fix(desktop): correctness batch — receipts, media lifecycle, call setup
claude cd785fe
fix(desktop): keep sort invariant on id rename, sticker retry, merge …
claude 672da10
fix(desktop): id-dedup on hydration, per-chat typing presence, format…
claude 8c27b25
fix(desktop): voice notes go to the recording chat, preview stickers …
claude 7fc0cd1
fix(desktop): surface SendFailed when the client handle is unavailable
claude 6b9d0d5
fix(desktop): hydrated rows replace bubbles, PTT audio fidelity batch
claude bfa9003
fix(desktop): failed sends persist to the store, hydration keeps live…
claude 71d22ba
fix(desktop): scale the decimation FIR with the input rate
claude da3b27f
fix(desktop): stable per-user db path, stale playback edges
claude 7c37563
fix(desktop): retry shutdown signal, media graft, document download
claude 720ed16
fix(desktop): harden document saves (Windows dirs, no clobber, drive …
claude 50ae345
fix(desktop): prefix Windows-reserved device names on document saves
claude 64089a1
fix(desktop): count out-of-order incoming messages in the unread badge
claude a023bed
fix(desktop): paused voice notes render paused, DM row sizes match pa…
claude 8c041b0
fix(desktop): adopt display names when collapsing PN/LID history rows
claude 2ace6bc
fix(desktop): per-chat drafts on switch, retryable failed video playback
claude 6b49dec
fix(chat-store): skip the messages invalidation when SendFailed is a …
claude 449655d
fix(desktop): call button only for user JIDs, durable manual-unread c…
claude bd24be2
fix(desktop): prune store-removed chats on reload, bound manual read …
claude 2ebaab8
fix(desktop): empty reloads clear the list, keyed read covers the who…
claude 2af67b0
fix(desktop): route retry rebuild failures to the error screen
claude 8fcfb82
chore(desktop): update dependencies to latest
claude dad25e6
fix(desktop): failed JID parse marks the optimistic bubble as failed
claude 786dfb6
fix(desktop): only prune the chat list against a complete store load
claude 8fcc810
fix(desktop): derive load completeness from the raw store entry count
claude 8c9bcee
fix(history): learn per-conversation LID mappings
jlucaso1 a0ed6ff
fix(desktop): reconcile chat identity and read state
jlucaso1 7803e79
fix(logging): avoid exposing push names
jlucaso1 3130abe
fix(history): preserve optional sync state
jlucaso1 d390e42
fix(desktop): reconcile alias history state
jlucaso1 dcdd7e5
fix(desktop): spare live-only chats from the empty/complete-load prune
claude 7ac4c59
docs(history): lid_mappings collects bulk and per-conversation pairs
claude File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| # Desktop app (apps/desktop): a standalone cargo workspace excluded from the | ||
| # root one, so the library jobs never build the gpui tree. It still runs on | ||
| # library-path changes: the app is the library's consumer test. | ||
| name: Desktop App | ||
|
|
||
| on: | ||
| push: | ||
| branches: ["main"] | ||
| paths: | ||
| - "apps/desktop/**" | ||
| - "src/**" | ||
| - "wacore/**" | ||
| - "waproto/**" | ||
| - "storages/**" | ||
| - "transports/**" | ||
| - "http_clients/**" | ||
| - "Cargo.toml" | ||
| - ".github/workflows/desktop.yml" | ||
| pull_request: | ||
| paths: | ||
| - "apps/desktop/**" | ||
| - "src/**" | ||
| - "wacore/**" | ||
| - "waproto/**" | ||
| - "storages/**" | ||
| - "transports/**" | ||
| - "http_clients/**" | ||
| - "Cargo.toml" | ||
| - ".github/workflows/desktop.yml" | ||
|
|
||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| env: | ||
| CARGO_TERM_COLOR: always | ||
|
|
||
| jobs: | ||
| desktop: | ||
| name: Check desktop app | ||
| runs-on: ubuntu-latest | ||
| defaults: | ||
| run: | ||
| working-directory: apps/desktop | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
|
jlucaso1 marked this conversation as resolved.
|
||
| with: | ||
| persist-credentials: false | ||
| - uses: dtolnay/rust-toolchain@master | ||
| with: | ||
| toolchain: nightly-2026-06-16 | ||
| components: rustfmt, clippy | ||
| - name: Install system dependencies (cached) | ||
| uses: awalsh128/cache-apt-pkgs-action@v1 | ||
| with: | ||
| packages: libasound2-dev libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig1-dev libfreetype6-dev | ||
| version: 1.2 | ||
| - name: Install protoc | ||
| uses: taiki-e/install-action@v2 | ||
| with: | ||
| tool: protoc | ||
| - uses: Swatinem/rust-cache@v2 | ||
| with: | ||
| workspaces: apps/desktop | ||
| - name: Check formatting | ||
| run: cargo fmt --all -- --check | ||
| - name: Clippy (deny warnings) | ||
| run: cargo clippy --all-targets -- -D warnings | ||
|
jlucaso1 marked this conversation as resolved.
|
||
| - name: Tests | ||
| run: cargo test | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.