tokentracker-cli 0.87.18 → 0.87.19

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.
Files changed (94) hide show
  1. package/dashboard/dist/assets/{AchievementBadge-B-noxcU6.js → AchievementBadge-DjdOWtHt.js} +1 -1
  2. package/dashboard/dist/assets/{AchievementsPage-DTdf9pER.js → AchievementsPage-BoD9j-tR.js} +2 -2
  3. package/dashboard/dist/assets/{AchievementsSection-BNXGPvFi.js → AchievementsSection-gg8qQgiE.js} +1 -1
  4. package/dashboard/dist/assets/{BadgeDetailModal-GSqDWKWX.js → BadgeDetailModal-IAbpXovp.js} +1 -1
  5. package/dashboard/dist/assets/{Card-DEufcTc9.js → Card-Ca38XfWL.js} +1 -1
  6. package/dashboard/dist/assets/{ClawdAnimated-WUHfwJup.js → ClawdAnimated-myJ8ptXF.js} +1 -1
  7. package/dashboard/dist/assets/{CommandPalette-v0kzoXyy.js → CommandPalette-mHl3UW9c.js} +1 -1
  8. package/dashboard/dist/assets/{CommunityStatsModal-BRHJI8FA.js → CommunityStatsModal-C8Rbi0qI.js} +1 -1
  9. package/dashboard/dist/assets/{ConfirmModal-BfV6Otpq.js → ConfirmModal-CAUPZ56o.js} +1 -1
  10. package/dashboard/dist/assets/{Controls-CS8GWl0_.js → Controls-DafPuhCC.js} +1 -1
  11. package/dashboard/dist/assets/{DashboardPage-DhBSaV1l.js → DashboardPage-WQRKij-4.js} +1 -1
  12. package/dashboard/dist/assets/{DevicePage-DwtE5Fo_.js → DevicePage-C8Lp9jx2.js} +1 -1
  13. package/dashboard/dist/assets/{DialogClose-BPO4reDI.js → DialogClose-BwMssKVe.js} +1 -1
  14. package/dashboard/dist/assets/DialogDescription-XcceJvrW.js +1 -0
  15. package/dashboard/dist/assets/{DialogTitle-uApcKgX7.js → DialogTitle-g-Owir_j.js} +1 -1
  16. package/dashboard/dist/assets/{FadeIn-VoGmyP56.js → FadeIn-DA7dvpnn.js} +1 -1
  17. package/dashboard/dist/assets/{HeaderGithubStar-Di6ma4t7.js → HeaderGithubStar-DTjXWyYb.js} +1 -1
  18. package/dashboard/dist/assets/{HoverTooltip-CArFeCWP.js → HoverTooltip-ClDB5rTj.js} +1 -1
  19. package/dashboard/dist/assets/{IpCheckPage-D8kqbSMi.js → IpCheckPage-B0Z1SYQ0.js} +1 -1
  20. package/dashboard/dist/assets/{LandingPage-c_hJ2nxC.js → LandingPage-DR_q_2Y1.js} +2 -2
  21. package/dashboard/dist/assets/{LeaderboardAvatar-NeiaXnPA.js → LeaderboardAvatar-cWNsMziS.js} +1 -1
  22. package/dashboard/dist/assets/{LeaderboardPage-D2jZsqZO.js → LeaderboardPage-CM13m8Gt.js} +2 -2
  23. package/dashboard/dist/assets/{LeaderboardProfileModal-DxGYxTRa.js → LeaderboardProfileModal-D3f2Et31.js} +3 -3
  24. package/dashboard/dist/assets/{LeaderboardProfilePage-BP0JEfYD.js → LeaderboardProfilePage-sG_OaOUv.js} +1 -1
  25. package/dashboard/dist/assets/{LimitsPage-BZoohpGz.js → LimitsPage-TYSRaK5V.js} +1 -1
  26. package/dashboard/dist/assets/{LocalOnlyNotice-BuHpzYH-.js → LocalOnlyNotice-7_9elz8V.js} +1 -1
  27. package/dashboard/dist/assets/{LoginCard-BVMNSKFS.js → LoginCard-nZIVgUHt.js} +1 -1
  28. package/dashboard/dist/assets/{LoginModal-CatV5UrC.js → LoginModal-B2M3qN6J.js} +1 -1
  29. package/dashboard/dist/assets/{LoginPage-DDFk3URM.js → LoginPage-CzTnTLSB.js} +1 -1
  30. package/dashboard/dist/assets/{PetPage-pT1vDCh0.js → PetPage-qcgjFiWl.js} +1 -1
  31. package/dashboard/dist/assets/{PopoverPopup-BFJqtoaw.js → PopoverPopup-D8PNL9So.js} +1 -1
  32. package/dashboard/dist/assets/{ProviderIcon-C69eUHWk.js → ProviderIcon-BpY0pOfI.js} +1 -1
  33. package/dashboard/dist/assets/{ResetPasswordPage-D6GnL5_5.js → ResetPasswordPage-kNfcfjIN.js} +1 -1
  34. package/dashboard/dist/assets/{SegmentedControl-BvK1j35H.js → SegmentedControl-C-Mak_jy.js} +1 -1
  35. package/dashboard/dist/assets/{Select-CBtN1wOH.js → Select-DTmDAOQL.js} +1 -1
  36. package/dashboard/dist/assets/{SelectItemText-XQ9X1IOx.js → SelectItemText-YJrHBON2.js} +1 -1
  37. package/dashboard/dist/assets/{ServiceStatusPage-wTlP_RzP.js → ServiceStatusPage--87xzQwN.js} +1 -1
  38. package/dashboard/dist/assets/{SessionsPage-TvegBwjZ.js → SessionsPage-D2s93km5.js} +1 -1
  39. package/dashboard/dist/assets/{SettingsPage-C5YgURIn.js → SettingsPage-DTpkdG1F.js} +1 -1
  40. package/dashboard/dist/assets/{SkillsPage-BayYyq-C.js → SkillsPage-CF-W0Bdn.js} +1 -1
  41. package/dashboard/dist/assets/{TokenGalaxy-gt_3rCOw.js → TokenGalaxy-Ddd30kK4.js} +1 -1
  42. package/dashboard/dist/assets/{ToolbarRootContext-CpG0zm3q.js → ToolbarRootContext-BtATj8Kg.js} +1 -1
  43. package/dashboard/dist/assets/{TrendMonitor-D6cF0h6n.js → TrendMonitor-CefjyUEM.js} +1 -1
  44. package/dashboard/dist/assets/{WidgetsPage-_nQjtAnd.js → WidgetsPage-C0jApuSm.js} +1 -1
  45. package/dashboard/dist/assets/{WrappedPage-DtMQmuQZ.js → WrappedPage-C3rAnnnz.js} +1 -1
  46. package/dashboard/dist/assets/{__vite-browser-external-Bqhup8aJ.js → __vite-browser-external-BnkHs6gg.js} +2 -2
  47. package/dashboard/dist/assets/{agent-logos-CG1y0tsV.js → agent-logos-C-TeVx-Q.js} +1 -1
  48. package/dashboard/dist/assets/{arrow-up-right-DmhLcspZ.js → arrow-up-right-CBLf9cEj.js} +1 -1
  49. package/dashboard/dist/assets/{check-DXt7dlYY.js → check-BCeBC6q5.js} +1 -1
  50. package/dashboard/dist/assets/{chevron-right-DMarEqgQ.js → chevron-right-CfexlS0D.js} +1 -1
  51. package/dashboard/dist/assets/{copy-D0m6z9vO.js → copy-BCajOHXr.js} +1 -1
  52. package/dashboard/dist/assets/{download-Dj1tX49Q.js → download-LK6wlUkh.js} +1 -1
  53. package/dashboard/dist/assets/{external-link-B_bvu1xW.js → external-link-DtI-rPEW.js} +1 -1
  54. package/dashboard/dist/assets/{flame-CBIFjOx4.js → flame-DNKgVNfD.js} +1 -1
  55. package/dashboard/dist/assets/{format-tokens-CE8C2sTz.js → format-tokens-eJo8lpNP.js} +1 -1
  56. package/dashboard/dist/assets/{icons-nu4_bWbA.js → icons-GMVziREt.js} +1 -1
  57. package/dashboard/dist/assets/{index-CdIpBI4N.js → index-Bs-yqjys.js} +1 -1
  58. package/dashboard/dist/assets/{index-AlRPQrQw.js → index-C-ZYvbxQ.js} +1 -1
  59. package/dashboard/dist/assets/{index-DsfdpID-.js → index-ChIn4Kpc.js} +1 -1
  60. package/dashboard/dist/assets/{info-CexkP1mz.js → info-LjaJs2Xo.js} +1 -1
  61. package/dashboard/dist/assets/{limits-providers-DXVJK24-.js → limits-providers-BVpDixxM.js} +1 -1
  62. package/dashboard/dist/assets/{link-2-6feCr-mI.js → link-2-BEdehwcL.js} +1 -1
  63. package/dashboard/dist/assets/{loader-circle-feKU4f7D.js → loader-circle-UzlbEwD-.js} +1 -1
  64. package/dashboard/dist/assets/{maximize-2-BLxG6I0w.js → maximize-2-DlxceNm2.js} +1 -1
  65. package/dashboard/dist/assets/{modifiers.esm-D1VDSw2s.js → modifiers.esm-vknNttgo.js} +1 -1
  66. package/dashboard/dist/assets/{monitor-smartphone-CugIHgUy.js → monitor-smartphone-DoK-YZlF.js} +1 -1
  67. package/dashboard/dist/assets/{provider-display-DFPtSj_b.js → provider-display-BTUlO1Ed.js} +1 -1
  68. package/dashboard/dist/assets/{react-C99FCIQ6.js → react-Dh2WJ1de.js} +1 -1
  69. package/dashboard/dist/assets/{search-CMPoVoEF.js → search-B294I1Eq.js} +1 -1
  70. package/dashboard/dist/assets/{skills-api-DyLPnlv8.js → skills-api-BNSma3cf.js} +1 -1
  71. package/dashboard/dist/assets/{sortable.esm-Dx5vuG82.js → sortable.esm-DpmS_541.js} +1 -1
  72. package/dashboard/dist/assets/{store-DjvTYGJ2.js → store-DDcrG9Du.js} +1 -1
  73. package/dashboard/dist/assets/{terminal-BM-AI-XT.js → terminal-DDFEmVIY.js} +1 -1
  74. package/dashboard/dist/assets/{trash-2-DvJl0rH6.js → trash-2-BVcLx2v9.js} +1 -1
  75. package/dashboard/dist/assets/{use-community-stats-DATwtzaO.js → use-community-stats-4GDlBd2t.js} +1 -1
  76. package/dashboard/dist/assets/{use-limits-display-prefs-BRL_U9dY.js → use-limits-display-prefs-DbTWVAXb.js} +1 -1
  77. package/dashboard/dist/assets/{use-ordered-list-L1R4D2H7.js → use-ordered-list-B3C1RunE.js} +1 -1
  78. package/dashboard/dist/assets/use-reduced-motion-C_Fipb-j.js +1 -0
  79. package/dashboard/dist/assets/{use-session-efficiency-pref-08qoGmbK.js → use-session-efficiency-pref-wPytkrbU.js} +1 -1
  80. package/dashboard/dist/assets/{use-transform-BFpK-EAD.js → use-transform-DB210eQI.js} +1 -1
  81. package/dashboard/dist/assets/{use-usage-limits-DESyo14u.js → use-usage-limits-BK9XdPuA.js} +1 -1
  82. package/dashboard/dist/assets/{useCurrency-DEvjfAzI.js → useCurrency-CRiwthki.js} +1 -1
  83. package/dashboard/dist/assets/{useScrollLock-DwixTWaN.js → useScrollLock-B0v4OVXm.js} +1 -1
  84. package/dashboard/dist/assets/{useTokenFormat-BZE0Ce_8.js → useTokenFormat-Kd88NVmv.js} +1 -1
  85. package/dashboard/dist/assets/{zap-cQ3QAXar.js → zap-D3QQucVp.js} +1 -1
  86. package/dashboard/dist/index.html +1 -1
  87. package/dashboard/dist/ip-check.html +1 -1
  88. package/dashboard/dist/leaderboard.html +1 -1
  89. package/dashboard/dist/share.html +1 -1
  90. package/package.json +1 -1
  91. package/src/lib/pricing/seed-snapshot.json +1 -1
  92. package/src/lib/session-analytics.js +22 -7
  93. package/dashboard/dist/assets/DialogDescription-CMyelOxq.js +0 -1
  94. package/dashboard/dist/assets/use-reduced-motion-Cn8iurQn.js +0 -1
@@ -816,21 +816,36 @@ function dedupeClaudeFilesAcrossRoots(groups) {
816
816
  const mtimeOf = (filePath) => {
817
817
  try { return fs.statSync(filePath).mtimeMs; } catch { return -Infinity; }
818
818
  };
819
+ const sessionIdOf = (filePath) =>
820
+ path.basename(filePath).match(/^([0-9a-f-]{36})\.jsonl$/i)?.[1] || null;
821
+
822
+ // A UUID appearing twice inside ONE root has no resolvable identity: nothing
823
+ // in the paths says which sibling a copy in another root mirrors. Collapsing
824
+ // by mtime there would evict a genuinely distinct transcript — and, when the
825
+ // other root mirrors the sibling rather than the first file, keep that content
826
+ // twice. Such UUIDs opt out of dedup entirely; an ambiguous duplicate is
827
+ // cheap, a deleted session is not.
828
+ const ambiguous = new Set();
829
+ for (const group of rootGroups) {
830
+ const seenHere = new Set();
831
+ for (const filePath of group) {
832
+ const id = sessionIdOf(filePath);
833
+ if (!id) continue;
834
+ if (seenHere.has(id)) ambiguous.add(id);
835
+ seenHere.add(id);
836
+ }
837
+ }
838
+
819
839
  // Preserve root order for everything kept, so native precedence is stable.
820
- // Claims are compared only against EARLIER roots: two same-UUID files inside
821
- // one tree are siblings, not copies, and must both survive.
822
840
  const ordered = [];
823
841
  const winnerBySession = new Map();
824
842
  for (const group of rootGroups) {
825
- const claimedHere = new Map();
826
843
  for (const filePath of group) {
827
- const id = path.basename(filePath).match(/^([0-9a-f-]{36})\.jsonl$/i)?.[1] || null;
828
- if (!id || claimedHere.has(id)) {
829
- // No session identity, or a sibling within this same root.
844
+ const id = sessionIdOf(filePath);
845
+ if (!id || ambiguous.has(id)) {
830
846
  if (!ordered.includes(filePath)) ordered.push(filePath);
831
847
  continue;
832
848
  }
833
- claimedHere.set(id, filePath);
834
849
  const previous = winnerBySession.get(id);
835
850
  if (previous === undefined) {
836
851
  winnerBySession.set(id, filePath);
@@ -1 +0,0 @@
1
- import{r as n,z as a}from"./__vite-browser-external-Bqhup8aJ.js";import{u as p}from"./DialogTitle-uApcKgX7.js";import{u as c}from"./useScrollLock-DwixTWaN.js";const x=n.forwardRef(function(e,r){const{render:l,className:u,style:m,id:s,...t}=e,{store:i}=p(),o=c(s);return i.useSyncedValueWithCleanup("descriptionElementId",o),a("p",e,{ref:r,props:[{id:o},t]})});export{x as D};
@@ -1 +0,0 @@
1
- import{r as o}from"./__vite-browser-external-Bqhup8aJ.js";import{h as r,i as t,p as s}from"./react-C99FCIQ6.js";function i(){!r.current&&t();const[e]=o.useState(s.current);return e}export{i as u};