The product sets the quantity, the bar is as long as its dates, and ten badges for your showcase
A round of fixes from the testing notes, plus two things that make the home page and the Services page simpler.
Materials: the row is a shell, the product is the truth
You told us a material row is mostly a holder for a product, and the numbers should come from the product. Now they do.
- The quantity rule reads from the product. Pick SET Unmodified Grey on a thinset row and the rule reads "1 bag per 50 sq ft of wall — from SCHLUTER SET UNMODIFIED GREY (covers 50 sq ft per bag)". It isn't typed on the row any more; the only way to change it is to change the product's coverage — Change on the product — and every service that uses that product follows. If one service genuinely runs a different yield, Use my own rule instead hands that row back to you. Rows with no product, or a product with no coverage on file, keep a typed rule as before.
- The product opens in a popup. On a service's materials list, click the product's name (or Edit product) and the full product page — your cost, coverage, photo, notes, favorites — opens right there. Save and the row updates. No trip to the library and back. The same popup opens from Open in catalog on a bid's material rows.
- The row tells you where a cost lives. You don't pick a destination — the row already knows. A sentence above the cost box says it plainly: This cost belongs to the product; saving updates it in your library, so every service and bid that uses it prices at this — or that it lives on the service, or on this bid only. Where do these numbers live? at the top of the panel lays out the ladder.
- No coverage on the product? The row says so. Roughly half the catalog publishes no coverage figure. When your product doesn't, the row uses the usual trade rate for that material (60 sq ft per bag of standard thinset, 40 large-format, 90 sanded grout, 50 unsanded), shows assumed, and offers Set the coverage — set it once on the product and the row turns exact.
Schedule: bars, arrows, and dependencies
- A bar is as long as its dates. A task running Monday to Friday draws five days wide. It used to collapse to one day whenever the due date landed on a weekend or past the end of the board. Changing the dates in the task's panel now stretches or shrinks the bar too.
- Pull a task earlier and the chart grows backward. Moving a task to a date before the job's start used to make its bar vanish — the chart only started at the job's start date. It now starts at whichever is earlier, so the bar draws where you put it.
- Grab either edge to resize. Hover a bar and a grip appears just inside each end: drag the right one to change the due date, the left one to change the start. The dependency connector now sits just outside the bar's end, so it no longer steals the grab. Drag the right edge past the end of the day and a one-day task grows into the next days instead of just adding hours.
- Arrows keep up. After you drag an arrow to connect two tasks, the arrow used to point at where the task was until you did something else. It now settles onto the bar as soon as the bar stops moving.
- Remove a dependency on the board. Hover an arrow, click it, and a small card names the two tasks with Remove and Open task. No need to open the task's panel.
- Add task and Add wait moved. They sit right after the phase summary ("0/6 done · 12.5 hrs") on both the List and Schedule views instead of at the far right under the Who and Photos columns, where they looked like column labels.
Tasks: photos from the list
The Photos column in the task list is now a dashed + square, just like the empty assignee box beside it. Tap it and choose Take a photo or Choose from device; the photo posts straight to the task and the square becomes a small preview with a count. Tap the preview to open the task's photos.
Services: one duplicate finder
The Services page had two different ways of spotting duplicate services, and they could disagree with each other and with the dashboard's nudge. There's one now. The possible duplicates link in the health line opens the only panel, with each group marked same name, looks the same, or might be the same, a radio for the one to keep, and one Merge. Merging re-points your templates and open estimates to the keeper and carries its materials across. The Catalog Audit keeps its one-offs check and nothing else.
Your showcase collection, right on the job
On a project's Home tab, the Showcase card in the right column is now nine square badges, three to a row — one for each kind of thing worth collecting on a job (before & after set, walkthrough, team photo, client review, and so on). Faded until you've collected that kind on this job; bright with a green check and a count once you have. Tap any badge to capture that item right there — it files against the job, no picker. Open showcase under the badges opens the job's full collection. Past-work photos from your back catalog still come in through the + Showcase chip on the dashboard.
Bids: your template is the starting list
Before you've set up a project template, BidCraft drafts from its own standard list for that project type. Once you have a template, yours is the starting list — and the two are now built from the same bones, so they never disagree about what's its own line. Defaults for the standard list: a shower niche is its own line (delete it from your template if you'd rather fold it into the wall tile), and edge trim rides inside the tile line everywhere (add a trim line to your template if you quote it separately). Whatever your template says, the drafter honours.