Skip to content

Review holds unmatched Buy parts, the drawer moves on after a choice, and bulk types - #59

Merged
sushilm20 merged 4 commits into
mainfrom
feat/review-flow
Oct 29, 2026
Merged

sushilm20 merged 4 commits into
mainfrom
feat/review-flow

Conversation

@sushilm20

Copy link
Copy Markdown
Contributor

The owner's four requests from the live HORS panel.

1. Unmatched Buy parts are in Review

Buy parts with no exact or confirmed product (needsProduct) now show up in Review as their own group, No product. Each row offers the fixes it has:

  • Confirm or Not this for a possible product.
  • "Use {vendor} {SKU}" for up to three of the line's possible match, choices, and nearMatches.
  • The existing vendor search link, when the name or part number holds a SKU.
  • 3D print, Not needed, or Other.

These all count the same number (Summary.toReview = undecided + unmatched): the Review tab's count and dot, the Overview primary action ("Review N parts"), and its first next move. The separate "unmatched" primary action and next move are gone.

The Buy list keeps its "No vendor match yet" group. The Buy list is the whole order, and hiding those parts would understate what has to be bought. The group now gets a Resolve in Review button that opens Review on No product, and Overview's "No vendor yet" row does the same.

applyMatchDecision now also accepts a pick on a rejected line, so a part's near matches can still be chosen after you reject its product.

2. The drawer moves on after a choice

A part now opens together with its list: Review's filtered order, a Buy list or Make group, or the Parts filter. When a type or product choice saves, the drawer shows the next part still in that list and says "{name} moved to 3D print". When nothing is left, or the part was opened on its own (Overview search), the drawer closes and the same note appears as a toast. A failed save leaves the drawer on the part and shows the error.

The drawer also lists an unmatched part's closest products.

Separately, Enter in Overview's search used to open the drawer and close it again at once, because focus stayed in the field. That is fixed.

3. Bulk types in Review

  • Rows have checkboxes. Shift-click selects a range, Space selects the highlighted row, and "Select all shown" selects every visible row.
  • Each row has "Select all N in {subassembly}".
  • A bar sets one type for every selected part. Each part saves through the existing shared override, four at a time, with its own saving state and no list-wide lock.
  • Parts that fail to save stay selected, with "1 of 3 could not be saved: …".

4. Fastener counts

Onshape's OpenAPI (BTRootAssemblyInfo, BTSubAssemblyInfo) says the definition's instances include "those created by patterns and replicates". Our walk counts every instance, so pattern and Replicate copies were already counted. On the saved HORS scan, BOM quantities matched the definition on all 102 matched rows.

fixtures/assembly-patterns.json pins this: a circular pattern, Replicate copies, a linear pattern inside a subassembly placed twice, and a suppressed pattern copy. No extra Onshape request is needed. The "can be low" notes in the Buy list, workbook, and classifier now say that copies are counted and only fasteners that were never modelled are missing. This has not been checked against a live assembly that uses Replicate.

Screenshots

Fixture mode, saved HORS scan, production catalogs.

1440 px 380 px

Checks

  • Passed: eslint, typecheck, unit tests (290), build.
  • Smoke (13): new tests cover the drawer moving on, closing with a toast, and a failed save, plus bulk selection with a shift-click range, a subassembly, and a partial failure. The existing Review tests now expect unmatched Buy parts to stay in Review.
  • No Onshape request was made.

… and bulk types

Parts to buy with no vendor product now wait in Review (No product), with the
products, vendor search, and type changes that fix each; Review's count, the
primary action, and next moves count them. The part drawer moves to the next
part in the list it came from after a saved choice and says where the part went.
Review rows can be selected (shift-click range, whole subassembly) and given one
type, saved per part with failures kept selected. Pattern and Replicate copies
are already counted (the definition lists them as instances); a fixture pins it.
@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issue remains from the reviewed changes.

Summary

This PR puts unmatched Buy parts in Review, advances the drawer after saved choices, and adds bulk type choices.

  • Review now shows Buy parts that still need a product.
  • The part drawer moves through the list it was opened from.
  • Review can set one type for several selected parts.
  • Fastener notes now explain that pattern and Replicate copies count.

Reviews (4) · Last reviewed commit: "Greptile: subassembly selection follows ..." · Reviewed by Greptile

Comment thread apps/web/src/app/useControlKit.ts Resolved
Comment thread apps/web/src/app/Review.tsx Resolved
@sushilm20

Copy link
Copy Markdown
Contributor Author

@greptile review

@sushilm20

Copy link
Copy Markdown
Contributor Author

@greptile review

Comment thread apps/web/src/app/model.ts Resolved
Comment thread apps/web/src/app/Review.tsx Resolved
@sushilm20

Copy link
Copy Markdown
Contributor Author

@greptile review

@sushilm20
sushilm20 merged commit d93e9ed into main Oct 29, 2026
2 checks passed
@sushilm20
sushilm20 deleted the feat/review-flow branch October 29, 2026 02:56
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