Skip to content

Build Helper: full feature parity with the legacy tool - #2

Merged
hassanannajjar merged 2 commits into
mainfrom
feat/build-helper-feature-parity
Sep 12, 2026
Merged

hassanannajjar merged 2 commits into
mainfrom
feat/build-helper-feature-parity

Conversation

@hassanannajjar

Copy link
Copy Markdown
Member

Ports every JigsawTools build-helper feature into the platform-kit architecture (server → routes → lib, ≤150-line files, barrels, zero deps, no-auth). Excludes auth/enterprise pieces (login/pair/license gates, company vault, agent auto-update) per the no-auth + local-only invariants.

Backend

  • routes/testflight.js — /api/testflight/manage + /latest
  • lib/qr.js + /api/qr — same-origin QR proxy for the share canvas
  • /api/tracker/tasks + /api/jira/search — Jira task picker
  • /api/doctor/full — live flutter doctor -v
  • /api/security/grades — best-effort grades from mobile-security
  • lib/schedule.js — 1-min scheduler for unattended per-app builds
  • lib/selfupdate.js + routes/tool.js — /api/version, /changelog/tool, /self-update
  • onedrive.js — shared team-folder mode (/api/setup/onedrive-shared)

Frontend (14 new ≤150-line modules)

  • charts / health-table / dashboard: SVG charts + range/project/env filters + sortable & draggable health table + security grade + ⌘K palette + guided tour
  • build-form / notes / build-run: env pipeline, M/m/p bump, per-env outputs matrix + Play track, release-notes fill + Jira picker, branch selector, Advanced menu, nav-surviving live log, inline guard prompts
  • history / detail: multi-select bulk re-upload, build detail (re-upload / TestFlight re-manage / Play rollback)
  • share / share-actions: canvas build card + QR, copy/email client groups, Jira release
  • app-setup (+more): per-app modal — custom envs, accounts, build defaults, scheduled builds, trackers, groups
  • self-update nav button

Notes / deliberate simplifications

  • Scheduled builds are build-only + guard-bypassed (no unattended uploads).
  • Self-update pulls + asks for a restart rather than force-exiting (the hub owns process lifecycle here, unlike the source's launchd KeepAlive).

Verification

  • node scripts/check-lines.js clean; node build-helper/server.js --selftest passes (77 routes; asserts every new route registered).
  • All 20 frontend modules valid syntax + serve 200; index.html script tags match files on disk.
  • Docs mirrored in the docs repo (separate PR).

🤖 Generated with Claude Code

hassanannajjar and others added 2 commits September 12, 2026 16:33
Port every JigsawTools build-helper feature into the platform-kit
architecture (server → routes → lib, ≤150-line files, barrels, zero
deps, no-auth). Excludes auth/enterprise pieces (login/pair/license,
company vault, agent auto-update) per the no-auth + local-only invariants.

Backend
- routes/testflight.js: /api/testflight/manage + /latest
- lib/qr.js + /api/qr: same-origin QR proxy for the share canvas
- /api/tracker/tasks + /api/jira/search (Jira picker)
- /api/doctor/full: live `flutter doctor -v`
- /api/security/grades: best-effort grades from mobile-security
- lib/schedule.js: 1-min scheduler for unattended per-app builds
- lib/selfupdate.js + routes/tool.js: /api/version, /changelog/tool, /self-update
- onedrive.js: shared team-folder mode (/api/setup/onedrive-shared)

Frontend (14 new ≤150-line modules)
- charts, health-table, dashboard: SVG charts + filters + sortable/
  draggable health table + security grade + ⌘K + guided tour
- build-form, notes, build-run: env pipeline, M/m/p bump, per-env outputs
  matrix + track, release-notes fill + Jira picker, branch, Advanced menu,
  nav-surviving live log, inline guard prompts
- history, detail: bulk re-upload, build detail (re-upload/TestFlight/rollback)
- share, share-actions: canvas build card + QR, copy/email/Jira release
- app-setup(+more): per-app modal (custom envs, accounts, build defaults,
  scheduled builds, trackers, groups)
- self-update nav button

Docs + README updated. check-lines clean; --selftest asserts all new routes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The earlier port replicated the features/logic but rebuilt the frontend in a
flat, generic style. This reworks the presentation layer to mirror the source
JigsawTools build-helper pixel-for-pixel, reusing the design system already in
platform-kit/kit.css (which is a superset of the source's app.css) — so almost
no CSS was added, only faithful markup.

Frontend (source-verbatim markup, kit nav kept)
- bh-ui.js: pipeline builder, env/station colors, 4 missing icon glyphs merged
  into kit ICON, brand logos (firebase/apple/play), CONNECT map, $/tooltip,
  no-auth capability stubs.
- Dashboard (dashboard.js + health-table.js + charts.js): Release-console
  header, range/project/env filters, KPI cards, 2x2 SVG charts + security
  posture, and the project-health table with real app icons (/api/icon), drag
  reorder, ★ favorites, density, per-row security grade, Storage + Activity rail.
- Build page (project.js + build-form.js + build-wire.js + build-run.js): header
  (icon + Current + TestFlight), sticky DEV→PROD pipeline stations, colored
  left-border env cards, M/m/p bump, notes fills + Jira picker, big outputs cards
  with "connect it" warnings, macOS traffic-light live log (poll-based, survives
  nav), build summary, history + bulk actions.
- App Setup (app-setup.js + app-setup-more.js): one tall modal — release
  readiness, env override, environments editor, Firebase/Apple/Play, build
  defaults, Android signing, build commands, scheduled builds, issue-tracker grid
  with brand logos, client groups, sticky save.
- Share (share-card.js + share.js + share-actions.js): canvas build card with QR
  + platform badges, download/copy, team/client text, email groups, Jira release,
  re-upload. Detail + analytics (detail.js) ported to source markup.
- index.html: station CSS + tooltip, new script modules; deleted dead notes.js.

Backend (small additions for the ported UI)
- /api/artifacts + /api/artifact/delete (build-page browser)
- /api/jira/meta, /api/jira/create-release, /api/jira/create-issue (share modal)
- /api/log (raw build log); /api/qr accepts data= ; dashboard rows carry hasIcon
- scheduler matches the source schedule shape (enabled/days/dest, once per day)

Verified headless (Chrome): dashboard, build page, and App Setup render matching
the source screenshots; no console errors. check-lines clean; --selftest 83 routes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hassanannajjar
hassanannajjar merged commit 6f5dfc7 into main Sep 12, 2026
1 check passed
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