66e6b0b726
The publish KeyPackage button was always active because the app didn't track whether a key package had already been published. This adds: - hasActiveKeyPackages() to KeyPackageRotationManager and MarmotManager - hasPublishedKeyPackage() to Account, checking both in-memory bundles and the local cache for existing kind:30443 events - Own key package filter in MarmotSubscriptionManager and the EOSE manager so previously published key packages are downloaded from relays on app restart - UI feedback: primary-colored key icon when published, contextual empty-state message, and a spinner during publishing https://claude.ai/code/session_01BVe7aSEWd2KLi5Ks6RZkcc