Philipinho
72fc93dcc1
perf(base): batch page-cell resolution via microtask loader
...
Per-cell useResolvedPages([id]) calls each mounted with a unique
React Query key, so a grid with 20 page-typed cells fired 20 requests on
first paint. A shared loader now accumulates incoming ids within a
microtask, fires a single POST for the union, and fans the subset each
caller asked for back to them. Cells keep their own cache entry + null
handling; they just share the underlying network call.
Also renames /bases/pages/resolve → /bases/pages/expand — the old name
collided with other "resolve" semantics in the codebase.
2026-04-24 12:11:41 +01:00
Philipinho
89ee3714ac
feat(base): add /bases/rows/count with estimate and capped-exact modes
...
Row-count display on a filtered view shouldn't force a full COUNT(*) on
every list fetch. New endpoint returns either an EXPLAIN-plan estimate
(default, ~1ms, no execution) or a LIMIT-capped exact count that short-
circuits to `{ capped: true }` once the match set passes EXACT_COUNT_CAP.
Clients call it in parallel with the rows query so the grid still paints
at its own pace.
- DTO + repo.countEstimate/countExact reusing the list predicate shape
- service picks the mode; controller mirrors the list Read ability check
- client hook keyed by filter/search/exact so a "show exact" toggle
doesn't clobber the estimate cache
2026-04-24 12:11:29 +01:00
Philipinho
f7ea6e8fd3
fix(base): hide soft-deleted properties from base info payload
...
The withProperties subquery hydrating /bases/info was missing a
`deleted_at IS NULL` filter, so after a delete the socket-echo
invalidation refetched and the just-deleted column rehydrated on the
originating client and never dropped on others.
2026-04-24 12:10:22 +01:00
Philipinho
464bd701ba
feat(base): enforce unique property names per base
2026-04-24 02:34:38 +01:00
Philipinho
82705ce3bd
fix(base-formula): resolve package via dist to keep server build output layout
2026-04-24 00:51:40 +01:00
Philipinho
230c4e35f0
feat(base): emit formula-related WS events
2026-04-24 00:27:52 +01:00
Philipinho
e729e77bda
chore(base): note formula bulk-write threshold hook for future bulk endpoint
2026-04-24 00:27:06 +01:00
Philipinho
89e2d0d62f
feat(base): compile and cycle-check formulas on property save, enqueue recompute on dep changes
2026-04-24 00:25:50 +01:00
Philipinho
fbee344e96
feat(base): wire formula recompute job into queue processor
2026-04-24 00:21:20 +01:00
Philipinho
46386bf4e1
feat(base): add formula recompute task
2026-04-24 00:20:25 +01:00
Philipinho
5b5c98daa8
feat(base): wire inline formula evaluation into row service
2026-04-24 00:16:32 +01:00
Philipinho
2da8779b34
feat(base): add FormulaService, FormulaLockService, recompute job type
2026-04-24 00:13:20 +01:00
Philipinho
5a82d660da
feat(base): register formula property type in schema layer
2026-04-24 00:06:42 +01:00
Philipinho
c67ae19c39
feat(base): add migration marker for formula property type
2026-04-24 00:06:13 +01:00
Philipinho
ea0dc2b56b
feat(base-formula): add date and coercion functions, wire registry
2026-04-24 00:03:40 +01:00
Philipinho
e9e903abe9
feat(base-formula): add tree-walking evaluator
2026-04-24 00:00:22 +01:00
Philipinho
ded855e44e
feat(base-formula): add dependency graph with topo and cycle detection
2026-04-23 23:55:55 +01:00
Philipinho
77897733de
feat(base-formula): add type checker
2026-04-23 23:52:11 +01:00
Philipinho
216a4a99e1
feat(base-formula): add name-to-id resolver with dependency extraction
2026-04-23 23:46:52 +01:00
Philipinho
d8c96089b1
feat(base-formula): add Pratt parser
2026-04-23 23:44:09 +01:00
Philipinho
dc825b0f62
feat(base-formula): add tokenizer
2026-04-23 23:40:14 +01:00
Philipinho
9ecf88511b
page property
2026-04-20 21:27:29 +01:00
Philipinho
95d0457a7e
refactor(base): drop /list suffix from base endpoints to match codebase convention
2026-04-18 23:36:52 +01:00
Philipinho
d9e2d7ba3d
chore(server): one-shot script to clean poisoned base view configs
2026-04-18 23:27:03 +01:00
Philipinho
44ec2dbe88
fix(base): stop jsonb char-key corruption in seed and guard view config spread
2026-04-18 23:26:03 +01:00
Philipinho
a9ea2a99b4
chore(server): let seed-base-rows script take row count via env var
2026-04-18 22:44:52 +01:00
Philipinho
f119d728a8
fix(base): handle csv export client abort and mid-stream errors
2026-04-18 18:18:34 +01:00
Philipinho
66f9194e96
feat(base): add csv export http endpoint
2026-04-18 18:14:41 +01:00
Philipinho
19b3f26cbb
feat(base): register csv export service in module
2026-04-18 18:14:01 +01:00
Philipinho
56c57afff3
feat(base): add streaming csv export service
2026-04-18 18:13:20 +01:00
Philipinho
d84aadadbb
feat(base): add export base csv dto
2026-04-18 18:11:34 +01:00
Philipinho
da0321b468
feat(base): add csv cell serializer with per-type rules
2026-04-18 18:10:47 +01:00
Philipinho
db6f82ff7a
chore(server): add csv-stringify dependency
2026-04-18 18:08:09 +01:00
Philipinho
e017209d76
feat(base): emit base:rows:deleted websocket event
2026-04-18 16:32:27 +01:00
Philipinho
fc734475df
feat(base): add POST /bases/rows/delete-many endpoint
2026-04-18 16:31:44 +01:00
Philipinho
a7f9d66778
feat(base): add deleteMany service method for batch row delete
2026-04-18 16:31:11 +01:00
Philipinho
4a9e891582
feat(base): add BASE_ROWS_DELETED event type
2026-04-18 16:29:26 +01:00
Philipinho
65c5bb11b8
feat(base): add DeleteRowsDto for batch row delete
2026-04-18 16:29:02 +01:00
Philipinho
1466d95078
feat(base): add findByIds and softDeleteMany to base-row repo
2026-04-18 16:28:39 +01:00
Philipinho
da49ffc332
fix orderBy
2026-04-18 15:17:20 +01:00
Philipinho
ede1a799f2
feat(base): disable type-conversion API for v1, preserve engine for v2
2026-04-18 14:13:08 +01:00
Philipinho
f5b19316af
Base WIP
2026-04-18 13:13:53 +01:00
Philipinho
081bb67239
Merge branch 'main' into base
2026-04-17 13:48:49 +01:00
Philipinho
271f855761
v0.80.0
2026-04-14 17:08:44 +01:00
Philipinho
3e6d915227
sync
2026-04-14 16:34:44 +01:00
Philip Okugbe
a6a7e4370a
feat(ee): PDF export api ( #2112 )
...
* feat(ee): server side PDF export
* feat: pdf export queue
* sync
* sync
2026-04-14 16:26:54 +01:00
Philip Okugbe
cc00e77dfb
fix: space overview favorites ( #2110 )
2026-04-14 02:58:24 +01:00
Philip Okugbe
4056bd0104
feat: enhancements ( #2107 )
...
* refactor
* fix
* update packages
2026-04-13 23:34:40 +01:00
Philip Okugbe
bd68e47e03
feat(ee): page verification workflow ( #2102 )
...
* feat: page verification workflow
* feat: refactor page-verification
* sync
* fix type
* fix
* fix
* notification icon
* use full word
* accept .license file
* - update templates
- update migration and notification
* fix copy
* update audit labels
* sync
* add space name
2026-04-13 20:20:34 +01:00
Philipinho
e02661974e
sync
2026-04-13 00:13:18 +01:00