claude-code-templates 1.28.4 → 1.28.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-templates",
3
- "version": "1.28.4",
3
+ "version": "1.28.5",
4
4
  "description": "CLI tool to setup Claude Code configurations with framework-specific commands, automation hooks and MCP Servers for your projects",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -904,19 +904,54 @@ class YearInReview2025 {
904
904
  }
905
905
 
906
906
  const subagents = Array.from(agentData.values());
907
- const subagentEvents = subagents
908
- .filter(agent => agent.timestamp && agent.timestamp.getFullYear() === 2025)
909
- .map(agent => ({
910
- name: `${agent.type}-${agent.id.substring(0, 4)}`, // e.g., "Plan-a68a" or "Explore-a1e4"
911
- timestamp: agent.timestamp,
912
- type: agent.type
913
- }))
914
- .sort((a, b) => a.timestamp - b.timestamp);
907
+
908
+ // Group subagents by type for cleaner visualization
909
+ const groupedByType = {};
910
+ subagents.forEach(agent => {
911
+ const type = agent.type || 'Unknown';
912
+ if (!groupedByType[type]) {
913
+ groupedByType[type] = { count: 0, timestamps: [] };
914
+ }
915
+ groupedByType[type].count++;
916
+ if (agent.timestamp && agent.timestamp.getFullYear() === 2025) {
917
+ groupedByType[type].timestamps.push(agent.timestamp);
918
+ }
919
+ });
920
+
921
+ // Create events grouped by type (one event per type per day)
922
+ const subagentEvents = [];
923
+ Object.entries(groupedByType).forEach(([type, data]) => {
924
+ // Group timestamps by day to avoid too many events
925
+ const dayMap = new Map();
926
+ data.timestamps.forEach(ts => {
927
+ const dayKey = ts.toISOString().split('T')[0];
928
+ if (!dayMap.has(dayKey)) {
929
+ dayMap.set(dayKey, { count: 0, timestamp: ts });
930
+ }
931
+ dayMap.get(dayKey).count++;
932
+ });
933
+
934
+ // Create one event per day per type
935
+ dayMap.forEach((dayData, dayKey) => {
936
+ subagentEvents.push({
937
+ name: type, // Just "Plan" or "Explore", not "Plan-a68a"
938
+ timestamp: dayData.timestamp,
939
+ type: type,
940
+ count: dayData.count // How many times used that day
941
+ });
942
+ });
943
+ });
944
+
945
+ subagentEvents.sort((a, b) => a.timestamp - b.timestamp);
915
946
 
916
947
  return {
917
- subagents: subagents.map(a => ({ id: a.id, type: a.type })),
948
+ subagents: Object.entries(groupedByType).map(([type, data]) => ({
949
+ type,
950
+ count: data.count
951
+ })),
918
952
  total: subagents.length,
919
- events: subagentEvents
953
+ events: subagentEvents,
954
+ grouped: groupedByType // Include grouped data for display
920
955
  };
921
956
  } catch (error) {
922
957
  console.warn('Could not analyze subagents:', error.message);
@@ -1637,19 +1637,20 @@
1637
1637
  }
1638
1638
 
1639
1639
  if (data.subagents && data.subagents.events) {
1640
- console.log(`🤖 Adding ${data.subagents.events.length} subagent events to timeline`);
1640
+ console.log(`🤖 Adding ${data.subagents.events.length} subagent events to timeline (grouped by type)`);
1641
1641
  data.subagents.events.forEach((event, index) => {
1642
1642
  const eventDate = new Date(event.timestamp);
1643
1643
  const eventDayOfYear = getDayOfYear(eventDate);
1644
1644
  timeline.push({
1645
1645
  type: 'component-layer2',
1646
1646
  componentType: 'subagent',
1647
- name: event.name,
1647
+ name: event.name, // Now just "Plan" or "Explore", not "Plan-a68a"
1648
1648
  date: eventDate,
1649
- dayOfYear: eventDayOfYear
1649
+ dayOfYear: eventDayOfYear,
1650
+ count: event.count || 1 // How many times used that day
1650
1651
  });
1651
1652
  if (index === 0) {
1652
- console.log(` - First subagent "${event.name}": date=${eventDate.toLocaleDateString()}, dayOfYear=${eventDayOfYear.toFixed(3)}`);
1653
+ console.log(` - First subagent "${event.name}": date=${eventDate.toLocaleDateString()}, dayOfYear=${eventDayOfYear.toFixed(3)}, count=${event.count || 1}`);
1653
1654
  }
1654
1655
  });
1655
1656
  }
@@ -1922,13 +1923,18 @@
1922
1923
  // showEvent(`Installed: ${event.name}`); // Disabled - notifications removed
1923
1924
  } else if (event.type === 'component-layer2') {
1924
1925
  const node = getOrCreateComponentNode(event.name, event.componentType);
1925
- node.addUse();
1926
+
1927
+ // Add uses based on event count (for grouped subagents)
1928
+ const useCount = event.count || 1;
1929
+ for (let j = 0; j < useCount; j++) {
1930
+ node.addUse();
1931
+ }
1926
1932
 
1927
1933
  // Create beam to this component node
1928
1934
  const beam = new Beam(node, event.name);
1929
1935
  beams.push(beam);
1930
1936
 
1931
- console.log(`🔷 ${event.componentType}: ${event.name} at ${event.date?.toLocaleDateString()} (count: ${node.count}, size: ${node.targetSize.toFixed(1)})`);
1937
+ console.log(`🔷 ${event.componentType}: ${event.name} at ${event.date?.toLocaleDateString()} (added: ${useCount}, total: ${node.count}, size: ${node.targetSize.toFixed(1)})`);
1932
1938
  }
1933
1939
  }
1934
1940
  });