Skip to content

Add v2 UI screenshots to the README - #5

Merged
cursor[bot] merged 1 commit into
agent/barrobot-v2-rewritefrom
cursor/add-v2-ui-screenshots-5880
Jul 28, 2026
Merged

cursor[bot] merged 1 commit into
agent/barrobot-v2-rewritefrom
cursor/add-v2-ui-screenshots-5880

Conversation

@cmc0619

@cmc0619 cmc0619 commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Screenshots of the v2 UI, taken by running this branch. Targets agent/barrobot-v2-rewrite so they land inside PR #2 rather than on main.

Adds a The UI section to the README covering all five pages plus the pour status list, with filenames suffixed -v2.

Menu

Menu page showing a grid of drink cards with photos and Pour buttons

Pouring

Menu page with a status list describing each ingredient as it is dispensed

Motor Controls

Motor controls page with GPIO pin map, trusted position and slot rotation tester

Drink detail, both suggestion views, and the configuration form are in the README.

How they were taken

  • Ran this branch's app.py on port 5001 with a demo config.json: 12 slots (gin, vodka, light/dark rum, tequila, bourbon, triple sec, amaretto, kahlua, dry/sweet vermouth, blue curaçao), a pantry of common mixers, a few substitutions, and safe mode on. 73 drinks are makeable, matching the same demo setup on main.
  • Recipe cache came from a real CocktailDB download (426 drinks).
  • Every interaction is genuine: the pour shot is the redirect after clicking a real Pour button (v2 submits POST, so it could not be captured by visiting a URL), and the motor page shows an actual POST /api/position/1 followed by POST /api/rotate/7.
  • Captured with headless Chrome at a 1280px viewport and 2× device scale, cropped on element boundaries, then downscaled to 1920px wide and palette-compressed. About 1.1 MB for all seven.

config.json and recipes.json are gitignored on this branch, so the demo setup is not in the commit.

Differences visible against v1

The v2 stylesheet is doing real work here: flash messages are styled rather than falling out as plain bullets, tables and inputs have consistent spacing, and the motor page gained the trusted-position workflow that blocks live movement until an operator establishes the turret's slot.

No application code was changed.

Open in Web Open in Cursor 

Capture the five Flask pages plus the pour status list against a demo
12-bottle configuration in safe mode, and document each in a new 'The UI'
section.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 1 minute

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a234a824-1054-40e9-ab67-c514ddfb7302

📥 Commits

Reviewing files that changed from the base of the PR and between ad868ec and 6b92879.

⛔ Files ignored due to path filters (7)
  • docs/screenshots/configure-v2.png is excluded by !**/*.png
  • docs/screenshots/drink-detail-v2.png is excluded by !**/*.png
  • docs/screenshots/menu-v2.png is excluded by !**/*.png
  • docs/screenshots/motor-controls-v2.png is excluded by !**/*.png
  • docs/screenshots/pour-v2.png is excluded by !**/*.png
  • docs/screenshots/suggestions-v2.png is excluded by !**/*.png
  • docs/screenshots/suggestions2-v2.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • README.md

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

@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown

Greptile Summary

Adds a screenshot-based overview of the v2 user interface.

  • Documents the menu, drink detail, pouring, suggestion, configuration, and motor-control views.
  • Adds seven corresponding PNG screenshots under docs/screenshots.

Confidence Score: 4/5

The PR appears safe to merge after correcting the non-blocking inconsistency in the documented page count.

The screenshot additions and references are internally aligned, while the overview's claim of five pages conflicts with the seven views documented in the same section.

Files Needing Attention: README.md

Important Files Changed

Filename Overview
README.md Adds the v2 UI walkthrough, but its stated count of five pages conflicts with the seven documented views.
docs/screenshots/configure-v2.png Adds the configuration-page screenshot referenced by the README.
docs/screenshots/drink-detail-v2.png Adds the drink-detail screenshot referenced by the README.
docs/screenshots/menu-v2.png Adds the menu screenshot referenced by the README.
docs/screenshots/motor-controls-v2.png Adds the motor-controls screenshot referenced by the README.
docs/screenshots/pour-v2.png Adds the pouring-status screenshot referenced by the README.
docs/screenshots/suggestions-v2.png Adds the first suggestions-page screenshot referenced by the README.
docs/screenshots/suggestions2-v2.png Adds the second suggestions-page screenshot referenced by the README.

Fix All in Claude Code Fix All in Codex

Reviews (1): Last reviewed commit: "Add v2 UI screenshots to README" | Re-trigger Greptile

Comment thread README.md

## The UI

Flask serves five touch-sized pages at `http://<pi-address>:5000`. The shots

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Page count contradicts overview

The overview says Flask serves five pages, while the section immediately documents seven distinct pages, giving readers an inconsistent description of the UI.

Suggested change
Flask serves five touch-sized pages at `http://<pi-address>:5000`. The shots
Flask serves seven touch-sized pages at `http://<pi-address>:5000`. The shots

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Claude Code Fix in Codex

@cursor
cursor Bot marked this pull request as ready for review July 28, 2026 05:07
@cursor
cursor Bot merged commit 2e7c33b into agent/barrobot-v2-rewrite Jul 28, 2026
4 checks passed
cmc0619 added a commit that referenced this pull request Sep 7, 2026
* Document BarRobot v2 rewrite design

* Rewrite BarRobot around testable services

* Add BarRobot behavioral tests and CI

* Fix package installation in CI

* Design BarRobot v3 greenfield architecture

* Replace legacy app with BarRobot v3

* Add isolated GPIO motion service

* Add v3 tests deployment and CI

* Add product and S-curve motion profiles

* Add product changeover and party controls

* Slow lopsided automatic moves

* Add v2 UI screenshots to README (#5)

Capture the five Flask pages plus the pour status list against a demo
12-bottle configuration in safe mode, and document each in a new 'The UI'
section.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Add v3 UI screenshots to README (#6)

Capture the four console tabs plus the running and manual-step job states
against a demo 12-bottle cocktail profile, and document each in a new
'The UI' section.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Move the original Flask app into v1/

Makes room for the v2 and v3 implementations to live alongside it instead
of replacing it.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Index the three versions from the repository root

Adds a root README explaining what v1, v2, and v3 are and which to use,
merges the three .gitignore files, and splits CI into per-version
workflows that only run when their own directory changes. Version READMEs
now point at the shared LICENSE and hero image one level up.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Raise v2's Flask and requests floors past known CVEs

Codacy's dependency scanner resolves the lower bound of each constraint,
so ">=3.1" and ">=2.32" were reported as vulnerable:

  Flask 3.1     CVE-2025-47278  session signing fallback key
                CVE-2026-27205  session data cached improperly
  requests 2.32 CVE-2024-47081  .netrc credential leak via crafted URLs
                CVE-2026-25645  predictable temporary file creation

Both fixes land within the ranges the project already allows, so the
floors move to the first patched releases and the upper bounds stand.
ruff and the 31 tests pass against Flask 3.1.3 and requests 2.33.1.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Configure Codacy for the three-version layout

Codacy gates pull requests on new issues, and it decides what is new by
path. Moving v1 into v1/ and bringing v2/ and v3/ onto main therefore
presents both rewrites as brand-new code, so this PR inherits the whole
backlog of the two open rewrite PRs at once: 62 issues from #2 plus 30
from #3, against a limit of zero.

Four of those were real and are fixed in the preceding commit. The rest
are analysers reaching wrong conclusions because they run with their own
defaults rather than the configuration each version is built with:

  - Bandit reports B101 on every pytest assert and reads conftest.py's
    throwaway Flask signing key as a hardcoded password.
  - Codacy's ESLint has no access to v3's tsconfig, so it cannot see
    noUncheckedIndexedAccess and reports the undefined-guards that make
    v3 compile as conditions that are always false.
  - Opengrep flags a state repository whose path is configuration, and
    two innerHTML writes whose inputs are already escaped through the
    DOM's own textContent round-trip.
  - flawfinder flags every strncpy in motiond, all of which write
    memset-zeroed fixed buffers under an explicit sizeof - 1 bound.

Each exclusion names one analyser and one path and carries its reason.
No analyser is turned off repository-wide: v2's application code, 986
lines across eight files, stays under Bandit, and v3 keeps linting src/
in CI with typescript-eslint against the real tsconfig.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Update v3's lockfile past nineteen dependency CVEs

Codacy's dependency scanner reported these against package-lock.json.
They are new since PR #3 was last analysed, not something the
restructure introduced:

  @fastify/static 10.1.0  path traversal past route guards, and
                          authorization bypass via non-canonical paths
  fastify 5.10.0          request spoofing through numeric trustProxy,
                          and schema validation bypass on root primitives
  fast-uri 3.1.3, 4.1.0   six findings, mostly SSRF and host confusion
                          from parsing inconsistencies
  find-my-way 9.6.0       HTTP/2 denial of service
  brace-expansion 5.0.7   denial of service through memory exhaustion

Every fix was already inside the semver ranges package.json declares, so
this is a lockfile refresh with no manifest change: fastify 5.12.3,
@fastify/static 10.1.3, fast-uri 3.1.7 and 4.1.4, find-my-way 9.9.0,
brace-expansion 5.0.9. npm audit is clean, npm ci reproduces the tree,
and prettier, tsc, eslint, the build, and all 25 tests pass on it.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

* Cover the remaining analysers that re-litigate v2 and v3 style

The first pass cut Codacy's count on this PR from 92 to 45 and confirmed
the exclusions land, but four analysers were named wrongly or not at all:

  - The strncpy findings in motiond come from Opengrep as well as
    flawfinder; only flawfinder was listed.
  - The 0.0001 objection in web/app.js is PMD's InnaccurateNumericLiteral,
    not ESLint, so excluding ESLint there had no effect.
  - Prospector and Pylint report twenty-two docstring and layout findings
    across v2 under a convention that contradicts the ruff configuration
    v2 actually enforces in CI.

Each addition carries the same justification the existing entries do.

Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cmc0619 <cmc0619@users.noreply.github.com>
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.

2 participants