-
Notifications
You must be signed in to change notification settings - Fork 6
chore: v3.7.0 release prep — docs, version bump, changelog #511
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | |||||
|
|
||||||
| ## [Unreleased] | ||||||
|
|
||||||
| ## [3.7.0] - 2026-04-06 | ||||||
|
|
||||||
| ### Added | ||||||
|
|
||||||
| - **Close-short workflow** — accept partial fulfillment when full quantity cannot be produced or shipped; close-short preview shows per-line achievable quantities before executing (#495, #501) | ||||||
| - **PO accept-short** — complete a production order with less than the ordered quantity; BOM-aware guard prevents breaking assembly dependencies (#499) | ||||||
| - **SO line editing** — edit quantities on confirmed/in-production/on-hold/pending orders with reason tracking (#495) | ||||||
| - **SO line removal** — remove a line from an editable order; guarded by shipped quantity, active PO check, and minimum one-line requirement (#505, #506) | ||||||
| - **PO refresh-routing** — re-snapshot a product's current active routing onto an existing production order; solves POs created before routing existed (#505) | ||||||
| - **Quote PDF redesign** — professional B2B layout with brand colors, two-column header, itemized lines, and terms (#497) | ||||||
| - **Invoice PDF redesign** — professional layout with full customer info, payment terms, calculated due date, and packing slip match (#504) | ||||||
| - **Packing slip redesign** — matches invoice/quote style with brand header, dark table header, and alternating row stripes (#504) | ||||||
| - **Admin messaging** — admin-initiated direct messaging (PRO-gated with `isPro` feature flag) (#493) | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This line says PRO gating uses an Suggested wording tweak-- **Admin messaging** — admin-initiated direct messaging (PRO-gated with `isPro` feature flag) (`#493`)
+- **Admin messaging** — admin-initiated direct messaging (PRO-tier gated in UI) (`#493`)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
|
|
||||||
| ### Fixed | ||||||
|
|
||||||
| - Pending orders now included in editable statuses — line edits and removal were hidden on `pending` orders (#506) | ||||||
| - Quote-converted orders used `source='portal'` incorrectly — now `source='quote'`; PRO portal passes `source='portal'` explicitly (#505) | ||||||
| - `sales_orders.unit_price` was NOT NULL — caused conversion failures for multi-line quotes where header price is null by design (migration 077, #505) | ||||||
| - Packing slip header collision — "PACKING SLIP" title overlapped SO number; fixed with adequate `spaceAfter` spacing (#505) | ||||||
| - Close-short UI clarity — Short Closed state and multi-line Order Summary display (#502) | ||||||
|
|
||||||
| ### Documentation | ||||||
|
|
||||||
| - Regenerated API-REFERENCE.md (438 endpoints), SCHEMA-REFERENCE.md (64 models), MIGRATIONS-LOG.md (60 migrations) | ||||||
| - Added close-short, line editing, and line removal workflows to orders user guide | ||||||
| - Added accept-short and refresh-routing sections to production user guide | ||||||
| - Added production shortfall path to quote-to-cash workflow | ||||||
| - Updated FEATURE-CATALOG.md: 41 → 50 features | ||||||
| - Removed stale planning document (496-architecture-review.md) | ||||||
|
|
||||||
| ## [3.6.0] - 2026-03-30 | ||||||
|
|
||||||
| ### Added | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| 3.6.0 | ||
| 3.7.0 |
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -10,17 +10,17 @@ | |||||||||
|
|
||||||||||
| | Metric | Count | | ||||||||||
| | ------ | ----- | | ||||||||||
| | **Total Endpoints** | ~432 | | ||||||||||
| | **Total Endpoints** | ~438 | | ||||||||||
| | **Router Files** | 49 | | ||||||||||
| | **Router Groups** | 28 (including 18 admin sub-modules) | | ||||||||||
| | **Base Path** | `/api/v1/` | | ||||||||||
|
|
||||||||||
| ### HTTP Method Distribution | ||||||||||
|
|
||||||||||
| - **GET**: ~212 endpoints (read/query operations) | ||||||||||
| - **POST**: ~149 endpoints (create/execute operations) | ||||||||||
| - **PUT/PATCH**: ~41 endpoints (update operations) | ||||||||||
| - **DELETE**: ~30 endpoints (delete operations) | ||||||||||
| - **GET**: ~213 endpoints (read/query operations) | ||||||||||
| - **POST**: ~152 endpoints (create/execute operations) | ||||||||||
| - **PUT/PATCH**: ~42 endpoints (update operations) | ||||||||||
| - **DELETE**: ~31 endpoints (delete operations) | ||||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
|
|
@@ -80,7 +80,7 @@ Authorization: Bearer <access_token> | |||||||||
|
|
||||||||||
| **Tier**: Core | ||||||||||
| **File**: `endpoints/sales_orders.py` | ||||||||||
| **Endpoints**: 26 | ||||||||||
| **Endpoints**: 30 | ||||||||||
|
|
||||||||||
| | Method | Path | Description | Auth | | ||||||||||
| | ------ | ---- | ----------- | ---- | | ||||||||||
|
|
@@ -101,6 +101,10 @@ Authorization: Bearer <access_token> | |||||||||
| | PATCH | `/sales-orders/{order_id}/shipping` | Update shipping information for an order (admin only). | ADMIN | | ||||||||||
| | PATCH | `/sales-orders/{order_id}/address` | Update shipping address for an order (admin only). | ADMIN | | ||||||||||
| | POST | `/sales-orders/{order_id}/cancel` | Cancel a sales order. | ADMIN | | ||||||||||
| | PATCH | `/sales-orders/{order_id}/lines` | Edit line item quantities on a sales order. | ADMIN | | ||||||||||
| | DELETE | `/sales-orders/{order_id}/lines/{line_id}` | Remove a line item from a sales order. | ADMIN | | ||||||||||
| | GET | `/sales-orders/{order_id}/close-short-preview` | Preview close-short: shows per-line achievable quantities and PO status. | ADMIN | | ||||||||||
| | POST | `/sales-orders/{order_id}/close-short` | Close an order short — accept partial fulfillment, transition to ready_to_ship. | ADMIN | | ||||||||||
| | POST | `/sales-orders/{order_id}/confirm` | Confirm a pending_confirmation order from an external source. | ADMIN | | ||||||||||
| | POST | `/sales-orders/{order_id}/reject` | Reject a pending_confirmation order from an external source. | ADMIN | | ||||||||||
| | DELETE | `/sales-orders/{order_id}` | Delete a sales order (admin only). | ADMIN | | ||||||||||
|
|
@@ -197,7 +201,7 @@ Authorization: Bearer <access_token> | |||||||||
|
|
||||||||||
| **Tier**: Core | ||||||||||
| **File**: `endpoints/production_orders.py`, `endpoints/operation_status.py` | ||||||||||
| **Endpoints**: 40 | ||||||||||
| **Endpoints**: 42 | ||||||||||
|
|
||||||||||
| | Method | Path | Description | Auth | | ||||||||||
| | ------ | ---- | ----------- | ---- | | ||||||||||
|
|
@@ -217,7 +221,9 @@ Authorization: Bearer <access_token> | |||||||||
| | POST | `/production-orders/{order_id}/release` | Release a production order for manufacturing. | CUSTOMER | | ||||||||||
| | POST | `/production-orders/{order_id}/start` | Start production on an order. | CUSTOMER | | ||||||||||
| | POST | `/production-orders/{order_id}/complete` | Complete a production order. | CUSTOMER | | ||||||||||
| | POST | `/production-orders/{order_id}/accept-short` | Accept a production order short — complete it with the quantity already produced. | CUSTOMER | | ||||||||||
| | POST | `/production-orders/{order_id}/cancel` | Cancel a production order. | CUSTOMER | | ||||||||||
| | POST | `/production-orders/{order_id}/refresh-routing` | Re-snapshot the product's current active routing onto the production order. | CUSTOMER | | ||||||||||
| | POST | `/production-orders/{order_id}/hold` | Put a production order on hold. | CUSTOMER | | ||||||||||
| | PUT | `/production-orders/{order_id}/schedule` | Schedule a production order. | CUSTOMER | | ||||||||||
| | GET | `/production-orders/schedule/summary` | Get production schedule summary. | CUSTOMER | | ||||||||||
|
|
@@ -971,5 +977,5 @@ All endpoints are prefixed with `/api/v1/` | |||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| *Last updated: 2026-03-30* | ||||||||||
| *Last updated: 2026-04-06* | ||||||||||
| *Generated for FilaOps Core v3.6.0* | ||||||||||
|
Comment on lines
+980
to
981
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. API reference footer still points to previous release. Line 981 says Suggested fix *Last updated: 2026-04-06*
-*Generated for FilaOps Core v3.6.0*
+*Generated for FilaOps Core v3.7.0*📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -9,8 +9,8 @@ | |||||||||||
|
|
||||||||||||
| | Tier | Features | Status | | ||||||||||||
| | ------ | ---------- | -------- | | ||||||||||||
| | **Core (Open Source)** | 41 | Released | | ||||||||||||
| | **Total** | 41 | - | | ||||||||||||
| | **Core (Open Source)** | 50 | Released | | ||||||||||||
| | **Total** | 50 | - | | ||||||||||||
|
|
||||||||||||
| --- | ||||||||||||
|
|
||||||||||||
|
|
@@ -20,7 +20,7 @@ | |||||||||||
|
|
||||||||||||
| ### Core (Open Source) | ||||||||||||
|
|
||||||||||||
| ## Core Features (41) | ||||||||||||
| ## Core Features (50) | ||||||||||||
|
|
||||||||||||
| ### Authentication & Access | ||||||||||||
|
|
||||||||||||
|
|
@@ -98,6 +98,30 @@ | |||||||||||
| | 40 | Duplicate Item | Clone items with inline BOM component swap for color variants | ✅ Complete | | ||||||||||||
| | 41 | Copy BOM | Copy a BOM to a different product with target product picker | ✅ Complete | | ||||||||||||
|
|
||||||||||||
| ### Sales Orders (v3.7.0) | ||||||||||||
|
|
||||||||||||
| | # | Feature | Description | Status | | ||||||||||||
| | --- | ------- | ----------- | ------ | | ||||||||||||
| | 42 | SO Line Editing | Edit quantities on confirmed/in-production/pending order lines with reason tracking | ✅ Complete | | ||||||||||||
| | 43 | SO Line Removal | Remove a line from an editable order (guards: not shipped, no active POs, not last line) | ✅ Complete | | ||||||||||||
| | 44 | Close-Short | Accept partial fulfillment — close an order short when full quantity cannot be produced/shipped | ✅ Complete | | ||||||||||||
| | 45 | Close-Short Preview | Preview achievable quantities per line before executing close-short | ✅ Complete | | ||||||||||||
| | 46 | Pending Orders Editable | Orders in 'pending' status allow line edits and removal | ✅ Complete | | ||||||||||||
|
|
||||||||||||
| ### Production Orders (v3.7.0) | ||||||||||||
|
|
||||||||||||
| | # | Feature | Description | Status | | ||||||||||||
| | --- | ------- | ----------- | ------ | | ||||||||||||
| | 47 | PO Accept-Short | Complete a production order with less than the ordered quantity | ✅ Complete | | ||||||||||||
| | 48 | PO Refresh Routing | Re-snapshot a product's current active routing onto an existing PO (useful when routing added after PO created) | ✅ Complete | | ||||||||||||
|
|
||||||||||||
| ### PDF Documents (v3.7.0) | ||||||||||||
|
|
||||||||||||
| | # | Feature | Description | Status | | ||||||||||||
| | --- | ------- | ----------- | ------ | | ||||||||||||
| | 49 | Quote PDF Redesign | Professional B2B quote layout with brand colors, itemized lines, and terms | ✅ Complete | | ||||||||||||
| | 50 | Invoice PDF Redesign | Professional invoice layout with full customer info, payment terms, and due date | ✅ Complete | | ||||||||||||
|
|
||||||||||||
| --- | ||||||||||||
|
|
||||||||||||
| ## Hidden Features (Backend Only) | ||||||||||||
|
|
@@ -206,5 +230,6 @@ MRP | |||||||||||
|
|
||||||||||||
| --- | ||||||||||||
|
|
||||||||||||
| *Last updated: 2026-01-28* | ||||||||||||
| *Last updated: 2026-04-06* | ||||||||||||
| *Generated for FilaOps Core v3.7.0* | ||||||||||||
| *Generated for FilaOps Core (Open Source)* | ||||||||||||
|
Comment on lines
+233
to
235
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Footer metadata is now duplicated/inconsistent. Line 234 already includes versioned generation metadata, but Line 235 leaves an older generic footer in place. Keep one canonical footer to avoid “which one is authoritative?” archaeology later. Suggested cleanup *Last updated: 2026-04-06*
*Generated for FilaOps Core v3.7.0*
-*Generated for FilaOps Core (Open Source)*📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -11,7 +11,7 @@ | |||||||||
|
|
||||||||||
| | Metric | Count | | ||||||||||
| | ------ | ----- | | ||||||||||
| | **Total Migrations** | 56 | | ||||||||||
| | **Total Migrations** | 60 | | ||||||||||
| | **Database** | PostgreSQL | | ||||||||||
| | **Tool** | Alembic | | ||||||||||
|
|
||||||||||
|
|
@@ -29,12 +29,12 @@ | |||||||||
| | Purchasing | 5 | 019, 027, 028, 036, 2940c6a93ea7 | | ||||||||||
| | Settings | 3 | 020, 037, 062 | | ||||||||||
| | Performance | 1 | 905ef924f499 | | ||||||||||
| | Sales | 8 | 024, 038, 043, 061, 066, 069, 071, 072 | | ||||||||||
| | Sales | 11 | 024, 038, 043, 061, 066, 069, 071, 072, 074, 076, 077 | | ||||||||||
| | Maintenance | 2 | 025, 026 | | ||||||||||
| | Products | 3 | 040, 055, 065 | | ||||||||||
| | Accounting | 5 | 044, 045, 046, 052, 053 | | ||||||||||
| | Tax | 1 | 063 | | ||||||||||
| | Other | 2 | 070, 073 | | ||||||||||
| | Other | 3 | 070, 073, 075 | | ||||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
|
|
@@ -1121,6 +1121,65 @@ | |||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| #### `074_add_close_short_and_line_edit_fields.py` | ||||||||||
|
|
||||||||||
| **Tier**: Core | ||||||||||
| **Date**: 2026-04-02 | ||||||||||
| **Purpose**: Add close_short fields to sales_orders and original_quantity to sales_order_lines | ||||||||||
| **Revises**: 073 | ||||||||||
|
|
||||||||||
| **Adds Columns**: | ||||||||||
|
|
||||||||||
| - `sales_orders.closed_short` | ||||||||||
| - `sales_orders.closed_short_at` | ||||||||||
| - `sales_orders.close_short_reason` | ||||||||||
| - `sales_order_lines.original_quantity` | ||||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| #### `075_add_close_short_records_table.py` | ||||||||||
|
|
||||||||||
| **Tier**: Core | ||||||||||
| **Date**: 2026-04-03 | ||||||||||
| **Purpose**: Add close_short_records audit table | ||||||||||
| **Revises**: 074 | ||||||||||
|
|
||||||||||
| **Creates Tables**: | ||||||||||
|
|
||||||||||
| - `close_short_records` - Close Short Records | ||||||||||
|
|
||||||||||
| **Creates Indexes**: | ||||||||||
|
|
||||||||||
| - `ix_close_short_records_entity_type_entity_id` | ||||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| #### `076_add_fulfillment_status_to_so_lines.py` | ||||||||||
|
|
||||||||||
| **Tier**: Core | ||||||||||
| **Date**: 2026-04-03 | ||||||||||
| **Purpose**: Add fulfillment_status to sales_order_lines | ||||||||||
| **Revises**: 075 | ||||||||||
|
|
||||||||||
| **Adds Columns**: | ||||||||||
|
|
||||||||||
| - `sales_order_lines.fulfillment_status` | ||||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| #### `077_make_so_unit_price_nullable.py` | ||||||||||
|
|
||||||||||
| **Tier**: Core | ||||||||||
| **Date**: 2026-04-05 | ||||||||||
| **Purpose**: Make sales_orders.unit_price nullable | ||||||||||
| **Revises**: 076 | ||||||||||
|
|
||||||||||
| **Alters Columns**: | ||||||||||
|
|
||||||||||
| - `sales_orders.unit_price` | ||||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| ## Migration Dependencies | ||||||||||
|
|
||||||||||
| ```text | ||||||||||
|
|
@@ -1237,6 +1296,14 @@ b1815de543ea (001_initial_postgres_schema) | |||||||||
| 072_portal_ingestion_notifications | ||||||||||
| | | ||||||||||
| 073_add_quote_lines_table | ||||||||||
| | | ||||||||||
| 074_add_close_short_and_line_edit_fields | ||||||||||
| | | ||||||||||
| 075_add_close_short_records_table | ||||||||||
| | | ||||||||||
| 076_add_fulfillment_status_to_so_lines | ||||||||||
| | | ||||||||||
| 077_make_so_unit_price_nullable | ||||||||||
| ``` | ||||||||||
|
|
||||||||||
|
|
||||||||||
|
|
@@ -1261,5 +1328,5 @@ alembic history --verbose | |||||||||
|
|
||||||||||
| --- | ||||||||||
|
|
||||||||||
| *Last updated: 2026-03-30* | ||||||||||
| *Last updated: 2026-04-06* | ||||||||||
| *Generated for FilaOps Core v3.6.0* | ||||||||||
|
Comment on lines
+1331
to
1332
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Generated version footer is stale. Line 1332 still says Suggested fix *Last updated: 2026-04-06*
-*Generated for FilaOps Core v3.6.0*
+*Generated for FilaOps Core v3.7.0*📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -2,9 +2,9 @@ | |||||||||||||||
|
|
||||||||||||||||
| # FilaOps Database Schema Reference | ||||||||||||||||
|
|
||||||||||||||||
| **Generated:** 2026-03-30 | ||||||||||||||||
| **Generated:** 2026-04-06 | ||||||||||||||||
| **Source:** FilaOps Core v3.6.0 | ||||||||||||||||
|
||||||||||||||||
| **Source:** FilaOps Core v3.6.0 | |
| **Source:** FilaOps Core v3.7.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Schema header source version is out of sync.
Line 6 still reports FilaOps Core v3.6.0 while this document includes 3.7.0 schema additions (e.g., close-short artifacts). Update the source version to prevent confusion during audits.
Suggested fix
**Generated:** 2026-04-06
-**Source:** FilaOps Core v3.6.0
+**Source:** FilaOps Core v3.7.0
**Total Models:** 64 (Core only)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **Generated:** 2026-04-06 | |
| **Source:** FilaOps Core v3.6.0 | |
| **Total Models:** 63 (Core only) | |
| **Total Models:** 64 (Core only) | |
| **Generated:** 2026-04-06 | |
| **Source:** FilaOps Core v3.7.0 | |
| **Total Models:** 64 (Core only) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/SCHEMA-REFERENCE.md` around lines 5 - 7, The schema header in
docs/SCHEMA-REFERENCE.md is out of sync: replace the header line "Source:
FilaOps Core v3.6.0" with "Source: FilaOps Core v3.7.0" so the document
accurately reflects the included 3.7.0 schema additions (e.g., close-short
artifacts); locate the header block containing "**Generated:**", "**Source:**
FilaOps Core v3.6.0", and "**Total Models:**" and update the Source version
string accordingly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add release link references for 3.7.0 (and update Unreleased compare target)
You introduced
## [3.7.0]but the link-reference block still stops at3.4.0, so the new heading won’t resolve as a clickable compare link. Also,[Unreleased]still compares fromv3.4.0, which is now stale.Suggested footer patch
Tiny fix, big clickability. TARS approves efficient trajectories.
🤖 Prompt for AI Agents