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

527 lines
13 KiB
JSON

[
{
"id": "T001",
"description": "useOptionalI18n returns context inside I18nProvider and null outside without throwing",
"implemented": true,
"featureIds": [
"F001"
]
},
{
"id": "T002",
"description": "Component using useOptionalI18n renders on a page without I18nProvider (auth-page scenario) without crashing, falling back to default locale",
"implemented": true,
"featureIds": [
"F001"
]
},
{
"id": "T003",
"description": "DatePicker renders 2026-06-10 as locale short date under fr (10/06/2026) and de (10.06.2026)",
"implemented": true,
"featureIds": [
"F002"
]
},
{
"id": "T004",
"description": "DatePicker under en renders MM/dd/yyyy-equivalent short date (no regression for English users)",
"implemented": true,
"featureIds": [
"F002"
]
},
{
"id": "T005",
"description": "DatePicker honors displayFormat prop override regardless of locale",
"implemented": true,
"featureIds": [
"F003"
]
},
{
"id": "T006",
"description": "DatePicker call-site audit documented: zero call sites parse the displayed string",
"implemented": true,
"featureIds": [
"F004"
]
},
{
"id": "T007",
"description": "DateTimePicker with explicit timeFormat='24h' renders 24h time with locale date under fr",
"implemented": true,
"featureIds": [
"F005"
]
},
{
"id": "T008",
"description": "DateTimePicker without timeFormat renders locale-derived date+time ('P p') under en and de",
"implemented": true,
"featureIds": [
"F005"
]
},
{
"id": "T009",
"description": "Calendar shows French weekday/month names when locale is fr",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T010",
"description": "Calendar MonthYearSelect caption shows localized month name under es",
"implemented": true,
"featureIds": [
"F007"
]
},
{
"id": "T011",
"description": "CurrencyInput formats 1234.56 as '1.234,56' under de and '1 234,56' under fr on blur",
"implemented": true,
"featureIds": [
"F008"
]
},
{
"id": "T012",
"description": "CurrencyInput under fr: typing '12,5' fires onChange with 12.5 (not 125 or 1250)",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T013",
"description": "CurrencyInput under de: typing '1.234,56' parses to 1234.56",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T014",
"description": "CurrencyInput under en: typing '1,234.56' still parses to 1234.56 (no regression)",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T015",
"description": "CurrencyInput round-trip (format \u2192 parse \u2192 format) is lossless for en, de, fr, pl across 0, 0.5, 999, 1234.56, 1000000.01",
"implemented": true,
"featureIds": [
"F008",
"F009"
]
},
{
"id": "T016",
"description": "CurrencyInput clears to empty and fires onChange(undefined) on invalid input in all tested locales",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T017",
"description": "PrintOptionsDialog renders Date cell values using the active locale",
"implemented": false,
"featureIds": [
"F010"
]
},
{
"id": "T018",
"description": "ReportEngine.formatValue with locale 'de' renders currency as 1.234,56 \u20ac style and with no locale renders en-US style (backward compat)",
"implemented": true,
"featureIds": [
"F011"
]
},
{
"id": "T019",
"description": "ReportEngine formatNumber/formatPercentage/formatDate respect passed locale in packages/reporting copy",
"implemented": true,
"featureIds": [
"F011"
]
},
{
"id": "T020",
"description": "server/src ReportEngine copy produces identical localized output to packages/reporting copy for the same inputs",
"implemented": true,
"featureIds": [
"F012"
]
},
{
"id": "T021",
"description": "executeReport passes hierarchically-resolved locale into ReportEngine (unit test with mocked getHierarchicalLocaleAction)",
"implemented": true,
"featureIds": [
"F013"
]
},
{
"id": "T022",
"description": "filterPseudoLocales returns xx/yy when NODE_ENV=development and strips them when NODE_ENV=production",
"implemented": true,
"featureIds": [
"F014"
]
},
{
"id": "T023",
"description": "filterPseudoLocales strips pt in both development and production",
"implemented": true,
"featureIds": [
"F014"
]
},
{
"id": "T024",
"description": "Dev server: MSP user language picker lists Pseudo (xx) and Pseudo (yy); production build does not (manual/visual via dev stack)",
"implemented": false,
"featureIds": [
"F015"
]
},
{
"id": "T025",
"description": "Selecting xx in dev persists preference, survives reload, and renders pseudo-accented strings on a translated MSP page",
"implemented": false,
"featureIds": [
"F016"
]
},
{
"id": "T026",
"description": "actions.print / actions.printOptions resolve in every namespace that references them (no raw-key rendering in print/export menus)",
"implemented": true,
"featureIds": [
"F017"
]
},
{
"id": "T027",
"description": "find-missing-i18n-keys reports 0 missing for msp/workflows after backfill",
"implemented": true,
"featureIds": [
"F018"
]
},
{
"id": "T028",
"description": "find-missing-i18n-keys reports 0 missing for msp/email-providers after backfill",
"implemented": true,
"featureIds": [
"F019"
]
},
{
"id": "T029",
"description": "find-missing-i18n-keys reports 0 missing for msp/integrations after backfill",
"implemented": true,
"featureIds": [
"F020"
]
},
{
"id": "T030",
"description": "find-missing-i18n-keys reports 0 missing for features/tickets after backfill",
"implemented": true,
"featureIds": [
"F021"
]
},
{
"id": "T031",
"description": "find-missing-i18n-keys reports 0 missing for msp/clients, msp/assets, msp/user-activities after backfill",
"implemented": true,
"featureIds": [
"F022",
"F023",
"F024"
]
},
{
"id": "T032",
"description": "find-missing-i18n-keys exits 0 across the entire repo",
"implemented": true,
"featureIds": [
"F025",
"F028"
]
},
{
"id": "T033",
"description": "Backfilled en values match the defaultValue strings previously rendered (spot-check 20 keys against git history of components)",
"implemented": true,
"featureIds": [
"F018",
"F019",
"F020",
"F021",
"F022",
"F023",
"F024",
"F025"
]
},
{
"id": "T034",
"description": "validate-translations passes after backfill: all 7 locales have key parity with en including new keys",
"implemented": true,
"featureIds": [
"F026"
]
},
{
"id": "T035",
"description": "Backfilled keys preserve interpolation variables across all locales (validate-translations variable check green)",
"implemented": true,
"featureIds": [
"F026"
]
},
{
"id": "T036",
"description": "Regenerated xx/yy pseudo-locales contain every backfilled key",
"implemented": true,
"featureIds": [
"F027"
]
},
{
"id": "T037",
"description": "MspClientTickets has zero hardcoded user-visible strings (i18n audit test asserting useTranslation usage + key coverage)",
"implemented": true,
"featureIds": [
"F029"
]
},
{
"id": "T038",
"description": "Client page Tickets tab renders pseudo-accented strings under xx locale (column headers, filters, 'Loading tickets...', search placeholder)",
"implemented": true,
"featureIds": [
"F029",
"F035"
]
},
{
"id": "T039",
"description": "MspClientAssets has zero hardcoded user-visible strings (i18n audit test)",
"implemented": true,
"featureIds": [
"F030"
]
},
{
"id": "T040",
"description": "Client page Assets tab renders pseudo-accented strings under xx ('Loading assets...', 'All asset types...' filter)",
"implemented": true,
"featureIds": [
"F030",
"F035"
]
},
{
"id": "T041",
"description": "MspContactTickets has zero hardcoded user-visible strings (i18n audit test)",
"implemented": true,
"featureIds": [
"F031"
]
},
{
"id": "T042",
"description": "InteractionsFeed renders translated strings under fr (search, filter, reset, apply controls)",
"implemented": true,
"featureIds": [
"F032",
"F035"
]
},
{
"id": "T043",
"description": "OverallInteractionsFeed renders translated strings under fr",
"implemented": true,
"featureIds": [
"F033",
"F035"
]
},
{
"id": "T044",
"description": "SchedulingInteractionDetails renders translated strings under fr",
"implemented": true,
"featureIds": [
"F034",
"F035"
]
},
{
"id": "T045",
"description": "All new P3 keys present in en + 7 locales + pseudo (validate-translations green)",
"implemented": true,
"featureIds": [
"F035"
]
},
{
"id": "T046",
"description": "Navigating to /msp/clients?tab=tickets loads required namespaces without missing-namespace console warnings",
"implemented": false,
"featureIds": [
"F036"
]
},
{
"id": "T047",
"description": "msp-composition sweep documented: each of the 16 remaining files listed with 'no user-visible strings' verdict",
"implemented": true,
"featureIds": [
"F037"
]
},
{
"id": "T048",
"description": "grep for '_plural' across server/public/locales returns zero matches after migration",
"implemented": true,
"featureIds": [
"F038",
"F039",
"F040"
]
},
{
"id": "T049",
"description": "t('teams.details.memberCount', {count: 1}) renders singular and {count: 5} renders plural under en",
"implemented": true,
"featureIds": [
"F039",
"F042"
]
},
{
"id": "T050",
"description": "Polish plural forms resolve correctly for counts 1 (_one), 2 (_few), 5 (_many) on migrated keys",
"implemented": true,
"featureIds": [
"F040"
]
},
{
"id": "T051",
"description": "AdminSessionManagement renders correct subtitle for 1 session and 5 sessions via single t() call with both sessionCount and userCount interpolated",
"implemented": true,
"featureIds": [
"F041"
]
},
{
"id": "T052",
"description": "Interaction-types import toast renders correct singular/plural under en and pl",
"implemented": true,
"featureIds": [
"F042"
]
},
{
"id": "T053",
"description": "validate-translations does not warn on pl _few/_many suffixes (CLDR-aware)",
"implemented": true,
"featureIds": [
"F043"
]
},
{
"id": "T054",
"description": "validate-translations errors when pl omits a required _many form for a key that has _one/_other in en (negative test with fixture)",
"implemented": true,
"featureIds": [
"F043"
]
},
{
"id": "T055",
"description": "validate-translations accepts en having only _one/_other (does not demand _few/_many from English)",
"implemented": true,
"featureIds": [
"F043"
]
},
{
"id": "T056",
"description": "Pseudo-locale generator output contains plural-suffixed keys with accents applied and variables intact",
"implemented": true,
"featureIds": [
"F044"
]
},
{
"id": "T057",
"description": "validate-translations full run: 0 errors, 0 warnings",
"implemented": true,
"featureIds": [
"F045"
]
},
{
"id": "T058",
"description": "CI workflow runs find-missing-i18n-keys job and fails on a fixture branch referencing a nonexistent key",
"implemented": false,
"featureIds": [
"F046"
]
},
{
"id": "T059",
"description": "CI workflow triggers on a PR touching only packages/**/*.tsx (no locale changes)",
"implemented": false,
"featureIds": [
"F047"
]
},
{
"id": "T060",
"description": "CI green on no-op PR from clean main after P5",
"implemented": false,
"featureIds": [
"F048"
]
},
{
"id": "T061",
"description": "Existing .i18n.test.* audit suites pass unchanged after each phase",
"implemented": true,
"featureIds": [
"F002",
"F005",
"F008",
"F029",
"F030",
"F031",
"F039"
]
},
{
"id": "T062",
"description": "npx tsc --noEmit passes for packages/ui, packages/reporting, packages/msp-composition, packages/clients, packages/scheduling after changes",
"implemented": true,
"featureIds": [
"F001",
"F011",
"F029",
"F032",
"F034"
]
}
]