Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions extensions/ccusage/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Claude Code Usage (ccusage) Changelog

## [v2.3.1] - {PR_MERGE_DATE}

### Fixed

- CLI data (daily, monthly, total, session) now auto-refreshes on the configured interval instead of only updating on manual revalidation

## [v2.3.0] - 2026-03-23

### Added
Expand Down
8 changes: 7 additions & 1 deletion extensions/ccusage/src/hooks/useCCUsageDailyCli.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState } from "react";
import { useState, useEffect } from "react";
import { Cache } from "@raycast/api";
import { useExec } from "@raycast/utils";
import { DailyUsageCommandResponse, DailyUsageCommandResponseSchema } from "../types/usage-types";
Expand Down Expand Up @@ -49,5 +49,11 @@ export const useCCUsageDailyCli = () => {
},
});

const intervalMs = parseInt(preferences.usageLimitsRefreshInterval || "60", 10) * 1000;
useEffect(() => {
const id = setInterval(() => result.revalidate(), intervalMs);
return () => clearInterval(id);
}, [intervalMs]);
Comment thread
0xdhrv marked this conversation as resolved.
Outdated

return result;
};
8 changes: 7 additions & 1 deletion extensions/ccusage/src/hooks/useCCUsageMonthlyCli.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState } from "react";
import { useState, useEffect } from "react";
import { Cache } from "@raycast/api";
import { useExec } from "@raycast/utils";
import { MonthlyUsageCommandResponse, MonthlyUsageCommandResponseSchema } from "../types/usage-types";
Expand Down Expand Up @@ -50,5 +50,11 @@ export const useCCUsageMonthlyCli = () => {
},
});

const intervalMs = parseInt(preferences.usageLimitsRefreshInterval || "60", 10) * 1000;
useEffect(() => {
const id = setInterval(() => result.revalidate(), intervalMs);
return () => clearInterval(id);
}, [intervalMs]);

return result;
};
8 changes: 7 additions & 1 deletion extensions/ccusage/src/hooks/useCCUsageSessionCli.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState } from "react";
import { useState, useEffect } from "react";
import { Cache } from "@raycast/api";
import { useExec } from "@raycast/utils";
import { SessionUsageCommandResponse, SessionUsageCommandResponseSchema } from "../types/usage-types";
Expand Down Expand Up @@ -50,5 +50,11 @@ export const useCCUsageSessionCli = () => {
},
});

const intervalMs = parseInt(preferences.usageLimitsRefreshInterval || "60", 10) * 1000;
useEffect(() => {
const id = setInterval(() => result.revalidate(), intervalMs);
return () => clearInterval(id);
}, [intervalMs]);

return result;
};
8 changes: 7 additions & 1 deletion extensions/ccusage/src/hooks/useCCUsageTotalCli.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useState } from "react";
import { useState, useEffect } from "react";
import { Cache } from "@raycast/api";
import { useExec } from "@raycast/utils";
import { TotalUsageResponse, TotalUsageResponseSchema } from "../types/usage-types";
Expand Down Expand Up @@ -50,5 +50,11 @@ export const useCCUsageTotalCli = () => {
},
});

const intervalMs = parseInt(preferences.usageLimitsRefreshInterval || "60", 10) * 1000;
useEffect(() => {
const id = setInterval(() => result.revalidate(), intervalMs);
return () => clearInterval(id);
}, [intervalMs]);

return result;
};
Loading