Back to Wox

Progress Log

progress.md

2.3.06.1 KB
Original Source

Progress Log

Session: 2026-01-26

Phase 3: Implementation

  • Status: in_progress
  • Actions taken:
    • Added oplog change notifier and wired LogOplog to signal sync manager
    • Added CloudSyncManager scaffold (debounce, batch, backoff, periodic pull)
    • Added cloud sync data types, crypto interface, AES-GCM implementation, and local applier
    • Added SettingValue helpers for local apply without oplog (SetLocal/SetFromString/DeleteLocal)
    • Fixed CloudSyncState update call sites to use the correct return signature
    • Ran go test ./... -run TestDoesNotExist in wox.core (compile check, warnings only)
    • Moved cloud sync core logic into wox.core/cloudsync and added cloudsync/settingadapter
    • Added side effects on sync apply (PostSettingUpdate + plugin setting callbacks)
    • Added cloud sync HTTP client + key endpoints + file-based device ID provider
    • Wired cloud sync service into startup and added key management (Argon2id + keyring)
    • Added UI sync endpoints (status/push/pull/key init/fetch/reset/recovery_code)
    • Added Flutter cloud sync UI (status, actions, recovery code dialogs, plugin exclusions)
    • Added cloud sync UI state/actions in WoxSettingController and new WoxCloudSyncStatus entity
    • Added cloud sync API methods to WoxApi and entity factory wiring
    • Added cloud sync i18n keys in all locales
  • Files created/modified:
    • wox.ui.flutter/wox/lib/entity/wox_cloud_sync.dart (created)
    • wox.ui.flutter/wox/lib/api/wox_api.dart (updated)
    • wox.ui.flutter/wox/lib/utils/entity_factory.dart (updated)
    • wox.ui.flutter/wox/lib/controllers/wox_setting_controller.dart (updated)
    • wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_view.dart (updated)
    • wox.ui.flutter/wox/lib/modules/setting/views/wox_setting_data_view.dart (updated)
    • wox.core/resource/lang/en_US.json (updated)
    • wox.core/resource/lang/zh_CN.json (updated)
    • wox.core/resource/lang/pt_BR.json (updated)
    • wox.core/resource/lang/ru_RU.json (updated)
    • wox.core/cloudsync/cloud_sync_manager.go (moved)
    • wox.core/cloudsync/cloud_sync_types.go (moved)
    • wox.core/cloudsync/cloud_sync_crypto.go (moved)
    • wox.core/cloudsync/cloud_sync_oplog.go (moved)
    • wox.core/cloudsync/cloud_sync_state.go (moved)
    • wox.core/cloudsync/cloud_sync_client.go (created)
    • wox.core/cloudsync/device_id.go (created)
    • wox.core/cloudsync/service.go (created)
    • wox.core/cloudsync/keyring_store.go (created)
    • wox.core/cloudsync/key_manager.go (created)
    • wox.core/cloudsync/recovery_code.go (created)
    • wox.core/cloudsync/oplog_notifier.go (moved)
    • wox.core/cloudsync/settingadapter/cloud_sync_adapters.go (moved)
    • wox.core/cloudsync/settingadapter/cloud_sync_applier.go (moved)
    • wox.core/cloud_sync_bootstrap.go (created)
    • wox.core/ui/router.go (updated)
    • wox.core/go.mod (updated)
    • wox.core/setting/store.go (updated)
    • wox.core/setting/value.go (updated)
    • findings.md (updated)

Session: 2026-01-22

Phase 1: Requirements & Discovery

  • Status: in_progress
  • Started: 2026-01-22 19:59
  • Actions taken:
    • Ran session-catchup to check for prior context
    • Loaded planning templates
    • Drafted task_plan.md, findings.md, progress.md
    • Reviewed settings storage and update flows in core and UI
    • Identified HTTP endpoints and post-update side effects for settings
    • Noted existing Oplog schema and unused LogOplog hook
    • Captured user decisions: include plugin settings, official cloud backend, login auth, LWW conflicts
    • Captured user decisions: auto sync after save, encrypted payloads (AES-256-GCM)
    • Clarified key management: persist per-user encryption key after first login (OS keychain)
    • Captured requirement: new device should bootstrap sync key after login
    • Captured requirement: recovery code loss implies data reset if no other device holds key
    • Captured decision: reset requires explicit user confirmation
    • Drafted cloud sync API and key bootstrap spec for server integration
    • Recorded encryption envelope and metadata for LWW sync
    • Captured decisions: all SettingValue sync, per-plugin sync exclusion list, periodic pull strategy
    • Marked Phase 2 complete and moved to Phase 3 for implementation planning
    • Added batching/debounce/backoff strategy for auto push
    • Selected Argon2id for recovery code KDF
    • Defined Argon2id default parameters for recovery code
    • Expanded Phase 3 client-side implementation steps (no server code)
    • Captured requirement: first-time sync bootstrap handling (local vs cloud)
    • Logged open decision for first-time sync conflict policy
    • Captured decisions: cloud wins on first sync, PlatformValue syncs full JSON, plugin size limits set
    • Captured decision: sync eligibility uses SettingValue.syncable (default true)
    • Added CloudSyncDisabledPlugins setting to core DTO and Flutter entity
    • Implemented syncable-aware Oplog logging for Wox and plugin settings
    • Updated plugin setting store tests for Oplog table
    • Added CloudSyncState DB model and local storage helpers
  • Files created/modified:
    • task_plan.md (created)
    • findings.md (created)
    • progress.md (created)
    • task_plan.md (updated)
    • findings.md (updated)
    • progress.md (updated)

Phase 2: Planning & Structure

  • Status: pending
  • Actions taken:

  • Files created/modified:

Test Results

TestInputExpectedActualStatus
go test ./... -run TestDoesNotExistwox.corecompilewarnings onlypass

Error Log

TimestampErrorAttemptResolution
2026-01-22 19:59session-catchup.py failed via python (exit code 1)1Retried with python3
2026-01-26 16:xxUpdateCloudSyncState return mismatch1Switched to _, err := UpdateCloudSyncState(...)

5-Question Reboot Check

QuestionAnswer
Where am I?Phase 1
Where am I going?Phases 2-5
What's the goal?Deliver an executable implementation plan for settings cloud sync
What have I learned?See findings.md
What have I done?Created planning files, logged requirements