Philipinho
e663d7eecf
test(server): align integration stubs with new config + pg-extension injection
2026-04-23 04:28:21 +01:00
Philipinho
96e875f1de
test(base): tighten loader-sql mapping assertions to full projections
2026-04-23 03:37:23 +01:00
Philipinho
6544ff6d38
feat(base): pure SQL builder for pg-extension loader
2026-04-23 03:31:00 +01:00
Philipinho
7ca712c9ab
fix(base): propagate pg-extension bootstrap failure reason; align closeSync style
2026-04-23 03:26:41 +01:00
Philipinho
a798397af0
feat(base): postgres extension service with bootstrap install + per-connection attach
2026-04-23 03:17:36 +01:00
Philipinho
9ba6459427
feat(base): env vars for per-instance duckdb memory limit + threads
2026-04-23 03:09:58 +01:00
Philipinho
14827ec6a0
test(server): add getBaseQueryCacheDebug to integration test env stubs
2026-04-19 23:41:06 +01:00
Philipinho
c931fa5ec9
perf(server): skip per-request row count when collection is resident
2026-04-19 23:39:27 +01:00
Philipinho
7e07d77510
chore(server): add per-request perf logs for base query cache diagnostics
2026-04-19 22:44:39 +01:00
Philipinho
55feb01249
test(server): assert duckdb cache matches postgres on a 100K-row base
2026-04-19 22:28:07 +01:00
Philipinho
4636af3870
feat(server): warm duckdb collections on boot from redis recent-access set
2026-04-19 22:16:20 +01:00
Philipinho
c9adf84260
feat(server): evict least-recently-used duckdb collections when cap exceeded
2026-04-19 22:11:55 +01:00
Philipinho
4f38c61725
fix(server): avoid acquiring redis client when base query cache is disabled
2026-04-19 22:05:56 +01:00
Philipinho
df22efb290
feat(server): propagate row mutations to duckdb cache via redis pubsub
2026-04-19 22:00:37 +01:00
Philipinho
7534b44e6e
refactor(server): preserve cache-failure stack trace and reuse hasSearch
2026-04-19 21:50:34 +01:00
Philipinho
cf6b48cd58
feat(server): route large base list queries through the duckdb cache
2026-04-19 21:46:27 +01:00
Philipinho
45000bbd8b
fix(server): close duckdb resources on load failure, dedupe concurrent loads, drop unused cells projection
2026-04-19 21:39:05 +01:00
Philipinho
91ad3de258
feat(server): load bases into DuckDB and serve list queries from cache
...
- collection-loader streams base rows via postgres and bulk-inserts into an
in-memory DuckDB instance using the Appender API, then builds an index on
each indexable column
- base-query-cache service routes list() calls through the prepared-statement
path; ensureLoaded does schema-version checks with single-pass LRU eviction
- keyset param-ordering bug in the DuckDB builder fixed: placeholders appear
head-to-tail but were being pushed tail-to-head, which made DuckDB bind the
wrong value for each ? and throw Binder Error on typed columns
- base-row repo gains countActiveRows for the router to use in task 6
- seed script split into an importable helper so integration tests can seed a
10k-row base deterministically without shelling out
- new integration spec compares Postgres vs DuckDB pagination end-to-end for
a numeric sort and guards against duplicate rows from DuckDB
Integration test is skipped unless INTEGRATION_DB_URL is set.
2026-04-19 21:31:05 +01:00
Philipinho
b28597125d
fix(server): use DuckDB json_contains for multi-select filters and expand builder coverage
2026-04-19 21:11:29 +01:00
Philipinho
a9db3ef008
feat(server): add DuckDB SQL builder for base list queries
2026-04-19 21:06:41 +01:00
Philipinho
574c5316f0
feat(server): scaffold base query-cache module behind feature flag
2026-04-19 20:59:24 +01:00
Philipinho
3af2db7a8b
feat(server): add property-type to DuckDB column-spec mapping
2026-04-19 20:54:59 +01:00
Philipinho
f181c6d9e8
fix(server): case-insensitive parse for BASE_QUERY_CACHE_ENABLED env var
2026-04-19 20:52:06 +01:00
Philipinho
8ac4c97c98
docs(server): explain base-query-cache max-collections default
2026-04-19 20:50:21 +01:00
Philipinho
abd42fd007
chore(server): add duckdb dependency and query-cache env getters
2026-04-19 20:48:16 +01:00
Philipinho
eb0f37bfe5
update packages
2026-04-19 02:05:48 +01:00
Philipinho
cac4774641
fix(base): stop runaway pagination loop caused by browser scroll anchoring
...
Browser overflow-anchor silently bumped scrollTop by one page's worth
of pixels every time a new page of rows committed — anchoring on the
AddRowButton that sits below paddingBottom. This kept the near-bottom
threshold satisfied and re-fired onFetchNextPage indefinitely, even
after the user released the scrollbar. Disabling scroll anchoring on
the grid scroll container stops the browser from adjusting scrollTop
in response to content growth.
2026-04-19 02:05:30 +01:00
Philipinho
c4d8b6c300
fix(base): stop infinite fetch loop when sorted list scrolled to bottom
2026-04-19 00:27:52 +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
83d28a8505
perf(base): defer rows query until base info loads to avoid bland first request
2026-04-18 23:34:02 +01:00
Philipinho
f9bbbc7ebf
fix(base): ignore nested listbox and portal clicks so select doesnt close toolbar popover
2026-04-18 23:31:53 +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
a6e9e66bbd
fix(base): don't override server sort with client-side position sort
2026-04-18 22:55:15 +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
2f6bad141c
feat(base): draft flow with save and cancel for new view filters
2026-04-18 22:39:30 +01:00
Philipinho
fd1257f61c
feat(base): draft flow with save and cancel for new view sorts
2026-04-18 22:38:28 +01:00
Philipinho
321184394d
feat(base): show table skeleton instead of centered loader on load
2026-04-18 22:22:49 +01:00
Philipinho
b01f6e9af9
feat(base): add layout-matching skeleton loading component
2026-04-18 22:22:11 +01:00
Philipinho
93b1fc534b
fix(base): adopt server view state when no local edit is pending
2026-04-18 22:03:25 +01:00
Philipinho
1aa92b1bb5
fix(base): stop synthesized switch input click from re-firing hide toggle
2026-04-18 21:57:28 +01:00
Philipinho
d385099eb1
fix(base): fire hide toggle once per click instead of twice
2026-04-18 21:51:43 +01:00
Philipinho
d4fe0e0a69
fix(base): re-render grid header and rows when column visibility changes
2026-04-18 21:41:32 +01:00
Philipinho
ab9b00f91c
fix(base): include new properties in local column state so the grid can scroll to them
2026-04-18 21:11:09 +01:00
Philipinho
64dafe5ac0
fix(base): prompt unsaved changes when discarding dirty rename
2026-04-18 20:58:59 +01:00
Philipinho
097b1c76d4
feat(base): add save and cancel buttons to property rename panel
2026-04-18 20:52:26 +01:00
Philipinho
2c1f66b603
fix(base): refresh hide-fields popover when a property is renamed
2026-04-18 20:52:24 +01:00
Philipinho
f812162a26
fix(base): refresh grid headers when a property is renamed
2026-04-18 20:51:14 +01:00
Philipinho
b88c060df8
fix(base): escape on dirty property options triggers discard prompt
2026-04-18 20:39:02 +01:00
Philipinho
97cd88405d
fix(base): close property menu on escape from main and options panels
2026-04-18 20:35:30 +01:00