Skip to content

Add Activity Center#53

Open
Jim8y wants to merge 10 commits into
neoorder:masterfrom
Jim8y:codex/p6-activity-center
Open

Add Activity Center#53
Jim8y wants to merge 10 commits into
neoorder:masterfrom
Jim8y:codex/p6-activity-center

Conversation

@Jim8y

@Jim8y Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Scope

  • Add a focused Activity Center page under Settings.
  • Record local dApp activity for launches/connections, wallet authorization, message signing, transaction signing, and submitted transactions.
  • Keep records in the existing Settings store as a capped local timeline, avoiding schema migration and unrelated page refactors.

Validation

  • git diff --check
  • Localized resource parity check across all Strings*.resx files: 324 keys each
  • Android build passed: net10.0-android, android-arm64
  • iOS simulator build passed: net10.0-ios, iossimulator-arm64
  • Android emulator: opened Settings > Activity Center and verified only Connections / Signatures / Transactions are shown; no Vault-specific card or copy remains.
  • iOS simulator: opened Settings > Activity Center and verified only Connections / Signatures / Transactions are shown; no Vault-specific card or copy remains.

Screenshots

Latest verification screenshots are posted in PR comments as external GitHub assets; screenshots are not committed to the repository.

Review follow-up

  • ActivityLogService.GetRecentAsync() catches corrupt/incompatible local Settings data and returns an empty list instead of crashing Settings/Activity Center.
  • Removed the unclear VaultOperation / OneGateVaultTransaction concept entirely instead of renaming it.
  • All dApp-submitted transactions, including OneGate Vault submissions, are now recorded as normal Transaction activity.
  • Removed Vault-specific summary count/card, detector logic, enum value, and localized copy.
  • Added/kept Activity Center resource keys consistently across every supported locale.

Known limitations

  • The timeline is local to the device and does not backfill historical chain transactions.
  • Records are capped to the latest 50 entries to keep Settings storage small.
  • The PR intentionally does not change Home Dashboard, Global Search, or dApp detail pages.

@Jim8y

Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

iOS and Android simulator verification screenshots:

Verification:

  • git diff --check
  • Localized resource parity check across all Strings*.resx files: 310 keys each
  • iOS simulator build: net10.0-ios, iossimulator-arm64
  • Android emulator build: net10.0-android, android-arm64
  • iOS Simulator: opened Settings > Activity Center and verified the activity summary/timeline renders with OneGate Vault wording
  • Android Emulator: opened Settings > Activity Center and verified the activity summary/timeline renders with OneGate Vault wording; no OneGate crash entries in crash buffer

Review follow-up:

  • ActivityLogService.GetRecentAsync() now catches corrupt/incompatible local Settings data and returns an empty list.
  • Renamed the unclear VaultOperation activity type to OneGateVaultTransaction and updated visible copy to OneGate Vault transaction wording.
  • Added the new Activity Center resource keys to every supported locale.

@Jim8y Jim8y force-pushed the codex/p6-activity-center branch from d538bb3 to 3ca4483 Compare June 21, 2026 06:07
Copilot AI review requested due to automatic review settings June 21, 2026 08:01
@erikzhang

Copy link
Copy Markdown
Contributor

What is VaultOperation?

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Settings subpage (“Activity Center”) that records and displays recent on-device wallet/dApp actions (connections, authorizations, signatures, submitted transactions, and Vault operations) using the existing Settings key/value store.

Changes:

  • Introduces a local activity timeline model + persistence service (capped to the latest 50 records).
  • Adds a new Activity Center page (UI + summary counters) and wires it into Shell routing and Settings.
  • Hooks activity recording into dApp launch, wallet authorization, signing, and transaction relay flows.

Reviewed changes

Copilot reviewed 11 out of 12 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
OneGateApp/Services/ActivityLogService.cs Persists and retrieves capped activity records from Settings storage.
OneGateApp/Models/ActivityRecord.cs Defines activity record model + kind enum.
OneGateApp/Pages/ActivityCenterPage.xaml.cs Loads recent records into view-model items for display and summary counts.
OneGateApp/Pages/ActivityCenterPage.xaml New Settings subpage UI for activity timeline + counters + empty state.
OneGateApp/Pages/SettingsPage.xaml.cs Adds Activity Center entry and summary text (“No recent activity” / “{n} records”).
OneGateApp/Pages/LaunchDAppPage.xaml.cs Records dApp connections when launching/opening a dApp.
OneGateApp/Pages/LaunchDAppPage.xaml.dAPI.cs Records wallet authorization, signing, and transaction submission events.
OneGateApp/MauiProgram.cs Registers ActivityLogService in DI.
OneGateApp/AppShell.xaml.cs Registers new route for home/settings/activity.
OneGateApp/Properties/Strings.resx Adds EN strings for Activity Center UI and activity record text.
OneGateApp/Properties/Strings.zh-Hans.resx Adds zh-Hans strings for Activity Center UI and activity record text.
OneGateApp/Properties/Strings.Designer.cs Regenerates strongly-typed accessors for new resource keys.
Files not reviewed (1)
  • OneGateApp/Properties/Strings.Designer.cs: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread OneGateApp/Services/ActivityLogService.cs
@Jim8y

Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

@erikzhang addressed the naming: VaultOperation was too vague, so I renamed the activity kind to OneGateVaultTransaction and changed the visible copy to “OneGate Vault transaction” / “OneGate Vault”. The updated iOS and Android screenshots in the PR show the clearer wording.

@Jim8y

Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

Latest review follow-up after merging current master (bb40f15): the outdated Copilot concern is already addressed by 6c66a62, and the branch now includes merge commit c7b92c8.

Review handling:

  • ActivityLogService.GetRecentAsync() catches corrupt or incompatible local activity history and returns an empty list, so Settings and Activity Center do not crash on bad local data.
  • Activity logging remains diagnostic and does not block wallet operations.

Validation:

  • git diff --check origin/master...HEAD passed.
  • Conflict-marker scan passed.
  • iOS simulator build/install/Settings → Activity Center verified.
  • Android emulator build/install/Settings → Activity Center verified with empty crash log.

Refreshed screenshots:

Screenshots are GitHub release assets only and are not committed to the repository. Ready for re-review.

@erikzhang

Copy link
Copy Markdown
Contributor

Conflicts

@Jim8y

Jim8y commented Jul 4, 2026

Copy link
Copy Markdown
Contributor Author

Review follow-up for Erik's VaultOperation question and the later product decision to avoid a Vault-specific activity type:

  • Removed the special VaultOperation / OneGateVaultTransaction category entirely.
  • All dApp-submitted transactions, including OneGate Vault submissions, are recorded as normal Transaction activity.
  • Removed Vault-specific enum value, detector logic, summary card/count, and localized copy.
  • Updated the PR description so it no longer says Activity Center tracks OneGate Vault transactions separately.

Validation after rebasing on the latest PR branch:

  • git grep confirms no remaining VaultOperation, OneGateVaultTransaction, VaultCount, OneGateVault, IsOneGateVault, or miniapp-gas-lucky-pool activity-classification references.
  • git diff --check passed.
  • Localized resource parity check passed across all Strings*.resx files: 324 keys each.
  • Android build passed: net10.0-android, android-arm64.
  • iOS build passed: net10.0-ios, iossimulator-arm64.
  • Android emulator verified Settings > Activity Center shows only Connections / Signatures / Transactions.
  • iOS simulator verified Settings > Activity Center shows only Connections / Signatures / Transactions.

Screenshots are external GitHub release assets only; none are committed to the repo.

…enter

# Conflicts:
#	OneGateApp/Properties/Strings.de.resx
#	OneGateApp/Properties/Strings.es.resx
#	OneGateApp/Properties/Strings.fr.resx
#	OneGateApp/Properties/Strings.id.resx
#	OneGateApp/Properties/Strings.it.resx
#	OneGateApp/Properties/Strings.ja.resx
#	OneGateApp/Properties/Strings.ko.resx
#	OneGateApp/Properties/Strings.nl.resx
#	OneGateApp/Properties/Strings.pt-BR.resx
#	OneGateApp/Properties/Strings.ru.resx
#	OneGateApp/Properties/Strings.tr.resx
#	OneGateApp/Properties/Strings.vi.resx
#	OneGateApp/Properties/Strings.zh-Hant.resx
@Jim8y

Jim8y commented Jul 4, 2026

Copy link
Copy Markdown
Contributor Author

Update after latest review follow-up:

  • Removed the Vault-specific activity classification entirely. Vault-related submissions now appear as normal transactions in Activity Center.
  • Removed the VaultOperation / OneGateVaultTransaction copy path and verified no OneGateVault*, VaultOperation, IsOneGateVault, or miniapp-gas-lucky-pool markers remain in OneGateApp.
  • Merged latest origin/master into this branch and resolved the localized .resx conflicts by keeping Activity Center strings while preserving the current non-Vault transaction model.
  • Verified localized resource key parity: 330 keys across 15 .resx files.

Validation on latest branch head 83bd798:

  • Android simulator build: passed
    dotnet build OneGateApp/OneGateApp.csproj -f net10.0-android -r android-arm64 ...
  • iOS simulator build: passed
    dotnet restore ... -p:TargetFramework=net10.0-ios -r iossimulator-arm64 + dotnet build ... -f net10.0-ios -r iossimulator-arm64 --no-restore ...

Existing simulator screenshots for the Vault-category removal verification remain available here:

Notes: builds still report the existing SQLitePCLRaw.lib.e_sqlite3* NU1903 advisory warnings; no new errors were introduced by this PR update.

Comment thread OneGateApp/Services/ActivityLogService.cs Outdated
Jim8y added 2 commits July 5, 2026 16:05
…enter

# Conflicts:
#	OneGateApp/Properties/Strings.de.resx
#	OneGateApp/Properties/Strings.es.resx
#	OneGateApp/Properties/Strings.fr.resx
#	OneGateApp/Properties/Strings.id.resx
#	OneGateApp/Properties/Strings.it.resx
#	OneGateApp/Properties/Strings.ja.resx
#	OneGateApp/Properties/Strings.ko.resx
#	OneGateApp/Properties/Strings.nl.resx
#	OneGateApp/Properties/Strings.pt-BR.resx
#	OneGateApp/Properties/Strings.resx
#	OneGateApp/Properties/Strings.ru.resx
#	OneGateApp/Properties/Strings.tr.resx
#	OneGateApp/Properties/Strings.vi.resx
#	OneGateApp/Properties/Strings.zh-Hans.resx
#	OneGateApp/Properties/Strings.zh-Hant.resx
@Jim8y

Jim8y commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Addressed the storage review feedback.

Changes pushed:

  • Moved Activity Center records out of Settings into a dedicated ActivityRecords table.
  • Added a best-effort migration from the legacy Settings key to the new table, then removes the old key.
  • Kept the recent activity cap at 50 records.
  • Re-merged latest master and resolved resource conflicts.

Validation:

  • iOS simulator build passed: dotnet build -f net10.0-ios -r iossimulator-arm64 -p:EnableCodeSigning=false
  • Android build passed: dotnet build -f net10.0-android -r android-arm64 -p:EmbedAssembliesIntoApk=true

Notes:

  • Build warnings are existing SQLitePCLRaw NU1903 advisories.
  • The local keychain has no valid Apple signing identities, so iOS validation used simulator build with code signing disabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants