Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

372 lines
12 KiB
JSON

[
{
"id": "T001",
"description": "Lang-pack validation: `node scripts/generate-pseudo-locales.cjs && node scripts/validate-translations.cjs` passes for all 9 locales after namespace creation and each update (covers key parity, missing/extra keys, {{variable}} interpolation preservation, pseudo-locale fill patterns, Italian accent preservation). Single check, run on every commit.",
"implemented": true,
"featureIds": [
"F001",
"F030",
"F031",
"F032",
"F033",
"F034",
"F035",
"F036",
"F037"
]
},
{
"id": "T002",
"description": "Namespace file exists: en/msp/billing-settings.json, fr/msp/billing-settings.json, es/msp/billing-settings.json, de/msp/billing-settings.json, nl/msp/billing-settings.json, it/msp/billing-settings.json, pl/msp/billing-settings.json, xx/msp/billing-settings.json, yy/msp/billing-settings.json all exist under server/public/locales/",
"implemented": true,
"featureIds": [
"F001",
"F030",
"F031",
"F032",
"F033",
"F034",
"F035",
"F036"
]
},
{
"id": "T003",
"description": "ROUTE_NAMESPACES: the '/msp/settings' entry in packages/core/src/lib/i18n/config.ts includes 'msp/billing-settings' in its namespace array",
"implemented": true,
"featureIds": [
"F002"
]
},
{
"id": "T004",
"description": "BillingSettings.tsx imports useTranslation and all tab labels (General/Quoting/Tax/Payments) use t() calls; tab id attributes remain ASCII kebab-case",
"implemented": true,
"featureIds": [
"F003"
]
},
{
"id": "T005",
"description": "BillingSettings.tsx card titles and descriptions (Default Currency, Invoice Numbering, Zero-Dollar Invoices, Credit Expiration, Renewal Automation, Quote Numbering, Tax Regions, Payment Settings) all use t() calls -- no hardcoded English strings in JSX",
"implemented": true,
"featureIds": [
"F003"
]
},
{
"id": "T006",
"description": "DefaultCurrencySettings.tsx imports useTranslation and all user-visible strings (label, placeholder, toast, error) use t() calls",
"implemented": true,
"featureIds": [
"F004"
]
},
{
"id": "T007",
"description": "ZeroDollarInvoiceSettings.tsx imports useTranslation and all user-visible strings (option labels, toggle label, help text, toast, error) use t() calls",
"implemented": true,
"featureIds": [
"F005"
]
},
{
"id": "T008",
"description": "CreditExpirationSettings.tsx imports useTranslation and all user-visible strings (toggle, labels, help text, placeholder, button, toast, error) use t() calls",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T009",
"description": "RenewalAutomationSettings.tsx imports useTranslation and all user-visible strings including dynamic placeholders (Loading boards.../Select board/etc.) use t() calls",
"implemented": true,
"featureIds": [
"F007"
]
},
{
"id": "T010",
"description": "RenewalAutomationSettings.tsx policy option labels and help text descriptions are translated at render time (not at const definition time)",
"implemented": true,
"featureIds": [
"F007"
]
},
{
"id": "T011",
"description": "ServiceCategoriesSettings.tsx imports useTranslation and page heading, column titles, action menu items, and button labels use t() calls",
"implemented": true,
"featureIds": [
"F008"
]
},
{
"id": "T012",
"description": "ServiceCategoriesSettings.tsx dialog strings (add/edit title, field labels, validation, import dialog, conflict resolution) all use t() calls with proper interpolation for category names",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T013",
"description": "ServiceTypeSettings.tsx imports useTranslation and card title/description, column titles, billing method display labels, loading state, and button labels use t() calls",
"implemented": true,
"featureIds": [
"F010"
]
},
{
"id": "T014",
"description": "ServiceTypeSettings.tsx dialog strings (add/edit title, field labels, validation prompt, delete confirmation with in-use error, import/conflict resolution) use t() calls with proper interpolation",
"implemented": true,
"featureIds": [
"F011"
]
},
{
"id": "T015",
"description": "ServiceCatalogManager.tsx imports useTranslation and page heading, column titles, filter placeholders, loading state, and action menu items use t() calls",
"implemented": true,
"featureIds": [
"F012"
]
},
{
"id": "T016",
"description": "ServiceCatalogManager.tsx edit dialog field labels, pricing section strings (rate type labels, + Add Currency, Remove, help text), and save/cancel buttons use t() calls",
"implemented": true,
"featureIds": [
"F013"
]
},
{
"id": "T017",
"description": "ProductsManager.tsx imports useTranslation and page heading, column titles, action menu items (Edit/Restore/Archive/Delete), filter options, search placeholder, and Add Product button use t() calls",
"implemented": true,
"featureIds": [
"F014"
]
},
{
"id": "T018",
"description": "ProductsManager.tsx archive and permanent delete confirmation dialogs use t() calls with proper interpolation for product names and association descriptions",
"implemented": true,
"featureIds": [
"F015"
]
},
{
"id": "T019",
"description": "QuickAddService.tsx imports useTranslation and all field labels, pricing section strings, validation errors, and buttons use t() calls",
"implemented": true,
"featureIds": [
"F016"
]
},
{
"id": "T020",
"description": "QuickAddService.tsx conditional fields (unit of measure, hardware SKU/inventory, software license seat/term) and their validation messages use t() calls",
"implemented": true,
"featureIds": [
"F017"
]
},
{
"id": "T021",
"description": "QuickAddProduct.tsx imports useTranslation and all field labels (Product Name through Description), pricing editor strings, validation errors, and dialog title (Add/Edit) use t() calls",
"implemented": true,
"featureIds": [
"F018"
]
},
{
"id": "T022",
"description": "TaxSourceSettings.tsx imports useTranslation and card title, tooltip, description, radio labels with descriptions, workflow steps, and buttons use t() calls",
"implemented": true,
"featureIds": [
"F019"
]
},
{
"id": "T023",
"description": "TaxRegionsManager.tsx imports useTranslation and card title, button, column titles, status badges, action menu items, dialog strings, and toast messages use t() calls",
"implemented": true,
"featureIds": [
"F020"
]
},
{
"id": "T024",
"description": "TaxThresholdEditor.tsx imports useTranslation and section heading, tooltip, button, column titles, 'No limit' label, bracket issues alert, loading/empty states, and preview labels use t() calls",
"implemented": true,
"featureIds": [
"F021"
]
},
{
"id": "T025",
"description": "TaxThresholdEditor.tsx dialog strings (add/edit title, field labels, max amount help text, delete confirmation with bracket range interpolation, last-bracket warning) use t() calls",
"implemented": true,
"featureIds": [
"F022"
]
},
{
"id": "T026",
"description": "TaxComponentEditor.tsx imports useTranslation and section heading, tooltip, button, column titles, compound badges, date range labels, loading/empty states, and preview labels use t() calls",
"implemented": true,
"featureIds": [
"F023"
]
},
{
"id": "T027",
"description": "TaxComponentEditor.tsx dialog strings (add/edit title, field labels, compound toggle description, delete confirmation with name interpolation) use t() calls",
"implemented": true,
"featureIds": [
"F024"
]
},
{
"id": "T028",
"description": "TaxHolidayManager.tsx imports useTranslation and section heading (with taxRateName interpolation), tooltip, button, column titles, status badges, status summary, loading/empty states use t() calls",
"implemented": true,
"featureIds": [
"F025"
]
},
{
"id": "T029",
"description": "TaxHolidayManager.tsx dialog strings (add/edit title, field labels, placeholder, delete confirmation with description/date interpolation) use t() calls",
"implemented": true,
"featureIds": [
"F026"
]
},
{
"id": "T030",
"description": "TaxSettingsForm.tsx imports useTranslation and page title, loading state, no-settings message, create button, error/success messages use t() calls",
"implemented": true,
"featureIds": [
"F027"
]
},
{
"id": "T031",
"description": "TaxSettingsForm.tsx tax exempt card strings (title, description, toggle, certificate field, exempt alert) use t() calls",
"implemented": true,
"featureIds": [
"F028"
]
},
{
"id": "T032",
"description": "TaxSettingsForm.tsx advanced tax options card strings (title, description, reverse charge toggle, tax source override select options, effective source description, override-not-available alert) use t() calls",
"implemented": true,
"featureIds": [
"F029"
]
},
{
"id": "T033",
"description": "Integration: /msp/settings?tab=billing loads General tab in en with no hardcoded English visible in card titles, descriptions, field labels, or placeholders",
"implemented": true,
"featureIds": [
"F003",
"F004",
"F005",
"F006",
"F007"
]
},
{
"id": "T034",
"description": "Integration: /msp/settings?tab=billing&section=tax loads Tax tab in en with translated tax source settings and tax regions manager",
"implemented": true,
"featureIds": [
"F003",
"F019",
"F020"
]
},
{
"id": "T035",
"description": "Integration: /msp/settings?tab=billing renders in de with translated tab labels, card titles, field labels, and option labels (no English leakage)",
"implemented": true,
"featureIds": [
"F003",
"F004",
"F005",
"F006",
"F007",
"F019",
"F020"
]
},
{
"id": "T036",
"description": "Integration: xx pseudo-locale smoke test on /msp/settings?tab=billing renders pseudo-text for all visible strings on General, Tax, and Payments tabs (no bare English leakage)",
"implemented": true,
"featureIds": [
"F003",
"F004",
"F005",
"F006",
"F007",
"F019",
"F020",
"F036"
]
},
{
"id": "T037",
"description": "{{variables}} preserved: all locale files for msp/billing-settings preserve identical {{variable}} interpolation tokens as the English source (validated by scripts/validate-translations.cjs)",
"implemented": true,
"featureIds": [
"F030",
"F031",
"F032",
"F033",
"F034",
"F035",
"F037"
]
},
{
"id": "T038",
"description": "Italian accent audit: it/msp/billing-settings.json preserves proper Italian diacritics (e.g., perche -> perché, lunedi -> lunedì, qualita -> qualità) -- validated by scripts/validate-translations.cjs",
"implemented": true,
"featureIds": [
"F034",
"F037"
]
},
{
"id": "T039",
"description": "Manual: visual diff on /msp/settings?tab=billing in en between main and PR branch -- no layout shifts from key-length differences",
"implemented": true,
"featureIds": [
"F003",
"F004",
"F005",
"F006",
"F007"
]
},
{
"id": "T040",
"description": "Manual: visual diff on /msp/settings?tab=billing in de -- long German strings do not break card layouts, button widths, or select dropdowns",
"implemented": true,
"featureIds": [
"F003",
"F004",
"F005",
"F006",
"F007"
]
}
]