cc-proficiency 0.2.7 → 0.2.8

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 (116) hide show
  1. package/README.es.md +395 -0
  2. package/README.fr.md +395 -0
  3. package/README.ja.md +395 -0
  4. package/README.ko.md +395 -0
  5. package/README.md +27 -6
  6. package/README.zh-CN.md +27 -6
  7. package/dist/cli/commands/achievements.d.ts.map +1 -1
  8. package/dist/cli/commands/achievements.js +6 -4
  9. package/dist/cli/commands/achievements.js.map +1 -1
  10. package/dist/cli/commands/analyze.d.ts.map +1 -1
  11. package/dist/cli/commands/analyze.js +3 -2
  12. package/dist/cli/commands/analyze.js.map +1 -1
  13. package/dist/cli/commands/badge.d.ts.map +1 -1
  14. package/dist/cli/commands/badge.js +6 -7
  15. package/dist/cli/commands/badge.js.map +1 -1
  16. package/dist/cli/commands/config.d.ts.map +1 -1
  17. package/dist/cli/commands/config.js +8 -3
  18. package/dist/cli/commands/config.js.map +1 -1
  19. package/dist/cli/commands/explain.d.ts.map +1 -1
  20. package/dist/cli/commands/explain.js +21 -21
  21. package/dist/cli/commands/explain.js.map +1 -1
  22. package/dist/cli/commands/init.d.ts.map +1 -1
  23. package/dist/cli/commands/init.js +19 -21
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/leaderboard.d.ts.map +1 -1
  26. package/dist/cli/commands/leaderboard.js +12 -10
  27. package/dist/cli/commands/leaderboard.js.map +1 -1
  28. package/dist/cli/commands/process.js +5 -5
  29. package/dist/cli/commands/process.js.map +1 -1
  30. package/dist/cli/commands/refresh.d.ts.map +1 -1
  31. package/dist/cli/commands/refresh.js +2 -4
  32. package/dist/cli/commands/refresh.js.map +1 -1
  33. package/dist/cli/commands/share.d.ts.map +1 -1
  34. package/dist/cli/commands/share.js +30 -28
  35. package/dist/cli/commands/share.js.map +1 -1
  36. package/dist/cli/commands/status.d.ts.map +1 -1
  37. package/dist/cli/commands/status.js +17 -15
  38. package/dist/cli/commands/status.js.map +1 -1
  39. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  40. package/dist/cli/commands/uninstall.js +6 -4
  41. package/dist/cli/commands/uninstall.js.map +1 -1
  42. package/dist/cli/commands/update.d.ts.map +1 -1
  43. package/dist/cli/commands/update.js +14 -12
  44. package/dist/cli/commands/update.js.map +1 -1
  45. package/dist/cli/index.js +22 -19
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/cli/services/hooks.d.ts.map +1 -1
  48. package/dist/cli/services/hooks.js +5 -4
  49. package/dist/cli/services/hooks.js.map +1 -1
  50. package/dist/cli/services/publishing.d.ts.map +1 -1
  51. package/dist/cli/services/publishing.js +15 -16
  52. package/dist/cli/services/publishing.js.map +1 -1
  53. package/dist/cli/utils/formatting.d.ts.map +1 -1
  54. package/dist/cli/utils/formatting.js +17 -11
  55. package/dist/cli/utils/formatting.js.map +1 -1
  56. package/dist/cli/utils/locale.d.ts +1 -1
  57. package/dist/cli/utils/locale.d.ts.map +1 -1
  58. package/dist/cli/utils/locale.js +4 -6
  59. package/dist/cli/utils/locale.js.map +1 -1
  60. package/dist/cli/utils/update-check.d.ts.map +1 -1
  61. package/dist/cli/utils/update-check.js +3 -2
  62. package/dist/cli/utils/update-check.js.map +1 -1
  63. package/dist/gist/registry.d.ts.map +1 -1
  64. package/dist/gist/registry.js +5 -15
  65. package/dist/gist/registry.js.map +1 -1
  66. package/dist/i18n/index.d.ts +17 -0
  67. package/dist/i18n/index.d.ts.map +1 -0
  68. package/dist/i18n/index.js +71 -0
  69. package/dist/i18n/index.js.map +1 -0
  70. package/dist/i18n/locales/en.d.ts +3 -0
  71. package/dist/i18n/locales/en.d.ts.map +1 -0
  72. package/dist/i18n/locales/en.js +276 -0
  73. package/dist/i18n/locales/en.js.map +1 -0
  74. package/dist/i18n/locales/es.d.ts +3 -0
  75. package/dist/i18n/locales/es.d.ts.map +1 -0
  76. package/dist/i18n/locales/es.js +276 -0
  77. package/dist/i18n/locales/es.js.map +1 -0
  78. package/dist/i18n/locales/fr.d.ts +3 -0
  79. package/dist/i18n/locales/fr.d.ts.map +1 -0
  80. package/dist/i18n/locales/fr.js +276 -0
  81. package/dist/i18n/locales/fr.js.map +1 -0
  82. package/dist/i18n/locales/ja.d.ts +3 -0
  83. package/dist/i18n/locales/ja.d.ts.map +1 -0
  84. package/dist/i18n/locales/ja.js +276 -0
  85. package/dist/i18n/locales/ja.js.map +1 -0
  86. package/dist/i18n/locales/ko.d.ts +3 -0
  87. package/dist/i18n/locales/ko.d.ts.map +1 -0
  88. package/dist/i18n/locales/ko.js +276 -0
  89. package/dist/i18n/locales/ko.js.map +1 -0
  90. package/dist/i18n/locales/zh-CN.d.ts +3 -0
  91. package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
  92. package/dist/i18n/locales/zh-CN.js +276 -0
  93. package/dist/i18n/locales/zh-CN.js.map +1 -0
  94. package/dist/i18n/types.d.ts +245 -0
  95. package/dist/i18n/types.d.ts.map +1 -0
  96. package/dist/i18n/types.js +5 -0
  97. package/dist/i18n/types.js.map +1 -0
  98. package/dist/renderer/animated-svg.d.ts +2 -3
  99. package/dist/renderer/animated-svg.d.ts.map +1 -1
  100. package/dist/renderer/animated-svg.js +47 -20
  101. package/dist/renderer/animated-svg.js.map +1 -1
  102. package/dist/renderer/svg.d.ts +11 -6
  103. package/dist/renderer/svg.d.ts.map +1 -1
  104. package/dist/renderer/svg.js +99 -69
  105. package/dist/renderer/svg.js.map +1 -1
  106. package/dist/store/achievements.d.ts +2 -1
  107. package/dist/store/achievements.d.ts.map +1 -1
  108. package/dist/store/achievements.js +2 -31
  109. package/dist/store/achievements.js.map +1 -1
  110. package/dist/types.d.ts +0 -2
  111. package/dist/types.d.ts.map +1 -1
  112. package/dist/utils/display-width.d.ts +10 -0
  113. package/dist/utils/display-width.d.ts.map +1 -0
  114. package/dist/utils/display-width.js +58 -0
  115. package/dist/utils/display-width.js.map +1 -0
  116. package/package.json +1 -1
@@ -0,0 +1,245 @@
1
+ export type Locale = "en" | "zh-CN" | "es" | "fr" | "ja" | "ko";
2
+ export type DomainId = "cc-mastery" | "tool-mcp" | "agentic" | "prompt-craft" | "context-mgmt";
3
+ export type FeatureKey = "hooks" | "plugins" | "skills" | "mcp" | "agents" | "plan" | "memory" | "rules";
4
+ export interface CommonStrings {
5
+ noAnalysisData: string;
6
+ ghNotAuthenticated: string;
7
+ ghNotAuthenticatedHint: string;
8
+ noGistConfigured: string;
9
+ badgeSavedLocally: (path: string) => string;
10
+ unknownKey: (key: string) => string;
11
+ invalidLocale: (val: string, supported: string) => string;
12
+ }
13
+ export interface BadgeStrings {
14
+ title: string;
15
+ calibrating: string;
16
+ needMore: (n: number) => string;
17
+ sessions: string;
18
+ projects: string;
19
+ setup: string;
20
+ earlyResults: string;
21
+ domainLabels: Record<DomainId, string>;
22
+ featureLabels: Record<FeatureKey, string>;
23
+ claudeMd: string;
24
+ tokensPrefix: string;
25
+ }
26
+ export interface HelpStrings {
27
+ description: string;
28
+ commands: {
29
+ init: string;
30
+ analyze: string;
31
+ process: string;
32
+ badge: string;
33
+ push: string;
34
+ refresh: string;
35
+ explain: string;
36
+ status: string;
37
+ config: string;
38
+ share: string;
39
+ leaderboard: string;
40
+ update: string;
41
+ uninstall: string;
42
+ version: string;
43
+ };
44
+ examples: string;
45
+ }
46
+ export interface InitStrings {
47
+ initializing: string;
48
+ githubUser: (username: string) => string;
49
+ badgeSavedLocallyHint: (path: string) => string;
50
+ ghEnableHint: string;
51
+ localeDetected: (locale: string) => string;
52
+ hookInjected: string;
53
+ runningInitialAnalysis: string;
54
+ creatingGist: string;
55
+ gistCreated: string;
56
+ addToReadme: string;
57
+ gistCreateFailed: (err: string) => string;
58
+ badgePushedToGist: (url: string) => string;
59
+ configSaved: (path: string) => string;
60
+ }
61
+ export interface AnalyzeStrings {
62
+ runningFull: string;
63
+ runningIncremental: string;
64
+ noSessionsFound: string;
65
+ }
66
+ export interface ExplainStrings {
67
+ titleLine: (username: string) => string;
68
+ strengths: string;
69
+ areasToImprove: string;
70
+ featureUsage: string;
71
+ domainTips: Record<DomainId, string>;
72
+ hooksLabel: string;
73
+ skillsLabel: string;
74
+ mcpLabel: string;
75
+ toolsLabel: string;
76
+ flagsLabel: string;
77
+ more: string;
78
+ sessionsSummary: (sessions: number, projects: number) => string;
79
+ }
80
+ export interface AchievementsDisplayStrings {
81
+ title: (unlocked: number, total: number) => string;
82
+ done: string;
83
+ }
84
+ export interface StatusStrings {
85
+ title: string;
86
+ username: string;
87
+ gistId: string;
88
+ autoUpload: string;
89
+ locale: string;
90
+ leaderboardLabel: string;
91
+ joined: (gistId: string) => string;
92
+ notJoined: string;
93
+ pending: string;
94
+ sessionsProcessed: string;
95
+ lastUpdated: string;
96
+ never: string;
97
+ queuePending: string;
98
+ hookLog: (count: number) => string;
99
+ lastHookFired: (time: string) => string;
100
+ noHookEntries: string;
101
+ queueLock: string;
102
+ queueLockHeld: (age: number) => string;
103
+ queueLockStale: string;
104
+ queueLockPresent: string;
105
+ queueLockNone: string;
106
+ notSet: string;
107
+ }
108
+ export interface ConfigStrings {
109
+ setValue: (key: string, val: string) => string;
110
+ }
111
+ export interface ShareStrings {
112
+ joining: string;
113
+ sharingPublicly: string;
114
+ sharedItems: string;
115
+ notShared: string;
116
+ alreadyOnLeaderboard: string;
117
+ creatingPublicGist: string;
118
+ publicGistCreated: (url: string) => string;
119
+ publicGistUpdated: (url: string) => string;
120
+ publicGistCreateFailed: (err: string) => string;
121
+ publicGistUpdateFailed: (err: string) => string;
122
+ registering: string;
123
+ registrationCreated: string;
124
+ profileWillAppear: string;
125
+ syncFailed: (err: string) => string;
126
+ noMergedData: string;
127
+ registerFailed: (err: string) => string;
128
+ leaving: string;
129
+ removalCreated: (url: string) => string;
130
+ publicGistDeleted: string;
131
+ publicGistDeleteFailed: (err: string) => string;
132
+ unchangedNotice: string;
133
+ removedFromLeaderboard: string;
134
+ }
135
+ export interface LeaderboardStrings {
136
+ title: (count: number) => string;
137
+ unavailable: string;
138
+ columnHeader: string;
139
+ users: (count: number, skipped: number) => string;
140
+ updatedJustNow: string;
141
+ updatedRecently: string;
142
+ cached: string;
143
+ sortHelp: string;
144
+ limitHelp: string;
145
+ }
146
+ export interface UpdateStrings {
147
+ checking: string;
148
+ alreadyLatest: (version: string) => string;
149
+ available: (current: string, latest: string) => string;
150
+ updating: string;
151
+ updated: (version: string) => string;
152
+ permissionDenied: string;
153
+ runAsAdmin: string;
154
+ runSudo: (version: string) => string;
155
+ npmNotFound: string;
156
+ fetchFailed: string;
157
+ failed: (err: string) => string;
158
+ tryManually: (version: string) => string;
159
+ }
160
+ export interface UninstallStrings {
161
+ uninstalling: string;
162
+ localDataRemoved: string;
163
+ couldNotRemove: (path: string) => string;
164
+ npmUninstallHint: string;
165
+ }
166
+ export interface ProcessStrings {
167
+ anotherRunning: string;
168
+ queueEmpty: string;
169
+ processed: (count: number, path: string) => string;
170
+ }
171
+ export interface BadgeCmdStrings {
172
+ writtenTo: (path: string) => string;
173
+ savedTo: (path: string) => string;
174
+ }
175
+ export interface CliStrings {
176
+ help: HelpStrings;
177
+ init: InitStrings;
178
+ analyze: AnalyzeStrings;
179
+ explain: ExplainStrings;
180
+ achievements: AchievementsDisplayStrings;
181
+ status: StatusStrings;
182
+ config: ConfigStrings;
183
+ share: ShareStrings;
184
+ leaderboard: LeaderboardStrings;
185
+ update: UpdateStrings;
186
+ uninstall: UninstallStrings;
187
+ process: ProcessStrings;
188
+ badge: BadgeCmdStrings;
189
+ }
190
+ export interface PublishingStrings {
191
+ achievementUnlocked: (icon: string, name: string) => string;
192
+ pushedToGist: string;
193
+ pushFailed: (err: string) => string;
194
+ staticUrl: (url: string) => string;
195
+ animatedUrl: (url: string) => string;
196
+ pushSummary: (sessions: number, hours: string, achievements: number, streak: number) => string;
197
+ }
198
+ export interface HookStrings {
199
+ alreadyInstalled: string;
200
+ couldNotParse: string;
201
+ hookRemoved: string;
202
+ couldNotUpdate: string;
203
+ }
204
+ export interface ServiceStrings {
205
+ publishing: PublishingStrings;
206
+ hooks: HookStrings;
207
+ }
208
+ export interface FormattingStrings {
209
+ calibratingStatus: (sessions: number, needed: number) => string;
210
+ setupLabel: string;
211
+ setupItems: Record<string, string>;
212
+ earlyResultsNote: string;
213
+ tokensLabel: string;
214
+ }
215
+ export interface UpdateCheckStrings {
216
+ available: (current: string, latest: string) => string;
217
+ runUpdate: string;
218
+ }
219
+ export interface AchievementItemStrings {
220
+ name: string;
221
+ description: string;
222
+ }
223
+ export interface InsightStrings {
224
+ domainLabels: Record<DomainId, string>;
225
+ domainActions: Record<DomainId, string>;
226
+ fallbackAction: (label: string) => string;
227
+ }
228
+ export interface RegistryStrings {
229
+ joinTitle: (username: string) => string;
230
+ joinBody: (username: string, gistId: string) => string;
231
+ leaveTitle: (username: string) => string;
232
+ leaveBody: (username: string) => string;
233
+ }
234
+ export interface AllStrings {
235
+ common: CommonStrings;
236
+ badge: BadgeStrings;
237
+ cli: CliStrings;
238
+ services: ServiceStrings;
239
+ formatting: FormattingStrings;
240
+ updateCheck: UpdateCheckStrings;
241
+ achievements: Record<string, AchievementItemStrings>;
242
+ insights: InsightStrings;
243
+ registry: RegistryStrings;
244
+ }
245
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // ── i18n Type Definitions ──
3
+ // This file is type-only and exempt from the 300-line limit.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B,6DAA6D"}
@@ -1,9 +1,8 @@
1
1
  import type { ProficiencyResult, TokenWindows } from "../types.js";
2
- import { type Locale } from "../i18n/locales.js";
3
- export declare function renderAnimatedFullBadge(result: ProficiencyResult, locale?: Locale, tokenWindows?: TokenWindows): string;
2
+ export declare function renderAnimatedFullBadge(result: ProficiencyResult, tokenWindows?: TokenWindows): string;
4
3
  /**
5
4
  * Render animated badge. Falls back to static calibrating badge
6
5
  * (no animation needed for the calibrating phase).
7
6
  */
8
- export declare function renderAnimatedBadge(result: ProficiencyResult, locale?: Locale, tokenWindows?: TokenWindows): string;
7
+ export declare function renderAnimatedBadge(result: ProficiencyResult, tokenWindows?: TokenWindows): string;
9
8
  //# sourceMappingURL=animated-svg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"animated-svg.d.ts","sourceRoot":"","sources":["../../src/renderer/animated-svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAa,KAAK,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AAwFhF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAE,MAAa,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAiD7H;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAE,MAAa,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAKzH"}
1
+ {"version":3,"file":"animated-svg.d.ts","sourceRoot":"","sources":["../../src/renderer/animated-svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AAiHhF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CA+DtG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAKlG"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderAnimatedFullBadge = renderAnimatedFullBadge;
4
4
  exports.renderAnimatedBadge = renderAnimatedBadge;
5
- const locales_js_1 = require("../i18n/locales.js");
5
+ const index_js_1 = require("../i18n/index.js");
6
6
  const svg_js_1 = require("./svg.js");
7
7
  const format_js_1 = require("../utils/format.js");
8
8
  // ── Animation timing ──
@@ -15,16 +15,31 @@ function barDelay(i) {
15
15
  function numberDelay(i) {
16
16
  return (0.3 + i * 0.2 + 0.8).toFixed(1);
17
17
  }
18
+ // ── Animated <switch> helper ──
19
+ function switchedAnimatedText(attrs, getText, entries, animate) {
20
+ const lines = ["<switch>"];
21
+ for (const e of entries) {
22
+ const text = (0, svg_js_1.escapeXml)(getText(e.badge));
23
+ if (e.lang) {
24
+ lines.push(`<text systemLanguage="${e.lang}" ${attrs}>${text}${animate}</text>`);
25
+ }
26
+ else {
27
+ lines.push(`<text ${attrs}>${text}${animate}</text>`);
28
+ }
29
+ }
30
+ lines.push("</switch>");
31
+ return lines.join("");
32
+ }
18
33
  // ── Animated domain row ──
19
- function renderAnimatedDomainRow(d, y, i, t) {
20
- const label = (0, svg_js_1.escapeXml)((0, svg_js_1.domainLabel)(d.id, t));
34
+ function renderAnimatedDomainRow(d, y, i, entries) {
21
35
  const color = svg_js_1.DOMAIN_COLORS[d.id] ?? svg_js_1.C.textDim;
22
36
  const barWidth = 220;
23
37
  const filledWidth = Math.round((d.score / 100) * barWidth);
24
38
  const bDelay = barDelay(i);
25
39
  const nDelay = numberDelay(i);
40
+ const labelAttrs = `x="0" y="14" fill="${svg_js_1.C.textDim}" font-size="13" font-family="${svg_js_1.SANS}" font-weight="500"`;
26
41
  return `<g transform="translate(25, ${y})">
27
- <text x="0" y="14" fill="${svg_js_1.C.textDim}" font-size="13" font-family="${svg_js_1.SANS}" font-weight="500">${label}</text>
42
+ ${(0, svg_js_1.switchedText)(labelAttrs, (b) => b.domainLabels[d.id] ?? d.id, entries)}
28
43
  <g transform="translate(120, 3)">
29
44
  <rect width="${barWidth}" height="12" rx="6" fill="${svg_js_1.C.barBg}" opacity="0.5"/>
30
45
  <rect width="0" height="12" rx="6" fill="${color}" filter="url(#glow)">
@@ -36,7 +51,7 @@ function renderAnimatedDomainRow(d, y, i, t) {
36
51
  </g>`;
37
52
  }
38
53
  // ── Animated mini-bar grid ──
39
- function renderAnimatedMiniBarGrid(featureScores, y, baseDelay, t) {
54
+ function renderAnimatedMiniBarGrid(featureScores, y, baseDelay, entries) {
40
55
  const scores = featureScores ?? {};
41
56
  const totalFeatures = svg_js_1.MINI_BAR_KEYS.length;
42
57
  const gap = 4;
@@ -48,16 +63,16 @@ function renderAnimatedMiniBarGrid(featureScores, y, baseDelay, t) {
48
63
  for (let i = 0; i < totalFeatures; i++) {
49
64
  const feat = svg_js_1.MINI_BAR_KEYS[i];
50
65
  const score = scores[feat.key] ?? 0;
51
- const label = (0, svg_js_1.escapeXml)(String(t[feat.localeKey]));
52
66
  const x = startX + i * (colWidth + gap);
53
67
  const fillColor = (0, svg_js_1.miniBarColor)(score, feat.color);
54
68
  const opacity = (0, svg_js_1.miniBarOpacity)(score);
55
69
  const fadeDelay = (baseDelay + i * 0.06).toFixed(2);
70
+ const labelAttrs = `x="${colWidth / 2}" y="${barHeight + 13}" fill="${svg_js_1.C.textMuted}" font-size="9" font-family="${svg_js_1.SANS}" text-anchor="middle"`;
56
71
  lines.push(`<g transform="translate(${x}, ${y})" opacity="0">`);
57
72
  lines.push(` <animate attributeName="opacity" from="0" to="1" dur="0.3s" begin="${fadeDelay}s" fill="freeze"/>`);
58
73
  lines.push(` <rect width="${colWidth}" height="${barHeight}" rx="4" fill="${fillColor}" opacity="${opacity}"/>`);
59
74
  lines.push(` <text x="${colWidth / 2}" y="${barHeight / 2 + 1}" fill="${score > 0 ? '#fff' : svg_js_1.C.textMuted}" font-size="10" font-family="${svg_js_1.MONO}" font-weight="600" text-anchor="middle" dominant-baseline="middle">${score}</text>`);
60
- lines.push(` <text x="${colWidth / 2}" y="${barHeight + 13}" fill="${svg_js_1.C.textMuted}" font-size="9" font-family="${svg_js_1.SANS}" text-anchor="middle">${label}</text>`);
75
+ lines.push(` ${(0, svg_js_1.switchedText)(labelAttrs, (b) => b.featureLabels[feat.key], entries)}`);
61
76
  lines.push(`</g>`);
62
77
  }
63
78
  return lines.join("\n");
@@ -66,8 +81,9 @@ function renderAnimatedMiniBarGrid(featureScores, y, baseDelay, t) {
66
81
  function hasTokens(tw) {
67
82
  return tw != null && (tw.tokens24h > 0 || tw.tokens30d > 0);
68
83
  }
69
- function renderAnimatedFullBadge(result, locale = "en", tokenWindows) {
70
- const t = (0, locales_js_1.getLocale)(locale);
84
+ function renderAnimatedFullBadge(result, tokenWindows) {
85
+ const entries = (0, svg_js_1.buildLocaleEntries)();
86
+ const enBadge = (0, index_js_1.getLocaleStrings)("en").badge;
71
87
  const width = 495;
72
88
  const rows = result.domains.length;
73
89
  const separatorY = 62 + rows * 28 + 6;
@@ -83,18 +99,29 @@ function renderAnimatedFullBadge(result, locale = "en", tokenWindows) {
83
99
  const footerDelay = (miniDelay + 0.6).toFixed(1);
84
100
  const footerDelay2 = (miniDelay + 0.8).toFixed(1);
85
101
  const domainSvg = result.domains
86
- .map((d, i) => renderAnimatedDomainRow(d, 62 + i * 28, i, t))
102
+ .map((d, i) => renderAnimatedDomainRow(d, 62 + i * 28, i, entries))
87
103
  .join("\n");
104
+ const earlyAnimate = `<animate attributeName="opacity" from="0" to="1" dur="${FADE_DUR}" begin="${footerDelay}s" fill="freeze"/>`;
88
105
  const phaseLabel = result.phase === "early"
89
- ? `<text x="${width - 25}" y="${footerY + 16}" fill="#d29922" font-size="10" font-family="${svg_js_1.MONO}" text-anchor="end" opacity="0">${(0, svg_js_1.escapeXml)(t.earlyResults)}<animate attributeName="opacity" from="0" to="1" dur="${FADE_DUR}" begin="${footerDelay}s" fill="freeze"/></text>`
106
+ ? switchedAnimatedText(`x="${width - 25}" y="${footerY + 16}" fill="#d29922" font-size="10" font-family="${svg_js_1.MONO}" text-anchor="end" opacity="0"`, (b) => b.earlyResults, entries, earlyAnimate)
107
+ : "";
108
+ const footerAnimate = `<animate attributeName="opacity" from="0" to="1" dur="0.4s" begin="${footerDelay}s" fill="freeze"/>`;
109
+ const streakPart = result.streak ? ` \u00B7 \uD83D\uDD25 ${result.streak}d` : "";
110
+ const achievePart = result.achievementCount ? ` \u00B7 \uD83C\uDFC6 ${result.achievementCount}` : "";
111
+ const footerAttrs = `x="25" y="${footerY + 16}" fill="${svg_js_1.C.textMuted}" font-size="11" font-family="${svg_js_1.MONO}" opacity="0"`;
112
+ const footerSvg = switchedAnimatedText(footerAttrs, (b) => `${(0, svg_js_1.formatHours)(result.features.totalHours)} \u00B7 ${result.sessionCount} ${b.sessions} \u00B7 ${result.projectCount} ${b.projects}${streakPart}${achievePart}`, entries, footerAnimate);
113
+ const tokenAnimate = `<animate attributeName="opacity" from="0" to="1" dur="0.4s" begin="${footerDelay}s" fill="freeze"/>`;
114
+ const tokenNums = showTokens ? ` ${(0, format_js_1.formatTokens)(tokenWindows.tokens24h)}/24h \u00B7 ${(0, format_js_1.formatTokens)(tokenWindows.tokens30d)}/30d` : "";
115
+ const tokenSvg = showTokens
116
+ ? switchedAnimatedText(`x="25" y="${footerY + 30}" fill="${svg_js_1.C.textDim}" font-size="10" font-family="${svg_js_1.MONO}" opacity="0"`, (b) => b.tokensPrefix + tokenNums, entries, tokenAnimate)
90
117
  : "";
91
118
  return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-labelledby="cc-title cc-desc">
92
- <title id="cc-title">${(0, svg_js_1.escapeXml)(t.title)} \u2014 @${u}</title>
93
- <desc id="cc-desc">${result.sessionCount} ${(0, svg_js_1.escapeXml)(t.sessions)}, ${result.projectCount} ${(0, svg_js_1.escapeXml)(t.projects)}</desc>
119
+ <title id="cc-title">${(0, svg_js_1.escapeXml)(enBadge.title)} \u2014 @${u}</title>
120
+ <desc id="cc-desc">${result.sessionCount} ${(0, svg_js_1.escapeXml)(enBadge.sessions)}, ${result.projectCount} ${(0, svg_js_1.escapeXml)(enBadge.projects)}</desc>
94
121
  ${(0, svg_js_1.svgDefs)()}
95
122
  <rect width="${width}" height="${height}" rx="12" fill="${svg_js_1.C.bg}"/>
96
123
  <rect x="0.5" y="0.5" width="${width - 1}" height="${height - 1}" rx="11.5" fill="${svg_js_1.C.card}" stroke="${svg_js_1.C.border}"/>
97
- <text x="25" y="34" fill="${svg_js_1.C.text}" font-size="18" font-family="${svg_js_1.SANS}" font-weight="600">${(0, svg_js_1.escapeXml)(t.title)}</text>
124
+ ${(0, svg_js_1.switchedText)(`x="25" y="34" fill="${svg_js_1.C.text}" font-size="18" font-family="${svg_js_1.SANS}" font-weight="600"`, (b) => b.title, entries)}
98
125
  <a href="https://github.com/${u}" target="_blank"><text x="${width - 25}" y="34" fill="${svg_js_1.C.textDim}" font-size="13" font-family="${svg_js_1.MONO}" text-anchor="end">@${u}</text></a>
99
126
  <line x1="25" y1="48" x2="${width - 25}" y2="48" stroke="${svg_js_1.C.border}"/>
100
127
 
@@ -102,11 +129,11 @@ function renderAnimatedFullBadge(result, locale = "en", tokenWindows) {
102
129
 
103
130
  <line x1="25" y1="${separatorY}" x2="${width - 25}" y2="${separatorY}" stroke="${svg_js_1.C.border}"/>
104
131
 
105
- ${renderAnimatedMiniBarGrid(result.features.featureScores, miniBarY, miniDelay, t)}
132
+ ${renderAnimatedMiniBarGrid(result.features.featureScores, miniBarY, miniDelay, entries)}
106
133
 
107
134
  <line x1="25" y1="${footerY}" x2="${width - 25}" y2="${footerY}" stroke="${svg_js_1.C.border}"/>
108
- <text x="25" y="${footerY + 16}" fill="${svg_js_1.C.textMuted}" font-size="11" font-family="${svg_js_1.MONO}" opacity="0">${(0, svg_js_1.formatHours)(result.features.totalHours)} \u00B7 ${result.sessionCount} ${(0, svg_js_1.escapeXml)(t.sessions)} \u00B7 ${result.projectCount} ${(0, svg_js_1.escapeXml)(t.projects)}${result.streak ? ` \u00B7 \uD83D\uDD25 ${result.streak}d` : ""}${result.achievementCount ? ` \u00B7 \uD83C\uDFC6 ${result.achievementCount}` : ""}<animate attributeName="opacity" from="0" to="1" dur="0.4s" begin="${footerDelay}s" fill="freeze"/></text>
109
- ${showTokens ? `<text x="25" y="${footerY + 30}" fill="${svg_js_1.C.textDim}" font-size="10" font-family="${svg_js_1.MONO}" opacity="0">tokens ${(0, format_js_1.formatTokens)(tokenWindows.tokens24h)}/24h \u00B7 ${(0, format_js_1.formatTokens)(tokenWindows.tokens30d)}/30d<animate attributeName="opacity" from="0" to="1" dur="0.4s" begin="${footerDelay}s" fill="freeze"/></text>` : ""}
135
+ ${footerSvg}
136
+ ${tokenSvg}
110
137
  <text x="25" y="${footerY + 16 + tokenOffset + 16}" fill="${svg_js_1.C.textMuted}" font-size="9" font-family="${svg_js_1.MONO}" opacity="0">${result.timestamp.slice(0, 10)}<animate attributeName="opacity" from="0" to="1" dur="0.4s" begin="${footerDelay2}s" fill="freeze"/></text>
111
138
  <text x="${width - 25}" y="${footerY + 16 + tokenOffset + 16}" fill="${svg_js_1.C.textMuted}" font-size="9" font-family="${svg_js_1.MONO}" text-anchor="end" opacity="0">github.com/Z-M-Huang/cc-proficiency<animate attributeName="opacity" from="0" to="1" dur="0.4s" begin="${footerDelay2}s" fill="freeze"/></text>
112
139
  ${phaseLabel}
@@ -116,10 +143,10 @@ function renderAnimatedFullBadge(result, locale = "en", tokenWindows) {
116
143
  * Render animated badge. Falls back to static calibrating badge
117
144
  * (no animation needed for the calibrating phase).
118
145
  */
119
- function renderAnimatedBadge(result, locale = "en", tokenWindows) {
146
+ function renderAnimatedBadge(result, tokenWindows) {
120
147
  if (result.phase === "calibrating") {
121
- return (0, svg_js_1.renderCalibratingBadge)(result, locale, tokenWindows);
148
+ return (0, svg_js_1.renderCalibratingBadge)(result, tokenWindows);
122
149
  }
123
- return renderAnimatedFullBadge(result, locale, tokenWindows);
150
+ return renderAnimatedFullBadge(result, tokenWindows);
124
151
  }
125
152
  //# sourceMappingURL=animated-svg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"animated-svg.js","sourceRoot":"","sources":["../../src/renderer/animated-svg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animated-svg.js","sourceRoot":"","sources":["../../src/renderer/animated-svg.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ProficiencyResult, ConfidenceLevel, TokenWindows } from "../types.js";
2
- import { type Locale, type LocaleStrings } from "../i18n/locales.js";
2
+ import type { BadgeStrings } from "../i18n/types.js";
3
3
  export declare const C: {
4
4
  bg: string;
5
5
  card: string;
@@ -18,19 +18,24 @@ export declare const MONO = "ui-monospace, 'SF Mono', SFMono-Regular, monospace"
18
18
  export declare function escapeXml(str: string): string;
19
19
  export declare function confidenceSymbol(c: ConfidenceLevel): string;
20
20
  export declare function svgDefs(): string;
21
- export declare function domainLabel(id: string, t: LocaleStrings): string;
21
+ export declare function domainLabel(id: string, t: BadgeStrings): string;
22
+ export type LocaleEntry = {
23
+ lang: string | null;
24
+ badge: BadgeStrings;
25
+ };
26
+ export declare function buildLocaleEntries(): LocaleEntry[];
27
+ export declare function switchedText(attrs: string, getText: (b: BadgeStrings) => string, entries: LocaleEntry[]): string;
22
28
  export declare function formatHours(h: number): string;
23
29
  export declare const MINI_BAR_KEYS: Array<{
24
30
  key: string;
25
- localeKey: keyof LocaleStrings;
26
31
  color: string;
27
32
  }>;
28
33
  export declare function miniBarColor(score: number, baseColor: string): string;
29
34
  export declare function miniBarOpacity(score: number): string;
30
35
  export declare const MINI_BAR_SECTION_HEIGHT = 42;
31
- export declare function renderCalibratingBadge(result: ProficiencyResult, locale?: Locale, tokenWindows?: TokenWindows): string;
32
- export declare function renderFullBadge(result: ProficiencyResult, locale?: Locale, tokenWindows?: TokenWindows): string;
33
- export declare function renderBadge(result: ProficiencyResult, locale?: Locale, tokenWindows?: TokenWindows): string;
36
+ export declare function renderCalibratingBadge(result: ProficiencyResult, tokenWindows?: TokenWindows): string;
37
+ export declare function renderFullBadge(result: ProficiencyResult, tokenWindows?: TokenWindows): string;
38
+ export declare function renderBadge(result: ProficiencyResult, tokenWindows?: TokenWindows): string;
34
39
  export declare function getInsights(result: ProficiencyResult): {
35
40
  topStrength: string;
36
41
  nextAction: string;
@@ -1 +1 @@
1
- {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/renderer/svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAe,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEhF,eAAO,MAAM,CAAC;;;;;;;;;;;CAWb,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AAEF,eAAO,MAAM,IAAI,qDAAqD,CAAC;AACvE,eAAO,MAAM,IAAI,uDAAuD,CAAC;AAEzE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAM3D;AAED,wBAAgB,OAAO,IAAI,MAAM,CAIhC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAOhE;AAgBD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7C;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAS/F,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKpD;AA8BD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAW1C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAE,MAAa,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAkC5H;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAE,MAAa,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAuCrH;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAE,MAAa,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAGjH;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAqBlG"}
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/renderer/svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAe,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,eAAO,MAAM,CAAC;;;;;;;;;;;CAWb,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AAEF,eAAO,MAAM,IAAI,qDAAqD,CAAC;AACvE,eAAO,MAAM,IAAI,uDAAuD,CAAC;AAEzE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAM3D;AAED,wBAAgB,OAAO,IAAI,MAAM,CAIhC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAG/D;AAID,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAIvE,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAQlD;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,MAAM,EACpC,OAAO,EAAE,WAAW,EAAE,GACrB,MAAM,CAYR;AAgBD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7C;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAS/D,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKpD;AA8BD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAa1C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CA+CrG;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CA6C9F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAG1F;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAUlG"}