Add Gea (geajs.com) framework to the benchmark suite - #1
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
|
@coderabbitai full review |
✅ Action performedFull review finished. |
2a0b6a1 to
85b60b8
Compare
📝 WalkthroughWalkthroughAdds a complete Gea.js weather app with reactive state, Open-Meteo and mock data services, weather components, Vite setup, styling, repository scripts, framework metadata, Playwright configuration, lint configuration, and documentation. ChangesGea.js weather application
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant Browser
participant App
participant WeatherStore
participant WeatherService
participant OpenMeteo
Browser->>App: mount into `#app`
Browser->>WeatherStore: init()
WeatherStore->>WeatherService: getWeatherByCity(city)
WeatherService->>OpenMeteo: geocode and request forecast
OpenMeteo-->>WeatherService: weather response
WeatherService-->>WeatherStore: normalized weather data
WeatherStore-->>App: reactive state update
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 6181e2f7-5a2c-42e4-8d30-126f26b502fa
⛔ Files ignored due to path filters (1)
apps/geajs/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (24)
.github/docs/apps.mdapps/geajs/README.mdapps/geajs/index.htmlapps/geajs/package.jsonapps/geajs/src/app.jsxapps/geajs/src/components/CurrentWeather.jsxapps/geajs/src/components/ErrorState.jsxapps/geajs/src/components/Forecast.jsxapps/geajs/src/components/ForecastItem.jsxapps/geajs/src/components/LoadingState.jsxapps/geajs/src/components/SearchForm.jsxapps/geajs/src/components/WeatherContent.jsxapps/geajs/src/components/WeatherDisplay.jsxapps/geajs/src/main.jsapps/geajs/src/services/weather-service.jsapps/geajs/src/utils/weather-utils.jsapps/geajs/src/weather-store.jsapps/geajs/styles.cssapps/geajs/vite.config.jseslint.config.mjsframeworks.jsonpackage.jsontests/config/playwright-geajs.config.jstests/config/playwright.config.base.js
There was a problem hiding this comment.
Pull request overview
Adds a new Gea (geajs.com) implementation of the shared weather app and wires it into the repo’s framework registry, linting, and Playwright E2E configuration so it can be developed, built, linted, and tested alongside the existing framework apps.
Changes:
- Registers the new
geajsframework acrossframeworks.json, root scripts, ESLint overrides, and Playwright configs. - Adds the full Gea weather app implementation (store/services/utils + JSX components) under
apps/geajs/. - Updates framework documentation to reflect the expanded framework set.
Reviewed changes
Copilot reviewed 24 out of 25 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/config/playwright.config.base.js | Adds geajs to the shared Playwright config map (baseURL + webServer command). |
| tests/config/playwright-geajs.config.js | New Playwright entrypoint config for running tests against Gea. |
| package.json | Adds dev/build/test/lint scripts for Gea and includes it in the *:all script chains. |
| frameworks.json | Registers Gea as a framework entry with build/dev/test metadata and website info. |
| eslint.config.mjs | Adds Gea-specific no-unused-vars override for JSX-only component references. |
| apps/geajs/vite.config.js | New Vite config using @geajs/vite-plugin for compiling Gea JSX. |
| apps/geajs/styles.css | Adds Gea-specific app-shell / forecast styles. |
| apps/geajs/src/weather-store.js | Implements the Gea WeatherStore (state + derived getters + actions). |
| apps/geajs/src/utils/weather-utils.js | Adds the WeatherUtils helper (formatting/icons/dates/etc.) for Gea app parity. |
| apps/geajs/src/services/weather-service.js | Implements Gea’s weather/geocoding service (mock + real API behavior). |
| apps/geajs/src/main.js | App bootstrap: mounts root component and triggers initial store init. |
| apps/geajs/src/components/WeatherDisplay.jsx | Conditional rendering wrapper for loading/error/content states. |
| apps/geajs/src/components/WeatherContent.jsx | Layout container for current weather + forecast sections. |
| apps/geajs/src/components/SearchForm.jsx | Search form component wired to the store (input + submit). |
| apps/geajs/src/components/LoadingState.jsx | Loading UI component used during data fetch. |
| apps/geajs/src/components/ForecastItem.jsx | Forecast row + expandable details with keyboard support. |
| apps/geajs/src/components/Forecast.jsx | 7-day forecast list rendering. |
| apps/geajs/src/components/ErrorState.jsx | Error UI component displaying store error message. |
| apps/geajs/src/components/CurrentWeather.jsx | Current conditions UI bound to store-derived fields. |
| apps/geajs/src/app.jsx | Root app shell (header/main/footer) composing Gea components. |
| apps/geajs/README.md | Documents the Gea app’s usage and architecture choices. |
| apps/geajs/package.json | Defines Gea app dependencies (Gea core + Vite + Gea Vite plugin). |
| apps/geajs/package-lock.json | Locks Gea app dependency tree for reproducible installs. |
| apps/geajs/index.html | Gea app HTML entrypoint linking shared styles and Gea bootstrap module. |
| .github/docs/apps.md | Updates framework count/list and adds Gea (and Lume.js entry restoration). |
Files not reviewed (1)
- apps/geajs/package-lock.json: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Implements the shared weather app in Gea, a compiler-first reactive UI framework, and wires it into the existing test/lint/build tooling. - apps/geajs: weather app using @geajs/core with a proxy-based Store, getter-derived computed values, and class/function JSX components compiled by @geajs/vite-plugin (Vite 8) - frameworks.json: register geajs with build, test, and meta config - tests/config: add playwright-geajs.config.js and base config entry - package.json: add dev/build/test/lint scripts for geajs - eslint.config.mjs: ignore JSX-only component references in apps/geajs - .github/docs/apps.md: add Gea (and the previously missing Lume.js) to the framework list and correct the count to 14 Behavior matches the reference implementations (react/vue/svelte/preact/ solid), including reading pressure from pressure_msl and single-item forecast expansion with scroll-into-view. The page uses the shared soft background like the majority of apps rather than painting the app container near-white. Full Playwright suite passes locally (22/22). Co-Authored-By: Claude <noreply@anthropic.com>
ba54727 to
4a9d348
Compare
|
Superseded by the upstream PR against lissy93/framework-benchmarks: lissy93#26 (same branch, now a single squashed commit). Closing this fork PR. |
Summary
Adds Gea — a compiler-first reactive UI framework — as the 14th framework in the benchmark suite, implementing the shared weather app with identical functionality and behavior to the existing apps.
What's included
New app (
apps/geajs/)WeatherStoreextending Gea'sStore— state lives in plain class fields made reactive via a deep Proxy; mutations are ordinary assignmentsforecastDays,locationLabel, formatted temperature/humidity/wind/pressure, etc.)SearchForm,WeatherDisplay,CurrentWeather,Forecast,ForecastItem,ErrorState) plus a function component (LoadingState), compiled by@geajs/vite-plugin(Vite 8) into surgical DOM patches — no virtual DOMBehavioral parity with the other apps
current.pressure_msllike react/vanjs/svelte/vanilla — including theNaN hPareading in mock mode, where the shared mock data only providessurface_pressure. Kept intentionally so the benchmark compares like-for-like; a fix would belong in a separate cross-framework PR.Tooling registration
frameworks.json: newgeajsentry (build/test/lint config + website metadata)tests/config/playwright-geajs.config.js+ entry inplaywright.config.base.jspackage.jsonscripts (dev:geajs,build:geajs,test:geajs,lint:geajs)eslint.config.mjs: override for JSX-only component references inapps/geajs(same pattern as React/Solid).github/docs/apps.md: added Gea and corrected the framework count to 14 (also restored the previously-missing Lume.js entry so the list matches the count)Testing
All checks pass locally:
npm run test:geajs: 22/22 Playwright tests pass — the full shared suite (10 core + 12 advanced/perf E2E), run repeatedly with no flakiness and no retries.npm run lint:geajs: cleannpm run build:geajs: production build succeeds (~9.7 kB gzipped JS)Branch history was squashed to a single commit, so review comments anchored to the earlier commits may now show as outdated.
🤖 Generated with Claude Code