Commit Graph
250 Commits
Author SHA1 Message Date
aj 9b1564451d Remove unused workspace-header from MainLayout
Build CutList image / build-and-push (push) Successful in 22s
It was static markup (fixed "Cut planning workspace" / "Ready to plan"
text) that never varied by page or state, so it was pure dead weight.
2026-08-03 07:53:15 -04:00
aj 5409479e00 fix(web): make printed cut instructions legible
Build CutList image / build-and-push (push) Successful in 19s
Keep part numbers and their dividers visible in monochrome print output, and include the selected cutting tool and kerf on the printed report.
2026-08-03 02:18:45 +00:00
aj 25af9e3ba8 fix(web): keep printed cut-list rows together
Build CutList image / build-and-push (push) Successful in 22s
2026-08-03 01:51:11 +00:00
aj 3ccaddef0c [verified] feat: add configurable results length units
Build CutList image / build-and-push (push) Successful in 31s
Default cut results to total-inch mixed fractions, allow switching to feet and inches, and separate part names from lengths visually.
2026-08-03 01:31:09 +00:00
aj 79bf56afd8 docs: clarify job lock workflow 2026-08-03 01:09:58 +00:00
aj 96f5824d12 fix(web): simplify printed cut reports
Build CutList image / build-and-push (push) Successful in 19s
2026-08-03 01:08:43 +00:00
aj db054aa6dc fix(web): hide job lock status from printed reports
Build CutList image / build-and-push (push) Successful in 21s
2026-08-03 00:26:30 +00:00
aj 8e2027d81b feat(web): split cut badge lengths
Build CutList image / build-and-push (push) Successful in 21s
2026-08-03 00:09:44 +00:00
aj 57c7aa5f9f feat(web): use compact cut list identifiers
Build CutList image / build-and-push (push) Successful in 18s
2026-08-02 21:33:29 +00:00
aj 34c9b77501 fix(web): place lock action in results toolbar
Build CutList image / build-and-push (push) Successful in 20s
2026-08-02 21:19:36 +00:00
aj 203ea0c69d style(web): compact CutList typography
Build CutList image / build-and-push (push) Successful in 19s
2026-08-02 20:57:17 +00:00
aj 5cbd06711c fix(web): load overview stock summary with scalar projection
Build CutList image / build-and-push (push) Successful in 19s
2026-08-02 20:24:04 +00:00
aj f3b911f37c feat(web): add data-backed planning overview
Build CutList image / build-and-push (push) Successful in 19s
2026-08-02 20:18:07 +00:00
aj 1f04c5343a feat(web): refresh CutList visual system
Build CutList image / build-and-push (push) Successful in 24s
2026-08-02 19:57:57 +00:00
aj 3fbcb05d4d fix(web): restore CutList brand contrast 2026-08-02 19:45:32 +00:00
aj 4f21d536f8 fix(web): label required lengths as material list
Build CutList image / build-and-push (push) Successful in 27s
2026-08-02 18:32:45 +00:00
aj c1409bbdfb fix(web): reduce job title heading size
Build CutList image / build-and-push (push) Successful in 18s
2026-08-02 14:32:39 +00:00
aj 7882ed7669 fix(web): keep table action buttons inline
Build CutList image / build-and-push (push) Successful in 18s
2026-08-02 14:26:56 +00:00
aj af37789dcd Remove Alro catalog scraper and seed data
Build CutList image / build-and-push (push) Successful in 20s
Standard available lengths are now sourced from Oneal instead, so the
Alro scraping workflow and its generated seed data are no longer needed.
2026-08-02 10:00:44 -04:00
aj ebe725579b Improve CutList brand contrast
Build CutList image / build-and-push (push) Successful in 20s
2026-08-02 09:53:25 -04:00
aj 05179aa445 Redesign CutList workspace UI
Build CutList image / build-and-push (push) Successful in 25s
2026-08-02 09:12:04 -04:00
ajandClaude Sonnet 5 ec16dd2c9b fix: polish unified add-stock modal (Edit.razor)
Build CutList image / build-and-push (push) Successful in 24s
Apply four low-risk fixes from final code review of the consolidated
add-stock modal: reset newStock on modal close, dedupe stock-item
loading through the existing helper, correct stale empty-state copy
about inventory fallback, and remove a stray blank line left from the
old form deletion.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 19:32:51 -04:00
ajandClaude Sonnet 5 0c5ecf716a fix: prefill Stock Length dropdown when editing inventory-sourced stock
Editing an inventory-sourced job stock row opened the Edit Stock modal
with the Stock Length dropdown blank instead of showing the row's
current length. EditStock() correctly set newStock.StockItemId from
the row, but then called the fire-and-forget OnStockMaterialChanged(),
which (a) unconditionally reset StockItemId to null, and (b) never
triggered a re-render since its Task wasn't awaited by the event
handler pipeline. Made EditStock async and await a dedicated loader
that populates availableStockItems without touching StockItemId, so
Blazor re-renders once the candidate lengths arrive.

Found during Task 2 manual verification of the unified Add Stock
modal (Step 6).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 19:23:49 -04:00
aj c66099481b docs: add implementation plan for unified add/edit stock modal 2026-08-01 19:08:28 -04:00
aj 9020ba80c1 feat: unify add/edit stock UI into a single modal on Job Edit page
Replaces the three separate surfaces (bulk import modal, inline custom-length
form, inline edit forms) with one "Add Stock" button and modal that handles
both add and edit, for both inventory-sourced and custom-length stock.
2026-08-01 19:02:27 -04:00
aj 2cb9c5ec8d docs: add design spec for unified add/edit stock modal
Job Edit page's Stock tab currently has three inconsistent entry points
(bulk import modal, inline custom-length form, inline edit forms) for
what should be a single add/edit stock flow.
2026-08-01 17:52:49 -04:00
ajandClaude Sonnet 5 232b86f15b docs: add implementation plan for removing inventory quantity tracking
Companion to the design spec, kept for reference alongside the executed work.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 11:44:50 -04:00
aj ec52834cd4 fix: correct stale min attribute and MCP wording from inventory removal
Build CutList image / build-and-push (push) Successful in 23s
Three small leftovers from Task 7 / the inventory-quantity-tracking
removal that a final review caught:

- Edit.razor's custom-stock quantity input still had min="1" even
  though its own helper text says "Use -1 for unlimited", validation
  already accepts -1, and the add-form defaults Quantity to -1 - so
  the field rendered pre-populated with a value the browser's native
  min validation flagged as invalid. Matches the min="-1" fix already
  applied to the catalog-stock input in Task 7.
- optimize_job's MCP tool description still claimed the optimizer
  falls back to "available inventory" when no stock is configured -
  that auto-discovery fallback was removed in Task 3. An LLM reads
  this description as ground truth, so stale wording here actively
  misleads tool use. Also tightened add_job_stock's stockItemId/
  isCustomLength wording, which still said "inventory" for what is
  now just the stock catalog.
- CLAUDE.md's CutListPackingService summary said InStockBins comes
  "from inventory", nudging future readers back toward the
  auto-discovery mental model this plan removed.
2026-08-01 11:39:35 -04:00
aj d8656cc454 fix: classify unlimited catalog-sourced job stock as in-stock
Task 7 extended JobStock.Quantity = -1 (unlimited) to catalog-sourced
rows, but the post-pack classification step in CutListPackingService
only ever treated a catalog-sourced bin as "in stock" when its tracked
quantity was a positive finite number. An unlimited catalog row fell
through to "to be purchased" even though IsInStock=true just means the
bin is catalog-sourced, not a quantity check.

This made the classification effectively unreachable for the most
common path users take to stock a job: the "Import from Inventory"
modal defaults every candidate's quantity to -1, so every resulting
bin was mislabeled "to be purchased" on the Results tab, and the
"everything is available in stock" message could never appear for
jobs stocked that way.

Track unlimited catalog-sourced lengths in a separate set and check it
first; finite catalog quantities keep the existing decrementing-counter
behavior, and custom-length stock (any quantity) is unaffected.
2026-08-01 11:39:28 -04:00
aj 0333942cb3 docs: update CLAUDE.md for inventory quantity tracking removal 2026-08-01 11:26:04 -04:00
aj 49a539d7e5 feat: allow unlimited quantity for catalog-sourced job stock
Custom-length job stock already supported -1 (unlimited); catalog-
sourced stock only allowed >= 1. Closes that inconsistency per
docs/superpowers/specs/2026-08-01-remove-inventory-quantity-tracking-design.md.
Also updates the Results tab's unplaced-items message now that
insufficient configured quantity is a normal cause, not an edge case.
2026-08-01 11:12:12 -04:00
aj 6bdbdf4969 feat: drop QuantityOnHand column and StockTransactions table
Final step of removing inventory quantity tracking - see
docs/superpowers/specs/2026-08-01-remove-inventory-quantity-tracking-design.md.
Destructive to any existing on-hand/transaction data; confirmed
acceptable since nothing read it automatically.
2026-08-01 11:04:11 -04:00
aj 383fa19cf2 refactor: drop QuantityOnHand from CutList.Mcp inventory tools
Matches the REST API's StockItemDto/CreateStockItemDto shape after
inventory quantity tracking removal. Republished to
~/.claude/mcp/CutList.Mcp/.
2026-08-01 10:56:17 -04:00
aj 843ba24788 refactor: drop QuantityOnHand from catalog import/export
Part of removing inventory quantity tracking; existing seed JSON keeps
the field on disk but it's now ignored on import.
2026-08-01 10:53:09 -04:00
aj 41283987b9 refactor: remove packing auto-discovery fallback
The fallback silently pulled from StockItem.QuantityOnHand and always
added an extra unlimited bin on top when a job had no stock configured
- i.e. it assumed unlimited purchasing. Per
docs/superpowers/specs/2026-08-01-remove-inventory-quantity-tracking-design.md,
a job's available stock must now be exactly what's explicitly entered.
2026-08-01 10:48:56 -04:00
aj 41dda11062 refactor: remove stock-transaction service methods, endpoints, and DTOs
No job workflow ever called these (receive/use/adjust/scrap/recalculate)
- inventory quantity tracking is being removed per
docs/superpowers/specs/2026-08-01-remove-inventory-quantity-tracking-design.md.
2026-08-01 10:43:01 -04:00
aj f71cf8ab0a fix: remove debug TEST123 text from Stock Items heading 2026-08-01 10:37:00 -04:00
aj fd6e8d632c refactor: remove QuantityOnHand display from stock and job UI
First step of removing inventory quantity tracking (see
docs/superpowers/specs/2026-08-01-remove-inventory-quantity-tracking-design.md).
UI no longer shows on-hand counts or offers transaction entry; the
underlying field/service methods are removed in follow-up commits.
2026-08-01 10:32:12 -04:00
ajandClaude Sonnet 5 69c993fcb2 docs: add design spec for removing inventory quantity tracking
Users need to enter parts/stock and get results without a disconnected
inventory system to manage; StockItem.QuantityOnHand and StockTransaction
today aren't read or written by the job workflow anywhere except an
auto-discovery fallback that silently assumes unlimited purchasing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 10:12:56 -04:00
aj 7b210f518b docs: remove last stale StockItemService pricing reference; ignore playwright-mcp logs
Build CutList image / build-and-push (push) Successful in 1m11s
CLAUDE.md still listed GetAverageCostAsync/GetLastPurchasePriceAsync, which
Task 1 of the vendor-data removal already deleted. Also stop tracking the
Playwright MCP browser session logs left behind by Task 10's smoke test.
2026-08-01 09:33:53 -04:00
aj 3244e15593 fix: address final review findings in vendor-data removal (catalog save, job locking, DB collision, docs) 2026-08-01 09:32:16 -04:00
aj b77d0d971d feat: remove supplier MCP tools, add plain add_stock convenience tool 2026-08-01 08:55:49 -04:00
aj f75c205bc5 chore: strip vendor data from oneals-catalog.json seed file 2026-08-01 08:52:25 -04:00
aj 1b4d5f76a8 feat: remove Supplier/SupplierOffering/PurchaseItem entities and migrate schema 2026-08-01 08:49:05 -04:00
ajandClaude Sonnet 5 41944638c6 feat: drop supplier import/export from the catalog format
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 08:45:21 -04:00
aj 063c844310 feat: delete SupplierService, PurchaseItemService, and their API surface 2026-08-01 08:41:28 -04:00
aj 597181bd78 feat: replace Add to Order List with a direct Lock Job action 2026-08-01 08:38:20 -04:00
aj 8d6ada35e5 feat: remove Suppliers and Orders pages and nav entries 2026-08-01 08:34:47 -04:00
aj b51d936b78 fix: make stock item length editable and drop vendor UI from Stock Edit page 2026-08-01 08:31:40 -04:00
aj e7248be9a4 refactor: strip supplier/pricing from StockItemService and stock-items API 2026-08-01 08:27:55 -04:00