-
-
Notifications
You must be signed in to change notification settings - Fork 280
Sync feedback: Mobile runtime, clipboard, and model fixes #628
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
alichherawalla
wants to merge
223
commits into
main
Choose a base branch
from
release/sync-feedback
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
223 commits
Select commit
Hold shift + click to select a range
2ddc40c
feat(clipboard): a copy made in another app still has its text, on An…
alichherawalla 0a7167a
feat(clipboard): the boundary answers whether this device can capture…
alichherawalla fcee17d
docs(feedback): the cross-device pass of 2026-08-12, and what it found
alichherawalla f93fcd9
docs(feedback): the receive default was never off, so there is nothin…
alichherawalla e4a77e3
docs(feedback): Pat's report — a reinstall costs a seat, and a modali…
alichherawalla 9d73f51
docs(feedback): the rule this list is fixed under, at the top where i…
alichherawalla 3693a18
refactor(prompt): one owner for the default persona, not three
alichherawalla ddb11a0
docs(feedback): what was fixed, and where the evidence ran out
alichherawalla 56bb937
docs(feedback): Pat's two, diagnosed to the line, and why neither is …
alichherawalla 5be0b50
docs(feedback): first release, so the receive policy has nothing to m…
alichherawalla 20d8577
docs(feedback): say which release each report is against
alichherawalla 3aa3b0f
docs(test): what to verify by hand, and what the failure looked like
alichherawalla 6126229
docs: the pairing fix is withdrawn, and the test plan says so
alichherawalla 3985f20
chore(llama): move the runtime to llama.rn 0.13.0-rc.0
alichherawalla b1d147f
test(tts): the OuteTTS double matches the runtime we ship
alichherawalla a2fd75b
docs(feedback): Meta's own numbers put Muse Glimmer on the desktop, n…
alichherawalla a1ed12c
docs(feedback): the llama.rn decision, and what to check before the r…
alichherawalla 4304f39
docs(test): the Android clipboard and the runtime bump were missing f…
alichherawalla 2fe04e3
fix(fs): one safe way to ask about a file, so a stale path cannot abo…
alichherawalla 4f1ea02
fix(llm): every path that builds model input drops images that are no…
alichherawalla d297b19
feat(chat): a file still arriving shows on its own message bubble
alichherawalla 92be40f
fix(ui): one loader everywhere, and it is never a ring spinner
alichherawalla 3dea1a0
fix(fs): one rule for reading a file size off the filesystem
alichherawalla f8d6d6d
feat(vision): repair a model's missing projector from the chat that n…
alichherawalla 7563cf9
refactor(downloads): the screen renders rows, the mapping decides wha…
alichherawalla 219f162
fix(models): a row stops advertising sight the model does not have
alichherawalla c59ed4e
fix(knowledge): a project document reads the same on every surface
alichherawalla 1e2f639
fix(chat): a synced turn keeps its identity in the store
alichherawalla 4457bc4
docs(test): what to verify by hand on this branch, and what is delibe…
alichherawalla 10e357f
refactor(llm): one owner for what the model may be shown
alichherawalla 1de2198
chore(pro): point at the sync feedback release
alichherawalla 88fbcbc
docs(release): track the sync feedback repair plan
alichherawalla 374d698
docs(release): record the draft PR train
alichherawalla f093c65
test(fs): one native filesystem boundary for every suite
alichherawalla 3379b68
test(fs): model safe file metadata through directory entries
alichherawalla 783dc27
test(audio): use the shared native filesystem boundary
alichherawalla 58fb0e2
test(logs): exercise rotation through safe file metadata
alichherawalla 15435d0
test(sync): render one receive switch per content type
alichherawalla 7e01202
fix(image): exclude runtime notices from prompts
alichherawalla 3ba238d
docs: update sync repair evidence
alichherawalla b5a05c2
docs: record Windows image-fix parity
alichherawalla 405a366
docs: record image fix publication
alichherawalla 58581c7
fix(llm): keep prompt space in context budget
alichherawalla c4f4b6c
fix(models): cancel active work before eject
alichherawalla b4a5123
test(sync): verify active file delivery controls
alichherawalla 95ea85e
docs(sync): record bounded queue verification
alichherawalla 22a4730
docs(sync): record knowledge document join fix
alichherawalla 1beb8a0
test(sync): prove reconnect skips document bytes
alichherawalla 36826ae
docs(sync): record legacy project row migration
alichherawalla d98292f
test(sync): align mobile queue projections
alichherawalla 3f3779a
docs(sync): record shared queue refactor
alichherawalla 1a793cb
chore(pro): update shared queue adapter
alichherawalla 979cc32
chore(pro): update sync receive identity
alichherawalla 1dc9ceb
docs: record sync release verification
alichherawalla d9884fd
docs: record hidden live media verification
alichherawalla e84e6f7
fix(ui): render dropdown options as overlay
alichherawalla 27e52d9
docs(sync): record virtualized mobile lists
alichherawalla c44d43e
test(sync): cover generated image chat association
alichherawalla e3f479e
fix(sync): wire mobile mesh healing and live presence
alichherawalla bc14a27
docs(sync): extend release feedback verification
alichherawalla 5d08292
test(sync): keep rename on this device
alichherawalla 81fbe4a
fix(chat): group synced image results
alichherawalla 788e7da
chore(pro): update shared file recovery
alichherawalla 2527623
fix(sync): align mobile chat image and clipboard state
alichherawalla 1725b49
fix(android): sync copies made outside the app
alichherawalla 9879e6f
test(audio): cover llama.rn 0.13 contract
alichherawalla 7f11b75
refactor(mobile): remove stale public exports
alichherawalla 78e001c
fix(android): capture explicit floating toolbar copies
alichherawalla 48655a1
fix(models): harden file metadata and repair flows
alichherawalla 3664625
fix(sync): align live chat and sharing lifecycle
alichherawalla 48c1381
fix(models): close revision and projector review gaps
alichherawalla 9350ea9
refactor(chat): split screen lifecycle and actions
alichherawalla 6682a96
ci: align pro branch coverage ratchet
alichherawalla 75ec10d
test(e2e): automate generated image mesh journey
alichherawalla addcc9e
fix(chat): detect LiteRT token-only reloads
alichherawalla 86c20e5
ci: allow ambient sharing journey to finish
alichherawalla c02f306
test: consume scripted llama completions once
alichherawalla 358a5fd
test: script queued native reply explicitly
alichherawalla 43f520a
feat(settings): one owner for text-generation settings, incl. Maximum…
alichherawalla 2fa3b96
refactor(llm): take the context budget from the user's settings
alichherawalla 4a59123
fix(chat): keep each thinking segment in its own block, and last in t…
alichherawalla 2577ac1
feat(share): let the share prompt be dismissed for good
alichherawalla 2421319
test(e2e): label the screens the attended mesh journey drives
alichherawalla 1a2880c
chore(mobile): import Whisper models from their own module, refresh P…
alichherawalla 601662d
test(e2e): attended Android-to-mesh tool-calling journey
alichherawalla 11872b7
chore(pro): bump submodule for MCP screen test handles
alichherawalla c7c7af1
test(sync): assert the knowledge toggle announces its state
alichherawalla 3ae4c2f
refactor: split the two files that outgrew the 500-line cap
alichherawalla 1bc3c56
refactor: give each split module its own import site, with no cycles
alichherawalla 3ff4525
refactor: one owner for the recovered-model predicates, and drop a st…
alichherawalla e598f34
fix(chat): never let a long project name squeeze the model control out
alichherawalla c2afb66
fix(chat): one owner, one rhythm for every tool row
alichherawalla 5a19f97
refactor(chat): the store owns "a model is loading" and how a reply e…
alichherawalla b6d6638
fix(chat): show a peer loading its model instead of "Preparing reply..."
alichherawalla 67e3314
fix(projects): stop the last project slipping under the bottom edge
alichherawalla de3de41
chore(pro): bump submodule for the load and stop sync signals
alichherawalla fdf0f9d
fix(chat): stop a peer's tool calls appearing twice on the phone
alichherawalla 420f81b
fix(settings): cap Max Tokens by the context that has to hold it
alichherawalla e7ada17
fix(settings): keep the max-tokens ceiling rule module-private
alichherawalla ccc5017
test(e2e): put Android in a known image-generation state before a mes…
alichherawalla 425b17d
test(e2e): give the image settings accordion a handle
alichherawalla a1f59dc
test(e2e): read one attribute of a control from the device
alichherawalla db945cc
test(e2e): drive image setup through Appium, and prove each value landed
alichherawalla 5dffe12
test(e2e): a vision + generated-image journey, from a real photo
alichherawalla fed2ef1
test(e2e): let the tools journey be driven from either phone
alichherawalla a6e9fce
test(e2e): a vision-only journey, and one shared Android producer
alichherawalla 6493c19
fix(chat): the tools-sent row ends where its bubble ends
alichherawalla fbd45e7
fix(a11y): the quick-settings rows are five controls on iOS, not one
alichherawalla ec73cb7
test(e2e): the normal-message stage drives whichever device --primary…
alichherawalla 61a3fc8
docs(e2e): a brief for driving the mesh suite from iOS
alichherawalla 5ce1514
test(e2e): a desktop is a list of places to look, not one address
alichherawalla daf2540
docs: the open concerns, with evidence, for whoever picks this up
alichherawalla 5de106b
fix(e2e): wait for the quick-settings sheet, do not sleep 500ms at it
alichherawalla 50969c7
feat(e2e): start a mesh run from a known state, not from whatever was…
alichherawalla 2435c77
fix(e2e): park the desktops on Day, so re-entering Chat lands on the …
alichherawalla dcad0f7
fix(e2e): prepare-thinking honours --primary instead of always drivin…
alichherawalla 029d24b
fix(e2e): run-thinking sends from the --primary device, not always An…
alichherawalla e0c793e
feat(e2e): seed iOS project fixtures with devicectl, unblocking prepa…
alichherawalla 8d61948
fix(a11y): a project row is one control with a name, not a run-on of …
alichherawalla c05d88e
fix(knowledge): the paste-note sheet is keyboard-aware, so the note c…
alichherawalla f2689f3
fix(e2e): measure the keyboard before pressing a sheet's action, neve…
alichherawalla 6044120
fix(knowledge): cap the note field with the keyboard up, and press th…
alichherawalla 79d2170
fix(e2e): check the Knowledge Base switch where it lives, under its r…
alichherawalla 1e39c17
fix(e2e/ios): tap the control, not the wrapper that happens to contai…
alichherawalla 5574c3d
fix(a11y): a Knowledge Base row is three controls, and its Back butto…
alichherawalla 6b124ab
fix(a11y): the popover's dismiss scrim merged the whole sheet, too
alichherawalla cb968bd
fix(chat): a tool row ends where its message bubble ends
alichherawalla a33c176
fix(e2e): the guided-tools journey runs from iOS, and resumes after a…
alichherawalla d5551c5
docs(gaps): drop the keyboard entry - it is fixed, not open
alichherawalla 36ed917
docs(gaps): three defects the guided iOS journey surfaced on hardware
alichherawalla f5105a4
docs(gaps): the final answer is LATE, not lost - correcting my own entry
alichherawalla a34f0b0
feat(e2e): the generated-image journey runs from either phone, with e…
alichherawalla fa72c65
fix(e2e): wait for the screen to arrive, do not spend a budget guessing
alichherawalla 18be81a
fix(e2e): set enhancement inside the chat, which is the only place it…
alichherawalla b36675a
fix(e2e): wait for the sheet to close before tapping what is behind it
alichherawalla eb139af
fix(e2e): a late observer records a MISSED live state, it does not fail
alichherawalla 6de1ea0
fix(e2e): race the live state against the finished image, do not wait…
alichherawalla 1e1777f
feat(e2e): expose raw tap and window size on the sync surface
alichherawalla 2b8f213
feat(e2e): a journey for three attachments on one message
alichherawalla c37903b
docs(gaps): the coverage we know is missing, before we forget it
alichherawalla fbdf435
docs(gaps): rank the untested paths, with the evidence for each
alichherawalla 5fee383
docs(gaps): model memory is estimated unscientifically, and fails sil…
alichherawalla ad29469
fix(models): show the device's TOTAL memory, not what happens to be free
alichherawalla 8f35f73
docs(gaps): how to fix the memory estimate - one owner, a real formul…
alichherawalla 03c0ab7
docs: the memory and residency test matrix, covered and uncovered tog…
alichherawalla e8e1117
docs: relaunch residency is not a gap, it is the design
alichherawalla 886510e
feat(stt): end a voice turn on silence instead of waiting for the sto…
alichherawalla 2a466d7
test: onboarding shows total memory, not available
alichherawalla 1f2e680
test(e2e): model residency, eviction and SPOKEN image-intent journeys…
alichherawalla 85eded9
test(e2e): pin the text model in the multi-attachment journey
alichherawalla 3457042
chore: bump pro for the durable shared-file control fix
alichherawalla 5920339
refactor(stt): give the silence endpoint its own owner
alichherawalla 7cd46db
fix(stt): start the silence clock when recording starts, not on the f…
alichherawalla b1fb750
fix(stt): end a voice turn on real silence, not on the transcript set…
alichherawalla 2848027
fix(stt): silence must run the caller's stop path, not the service's
alichherawalla 4f6ccd1
fix(stt): wire silence detection into the path the record button actu…
alichherawalla bf31c64
Revert "fix(stt): wire silence detection into the path the record but…
alichherawalla 6e9950b
fix(audio): correct the onAudioReady option name (bufferLength, not b…
alichherawalla f5bc49d
feat(stt): observe silence in voice mode, behind a flag
alichherawalla 7bc7a4c
feat(stt): end a voice turn on silence - verified on device
alichherawalla 2cac3bb
feat(stt): a setting to turn stop-on-silence off
alichherawalla 2dd48d2
refactor(stt): one owner for silence detection, and a proper home for…
alichherawalla 0465d51
feat(chat): let a caller suppress assistant prose, keeping thinking a…
alichherawalla ae384ac
test(voice): a tool turn shows cards and speaks its narration, never …
alichherawalla 193b252
fix(memory): one owner for "how much can we still allocate"
alichherawalla 0806166
feat(logging): flush the debug log on demand
alichherawalla 0662116
feat(diagnostics): say what startup is doing and what memory is doing…
alichherawalla f43482e
test(e2e): assert the transition, and let silence end the turn
alichherawalla 7567d97
chore: bump pro for the sync, TTS and licensing fixes
alichherawalla bd75298
chore: keep internal helpers internal
alichherawalla aaf6887
chore: bump pro for the migration diagnostic
alichherawalla 94f8f71
feat(voice): hands-free — the turn starts when you speak, not when yo…
alichherawalla 848415b
voice: hands-free actually starts its own turns
alichherawalla 89240ea
voice: talking over the assistant stops it (iOS)
alichherawalla 6cbd28b
voice: echo cancellation on Android too, so barge-in is not iOS-only
alichherawalla 2413be4
voice: the composer stops claiming to record while it waits
alichherawalla d209a32
voice: arming must not silence the assistant, or autoplay never happens
alichherawalla 21b8978
voice: playback is audible again, and stop means stop
alichherawalla fb6588f
voice: voice notes start where the speech starts
alichherawalla 4214739
voice: one deriver of record phase, one owner of echo cancellation
alichherawalla edcd130
docs: log the voice gaps and add 11 release-checklist rows
alichherawalla 1d8dc19
voice: hands-free waits for the assistant, because we have no real ec…
alichherawalla 0ebc5dd
revert the Oboe VoiceCommunication patch; correct the docs
alichherawalla 0ecdc9f
voice: the assistant keeps the floor while it speaks
alichherawalla 1ffa157
docs: log the real design gap - speak and listen are not serialized
alichherawalla 2bf1dd5
voice: hands-free listens to the floor instead of polling for a gap
alichherawalla dfbad76
voice: make the trim cheap, and make it report its own cost
alichherawalla 1bb0126
voice: let the room go quiet before opening the mic
alichherawalla ce0c772
voice: onset timings belong to ONE turn, or the trim cuts the wrong r…
alichherawalla e74465d
voice: full turn trace, and finaliseRecording becomes its own module
alichherawalla 014b8fc
e2e: drive a voice turn from the Mac's own speaker and read the trace…
alichherawalla 48095d8
voice: hands-free must not re-arm when a turn produced nothing
alichherawalla c79fb3e
voice: a turn must not hear the assistant it is waiting through
alichherawalla 5548c68
voice: nothing opens a microphone without the lock; the observer is gone
alichherawalla a420277
e2e: two-device voice rig that reads the app's own log and never taps…
alichherawalla db89b5e
llm: stop writing llama.cpp's per-tensor log to disk during model load
alichherawalla 1ff21aa
voice: hands-free must start when you ENTER the mode, not only when a…
alichherawalla 0b591a2
voice: never queue behind ourselves, and never orphan the floor
alichherawalla b56866d
voice: one session replaces the lock, the floor and the flags
alichherawalla d6b4c7d
voice: recordingController stops being a second state machine
alichherawalla 60eb1b2
voice: a tap is the way OUT of a stopped session
alichherawalla 8f62f6c
voice: the two delays are settings, and the recorder obeys a replay
alichherawalla 91ffc19
voice: a deliberate stop sticks, and notes lose their end-of-turn dea…
alichherawalla 67d3447
docs: gap - a sender dying mid-batch leaves zombie receiving rows
alichherawalla 90fd782
docs: gap - queued transfers neither follow a moved peer nor expire
alichherawalla 2ec128f
chore: pro - image turns end their session turn; delivery rows obey t…
alichherawalla 87b27c2
chore: pro - self-receive rows removed, departed-identity deliveries …
alichherawalla 7106ae5
chore: pro - shared orphaned-deliveries rule
alichherawalla b5c7dfe
chore: pro - content-hash dedup for shared files
alichherawalla a4965b9
chore: pro - sender-side dedup, hash backfill, sync screen controls
alichherawalla ba33c31
chore: pro - audit cut 1
alichherawalla 210073f
voice: one tap is one recording, not two
alichherawalla caf1414
voice tests: reset the session, and expect the phase a person actuall…
alichherawalla 3ca35fd
sync tests: assert what the wire and the library actually carry
alichherawalla 3bada54
docs: close two gaps, and log the device pass voice still owes
alichherawalla 8314d8e
pro: durable control from the op-log, and one writer for a delivery row
alichherawalla 2473575
ci: build @offgrid/speech, and test pro on the MATCHING branch
alichherawalla b016a84
pro: build @offgrid/speech in pro's CI too
alichherawalla 69d8c17
test: stop the support-share sheet waits racing a CI runner
alichherawalla c981746
sync tests: cover the receive side, and stop two controls parsing as …
alichherawalla 4317f50
pro: keep the content hash of the bytes this device holds
alichherawalla 59ae22d
sync tests: the answer this phone gives a peer asking for a file back
alichherawalla 0c82612
sync tests: a file arriving under a second identity is the same file
alichherawalla 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
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
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.