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
261 lines
7.4 KiB
JSON
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"]
|
|
}
|
|
]
|