@hienlh/ppm 0.7.19 → 0.7.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,11 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## [0.7.19] - 2026-03-22
3
+ ## [0.7.20] - 2026-03-22
4
4
 
5
5
  ### Fixed
6
6
  - **Usage panel initial flash**: panel no longer briefly shows single-account view before loading multi-account cards
7
7
  - **Usage panel reload**: clicking refresh now correctly re-fetches all account usages after server finishes polling Anthropic API, fixing race condition where stale DB snapshots were read before refresh completed
8
8
  - **Clipboard API fallback**: export/import account data now works on mobile Safari — export falls back to file download, import shows a paste dialog when clipboard is unavailable
9
+ - **Duplicate account import**: import now skips accounts with matching email, not just matching ID — prevents duplicates when importing across devices
9
10
 
10
11
  ## [0.7.17] - 2026-03-22
11
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.7.19",
3
+ "version": "0.7.20",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "author": "hienlh",
6
6
  "license": "MIT",
@@ -518,8 +518,9 @@ class AccountService {
518
518
  let count = 0;
519
519
  for (const row of rows) {
520
520
  if (!row.id || !row.access_token || !row.refresh_token) continue;
521
- // Skip if account already exists
521
+ // Skip if account already exists (by id or email)
522
522
  if (getAccountById(row.id)) continue;
523
+ if (row.email && this.list().some((a) => a.email === row.email)) continue;
523
524
  insertAccount({
524
525
  id: row.id,
525
526
  label: row.label,