Technically if a client has a full index version X (in plaintext), it could modify X to get X+1, compute a binary diff between X and (X+1) - encrypt and upload the diff.
Another client on index version X could download the diff, and get index (X+1).
Some desktop client should probably do compaction from time to time.
You would have to re-download the index after compaction. But the index and patches would be independent - you apply the decrypted patches to the decrypted index.
Another client on index version X could download the diff, and get index (X+1).
Some desktop client should probably do compaction from time to time.