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

371 lines
9.5 KiB
JSON

[
{
"id": "T001",
"description": "Grep for `@/lib/posthog` across repo returns 0 hits after deleting posthog.ts",
"implemented": true,
"featureIds": [
"F001"
]
},
{
"id": "T002",
"description": "`server/src/lib/posthog.ts` does not exist on disk after deletion",
"implemented": true,
"featureIds": [
"F001"
]
},
{
"id": "T003",
"description": "`SecretsManagement.tsx` imports `listTenantSecrets`, `createTenantSecret`, etc. from `@alga-psa/tenancy/actions`",
"implemented": true,
"featureIds": [
"F002"
]
},
{
"id": "T004",
"description": "`SecretDialog.tsx` imports from `@alga-psa/tenancy/actions`",
"implemented": true,
"featureIds": [
"F003"
]
},
{
"id": "T005",
"description": "`server/src/lib/actions/tenant-secret-actions.ts` does not exist on disk after deletion",
"implemented": true,
"featureIds": [
"F004"
]
},
{
"id": "T006",
"description": "Grep for `tenant-secret-actions` in `server/src/` returns 0 results (excluding test/docs)",
"implemented": true,
"featureIds": [
"F004"
]
},
{
"id": "T007",
"description": "The functions exported from `@alga-psa/tenancy/actions` match what the updated secrets UI and API routes need (listTenantSecrets, createSecret, updateSecret, deleteSecret, getSecretUsage, validateSecretName, getSecretMetadata, secretExists)",
"implemented": true,
"featureIds": [
"F002",
"F003"
]
},
{
"id": "T008",
"description": "`getTeamAvatarUrl` function exists in `packages/formatting/src/avatarUtils.ts` and calls `getEntityImageUrl('team', teamId, tenant)`",
"implemented": true,
"featureIds": [
"F005"
]
},
{
"id": "T009",
"description": "`getTeamAvatarUrl` is exported from the formatting avatarUtils module (not just defined internally)",
"implemented": true,
"featureIds": [
"F005"
]
},
{
"id": "T010",
"description": "`UserService.ts` imports `getUserAvatarUrl` from `@alga-psa/formatting/avatarUtils` (not `@alga-psa/media`)",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T011",
"description": "`UserService.ts` imports `uploadEntityImage` and `deleteEntityImage` from `@alga-psa/documents` (not `@alga-psa/media`)",
"implemented": true,
"featureIds": [
"F006"
]
},
{
"id": "T012",
"description": "`userActions.ts` imports `uploadEntityImage` and `deleteEntityImage` from `@alga-psa/documents` (not `@alga-psa/media`)",
"implemented": true,
"featureIds": [
"F007"
]
},
{
"id": "T013",
"description": "`teams/avatarActions.ts` imports `uploadEntityImage` and `deleteEntityImage` from `@alga-psa/documents` (not `@alga-psa/media`)",
"implemented": true,
"featureIds": [
"F008"
]
},
{
"id": "T014",
"description": "`teams/avatarActions.ts` imports `getTeamAvatarUrl` from `@alga-psa/formatting/avatarUtils` (not `@alga-psa/media`)",
"implemented": true,
"featureIds": [
"F008"
]
},
{
"id": "T015",
"description": "`packages/users/package.json` does NOT contain `@alga-psa/media` in dependencies",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T016",
"description": "`packages/users/package.json` contains `@alga-psa/documents` and `@alga-psa/formatting` in dependencies",
"implemented": true,
"featureIds": [
"F009"
]
},
{
"id": "T017",
"description": "`packages/teams/package.json` does NOT contain `@alga-psa/media` in dependencies",
"implemented": true,
"featureIds": [
"F010"
]
},
{
"id": "T018",
"description": "`packages/teams/package.json` contains `@alga-psa/documents` and `@alga-psa/formatting` in dependencies",
"implemented": true,
"featureIds": [
"F010"
]
},
{
"id": "T019",
"description": "`server/next.config.mjs` does NOT contain `@alga-psa/media`",
"implemented": true,
"featureIds": [
"F011"
]
},
{
"id": "T020",
"description": "`server/tsconfig.json` does NOT contain `@alga-psa/media` path mappings",
"implemented": true,
"featureIds": [
"F012"
]
},
{
"id": "T021",
"description": "`ee/server/tsconfig.json` does NOT contain `@alga-psa/media` path mappings",
"implemented": true,
"featureIds": [
"F013"
]
},
{
"id": "T022",
"description": "`services/workflow-worker/Dockerfile` does NOT contain `@alga-psa/media`",
"implemented": true,
"featureIds": [
"F014"
]
},
{
"id": "T023",
"description": "`teams-v2-improvements.test.ts` reads formatting avatarUtils instead of media avatarUtils",
"implemented": true,
"featureIds": [
"F015"
]
},
{
"id": "T024",
"description": "Test T085 assertion updated to check formatting file for `'team'` in EntityType",
"implemented": true,
"featureIds": [
"F015"
]
},
{
"id": "T025",
"description": "Test T089 assertion updated to check formatting file for `getTeamAvatarUrl`",
"implemented": true,
"featureIds": [
"F015"
]
},
{
"id": "T026",
"description": "`packages/media/` directory does not exist on disk",
"implemented": true,
"featureIds": [
"F016"
]
},
{
"id": "T027",
"description": "Grep for `@alga-psa/media` across entire repo returns 0 hits in source files (excluding docs/plans, package-lock.json, .ai/)",
"implemented": true,
"featureIds": [
"F016"
]
},
{
"id": "T028",
"description": "`npm install` succeeds without errors after dependency changes",
"implemented": true,
"featureIds": [
"F017"
]
},
{
"id": "T029",
"description": "`NODE_OPTIONS=--max-old-space-size=32768 npx nx run-many -t build --maxParallel=4` completes successfully with exit code 0",
"implemented": true,
"featureIds": [
"F024"
]
},
{
"id": "T030",
"description": "No new circular dependencies introduced (run `scripts/check-circular-deps.mjs` against baseline)",
"implemented": true,
"featureIds": [
"F024"
]
},
{
"id": "T031",
"description": "No re-export shims created -- grep for files containing only `export * from` or `export { ... } from` in modified paths returns no new shims",
"implemented": true,
"featureIds": [
"F001",
"F004",
"F016"
]
},
{
"id": "T032",
"description": "`documents` package entityImageService.ts exports `uploadEntityImage`, `deleteEntityImage`, and `EntityType` (confirming the target exports exist for callers)",
"implemented": true,
"featureIds": [
"F006",
"F007",
"F008"
]
},
{
"id": "T033",
"description": "`formatting/avatarUtils` exports `getUserAvatarUrl` and `getTeamAvatarUrl` (confirming target exports exist for callers)",
"implemented": true,
"featureIds": [
"F005",
"F006",
"F008"
]
},
{
"id": "T034",
"description": "`UserList.tsx` imports `getContactAvatarUrlAction` from `@alga-psa/user-composition/actions`",
"implemented": true,
"featureIds": [
"F018"
]
},
{
"id": "T035",
"description": "`UserList.tsx` avatar fetch loop checks `user.user_type === 'client'` and uses `getContactAvatarUrlAction(user.contact_id)` for client users",
"implemented": true,
"featureIds": [
"F019"
]
},
{
"id": "T036",
"description": "`UserList.tsx` avatar fetch loop still uses `getUserAvatarUrlAction(user.user_id)` for internal users (no regression)",
"implemented": true,
"featureIds": [
"F019"
]
},
{
"id": "T037",
"description": "`UserList.tsx` handles case where client user has no `contact_id` (falls back gracefully to null avatar)",
"implemented": true,
"featureIds": [
"F019"
]
},
{
"id": "T038",
"description": "`ContactAvatarUploadProps` interface includes `contactName: string` prop",
"implemented": true,
"featureIds": [
"F020"
]
},
{
"id": "T039",
"description": "`ContactAvatarUpload` passes `contactName` as `entityName` to `EntityImageUpload` (not empty string)",
"implemented": true,
"featureIds": [
"F021"
]
},
{
"id": "T040",
"description": "`ContactDetails.tsx` passes `contactName={editedContact.full_name}` to `ContactAvatarUpload`",
"implemented": true,
"featureIds": [
"F022"
]
},
{
"id": "T041",
"description": "`ContactDetailsEdit.tsx` passes `contactName` to `ContactAvatarUpload` if applicable",
"implemented": true,
"featureIds": [
"F023"
]
},
{
"id": "T041A",
"description": "`server/src/app/api/secrets/route.ts` imports tenant secret actions from `@alga-psa/tenancy/actions`",
"implemented": true,
"featureIds": [
"F023A"
]
},
{
"id": "T041B",
"description": "`server/src/app/api/secrets/[name]/route.ts` imports tenant secret actions from `@alga-psa/tenancy/actions`",
"implemented": true,
"featureIds": [
"F023B"
]
},
{
"id": "T042",
"description": "`NODE_OPTIONS=--max-old-space-size=32768 npx nx run-many -t build --maxParallel=4` completes successfully after all 5 tasks",
"implemented": true,
"featureIds": [
"F024"
]
},
{
"id": "T042A",
"description": "`server/src/test/teams-v2-improvements.test.ts` passes after the media-package cleanup",
"implemented": true,
"featureIds": [
"F015",
"F016"
]
}
]