diff options
| author | processtrader <[email protected]> | 2025-12-28 02:10:23 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-27 19:10:23 -0600 |
| commit | 7a94d7a2c5a12c9fbda987b8c63dddd5df3f1393 (patch) | |
| tree | 14a6932bbdcddb0ffdee94e07b73960c6b5f592f | |
| parent | de28fafb471cca4a79be2b9e0b8767ec852ea5ab (diff) | |
| download | opencode-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.ts | 19 |
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, |
