| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-07 | 1.7 kB | |
| v2.9.29 -- BOQ resource col-alignment + multi-currency rebase + maplibre lazy source code.tar.gz | 2026-05-07 | 458.8 MB | |
| v2.9.29 -- BOQ resource col-alignment + multi-currency rebase + maplibre lazy source code.zip | 2026-05-07 | 460.5 MB | |
| Totals: 3 Items | 919.3 MB | 0 | |
BOQ
- Resource sub-rows align column-for-column with position rows even when custom columns are added. Adding regional-preset columns (GAEB EP-split, AIQS preset) used to shift Unit/Qty/Rate/Total on resource rows because the resource layout had a hard-coded flex structure. The renderer now drives layout from
api.getAllDisplayedColumns()— every slot is sized to the actual column width. Custom columns on resource rows show per-resource values frommetadata.resources[i].metadata.custom_fields[name](read-only — editing customs from the resource sub-row is a follow-up). - Multi-currency BOQ totals (closes [#111]). Per-position
metadata.currencyis now rebased into the project base before being summed. NewconvertToBase()helper applied at the column totalvalueGetter, thedirectCostreducer, andgroupPositionsIntoSections' subtotal accumulator. Without this, an ARS position inside a USD project summed as if its raw total were already in USD. Console warning surfaces the gap when no FX rate exists for a position's currency.
Perf
maplibre-gl(1 MB) moved off the cold-load critical path.ProjectMapwas eagerly re-exported from@/shared/ui, dragging maplibre into every chunk that imported anything from the shared barrel. Now lazy-loaded behindReact.lazy + Suspense— only the/projectsand/projects/:idroutes pull it on demand.index.htmlno longer module-preloads the 1 MB maplibre chunk.
Backend
- Requirements file-import endpoint caps payloads at 50 MB (HTTP 413 above). Closes the OOM gap left when v2.9.12 lifted the global upload cap.