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

261 lines
7.4 KiB
JSON

[
{
"id": "F000a",
"description": "3-panel row (palette | canvas | inspector) fills available height with overflow-hidden",
"implemented": true,
"prdRefs": ["FR-0"]
},
{
"id": "F000b",
"description": "Inspector aside panel has overflow-y-auto and scrolls independently",
"implemented": true,
"prdRefs": ["FR-0"]
},
{
"id": "F000c",
"description": "Palette panel has overflow-y-auto and scrolls independently (no fixed-top floating hack)",
"implemented": true,
"prdRefs": ["FR-0"]
},
{
"id": "F000d",
"description": "Remove isPaletteFloating / fixed top-0 logic — replaced by CSS overflow scroll",
"implemented": true,
"prdRefs": ["FR-0"]
},
{
"id": "F000e",
"description": "Canvas stays visible while scrolling either side panel",
"implemented": true,
"prdRefs": ["FR-0"]
},
{
"id": "F001",
"description": "Grid column layout picker: visual widget with 5 preset grid column options in Layout Controls panel",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F002",
"description": "Grid column picker: clicking a preset sets layout.gridTemplateColumns to corresponding value",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F002a",
"description": "Grid column picker: clicking a preset from flex mode switches layout.display to 'grid' and applies the chosen columns",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F003",
"description": "Grid column picker: active preset highlighted based on current gridTemplateColumns value",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F004",
"description": "Grid column picker: shows when layoutMode === 'grid' inside renderContainerLayoutControls",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F004a",
"description": "Grid column picker: remains visible in flex mode so users can switch into grid without raw CSS editing",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F004b",
"description": "Layout controls render for section nodes as well as container nodes",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F005",
"description": "Grid column picker: raw CSS input visible below for custom gridTemplateColumns values",
"implemented": true,
"prdRefs": ["FR-1"]
},
{
"id": "F006",
"description": "Spacing stepper: gap field uses numeric stepper + unit selector instead of text input",
"implemented": true,
"prdRefs": ["FR-2"]
},
{
"id": "F007",
"description": "Spacing stepper: padding field uses numeric stepper + unit selector",
"implemented": true,
"prdRefs": ["FR-2"]
},
{
"id": "F008",
"description": "Spacing stepper: unit dropdown with px (default), %, rem options",
"implemented": true,
"prdRefs": ["FR-2"]
},
{
"id": "F009",
"description": "Spacing stepper: parses existing CSS values on load (e.g. '16px' -> 16, px)",
"implemented": true,
"prdRefs": ["FR-2"]
},
{
"id": "F010",
"description": "Spacing stepper: writes back as combined CSS string (e.g. '16px')",
"implemented": true,
"prdRefs": ["FR-2"]
},
{
"id": "F011",
"description": "Margin: four individual stepper fields (top, right, bottom, left)",
"implemented": true,
"prdRefs": ["FR-3"]
},
{
"id": "F012",
"description": "Margin: link-all toggle that syncs all four values when linked",
"implemented": true,
"prdRefs": ["FR-3"]
},
{
"id": "F013",
"description": "Margin: parses existing CSS shorthand on load",
"implemented": true,
"prdRefs": ["FR-3"]
},
{
"id": "F014",
"description": "Margin: writes back as CSS shorthand string",
"implemented": true,
"prdRefs": ["FR-3"]
},
{
"id": "F015",
"description": "New preset: 'Notes + Totals Row' (2-col grid: wide notes left, narrow totals right)",
"implemented": true,
"prdRefs": ["FR-4"]
},
{
"id": "F016",
"description": "New preset: 'Two Equal Columns' (2-col grid section)",
"implemented": true,
"prdRefs": ["FR-4"]
},
{
"id": "F017",
"description": "New preset: 'Three Info Columns' (3-col grid for info cards)",
"implemented": true,
"prdRefs": ["FR-4"]
},
{
"id": "F018",
"description": "New presets use CSS grid layout properties (not legacy flex mode)",
"implemented": true,
"prdRefs": ["FR-4"]
},
{
"id": "F018a",
"description": "New preset: 'Recurring + One-time Tables' adds two stacked dynamic tables pre-bound to recurringItems and onetimeItems",
"implemented": true,
"prdRefs": ["FR-4"]
},
{
"id": "F019",
"description": "Quote binding: recurringItems collection filters line_items where is_recurring === true",
"implemented": true,
"prdRefs": ["FR-5"]
},
{
"id": "F020",
"description": "Quote binding: onetimeItems collection filters line_items where is_recurring !== true",
"implemented": true,
"prdRefs": ["FR-5"]
},
{
"id": "F021",
"description": "Quote binding: serviceItems collection filters line_items where service_item_kind === 'service'",
"implemented": true,
"prdRefs": ["FR-5"]
},
{
"id": "F022",
"description": "Quote binding: productItems collection filters line_items where service_item_kind === 'product'",
"implemented": true,
"prdRefs": ["FR-5"]
},
{
"id": "F023",
"description": "Quote value binding: recurringSubtotal, recurringTax, recurringTotal computed aggregates",
"implemented": true,
"prdRefs": ["FR-6"]
},
{
"id": "F024",
"description": "Quote value binding: onetimeSubtotal, onetimeTax, onetimeTotal computed aggregates",
"implemented": true,
"prdRefs": ["FR-6"]
},
{
"id": "F025",
"description": "Quote value binding: serviceSubtotal, serviceTax, serviceTotal computed aggregates",
"implemented": true,
"prdRefs": ["FR-6"]
},
{
"id": "F026",
"description": "Quote value binding: productSubtotal, productTax, productTotal computed aggregates",
"implemented": true,
"prdRefs": ["FR-6"]
},
{
"id": "F027",
"description": "QuoteViewModel type extended with filtered item arrays (recurring_items, onetime_items, etc.)",
"implemented": true,
"prdRefs": ["FR-7"]
},
{
"id": "F028",
"description": "QuoteViewModel type extended with per-group aggregate fields",
"implemented": true,
"prdRefs": ["FR-7"]
},
{
"id": "F029",
"description": "mapLoadedQuoteToViewModel computes filtered arrays from line_items",
"implemented": true,
"prdRefs": ["FR-7"]
},
{
"id": "F030",
"description": "mapLoadedQuoteToViewModel computes per-group aggregates from filtered arrays",
"implemented": true,
"prdRefs": ["FR-7"]
},
{
"id": "F031",
"description": "Table editor collection dropdown lists new filtered collection bindings",
"implemented": true,
"prdRefs": ["FR-8"]
},
{
"id": "F032",
"description": "Fields palette tab shows new quote aggregate bindings for discovery",
"implemented": true,
"prdRefs": ["FR-9"]
},
{
"id": "F033",
"description": "All new inspector controls work correctly in dark theme",
"implemented": true,
"prdRefs": ["NFR"]
},
{
"id": "F034",
"description": "Existing templates render identically after changes (no visual regression)",
"implemented": true,
"prdRefs": ["NFR"]
}
]