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

@elkaix elkaix 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

coderabbitai Bot 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 name Status Explanation Resolution
Description check ⚠️ Warning The 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 name Status Explanation
Title check ✅ Passed The title uses the required feat prefix, imperative mood, and is 67 characters long while clearly describing the change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

@pkg-pr-new

pkg-pr-new Bot commented Aug 17, 2026

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

elkaix commented Aug 17, 2026

Copy link
Copy Markdown
Member Author

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

@elkaix elkaix closed this Aug 17, 2026
Sign up for free to 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