fix(home): split starter fine print, show hints only when actionable (BUG-1041)
TASK-starter-home-polish-20260926: - D1 today's trend moves to a sub-line under the greeting (.starter-greeting-sub), read from the same dailyStarlanguage state the warm snapshot seeds; static sentence until ready, hidden without a minute. - D2 the line under the pills appears only for a resumable case or a non-self subject; the first-run and redo sentences are removed. - BUG-1041 entrySummaryFromResponse read snake_case keys while the entry-summary route returns camelCase, so every account parsed as a first run; the parser now reads the route's shape (snake_case still ok). - D3 daily entry icon MoonStar, credits icon Coins; D4 boundary line kept. - Records: CHANGELOG, DESIGN, VOICE, BUG_HISTORY, PROGRESS, testing list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
6d371d82a7
commit
b5a02ca861
@@ -2,7 +2,7 @@
|
||||
|
||||
import dynamic from "next/dynamic";
|
||||
import { loadBillingPanel } from "@/lib/billing-panel-loader";
|
||||
import { Sparkles } from "lucide-react";
|
||||
import { Coins } from "lucide-react";
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import type { FormEvent, KeyboardEvent } from "react";
|
||||
import { AccountDialogOverlay, type AccountOverlayModel } from "@/components/account-dialog-overlay";
|
||||
@@ -1210,7 +1210,7 @@ export default function Home() {
|
||||
<div className="chat-header-actions">
|
||||
<div className="chat-header-rectification" data-rectification-header-slot="" ref={setRectificationHeaderSlot} />
|
||||
<button className="credit-button" type="button" onClick={(event) => openAccountDialog("billing", { returnTarget: event.currentTarget, source: "credits" })} aria-label={account ? `余额 ${account.credits} 点,会员与充值` : accountError || "读取余额中"}>
|
||||
<Sparkles className="credit-icon" aria-hidden="true" />
|
||||
<Coins className="credit-icon" aria-hidden="true" />
|
||||
<span>{account ? account.credits : "—"}</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -1244,7 +1244,7 @@ export default function Home() {
|
||||
) : null}
|
||||
|
||||
{profileComplete && presetMessageFinished && !rectificationSurfaceOpen && (
|
||||
<StarterGreeting starterGreeting={starterGreeting} />
|
||||
<StarterGreeting starterGreeting={starterGreeting} dailyTrend={natalMinuteAvailable ? dailyStarlanguageTrend : null} dailyTrendSettled={dailyStarlanguage.kind === "ready"} />
|
||||
)}
|
||||
</div>
|
||||
) : sessionMessagesLoading ? (
|
||||
@@ -1328,13 +1328,10 @@ export default function Home() {
|
||||
{starterHomeVisible && (
|
||||
<StarterEntries
|
||||
natalMinuteAvailable={natalMinuteAvailable}
|
||||
dailyStarlanguage={dailyStarlanguage}
|
||||
dailyStarlanguageQuestion={dailyStarlanguageQuestion}
|
||||
dailyStarlanguageTrend={dailyStarlanguageTrend}
|
||||
productEntrypointsDisabled={productEntrypointsDisabled}
|
||||
startDailyStarlanguageConsultation={startDailyStarlanguageConsultation}
|
||||
rectificationCardLabel={rectificationCardLabel}
|
||||
rectificationCardAction={rectificationCardAction}
|
||||
rectificationLoading={rectificationLoading}
|
||||
rectificationMutationPending={rectificationMutationPending}
|
||||
openRectificationFromHomepage={openRectificationFromHomepage}
|
||||
|
||||
@@ -2258,6 +2258,23 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
/* Today's trend, one quiet line under the greeting (2026-09-26). It used to be
|
||||
glued to the rectification hint under the pills with a middle dot. Two lines
|
||||
at most: the trend is model-written and can run long on a phone. */
|
||||
.starter-greeting-sub {
|
||||
display: -webkit-box;
|
||||
max-width: 560px;
|
||||
margin: var(--space-2) auto 0;
|
||||
overflow: hidden;
|
||||
color: var(--color-ink-secondary);
|
||||
font-size: var(--type-body-sm);
|
||||
line-height: 1.55;
|
||||
text-wrap: pretty;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
line-clamp: 2;
|
||||
}
|
||||
|
||||
/* Entry pills, under the composer. The two product entrances keep their place
|
||||
in the product but not their weight: they were 132px cards competing with the
|
||||
input for the first look. */
|
||||
|
||||
Reference in New Issue
Block a user