Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
38 lines
8.8 KiB
JSON
38 lines
8.8 KiB
JSON
[
|
|
{"id": "F001", "description": "Create en/msp/quotes.json with all keys for the 11 quote UI components, organized by component-scoped roots (quotesTab, quoteForm, quoteDetail, quoteLineItems (incl. quoteLineItems.markup.*), quoteRecipients, quoteConversion, quoteApproval, quoteTemplates, quotePreview, templateEditor, templatesPage, common)", "implemented": true},
|
|
|
|
{"id": "F002", "description": "Wire useTranslation('msp/quotes') in QuoteForm.tsx -- form field labels, heading variants (New/Edit Quote/Template), workflow action buttons (Send to Client, Submit for Approval, Approve, Request Changes, Revise, Cancel Quote, Convert to Contract/Invoice/Both, Create New Revision), send dialog, approval dialog, conversion dialog, status banners, totals section labels, validation messages, loading/saving states", "implemented": true},
|
|
{"id": "F003", "description": "Wire useTranslation('msp/quotes') in QuoteDetail.tsx -- detail section headings (Scope of Work, Line Items, Client Notes, Internal Notes, Terms & Conditions, Activity Log, Version History, Quote Layout), field labels, action buttons, accepted/rejected banners, conversion dialog, send dialog, approval dialog, preview dialog, converted-entity links, line item table headers, optional-item client selection badges", "implemented": true},
|
|
|
|
{"id": "F004", "description": "Wire useTranslation('msp/quotes') in QuotesTab.tsx -- page heading, New Quote button, sub-tab labels (Active/Sent/Closed/Approval Queue), column headers (Quote #, Client, Title, Total, Status, Date), row action menu items (Open, Send to Client, Resend, Send Reminder, Download PDF, Duplicate, Delete), client filter label, empty state, send dialog, delete confirmation dialog, loading state", "implemented": true},
|
|
{"id": "F005", "description": "Wire useTranslation('msp/quotes') in QuoteDocumentTemplateEditor.tsx -- page headings (New/Edit Quote Layout), description text, template name/version labels, editor tabs (Visual/Code), workspace tabs (Design/Transforms/Preview), preview pipeline status labels (Shape/Render), Re-run button, code view info alert, save/back buttons, saving states, created/updated timestamps, error messages", "implemented": true},
|
|
|
|
{"id": "F006", "description": "Wire useTranslation('msp/quotes') in QuoteLineItemsEditor.tsx -- section heading (Line Items), table headers (Move, Item, Billing, Flags, Qty, Unit Price, Total, Actions), discount badge, phase/section label, checkbox labels (Optional, Recurring), frequency options (Weekly, Monthly, Quarterly, Annually), discount panel (type selector, target selector, add button, toggle button), empty state, section collapse/expand labels, Remove button, inline edit hints", "implemented": true},
|
|
{"id": "F007", "description": "Wire useTranslation('msp/quotes') in QuoteDocumentTemplatesPage.tsx -- page heading (Quote Layouts), description, New Layout button, card title (Available Layouts), table columns (Name, Source, Default, Actions), action menu items (Edit/Edit as Copy, Clone, Set as Default, Delete), Standard/Custom labels, delete confirmation", "implemented": true},
|
|
|
|
{"id": "F008", "description": "Wire useTranslation('msp/quotes') in QuoteConversionDialog.tsx -- dialog title (Convert Quote), description, loading state, error state, partial conversion alert, conversion mode section heading and radio labels (Contract Only, Invoice Only, Contract + Invoice) with descriptions, item mapping preview heading, item category labels (Contract Items, Invoice Items, Excluded Items) with counts, summary labels (Quote Total, Status After Conversion), Cancel/Convert buttons, converting state", "implemented": true},
|
|
{"id": "F009", "description": "Wire useTranslation('msp/quotes') in QuoteApprovalDashboard.tsx -- page heading (Quote Approvals), description, settings label (Approval required before sending), toggle descriptions, status filter (Pending Approval, Approved), Back to Quotes button, table columns (Quote #, Client, Title, Amount, Status, Quote Date, Valid Until), empty state messages, loading state", "implemented": true},
|
|
|
|
{"id": "F010", "description": "Wire useTranslation('msp/quotes') in QuoteTemplatesList.tsx -- description text, New Template button, table columns (Title, Items, Currency, Created, Actions), action menu items (Edit Template, Create Quote from Template, Delete), empty state, loading state, delete confirmation dialog", "implemented": true},
|
|
{"id": "F011", "description": "Wire useTranslation('msp/quotes') in QuotePreviewPanel.tsx -- panel heading (Quote Preview), template selector placeholder, Open Quote and Download PDF buttons, empty state (Select a quote to preview), loading state, error fallback (Could not display preview)", "implemented": true},
|
|
|
|
{"id": "F012", "description": "Replace hardcoded Intl.NumberFormat('en-US', ...) currency formatting in QuotesTab.tsx, QuoteDetail.tsx, QuoteApprovalDashboard.tsx, QuoteTemplatesList.tsx, and QuoteConversionDialog.tsx with useFormatters().formatCurrency() or equivalent locale-aware pattern", "implemented": true},
|
|
{"id": "F013", "description": "Replace hardcoded .toLocaleDateString() date formatting in QuotesTab.tsx, QuoteDetail.tsx, QuoteApprovalDashboard.tsx, and QuoteDocumentTemplateEditor.tsx with useFormatters().formatDate() or equivalent locale-aware pattern", "implemented": true},
|
|
{"id": "F025", "description": "Replace the remaining user-visible quote formatter hotspots missed by F012/F013: use locale-aware formatting for QuoteForm.tsx currency totals + accepted/rejected banner dates, use useFormatters().formatCurrency() for QuoteLineItemsEditor.tsx money displays, and remove the hardcoded `en-US` locale from quoteLineItemDraft.ts so draft-money helpers no longer force English formatting.", "implemented": true},
|
|
|
|
{"id": "F014", "description": "Generate msp/quotes translations for 6 non-English locales (de, es, fr, it, nl, pl)", "implemented": true},
|
|
{"id": "F015", "description": "Italian accent audit on it/msp/quotes.json -- verify correct usage of accented characters (a with grave, e with grave/acute, i with grave, o with grave, u with grave)", "implemented": true},
|
|
{"id": "F016", "description": "Generate pseudo-locales (xx, yy) for msp/quotes namespace using generate-pseudo-locales.cjs", "implemented": true},
|
|
{"id": "F017", "description": "Run validate-translations.cjs -- all 9 locales pass with 0 errors for msp/quotes (key parity, interpolation variable parity, no empty values)", "implemented": true},
|
|
|
|
{"id": "F018", "description": "Update ROUTE_NAMESPACES in packages/core/src/lib/i18n/config.ts: add '/msp/quote-approvals' and '/msp/quote-document-templates' routes loading 'msp/quotes', and add 'msp/quotes' to the existing '/msp/billing' entry", "implemented": true},
|
|
|
|
{"id": "F019", "description": "npm run build succeeds with no TypeScript errors after all wiring is complete", "implemented": true},
|
|
|
|
{"id": "F020", "description": "Wire useTranslation('msp/quotes') for the product markup UI added to QuoteLineItemsEditor.tsx post-planning (commits 6a40d09fa, 3afa5763f) -- markup badge ('+{{value}}% markup' / '{{value}}% markup' with sign handling), 'Markup unavailable' label, and the currency-mismatch tooltip with {{costCurrency}} and {{quoteCurrency}} interpolation. Adds the quoteLineItems.markup.* key group to en/msp/quotes.json.", "implemented": true},
|
|
{"id": "F021", "description": "Wire useTranslation('msp/quotes') in QuoteSendRecipientsField.tsx (new 403-LOC component added post-planning in commits 3afa5763f and ead79deec) -- trigger labels (Select a client first / No users or contacts available / Add internal user or client contact…), search placeholder (Search by name or email…), empty states (No recipients available / No matches), kind badges (Internal/Contact), and Remove {{email}} aria-label. Adds the quoteRecipients.* key group to en/msp/quotes.json.", "implemented": true},
|
|
|
|
{"id": "F022", "description": "Backfill missing MSP sidebar Quotes translation keys in msp/core.json across all 9 locales (en, fr, es, de, nl, it, pl, xx, yy). server/src/config/menuConfig.ts:308-317 references nav.billing.sections.quotes, nav.billing.quotes, nav.billing.quoteBusinessTemplates, and nav.billing.quoteLayouts, but none of those keys exist in msp/core.json today -- so the left-hand MSP navigation renders Quotes / Quote Templates / Quote Layouts in raw English even in xx and de. No code change in menuConfig.ts is required; just add the 4 keys under the existing nav.billing.* group in each locale file. Regenerate pseudo-locales and re-run validate-translations.cjs after the backfill.", "implemented": true},
|
|
{"id": "F024", "description": "Extend the shared billing-frequency enum support to include `weekly` in `packages/billing/src/constants/billing.ts` and all 9 `server/public/locales/{locale}/features/billing.json` files so `QuoteLineItemsEditor.tsx` can switch to `useBillingFrequencyOptions()` without dropping the existing weekly option.", "implemented": true}
|
|
]
|