Skip to content

feat(dashboard): add homescreen widget dashboard with a weather widget - #6318

Open
samisan2007 wants to merge 1 commit into
odysseus-dev:devfrom
samisan2007:feat-homescreen-dashboard-weather-widget
Open

samisan2007 wants to merge 1 commit into
odysseus-dev:devfrom
samisan2007:feat-homescreen-dashboard-weather-widget

Conversation

@samisan2007

Copy link
Copy Markdown

Adds a widget grid above the composer on the new-chat/welcome screen, refreshed whenever that screen is shown (both on an in-app transition and on a cold page load landing there by default).

First widget is weather, backed by a same-origin /api/weather proxy to Open-Meteo (free, no key/signup) so the browser needs no CSP change and no key management; results are cached in-process per location for 15 minutes since the dashboard re-fetches on every welcome-screen show.

Summary

Target branch

  • This PR targets dev, not main. All PRs land in dev; main is curated by the maintainer at each release. If your PR is on main by accident, click "Edit" on this PR and change the base.

Linked Issue

Fixes #

Type of Change

  • Bug fix (non-breaking — fixes a confirmed issue)
  • New feature (non-breaking — adds new behaviour)
  • Breaking change (changes or removes existing behaviour)
  • Refactor / cleanup (behaviour unchanged)
  • Documentation only
  • CI / tooling / configuration

Checklist

  • I searched open issues and open PRs — this is not a duplicate.
  • This PR targets dev
  • My changes are limited to the scope described above — no unrelated refactors or whitespace changes mixed in.
  • I actually ran the app (docker compose up or uvicorn app:app) and verified the change works end-to-end. Type-checks and unit tests are not enough.
  • I did not run the app/runtime validation and stated that gap in How to Test. Leave this unchecked when the app-run box above is checked.

How to Test

Visual / UI changes — REQUIRED if you touched anything that renders

Anything that changes what the UI looks like — buttons, icons, padding, colors, fonts, spacing, layout, CSS, HTML, SVG, or any static/js/ module that draws to the DOM — needs all of the following. PRs that change rendering without these WILL be closed.

  • Screenshot or short clip of the change in the running app, attached below. Mobile screenshot too if the change affects mobile.
  • Style match: the change uses Odysseus's existing visual language. Specifically:
    • Reuse existing CSS variables (--red, --fg, --bg, --card, --border, etc.) — do not introduce new color values, font sizes, or spacing units.
    • Reuse existing button/input/card/border classes. Don't invent parallel styling.
    • No Unicode emoji in UI or code. Use inline SVG (matching the monochrome icon style already in static/index.html) or plain text.
    • Monospaced font (Fira Code) for primary UI text. Don't override.
    • Dark theme is the default; any light-mode work must be wired through the existing theme system, not hard-coded.
  • No new component patterns. If a similar widget already exists in the app, extend it instead of writing a parallel one.
  • I am not an LLM agent submitting a bulk PR. If you are, please open an issue describing the problem first — bulk auto-generated PRs that don't match the project's visual style are closed on sight, even when the underlying fix is correct.

Screenshots / clips

@github-actions

Copy link
Copy Markdown

⚠️ PR description — action needed

The following required sections are missing or incomplete. Please update the PR description to address them:

  • Summary is empty or too short — describe what changed and why.
  • Linked Issue — add a reference like Fixes #NNN, a bare #NNN, or a link to the issue.
  • Type of Change — check at least one box.
  • Checklist — check the duplicate-search box to confirm you searched existing issues and PRs.
  • How to Test — explain how a reviewer can verify this change. Numbered steps, the commands you ran, or a short code block all work — give a sentence or two of real detail (not just "tested locally").

Author-reported runtime / visual state

  • App/runtime validation is not author-attested. Check the run box only after running it, or check the explicit not-run box and describe the gap.
  • The screenshot/clip checkbox is not checked for this UI-sensitive change.
  • The Screenshots / clips section does not contain an actual attachment or link.

Checkboxes are author attestations. GitHub Actions results remain the execution evidence for CI; this check does not prove that a local command ran.


This comment updates automatically when the description or changed files change.

@github-actions github-actions Bot added needs work PR description incomplete — please update before review needs runtime validation Runtime validation not attested — tick the app-run box after running it, or state the gap needs visual evidence UI-sensitive change without an attested screenshot or clip from the running app labels Sep 16, 2026
Adds a widget grid above the composer on the new-chat/welcome screen,
refreshed whenever that screen is shown (both on an in-app transition and on
a cold page load landing there by default).

First widget is weather, backed by a same-origin /api/weather proxy to
Open-Meteo (free, no key/signup) so the browser needs no CSP change and no
key management; results are cached in-process per location for 15 minutes
since the dashboard re-fetches on every welcome-screen show.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@samisan2007
samisan2007 force-pushed the feat-homescreen-dashboard-weather-widget branch from c19dede to a43d6b3 Compare September 16, 2026 08:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs runtime validation Runtime validation not attested — tick the app-run box after running it, or state the gap needs visual evidence UI-sensitive change without an attested screenshot or clip from the running app needs work PR description incomplete — please update before review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant