app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit a4c8f33021f25909d5afe3d4520b2d2cccd5e809
parent 8c9c1ad86c52e90b749fd68a03493c630b7e71cf
Author: triesap <tyson@radroots.org>
Date:   Fri, 19 Jun 2026 20:39:39 -0700

app: align order UI copy with agreements

- remove stale payment, refund, receipt, and delivery-progress locale rows
- render buyer and farmer order statuses as requested or agreed states
- keep pickup and delivery terms visible without post-agreement lifecycle wording
- update source guards for localized agreement workflow copy

Diffstat:
Mcrates/desktop/src/source_guards.rs | 3++-
Mcrates/i18n/src/keys.rs | 1-
Mcrates/i18n/src/lib.rs | 18++++++++++++------
Mi18n/locales/en/messages.json | 60++++++++++++------------------------------------------------
4 files changed, 26 insertions(+), 56 deletions(-)

diff --git a/crates/desktop/src/source_guards.rs b/crates/desktop/src/source_guards.rs @@ -86,7 +86,6 @@ const ALLOWED_WINDOW_LITERALS: &[&str] = &[ "buyer-order-detail-back", "buyer-order-keep-current", "buyer-order-keep-order", - "buyer-order-close-issue", "buyer-order-repeat-demand", "buyer-orders-retry-coordination", "personal_orders", @@ -1026,6 +1025,8 @@ const FORBIDDEN_HARDCODED_WORKFLOW_UI_LITERALS: &[&str] = &[ "Change", "Fulfillment", "Stock", + "Requested", + "Agreed", "Payment", "Source", "Ordered", diff --git a/crates/i18n/src/keys.rs b/crates/i18n/src/keys.rs @@ -409,7 +409,6 @@ define_app_text_keys! { OrdersDetailWindowLabel => "orders.detail.window.label", OrdersDetailPickupLabel => "orders.detail.pickup.label", OrdersDetailTotalLabel => "orders.detail.total.label", - OrdersDetailPaymentLabel => "orders.detail.payment.label", TradeValidationReceiptSectionLabel => "trade.validation.section.label", TradeValidationReceiptEventLabel => "trade.validation.event.label", TradeValidationReceiptTargetLabel => "trade.validation.target.label", diff --git a/crates/i18n/src/lib.rs b/crates/i18n/src/lib.rs @@ -487,7 +487,9 @@ mod tests { "Needs action" ); assert_eq!(app_text(AppTextKey::OrdersStatusDeclined), "Declined"); - assert_eq!(app_text(AppTextKey::OrdersStatusInHandoff), "In handoff"); + assert_eq!(app_text(AppTextKey::OrdersStatusScheduled), "Agreed"); + assert_eq!(app_text(AppTextKey::OrdersStatusInHandoff), "Agreed"); + assert_eq!(app_text(AppTextKey::OrdersStatusCompleted), "Agreed"); assert_eq!( app_text(AppTextKey::OrdersStatusNeedsReview), "Needs review" @@ -677,6 +679,7 @@ mod tests { ); } + #[test] fn validation_receipt_copy_covers_passive_evidence() { for (key, expected) in [ (AppTextKey::TradeValidationReceiptSectionLabel, "Validation"), @@ -757,15 +760,18 @@ mod tests { app_text(AppTextKey::PersonalOrdersListTitle), "Order history" ); - assert_eq!(app_text(AppTextKey::PersonalOrdersStatusPlaced), "Placed"); + assert_eq!( + app_text(AppTextKey::PersonalOrdersStatusPlaced), + "Requested" + ); assert_eq!( app_text(AppTextKey::PersonalOrdersStatusScheduled), - "Scheduled" + "Agreed" ); - assert_eq!(app_text(AppTextKey::PersonalOrdersStatusReady), "Ready"); + assert_eq!(app_text(AppTextKey::PersonalOrdersStatusReady), "Agreed"); assert_eq!( app_text(AppTextKey::PersonalOrdersStatusCompleted), - "Completed" + "Agreed" ); assert_eq!( app_text(AppTextKey::PersonalOrdersStatusDeclined), @@ -785,7 +791,7 @@ mod tests { ); assert_eq!( app_text(AppTextKey::PersonalOrdersDetailFulfillmentLabel), - "Fulfillment" + "Pickup/delivery" ); assert_eq!( app_text(AppTextKey::PersonalOrdersDetailNoteLabel), diff --git a/i18n/locales/en/messages.json b/i18n/locales/en/messages.json @@ -311,21 +311,13 @@ "personal.orders.detail.empty.body": "Select an order to review the details.", "personal.orders.detail.farm.label": "Farm", "personal.orders.detail.status.label": "Status", - "personal.orders.detail.fulfillment.label": "Fulfillment", + "personal.orders.detail.fulfillment.label": "Pickup/delivery", "personal.orders.detail.total.label": "Total", - "personal.orders.detail.payment.label": "Payment", "personal.orders.detail.note.label": "Order note", - "personal.orders.detail.receipt.label": "Receipt", "personal.orders.detail.items.title": "Items", "personal.orders.action.cancel": "Cancel order", "personal.orders.action.accept_change": "Accept change", "personal.orders.action.keep_order": "Keep order", - "personal.orders.action.mark_received": "Mark received", - "personal.orders.action.report_issue": "Report issue", - "personal.orders.action.send_receipt_issue": "Send update", - "personal.orders.action.close_receipt_issue": "Close", - "personal.orders.receipt.issue.label": "Note", - "personal.orders.receipt.issue.placeholder": "What needs review", "personal.orders.repeat_demand.title": "Reorder", "personal.orders.repeat_demand.action.eligible": "Reorder", "personal.orders.repeat_demand.action.partial": "Reorder available items", @@ -335,16 +327,15 @@ "personal.orders.coordination_retry.title": "Finish sharing saved orders", "personal.orders.coordination_retry.body": "A saved order still needs to be shared with your order tools.", "personal.orders.coordination_retry.action": "Try sharing again", - "personal.orders.status.placed": "Placed", - "personal.orders.status.scheduled": "Scheduled", - "personal.orders.status.ready": "Ready", - "personal.orders.status.completed": "Completed", + "personal.orders.status.placed": "Requested", + "personal.orders.status.scheduled": "Agreed", + "personal.orders.status.ready": "Agreed", + "personal.orders.status.completed": "Agreed", "personal.orders.status.declined": "Declined", - "personal.orders.status.refunded": "Refunded", "personal.orders.status.needs_review": "Needs review", "personal.cart.surface.body": "Review items from one farm before placing the order.", "personal.order_summary.title": "Order summary", - "personal.fulfillment.title": "Fulfillment", + "personal.fulfillment.title": "Pickup/delivery", "personal.cart.remove_line.action": "Remove", "personal.cart.review_order.action": "Review order", "personal.cart.line.quantity.label": "Quantity", @@ -374,11 +365,10 @@ "orders.summary.total": "Total orders", "orders.filter.all": "All", "orders.status.needs_action": "Needs action", - "orders.status.scheduled": "Scheduled", - "orders.status.in_handoff": "In handoff", - "orders.status.completed": "Completed", + "orders.status.scheduled": "Agreed", + "orders.status.in_handoff": "Agreed", + "orders.status.completed": "Agreed", "orders.status.declined": "Declined", - "orders.status.refunded": "Refunded", "orders.status.needs_review": "Needs review", "orders.table.title": "Order queue", "orders.column.order": "Order", @@ -387,25 +377,18 @@ "orders.column.pickup": "Pickup", "orders.column.action": "Action", "orders.action.review": "Review", - "orders.action.preparing": "Preparing", - "orders.action.ready_for_pickup": "Ready for pickup", - "orders.action.out_for_delivery": "Out for delivery", - "orders.action.mark_delivered": "Mark delivered", - "orders.action.cancel_fulfillment": "Cancel fulfillment", - "orders.action.update_fulfillment": "Update", "orders.empty.title": "No orders yet", "orders.empty.body": "Orders will appear here when customers place them.", "orders.empty.needs_action.title": "Nothing needs action", - "orders.empty.needs_action.body": "Current orders are already scheduled or packed.", + "orders.empty.needs_action.body": "Current orders are already reviewed or agreed.", "orders.detail.title": "Order detail", - "orders.detail.empty.body": "Select an order to review the items and next step.", + "orders.detail.empty.body": "Select an order to review the items and agreement.", "orders.detail.items.title": "Items", "orders.detail.customer.label": "Customer", "orders.detail.status.label": "Status", - "orders.detail.window.label": "Fulfillment window", + "orders.detail.window.label": "Pickup/delivery window", "orders.detail.pickup.label": "Pickup location", "orders.detail.total.label": "Total", - "orders.detail.payment.label": "Payment", "trade.validation.section.label": "Validation", "trade.validation.event.label": "Receipt", "trade.validation.target.label": "Target", @@ -427,8 +410,6 @@ "orders.recovery.section.title": "Recovery", "orders.recovery.missed_pickup.title": "Missed pickup", "orders.recovery.missed_pickup.body": "Use this when a buyer did not collect the order as planned.", - "orders.recovery.refund_follow_up.title": "Payment status", - "orders.recovery.refund_follow_up.body": "Track the recorded payment state for this order.", "orders.recovery.last_updated.label": "Last updated", "orders.recovery.action.open_follow_up": "Open follow-up", "orders.recovery.action.start_review": "Start review", @@ -439,38 +420,21 @@ "orders.recovery.state.resolved": "Resolved", "trade.workflow.axis.agreement": "Agreement", "trade.workflow.axis.revision": "Change", - "trade.workflow.axis.fulfillment": "Fulfillment", "trade.workflow.axis.inventory": "Stock", - "trade.workflow.axis.payment": "Payment", - "trade.workflow.axis.receipt": "Receipt", "trade.workflow.axis.source": "Source", "trade.workflow.agreement.ordered": "Ordered", "trade.workflow.agreement.confirmed": "Confirmed", "trade.workflow.agreement.declined": "Declined", "trade.workflow.agreement.cancelled": "Cancelled", - "trade.workflow.agreement.completed": "Completed", "trade.workflow.agreement.needs_review": "Needs review", "trade.workflow.revision.none": "No change", "trade.workflow.revision.change_proposed": "Change proposed", "trade.workflow.revision.updated": "Updated", "trade.workflow.revision.kept_as_placed": "Kept as placed", - "trade.workflow.fulfillment.confirmed": "Confirmed", - "trade.workflow.fulfillment.preparing": "Preparing", - "trade.workflow.fulfillment.ready_for_pickup": "Ready for pickup", - "trade.workflow.fulfillment.out_for_delivery": "Out for delivery", - "trade.workflow.fulfillment.delivered": "Delivered", - "trade.workflow.fulfillment.cancelled": "Cancelled", "trade.workflow.inventory.available": "Available", "trade.workflow.inventory.reserved": "Reserved", "trade.workflow.inventory.sold_out": "Sold out", "trade.workflow.inventory.needs_review": "Needs review", - "trade.workflow.payment.not_recorded": "Not recorded", - "trade.workflow.payment.pending": "Pending", - "trade.workflow.payment.recorded": "Recorded", - "trade.workflow.payment.settled": "Settled", - "trade.workflow.payment.needs_review": "Needs review", - "trade.workflow.receipt.received": "Received", - "trade.workflow.receipt.needs_review": "Needs review", "trade.workflow.provenance.app": "App", "trade.workflow.provenance.cli": "CLI", "trade.workflow.provenance.relay": "Relay",