-
-
Notifications
You must be signed in to change notification settings - Fork 294
sync: ambient directories, receiving rules, and the gates that were red #624
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
Closed
Closed
Changes from 250 commits
Commits
Show all changes
278 commits
Select commit
Hold shift + click to select a range
6f5e433
test(sync): prove offline convergence on relaunch
alichherawalla 69f16cc
fix(sync): propagate non-destructive project deletes
alichherawalla 02278bf
docs(sync): record resolved project deletion
alichherawalla 9ced2a5
fix(sync): label development entitlement honestly
alichherawalla 8f40da8
docs(sync): clarify development device status
alichherawalla 41e0e5a
test(sync): approve desktop pairing in app
alichherawalla 1b29700
feat(sync): recover device discovery without relaunch
alichherawalla 2fb00fd
fix(sync): preserve pairing and message reasoning
alichherawalla 53c0b61
feat(sync): register transferred model packages
alichherawalla a45ba81
test(sync): bound model package journey
alichherawalla dfc16b1
feat(sync): bridge mobile clipboard natively
alichherawalla 562f11d
feat(sync): reconcile trusted devices
alichherawalla e339d6e
test(clipboard): prove attributed mobile history
alichherawalla 4d041e2
fix(clipboard): preserve remote device attribution
alichherawalla 9deceba
feat(sync): give knowledge documents stable identity
alichherawalla d125902
docs(sync): record knowledge document contract
alichherawalla b51d80a
feat(sync): integrate knowledge document transfer
alichherawalla 9f67d2b
docs(sync): record knowledge document convergence
alichherawalla 3dd8ad4
test(sync): automate physical iOS knowledge checks
alichherawalla d539644
test(sync): prove saved device management journey
alichherawalla 36c2d41
test(sync): prove clipboard permission guidance
alichherawalla 6513b33
fix(sync): render portable tool artifacts
alichherawalla 9e305d3
fix(rag): share short document chunking
alichherawalla b68e2b5
fix(sync): surface knowledge transfer failures
alichherawalla 2bf64a6
feat(sync): advertise a persistent device name
alichherawalla 46df6bb
refactor(sync): consume shared transfer queue
alichherawalla b6ff258
fix(metro): resolve shared RAG build directly
alichherawalla 5762f0a
feat(sync): connect nearby Apple devices
alichherawalla 9aa9eb8
docs(sync): record Apple proximity readiness
alichherawalla 5a567a1
docs(sync): align the post-proximity roadmap
alichherawalla f9412d8
docs(sync): inventory mobile replicated data
alichherawalla 87f8507
docs(sync): narrow corpus and cap device mesh
alichherawalla 5cd9ede
feat(sync): stabilize message attachment identities
alichherawalla ff2bea6
feat(sync): persist portable record provenance
alichherawalla cda022d
feat(sync): surface personal mesh routes
alichherawalla fa566a9
feat(sync): expose ambient media consent
alichherawalla 02edb64
feat(sync): add portable shared file mutations
alichherawalla fb3924c
feat(sync): expose received shared files
alichherawalla 621dc12
feat(sync): watch opted-in iOS screenshots
alichherawalla 3eba7c2
feat(sync): enforce ambient sharing consent
alichherawalla f02cf77
feat(sync): promote mobile setup and recovery
alichherawalla dd8c4e0
docs(sync): record mobile recovery gate
alichherawalla 7f7026a
test(sync): keep offline devices discoverable from home
alichherawalla bdc5000
test(sync): exercise consumer control center journeys
alichherawalla 6bc71b9
docs(sync): record consumer control center split
alichherawalla b6cb7c8
chore(sync): consume authenticated reconnect recovery
alichherawalla e5aeced
chore(sync): consume home spacing fix
alichherawalla ec4784c
chore(sync): consume completed activity archive
alichherawalla 3da4276
test(sync): prove the synced files journey
alichherawalla e01a58c
docs(sync): record the synced files library
alichherawalla c8aec41
test(sync): retain completed transfer activity
alichherawalla 4f4a638
refactor(sync): share transfer activity policy
alichherawalla 7a03743
refactor(sync): share device control state
alichherawalla a8e6615
fix(sync): report available native routes
alichherawalla a6a3d1f
fix(sync): use factual route capabilities
alichherawalla 9173268
fix(sync): report screenshot source availability
alichherawalla b51b42b
test(sync): verify shared control center journeys
alichherawalla 464f7c8
fix(sync): keep discovery callbacks alive
alichherawalla 3c2b639
test(sync): exercise real knowledge document journey
alichherawalla 932438a
test(sync): observe real clipboard outcomes
alichherawalla 199333a
test(sync): use real licensed device journey
alichherawalla e7b61f6
test(sync): require real navigation
alichherawalla 791ad64
test(sync): keep acceptance at integration boundary
alichherawalla 0b093b3
fix(sync): keep mesh counts consistent
alichherawalla f601472
fix(sync): use Unix clipboard timestamps
alichherawalla b070ca5
feat(sync): consume shared pairing lifecycle
alichherawalla 4dfbabc
test(sync): assert one pairing cancel action
alichherawalla 85e6164
feat(sync): consume bilateral mesh revocation
alichherawalla 62708c8
docs(sync): record bilateral mesh eviction
alichherawalla 9882250
test(sync): preserve clipboard origin through native echoes
alichherawalla dc9cee8
docs(sync): record shared clipboard ownership
alichherawalla 212bf2d
test(sync): align journeys with shared lifecycle
alichherawalla 7b129fe
docs(sync): record app-ready regression gate
alichherawalla 3d587c1
fix(sync): refresh nearby discovery deterministically
alichherawalla 2d8d8a8
feat(sync): surface shared runtime projections
alichherawalla ab40a4b
feat(sync): consume shared pairing and repair contracts
alichherawalla f9a02d2
fix(sync): format pairing code entry
alichherawalla 4083d0a
fix(sync): retain nearby session callbacks safely
alichherawalla d255847
feat(sync): surface sharing approvals from home
alichherawalla c42f4b4
fix(sync): show connected transport route
alichherawalla 3d4299f
feat(sync): surface file completion notifications
alichherawalla 23a0167
feat(sync): expose explicit file sharing
alichherawalla aa7282d
feat(sync): simplify mobile files and activity
alichherawalla b21d2cd
refactor(sync): compact mobile sync surfaces
alichherawalla 706c417
fix(sync): refine mobile sync controls
alichherawalla 3991d21
feat(sync): add portable directory access
alichherawalla 7980c52
feat(sync): enable ambient downloads
alichherawalla a9fbbb6
fix(sync): resolve iOS directory bookmarks
alichherawalla 56164c4
feat(sync): expose clipboard search
alichherawalla fa612eb
fix(sync): retain offline clipboard delivery
alichherawalla 9139c6f
feat(sync): prepare mobile entitlement boundaries
alichherawalla b57c99d
chore(sync): advance mobile Pro registry adapter
alichherawalla 1d9dd73
feat(sync): bridge restricted pairing entitlement
alichherawalla 50b9acb
feat(sync): expose restricted entitlement bootstrap
alichherawalla f355ca4
feat(onboarding): introduce Pro Sync
alichherawalla 635aed8
fix(ios): resolve shared pairing crypto modules
alichherawalla 4d878d2
fix(sync): gate clipboard observation by entitlement
alichherawalla 5e2eb1b
fix(sync): gate user entry behind Pro
alichherawalla e48286d
fix(sync): gate notification entry behind Pro
alichherawalla e20e058
fix(pro): normalize pasted license keys
alichherawalla d981143
fix(pro): log sanitized license validation
alichherawalla 70123de
refactor(license): render shared activation outcomes
alichherawalla 448cb6a
fix(license): revalidate entitlement lifecycle
alichherawalla 42e82d0
refactor(sync): use authoritative device registry
alichherawalla 993c07e
fix(sync): register the mobile installation
alichherawalla 9a45945
fix(sync): require credential authority
alichherawalla af07931
chore(sync): advance Pro installation binding
alichherawalla 5d29031
fix(sync): use licensed installation identity
alichherawalla 14183b1
chore(sync): trace clipboard delivery sources
alichherawalla 2544721
fix(sync): stop public core minting a second device identity
alichherawalla 931bc51
feat(sync): keep the mesh reachable in the background on both platforms
alichherawalla 835b4e9
docs(sync): Personal Mesh test matrix across macOS, iOS and Android
alichherawalla 3745bb6
docs(sync): correct the Personal Mesh gap list
alichherawalla db86c79
docs(sync): close PM5 - key revocation is out of scope
alichherawalla d043df0
chore(sync): bump pro for the pairing-code sheet
alichherawalla ff8e7c4
docs(sync): log the missing receive-side consent policy
alichherawalla 2e5eda7
docs(sync): close PM9 - same-owner devices auto-accept
alichherawalla 8fed5c8
feat(sync): emit streaming updates so Pro can mirror a reply live
alichherawalla 7b9165d
docs(sync): log two Android ambient-sharing gaps found on device
alichherawalla 95ef04f
feat(sync): show a reply as it generates on another device
alichherawalla 15c6254
fix(chats): order Home's recent chats by last activity
alichherawalla c9eb7f0
chore(sync): bump pro for chat-stream diagnostics
alichherawalla da7e69e
chore(chat): log whether core emits a streaming update
alichherawalla 29d228e
chore(sync): bump pro for state-sync readiness log
alichherawalla 6871a93
refactor(chat): let pro observe streaming state instead of emitting it
alichherawalla e381b13
docs: hand off the Personal Mesh sync session
alichherawalla 4c487d5
feat(ui): add a shared Accordion and collapse the sharing sections in…
alichherawalla a98a976
fix(pro): fill the Pro screen once you have paid, and drop the icon t…
alichherawalla 2d1ffeb
refactor(chat): render peer previews from the shared projection
alichherawalla 7710991
fix(ui): keep the model-loading bar moving while the model loads
alichherawalla 72e6488
fix(chat): a reload-model tap that fails now says so
alichherawalla 20442fd
fix(chat): do not offer a model reload when no model is selected
alichherawalla 5157aa5
feat(models): one resolver for which text model is selected
alichherawalla 53b2348
refactor(chat): read the active text model from one hook, not a priva…
alichherawalla 6790a16
fix(models): the picker's spinner follows the service, not the tap
alichherawalla 09382f0
fix(models): one owner for which text model to load
alichherawalla 2ad00f9
refactor(chats): take the list preview line from shared
alichherawalla 42c083c
docs: record what landed today and what is left
alichherawalla 18c1238
feat(sync): Android screenshot capture and MediaStore downloads
alichherawalla 487499f
chore: point at today's pro sync work
alichherawalla 8d34f57
test(chat): teach the ChatScreen stub the model-selection seam
alichherawalla 40ec0a5
test(models): one place defines the model-selection stub
alichherawalla 64ea5d7
chore: merge pro main (CI core-ref fix, TTS load-anyway, voice attach…
alichherawalla b48ef72
refactor(chat): move the tool-call surfaces out of ChatMessage
alichherawalla 0c69e3d
refactor(settings): bring SettingsScreen inside the caps
alichherawalla ab891ef
feat(ui): one screen header, matching Settings and Model Settings
alichherawalla cd26d0f
feat(sync): send and restore the tools a turn was offered
alichherawalla 978c038
feat(projects): paste text straight into a knowledge base
alichherawalla d226ff1
fix(sync): Android does not offer a LAN route it cannot dial
alichherawalla 024aa56
docs: hand off the mesh session with what is verified and what is not
alichherawalla 6f7111b
docs: Android to macOS over LAN is verified on device
alichherawalla b5ca2d8
downloads: share what is actually in the folder, and fix the Pro lice…
alichherawalla 1586c0a
screenshots: read every new row, not just the newest one
alichherawalla 4248d93
knowledge base: call it Text
alichherawalla c9ff4dd
tests: the Downloads card and the model a phone can send
alichherawalla f588f19
chore: bump pro to the model transfer, home card and screenshot work
alichherawalla 7d2359c
sync: native file hashing and a notification coalescer
alichherawalla d1425f8
tests: follow the pairing flow and the pro gate as they are now
alichherawalla 305dbfa
tests: point the moved licensing tests at pro, and fix a stub that ar…
alichherawalla 298ce82
docs: a line-by-line sync test sheet for this build
alichherawalla 6a6c4b3
docs: quote the sync checklist row whose expected result contains a c…
alichherawalla 36eb7c2
chat: local wall-clock times, and tool results above the answer
alichherawalla 40060f6
chore: bump pro to the model transfer job owner
alichherawalla 4e25e04
tests: the transfer sheet needs a navigation container now that it li…
alichherawalla 68ad9be
sync: the phones move a payload natively, sealed frame by frame
alichherawalla ca127d3
sync: the phones can stop a payload they are still sending
alichherawalla 1c65b55
test: two devices can pair in the harness, so a transfer can be teste…
alichherawalla 8682c54
chore: lint the physical-sync scripts, drop a flag nothing read, and …
alichherawalla fc9287e
sync: both phones resume a payload instead of starting it again
alichherawalla 3ac770b
chat: messages read in the order they were written
alichherawalla 4215191
test(sync): follow the mesh for licence capacity, and record that For…
alichherawalla 178091a
test(sync): licence capacity follows the mesh, and freeing a seat is …
alichherawalla 69caf26
test(sync): the status line is one word, and a peer is announced only…
alichherawalla eb09cd5
test(sync): an advertised peer announces a LAN address, because loopb…
alichherawalla 64c2639
test(sync): one place sets up a licensed phone, and a paired peer hol…
alichherawalla 5bec84b
test(sync): the model transfer journey runs end to end again
alichherawalla 64994a3
test(sync): the saved-device journeys run again, and a pairing that l…
alichherawalla 416e906
test(sync): a paired peer holds an installation, and the pairing that…
alichherawalla 8789715
test(sync): a device joining a licence registers itself, and the stat…
alichherawalla e45faf6
test(sync): the ambient sharing journey follows the approval to Notif…
alichherawalla 905b130
test(sync): the clipboard journeys run again, and the phone registers…
alichherawalla 0ec3ea0
test(sync): two of the three persistence journeys run again
alichherawalla e129744
test(sync): the knowledge-document journey pairs without an accept step
alichherawalla 264d0b2
test(sync): the RN transport pairing test uses a real code and a real…
alichherawalla ac89aa0
test(sync): cover the two branches today's eviction fix added
alichherawalla 0ed23fa
test(pro): the Pro detail suite runs again, and says why four of it s…
alichherawalla e77ccb8
docs: the eviction ordering is the normal flow, not a rare race
alichherawalla bb71bb5
test(sync): the eviction transaction is covered to the line
alichherawalla b28d664
test(sync): cover the eviction's local half to the line, and say why …
alichherawalla de72124
test(sync): cover the identity migration and the repair decision
alichherawalla 282f98a
test(sync): cover the remembered roster, the file the user picked, an…
alichherawalla 70e82d9
test(sync): cover making a transferred file appear where the user exp…
alichherawalla 8f6636d
test(sync): two phones talking with no network between them
alichherawalla ae8b76c
test(sync): the two roads to a checksum must meet, and what the phone…
alichherawalla 6fd437d
test(sync): the fast path a large file takes, end to end
alichherawalla 61d8062
test(sync): sharing a folder on the platform that will not let you sh…
alichherawalla 0501d16
test(knowledge): pasting a page you copied straight into a knowledge …
alichherawalla ee3b460
test(sync): what this device calls itself, and what it must not decide
alichherawalla 3d2e74b
test(sync): type the remote-stream fixture against the shared preview
alichherawalla 4432686
test(sync): check the stream fixture against the shared type at its s…
alichherawalla c38be4d
test(sync): a screenshot reaching your other devices as you take it
alichherawalla 927d7ff
test(sync): a saved device seen but not dialable has to say so
alichherawalla b7d7f45
test(pro): entering a licence key is a transaction, and it has to be …
alichherawalla 2f13841
test(harness): let a test free a seat the way another device does
alichherawalla 105330f
test(sync): what this phone accepts, and its record of what arrived
alichherawalla 7985f78
test(sync): the ambient rules, the queue, and the answers already given
alichherawalla bdae098
test(sync): a file arriving on the phone lands only once it is whole
alichherawalla 223df25
test(sync): the list that says a file actually arrived
alichherawalla 1994f50
test(sync): the licence's record of the mesh, from the phone
alichherawalla 4ad07cf
test(licensing): the licence this phone holds, and what happens to it…
alichherawalla 62ee53d
test(sync): the record of transfers that finished, and the format it …
alichherawalla 4597a43
test(sync): the devices this phone trusts, and the secrets that prove it
alichherawalla 43e1cdd
test(sync): read every trust document this app has ever written
alichherawalla 46f449f
test(sync): a model arriving on this device, over and over
alichherawalla 0747b7d
test(sync): two devices agreeing about the licence they share
alichherawalla 04e192d
test(sync): standing consent to share a file, and every way to withdr…
alichherawalla 909d612
test(sync): the edges of the sharing record it keeps
alichherawalla 221a9e4
test(sync): await the refusal, so a lint warning is not a hole
alichherawalla 9529bb0
test(sync): which of this phone's files exist to be shared at all
alichherawalla 129a284
test: fix ten failing tests that were asserting things the code never…
alichherawalla 53065f9
test: five more failures that were the tests, not the app
alichherawalla 6028cf2
test: three date assertions built with the formatter the app dropped
alichherawalla a4da5d5
test(rag): run the knowledge-base round-trip on real SQLite
alichherawalla 6775eff
test: three failures where the code moved and the tests did not
alichherawalla 1b5dd3a
test(licensing): make the seat-replacement test reach Keygen at all
alichherawalla d945db8
test(sync): hold the offline-eviction journey open with its cause on …
alichherawalla 3724841
test(sync-ui): cover the receiving scope, where one switch means two …
alichherawalla 93922a4
test: drop two unused declarations the lint gate rejected
alichherawalla 5158194
test: drop the now-unused Keychain import
alichherawalla 14107f7
chore(arch): stop the orphan gate flagging a util that only pro imports
alichherawalla 5227ec6
test(sync-ui): cover every way an explicit file share can end
alichherawalla 5f0ff1e
test: type the pro-absent guard with jest's own callback type
alichherawalla 3dc7ef1
chore(dead-code): retire eleven exports nothing consumed
alichherawalla ab27207
chore: drop imports the removed pass-through was the only user of
alichherawalla e939822
fix(android): backport java.time so API 24 does not crash
alichherawalla 62c6c30
test(android): pass the resume offset the blob channel now takes
alichherawalla 2382ae7
ci: check out the shared monorepo so @offgrid/sync resolves
alichherawalla dbe6076
test: make a dead button impossible on the Activity list
alichherawalla bca6097
test: make a pro suite that cannot load its module fail instead of pa…
alichherawalla 2e7fbac
test: cover the preview under a shared file
alichherawalla 140f56b
ci: one job instead of four, and fix the shared provisioning that bro…
alichherawalla 9d4b51c
chore: drop the Provit dependency, keeping the device-driving capabil…
alichherawalla 0f31d2a
ci: keep the shared install fallback, at the root where it can help
alichherawalla a1c9531
test(e2e): a device harness on WDA and adb, validated on both phones
alichherawalla 954051d
test(e2e): target testIDs on both platforms, and stop hiding them
alichherawalla 6b67328
test(e2e): a two-device layer, and the mesh journey it exists for
alichherawalla 1fe4bad
chore: tell knip about the e2e harness's real dependencies
alichherawalla d86ef28
chore: point at the pushed mobile-pro commits, and the iOS device scr…
alichherawalla ec266a5
test: address the review, including a real hole in the dead-button sweep
alichherawalla 56364c7
fix(sync): seek absolutely when resuming an upload, instead of skipping
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
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.