@@ -56,7 +56,7 @@ pub struct BudgetConfig {
5656impl Default for BudgetConfig {
5757 fn default ( ) -> Self {
5858 Self {
59- weekly_token_budget : 700_000 ,
59+ weekly_token_budget : 5_000_000 ,
6060 max_usage_percent : 80 ,
6161 reserve_percent : 10 ,
6262 billing_mode : "subscription" . to_string ( ) ,
@@ -143,14 +143,19 @@ pub fn get_weekly_usage() -> Result<(i64, String), String> {
143143}
144144
145145/// Calculate the full budget status given a budget config.
146+ ///
147+ /// Uses **daily mode**: compares today's usage against a daily budget (weekly / 7)
148+ /// instead of comparing weekly totals against the weekly budget. This prevents heavy
149+ /// usage earlier in the week from falsely exhausting the budget for remaining days —
150+ /// the actual subscription resets on rolling windows, not as a rigid weekly lump sum.
146151pub fn calculate_budget_status ( config : & BudgetConfig ) -> BudgetStatus {
147152 let ( tokens_today, _) = get_today_usage ( ) . unwrap_or ( ( 0 , "unavailable" . to_string ( ) ) ) ;
148153 let ( tokens_week, source) = get_weekly_usage ( ) . unwrap_or ( ( 0 , "unavailable" . to_string ( ) ) ) ;
149154
150- let max_for_sustn =
151- config . weekly_token_budget * ( config. max_usage_percent as i64 ) / 100 ;
152- let reserve = config . weekly_token_budget * ( config. reserve_percent as i64 ) / 100 ;
153- let available = ( max_for_sustn - tokens_week - reserve) . max ( 0 ) ;
155+ let daily_budget = config . weekly_token_budget / 7 ;
156+ let max_for_sustn = daily_budget * ( config. max_usage_percent as i64 ) / 100 ;
157+ let reserve = daily_budget * ( config. reserve_percent as i64 ) / 100 ;
158+ let available = ( max_for_sustn - tokens_today - reserve) . max ( 0 ) ;
154159
155160 BudgetStatus {
156161 weekly_token_budget : config. weekly_token_budget ,
0 commit comments