summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorprocesstrader <[email protected]>2025-12-28 02:10:23 +0100
committerGitHub <[email protected]>2025-12-27 19:10:23 -0600
commit7a94d7a2c5a12c9fbda987b8c63dddd5df3f1393 (patch)
tree14a6932bbdcddb0ffdee94e07b73960c6b5f592f
parentde28fafb471cca4a79be2b9e0b8767ec852ea5ab (diff)
downloadopencode-7a94d7a2c5a12c9fbda987b8c63dddd5df3f1393.tar.gz
opencode-7a94d7a2c5a12c9fbda987b8c63dddd5df3f1393.zip
fix: stats command to correctly handle `--days 0` for current day statistics (#6259)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: rekram1-node <[email protected]>
-rw-r--r--packages/opencode/src/cli/cmd/stats.ts19
1 files changed, 14 insertions, 5 deletions
diff --git a/packages/opencode/src/cli/cmd/stats.ts b/packages/opencode/src/cli/cmd/stats.ts
index f41b23ee9..94f1b549f 100644
--- a/packages/opencode/src/cli/cmd/stats.ts
+++ b/packages/opencode/src/cli/cmd/stats.ts
@@ -82,12 +82,21 @@ async function getAllSessions(): Promise<Session.Info[]> {
return sessions
}
-async function aggregateSessionStats(days?: number, projectFilter?: string): Promise<SessionStats> {
+export async function aggregateSessionStats(days?: number, projectFilter?: string): Promise<SessionStats> {
const sessions = await getAllSessions()
- const DAYS_IN_SECOND = 24 * 60 * 60 * 1000
- const cutoffTime = days ? Date.now() - days * DAYS_IN_SECOND : 0
+ const MS_IN_DAY = 24 * 60 * 60 * 1000
+
+ const cutoffTime = (() => {
+ if (days === undefined) return 0
+ if (days === 0) {
+ const now = new Date()
+ now.setHours(0, 0, 0, 0)
+ return now.getTime()
+ }
+ return Date.now() - days * MS_IN_DAY
+ })()
- let filteredSessions = days ? sessions.filter((session) => session.time.updated >= cutoffTime) : sessions
+ let filteredSessions = cutoffTime > 0 ? sessions.filter((session) => session.time.updated >= cutoffTime) : sessions
if (projectFilter !== undefined) {
if (projectFilter === "") {
@@ -198,7 +207,7 @@ async function aggregateSessionStats(days?: number, projectFilter?: string): Pro
}
}
- const actualDays = Math.max(1, Math.ceil((latestTime - earliestTime) / DAYS_IN_SECOND))
+ const actualDays = Math.max(1, Math.ceil((latestTime - earliestTime) / MS_IN_DAY))
stats.dateRange = {
earliest: earliestTime,
latest: latestTime,