Add Google Docs support for iOS - #1997
Merged
Merged
Conversation
Eight artifacts from the com.google.Docs container. Documents, document text and embedded media come from the per document stores under Documents/<account id>/localStore/documents/. Property values carry a type code beside them: text, an eight byte little endian double, or JSON. Timestamps in those stores are Unix milliseconds. Document sync state comes from cross_document_metadata, which holds the same server update time in a seconds column and a milliseconds column, so each is converted by its own unit. Comment sync state comes from the comment_items table of comments_snapshot_<account id>.db. Accounts and application state come from the app preferences property list. The contacts cache file name is shared across Google apps, so a cache is only reported when the same container holds the Google Docs preferences file, and a skip is logged otherwise. Undocumented codes are reported as stored. Path patterns pick up the WAL and SHM sidecars, which several of these stores depend on. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
abrignoni
force-pushed
the
feat/google-docs-ios
branch
from
August 19, 2026 22:59
9e6cceb to
c55a8c1
Compare
The localStore and fileStore layouts are shared by the Google editor apps, so a Google Sheets or Google Slides container carries the same paths. A store is now reported only when the same container also holds com.google.Docs.plist, and one that does not is skipped and logged. On a full filesystem image holding a Google Sheets container and no Google Docs container, the artifacts reported a spreadsheet as a Google Docs document; they now report nothing there. An image with a Google Docs container is unchanged. Document Text is now one row per document rather than one row per stored command chunk, with the text joined in stored order and a segment count. Comment Sync State drops the item kind and comment item version columns, which held the same value on every tested row. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
abrignoni
force-pushed
the
feat/google-docs-ios
branch
from
August 19, 2026 23:33
378b551 to
1e812b2
Compare
A container holds a directory per signed in account, and the same document can be open under more than one of them. The store map was keyed on the document id alone, so one copy overwrote the other and a document went unreported. The account directory is now part of the key and each account's copy is its own row. cross_document_metadata does not carry last_sync_finish_timestamp in older stores, so selecting it unconditionally failed the read and Document Sync State reported nothing on a store that held rows. The query now resolves against the file's own schema. On a full filesystem image whose container holds two account directories, Documents goes from 3 rows to 4, Document Text from 2 to 3, and Document Sync State from none to 4, matching counts measured from the stores by separate code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds Google Docs support for iOS. Eight artifacts from the com.google.Docs container:
Property values carry a type code beside them and are decoded by it. Sync state holds the same time in a seconds column and a milliseconds column, each converted by its own unit. Undocumented codes are reported as stored. The localStore and fileStore layouts and the contacts cache file name are shared with other Google apps, so a store is reported only from a container that also holds the app's preferences file, and one that does not is skipped and logged.