Skip to content

feat(miner-ui): scaffold apps/gittensory-miner-ui/ dashboard shell (#4303) - #4571

Closed
joaovictor91123 wants to merge 1 commit into
JSONbored:mainfrom
joaovictor91123:feat/miner-ui-scaffold-4303
Closed

feat(miner-ui): scaffold apps/gittensory-miner-ui/ dashboard shell (#4303)#4571
joaovictor91123 wants to merge 1 commit into
JSONbored:mainfrom
joaovictor91123:feat/miner-ui-scaffold-4303

Conversation

@joaovictor91123

Copy link
Copy Markdown
Contributor

Summary

  • Scaffolds apps/gittensory-miner-ui/: a routing/layout shell only, no data views yet -- the run-history table (feat(miner-ui): add read-only run-history table view #4305) and portfolio/queue summary cards (feat(miner-ui): add portfolio/queue summary cards view #4306) are separate, dependent follow-up issues.
  • Mirrors apps/gittensory-ui's stack where practical: React 19, @tanstack/react-router, Vite, Tailwind v4, matching ESLint/Prettier conventions (eslint.config.js, .prettierrc) and per-app script naming (dev/build/typecheck/lint/test/format).
  • Deliberately does not copy two things gittensory-ui carries that don't fit a miner-local dashboard, flagged as a decision in apps/gittensory-miner-ui/README.md per the issue's request:
    • No Cloudflare Worker deploy target (wrangler) -- this is a local dev server / static build the CLI can serve, never a hosted deploy.
    • No @lovable.dev/vite-tanstack-config dependency -- this app has no server/SSR entry at all, so it uses plain @tanstack/react-router (not TanStack Start) with a standard vite.config.ts.
    • Rationale: packages/gittensory-miner/DEPLOYMENT.md states the miner is "100% client-side for core operation -- the miner never uploads source and never requires a hosted Gittensory callback to boot." A dashboard reading only a miner's own local SQLite state should keep that same posture.
  • Root workspaces (package.json's "workspaces": ["apps/*", "packages/*"]) auto-discovers the new package -- no extra registration needed.

Test plan

  • npm --workspace @jsonbored/gittensory-miner-ui run typecheck -- clean.
  • npm --workspace @jsonbored/gittensory-miner-ui run lint -- 0 errors (2 pre-existing react-refresh/only-export-components warnings inherent to TanStack Router's file-based route convention, same pattern apps/gittensory-ui's own route files hit).
  • npm --workspace @jsonbored/gittensory-miner-ui run test -- 1/1 passing (renders the root layout + the index route's placeholder shell via a real RouterProvider mount).
  • npm --workspace @jsonbored/gittensory-miner-ui run build -- clean static build, dist/ output verified locally.
  • npm run typecheck (root) -- clean; the new app's tsconfig.json is self-contained like gittensory-ui's, so it doesn't affect the root project.
  • npm run docs:drift-check / npm run manifest:drift-check -- clean.
  • This new app is not yet wired into the root test:ci pipeline's ui:* steps (those are hardcoded to --workspace @jsonbored/gittensory-ui). The issue's deliverables ask only that the scripts exist matching the per-app convention, not for root CI wiring -- calling this out explicitly rather than overclaiming integration.
  • Did not run the full unsharded npm run test:coverage locally (shared/resource-contended machine); this app's source is outside vitest.config.ts's coverage.include scope entirely (same as packages/gittensory-miner/packages/gittensory-mcp), so it carries no Codecov patch-coverage risk.

Fixes #4303.

…SONbored#4303)

Empty routing/layout shell only -- no data views yet, those are separate
Phase 6 issues (JSONbored#4305 run-history table, JSONbored#4306 portfolio/queue cards).

Mirrors apps/gittensory-ui's stack (React 19, TanStack Router, Vite,
Tailwind v4, matching ESLint/Prettier conventions) but deliberately
drops two things gittensory-ui carries that don't fit a miner-local
dashboard: the Cloudflare Worker deploy target and the
@lovable.dev/vite-tanstack-config dependency. This app has no
server/SSR entry at all -- plain client-side TanStack Router, not
TanStack Start -- consistent with packages/gittensory-miner/DEPLOYMENT.md's
100%-client-side, no-phone-home invariant. Documented as an explicit
decision in the README per the issue's request.
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.10%. Comparing base (3f23c61) to head (e8d483d).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4571   +/-   ##
=======================================
  Coverage   94.10%   94.10%           
=======================================
  Files         427      427           
  Lines       38022    38022           
  Branches    13877    13877           
=======================================
  Hits        35779    35779           
  Misses       1586     1586           
  Partials      657      657           
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@loopover-orb loopover-orb Bot added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jul 10, 2026
@loopover-orb

loopover-orb Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Caution

🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥

🛑 Gittensory review result - reject/close recommended

Review updated: 2026-07-10 04:49:41 UTC

19 files · 1 AI reviewer · 1 blocker · readiness 100/100 · CI green · unstable

🛑 Suggested Action - Reject/Close

  • Linked issue overlaps another open PR — Review the related PRs before spending reviewer time on duplicate work.

Review summary
This is a clean, well-scoped scaffold PR that adds apps/gittensory-miner-ui/ as a routing/layout shell only, closing issue #4303 with explicit dependent follow-ups (#4305, #4306) called out in both the description and code comments. The stack mirrors apps/gittensory-ui's conventions (React 19, TanStack Router, Vite, Tailwind v4, matching lint/format config) while deliberately omitting wrangler and @​lovable.dev/vite-tanstack-config, with the rationale documented in README.md and grounded in packages/gittensory-miner/DEPLOYMENT.md's client-side posture. CI is green (typecheck, lint, test, coverage all passed), routeTree.gen.ts is correctly excluded from lint/prettier, and the one test exercises a real RouterProvider mount rather than a fabricated scenario.

Nits — 5 non-blocking
  • apps/gittensory-miner-ui/eslint.config.js:14 sets `ecmaVersion: 2020` while apps/gittensory-miner-ui/tsconfig.json targets `ES2022` — align them to avoid confusing parser-vs-compile-target behavior later.
  • apps/gittensory-miner-ui/src/router.test.tsx is the only test in the package (14 lines covering the root layout + index route render) — thin for a new package, though acceptable given this is explicitly a no-data-views scaffold per the issue.
  • apps/gittensory-miner-ui/package.json has no explicit `vitest` devDependency, relying on root hoisting — matches apps/gittensory-ui's existing pattern so not a new problem, but worth a quick sanity check that workspace hoisting is intentional rather than accidental.
  • Consider a follow-up in feat(miner-ui): add read-only run-history table view #4305/feat(miner-ui): add portfolio/queue summary cards view #4306 to add a render assertion on the header subtitle text in apps/gittensory-miner-ui/src/routes/__root.tsx:14 so the layout copy itself is covered, not just its presence via the index page test.
  • apps/gittensory-miner-ui/vite.config.ts's block comment duplicates the README's deploy-model rationale nearly verbatim — fine as-is, but if the rationale ever changes only one of the two needs to be kept as source of truth to avoid drift.

Why this is blocked

  • Linked issue overlaps another open PR — Review the related PRs before spending reviewer time on duplicate work.
Signal Result Evidence
Code review ❌ 1 blocker 1 reviewer
Linked issue ✅ Linked #4303
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 92 registered-repo PR(s), 43 merged, 15 issue(s).
Contributor context ✅ Confirmed Gittensor contributor joaovictor91123; Gittensor profile; 92 PR(s), 15 issue(s).
Gate result ❌ Blocking Repo-configured hard blocker found.
Linked issue satisfaction

Addressed
The PR scaffolds apps/gittensory-miner-ui/ with TanStack Router + React 19 + Vite + Tailwind v4 mirroring gittensory-ui's stack, matching ESLint/Prettier configs and per-app script naming, an empty routing/layout shell with no data views, and explicitly avoids Cloudflare/wrangler and @​lovable.dev/* dependencies while documenting the rationale in README.md per the issue's request.

Review context
  • Author: joaovictor91123
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: not available
  • Official Gittensor activity: 92 PR(s), 15 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Keep the PR focused and include validation evidence before maintainer review.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before / after /
/ mobile before / (mobile) after / (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy.

🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed


💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →.

Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.

  • Re-run Gittensory review

@loopover-orb

loopover-orb Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Gittensory is closing this pull request on the maintainer's behalf (Linked issue overlaps another open PR; duplicate of another open PR). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(miner-ui): scaffold apps/gittensory-miner-ui/ dashboard shell

1 participant