Skip to content

feat(web): add starter suggestions to the empty conversation screen - #113

Closed
elkaix wants to merge 1 commit into
mainfrom
feat/web-empty-suggestions
Closed

feat(web): add starter suggestions to the empty conversation screen#113
elkaix wants to merge 1 commit into
mainfrom
feat/web-empty-suggestions

Conversation

@elkaix

@elkaixelkaix commented Aug 17, 2026

Copy link
Copy Markdown
Member

Summary

The empty conversation screen showed the mascot, a title, a line of text, and a blank composer. A new user had nothing to click. This adds four starter prompts below the hero text.

  • Flat buttons, not cards: no border, background, or shadow. Hover changes the title colour only.
  • Two-column grid that collapses to one column on a narrow pane.
  • Staggered entry, 200ms each and 45ms apart, disabled under prefers-reduced-motion through the block that already covers the hero.
  • A click fills the composer through the existing loadForEdit path and focuses it. It does not send the message.
  • The mascot, halo, title and text are unchanged.

Suggestion text lives in a new suggestions i18n namespace, English only. Nothing outside apps/pythinker-web is touched.

Verification

Run from the repository root:

  • pnpm run lint — exit 0, no error lines
  • pnpm -C apps/pythinker-web run typecheck — exit 0
  • pnpm -C apps/pythinker-web exec vitest run — 333 passed, 59 files

Seven new tests in test/empty-suggestions.test.ts cover render-only-when-empty, the click path, the no-submit rule, the flat styling, the reduced-motion rule, and a guard against dark: utilities and new colour literals. Two of them were mutation-checked by hand after the run: removing .empty-suggestion from the reduced-motion block and making the click handler a no-op each turned the suite red.

Summary by CodeRabbit

  • New Features

    • Added four starter suggestions to empty conversation screens.
    • Suggestions help explain repositories, find an initial task, run project checks, and review the working tree.
    • Selecting a suggestion loads its prompt into the composer for editing without sending it.
    • Added responsive layout, hover and focus states, animations, and reduced-motion support.
  • Tests

    • Added coverage for suggestion visibility, localization, composer behavior, and accessibility interactions.

The empty session showed only a blank composer. It now offers four starter
prompts below the hero text. A click fills the composer for editing and does
not send the message.
@coderabbitai

coderabbitaiBot commented Aug 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e24c52f5-e588-4a8e-b4c7-e7ba3ff1e032

📥 Commits

Reviewing files that changed from the base of the PR and between f97b801 and 8d1a677.

📒 Files selected for processing (5)
  • .changeset/web-empty-suggestions.md
  • apps/pythinker-web/src/components/ConversationPane.vue
  • apps/pythinker-web/src/i18n/locales/en/suggestions.ts
  • apps/pythinker-web/src/i18n/locales/index.ts
  • apps/pythinker-web/test/empty-suggestions.test.ts

Included review availability: Your plan includes up to 3 reviews per rolling hour; 2 remain after this review.


📝 Walkthrough

Walkthrough

The web UI now shows four localized starter suggestions in empty conversations. Selecting a suggestion loads its prompt into the composer without sending it. Responsive styling, reduced-motion support, tests, and a release changeset were added.

Changes

Empty conversation suggestions

Layer / File(s)Summary
Suggestion content and locale wiring
apps/pythinker-web/src/i18n/locales/en/suggestions.ts, apps/pythinker-web/src/i18n/locales/index.ts
Defines four English suggestions with titles, descriptions, and prompts. Registers them in the English locale.
Empty-session suggestion interaction
apps/pythinker-web/src/components/ConversationPane.vue
Renders clickable suggestions for empty sessions. Loads the selected localized prompt into the composer without submission. Adds responsive layout, interaction states, entrance animation, and reduced-motion handling.
Interaction and release validation
apps/pythinker-web/test/empty-suggestions.test.ts, .changeset/web-empty-suggestions.md
Tests rendering, prompt loading, composer focus, submission prevention, and styling constraints. Documents the minor release change.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk:⚪ Minimal · up to 8d1a6

This localized UI change adds clickable starter suggestions without changing message submission behavior; no actionable merge-blocking risk remains beyond normal checks and review.

Sequence Diagram(s)

sequenceDiagram
participant User
participant ConversationPane
participant EnglishSuggestions
participant ComposerTextarea
User->>ConversationPane: Click starter suggestion
ConversationPane->>EnglishSuggestions: Resolve localized prompt
EnglishSuggestions-->>ConversationPane: Return prompt text
ConversationPane->>ComposerTextarea: Populate prompt without submission
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe description explains the problem, implementation, tests, and verification, but it omits the required Related Issue and Checklist sections.Add the Related Issue and Checklist sections, and document issue linkage, contribution-guideline review, test coverage, changeset, and documentation status.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe title uses the required feat prefix, imperative mood, and is 67 characters long while clearly describing the change.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

Copy link
Copy Markdown
pnpm dlx https://pkg.pr.new/@pymodel/pythinker-code@8d1a677
npx https://pkg.pr.new/@pymodel/pythinker-code@8d1a677

commit: 8d1a677

@elkaix

Copy link
Copy Markdown
MemberAuthor

Closing: merged locally into main; a new PR will follow.

@elkaixelkaix closed this Aug 17, 2026
@elkaix
elkaix deleted the feat/web-empty-suggestions branch August 23, 2026 14:17
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@elkaix