codedash-app 1.3.0 → 1.3.1

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/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Browser dashboard for Claude Code & Codex sessions. View, search, resume, and manage all your AI coding sessions.
4
4
 
5
+ [Russian / Русский](docs/README_RU.md) | [Chinese / 中文](docs/README_ZH.md)
6
+
5
7
  https://github.com/user-attachments/assets/15c45659-365b-49f8-86a3-9005fa155ca6
6
8
 
7
9
  ![npm](https://img.shields.io/npm/v/codedash-app?style=flat-square) ![Node](https://img.shields.io/badge/node-%3E%3D16-green?style=flat-square) ![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)
@@ -45,27 +47,18 @@ npx codedash-app stats # show statistics
45
47
  - Related git commits shown per session
46
48
  - Auto-update notifications
47
49
 
48
- **Themes**
49
- - Dark (default), Light, System
50
+ **Themes**: Dark (default), Light, System
50
51
 
51
- **Keyboard Shortcuts**
52
- - `/` focus search, `j/k` navigate, `Enter` open
53
- - `x` star, `d` delete, `s` select mode, `g` toggle groups
54
- - `r` refresh, `Escape` close panels
52
+ **Keyboard Shortcuts**: `/` search, `j/k` navigate, `Enter` open, `x` star, `d` delete, `s` select, `g` group, `r` refresh, `Esc` close
55
53
 
56
54
  ## How It Works
57
55
 
58
- Reads session data from `~/.claude/` and `~/.codex/`:
59
- - `history.jsonl` — session index
60
- - `projects/*/<session-id>.jsonl` — conversation data
61
- - `sessions/` — Codex session files
62
-
63
- Zero dependencies. Everything runs on `localhost`.
56
+ Reads session data from `~/.claude/` and `~/.codex/`. Zero dependencies. Everything runs on `localhost`.
64
57
 
65
58
  ## Requirements
66
59
 
67
60
  - Node.js >= 16
68
- - Claude Code or Codex CLI installed
61
+ - Claude Code or Codex CLI
69
62
  - macOS / Linux / Windows
70
63
 
71
64
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codedash-app",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Termius-style browser dashboard for Claude Code sessions. View, search, resume, and delete sessions with a dark-themed UI.",
5
5
  "bin": {
6
6
  "codedash": "./bin/cli.js"
@@ -602,10 +602,16 @@ function renderProjects(container, sessions) {
602
602
 
603
603
  // ── Activity Heatmap ───────────────────────────────────────────
604
604
 
605
+ function localISO(date) {
606
+ var y = date.getFullYear();
607
+ var m = String(date.getMonth() + 1).padStart(2, '0');
608
+ var d = String(date.getDate()).padStart(2, '0');
609
+ return y + '-' + m + '-' + d;
610
+ }
611
+
605
612
  function renderHeatmap(container) {
606
613
  var now = new Date();
607
- var oneYearAgo = new Date(now);
608
- oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);
614
+ var oneYearAgo = new Date(now.getFullYear() - 1, now.getMonth(), now.getDate());
609
615
 
610
616
  // Count sessions per day
611
617
  var counts = {};
@@ -615,17 +621,16 @@ function renderHeatmap(container) {
615
621
  counts[d] = (counts[d] || 0) + 1;
616
622
  });
617
623
 
618
- // Build day array for last 365 days
624
+ // Build day array start from Sunday before oneYearAgo, end on Saturday after today
619
625
  var days = [];
620
626
  var d = new Date(oneYearAgo);
621
- // Start from the most recent Sunday before or on oneYearAgo
622
- d.setDate(d.getDate() - d.getDay());
627
+ d.setDate(d.getDate() - d.getDay()); // align to Sunday
623
628
 
624
629
  var endDate = new Date(now);
625
- endDate.setDate(endDate.getDate() + (6 - endDate.getDay())); // end on Saturday
630
+ endDate.setDate(endDate.getDate() + (6 - endDate.getDay())); // align to Saturday
626
631
 
627
632
  while (d <= endDate) {
628
- var iso = d.toISOString().slice(0, 10);
633
+ var iso = localISO(d);
629
634
  var count = counts[iso] || 0;
630
635
  var level = 0;
631
636
  if (count >= 6) level = 4;
@@ -633,8 +638,7 @@ function renderHeatmap(container) {
633
638
  else if (count >= 2) level = 2;
634
639
  else if (count >= 1) level = 1;
635
640
  days.push({ date: iso, count: count, level: level, day: d.getDay() });
636
- d = new Date(d);
637
- d.setDate(d.getDate() + 1);
641
+ d = new Date(d.getFullYear(), d.getMonth(), d.getDate() + 1);
638
642
  }
639
643
 
640
644
  // Build weeks (columns)
@@ -682,10 +686,10 @@ function renderHeatmap(container) {
682
686
  var streak = 0;
683
687
  var checkDate = new Date(now);
684
688
  while (true) {
685
- var iso = checkDate.toISOString().slice(0, 10);
686
- if (counts[iso] && counts[iso] > 0) {
689
+ var ciso = localISO(checkDate);
690
+ if (counts[ciso] && counts[ciso] > 0) {
687
691
  streak++;
688
- checkDate.setDate(checkDate.getDate() - 1);
692
+ checkDate = new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate() - 1);
689
693
  } else {
690
694
  break;
691
695
  }