diff --git a/app/profile/page.tsx b/app/profile/page.tsx index 0f3fe3a..9fb2523 100644 --- a/app/profile/page.tsx +++ b/app/profile/page.tsx @@ -177,6 +177,33 @@ export default function ProfilePage() { const usageCardsLoading = usageLoading || creditsLoading + const activeLimitNotice = (() => { + if (!usageSummary || !creditUsage) return null + + if (creditUsage.remaining <= 0) { + return { + title: 'Monthly credits reached', + message: 'Tera blocks new prompts when monthly credits are exhausted. This is the main limit for AI usage.', + } + } + + if (!usageSummary.webSearch.isUnlimited && usageSummary.webSearch.remaining === 0) { + return { + title: 'Web search limit reached', + message: 'Tera can still chat, but web-backed answers are blocked until your web search allowance resets or you upgrade.', + } + } + + if (!usageSummary.uploads.isUnlimited && usageSummary.uploads.remaining === 0) { + return { + title: 'File upload limit reached', + message: 'Tera can still chat, but new file uploads are blocked until your upload allowance resets or you upgrade.', + } + } + + return null + })() + return (
@@ -264,10 +291,17 @@ export default function ProfilePage() {

Balance

Usage dashboard

-

A live view of the counters Tera updates when you send messages, upload files, run web search, or spend monthly credits.

+

A live view of the counters Tera updates when you upload files, run web search, or spend monthly credits. AI conversations themselves are not capped by message count.

+ {activeLimitNotice && ( +
+

{activeLimitNotice.title}

+

{activeLimitNotice.message}

+
+ )} +
{usageCardsLoading || !usageSummary || !creditMetric ? (
@@ -275,10 +309,31 @@ export default function ProfilePage() {
) : ( <> - +
+
+
+

AI conversations

+

Unlimited

+

Tera does not block you based on a message-count quota. If prompts stop, the active blocker is usually monthly credits, web search, or file uploads.

+
+
+
+
+
+
+ Unlimited access + Always available +
+
+
+
- + )}