PlayCover / PlayTools

Tools for keymapping, dynamic resolution, and more
GNU Affero General Public License v3.0
71 stars 56 forks source link

Transitioning to database-based KeyChain support. #140

Closed Ryu-ga closed 4 months ago

Ryu-ga commented 9 months ago

https://github.com/PlayCover/PlayTools/pull/139

I didn't test much apps for now. It seems to work well to me. This code needs to be cleaner and clearer.

Edit: This change breaks many apps, because this is incompatible to old plist stuffs(not having all attributes and primary keys). if user want to use newer PlayTools, they need to clean PlayChain data or even re-install entire apps(many apps believe their SecItems will not disappear, they do not use optional,,) I added simple user_version pragma in db, this will be used when migration code is available.

XuYicong commented 7 months ago

Is this still a draft or ready for review?

Ryu-ga commented 7 months ago

Is this still a draft or ready for review?

Still draft, it needs several migration methods for existing plist based elements and itself(it may need some versioning to update itself)

ohaiibuzzle commented 6 months ago

I've already said this on the Discord, but I'll state this here for proper safe-keeping purposes: If you can improve Chain, but that change causes an incompatibility with the current plist based format, ignore backcompat and just nuke the older plists entirely. Keychain is required for some functionality but not mission critical, the best it can break is users getting logged out. That is acceptable given that using a proper database will be objectively better than trying to solve what's very wrong with the current plists (it's not enough to differentiate many kinds of keys)