Repository navigation
Commit de5d400
feat(plugin-grid): one display page size read from the spec, and a distinct fetch batch (objectui#9853) (#10278)
Fixes #9853
Clause-②: yes — the undeclared display page size changes on three
surfaces (inline grid 10 → the spec default, grouped groups-per-page 10
→ the spec default, paged list 100 → the spec default), as ruled. The PR
waits as a draft for the director seat's contract review
(`needs:contract-review` stays on both carriers).
Rulings executed: `5749197629` (C-prime, items 1 and 2) as amended by
`5824040487` (batch #223 item 4: the display default is **50**, declared
once in the protocol; structure B). The grid, list and kanban halves all
land in this PR. The first line is `Part of`, not `Fixes`, for one
reason only: one pre-existing pin reads red, because structure B's
paged/unpaged split re-issues the list's fetch on a view switch when
nothing is declared. That needs a ruling, and it is described under
**Open question** below. Once it is ruled, nothing else of the card
stays open here, and the seat can switch the first line to the closing
keyword.
This head merges `origin/main` at `0ffc423b1` (a merge commit: no
rebase, no force-push, no pushed commit rewritten). This session:
`https://claude.ai/code/session_012UwY3ahMixEFkfTUxMVkYm`.
## What changed
**Structure B: "page size" means one page, and only where there is a
pager.**
- **`@object-ui/plugin-grid`.** `ObjectGrid` falls back to
`DEFAULT_DISPLAY_PAGE_SIZE` on every page it shows: the server-paged
table, the table over inline `data`, the grouped view's page of groups,
and a server-grouped group's own page of rows.
`DEFAULT_DISPLAY_PAGE_SIZE` is `readSpecDisplayPageSize()`, which reads
`PaginationConfigSchema.parse({}).pageSize` from `@objectstack/spec/ui`.
There is no local number behind the read: if the spec stops declaring a
positive default, the module throws at load. `DEFAULT_FETCH_BATCH_SIZE`
(50, value kept) is the grid's fetch batch. It is read only when the
grid buckets a fetched window in the browser (`bucketsFetchedWindow`),
and never as a page size.
- **`@object-ui/plugin-list`.** `DEFAULT_LIST_PAGE_SIZE = 100` splits in
two. `DEFAULT_LIST_DISPLAY_PAGE_SIZE` is the same spec read, and applies
when `paginate` is true (the flat grid view, which `ListView` pages on
the server). `DEFAULT_LIST_FETCH_BATCH_SIZE = 100` (value unchanged) is
the `$top` of the one unpaged fetch for every other view: kanban,
calendar, gallery, timeline and the rest, plus a grouped grid's window.
`effectivePageSize` now resolves after `paginate` and passes `paginate ?
DEFAULT_LIST_DISPLAY_PAGE_SIZE : DEFAULT_LIST_FETCH_BATCH_SIZE` as the
fallback. A declared `pagination.pageSize` still sizes every view, as
before. `describeRefusedPageSize` now names the fallback the view
actually used.
- **`@object-ui/plugin-kanban`.** `DEFAULT_KANBAN_LIMIT` is renamed
`DEFAULT_KANBAN_FETCH_BATCH_SIZE`, value 100 unchanged. The
refused-`limit` diagnostic now reads "ObjectKanban fetch batch: … fell
back to its default fetch batch (100)" instead of "row cap".
- Docs: `packages/plugin-grid/README.md` and
`content/docs/plugins/plugin-grid.mdx` (the undeclared page size,
including a group's page and the bucketed window),
`packages/plugin-list/README.md` (new section "Page size and fetch
batch"), and `content/docs/plugins/plugin-kanban.mdx` (the section is
retitled "Fetch batch (object-driven boards)" and says the default does
not follow the display page size). No fenced code block was added or
changed: the diff over `*.md` / `*.mdx` outside `.changeset/` has 0
changed fence lines and 0 changed import lines, and every insertion sits
after an even number of fences.
- Changeset `.changeset/9853-grid-display-page-size-from-spec.md` (this
PR's own) is rewritten: `minor` for plugin-grid, plugin-list and
plugin-kanban, with the per-surface table below, and hosts told to
declare `pagination.pageSize` (or a board's `limit`) to keep an old
count.
## Measured before and after (renderer, `@objectstack/spec` 17.5.0)
The installed spec is 17.5.0, and
`PaginationConfigSchema.parse({}).pageSize` answers 50. This table comes
from a one-time reverse run. A probe (not committed) mounted the real
`ObjectGrid`, `ListView` and `ObjectKanban` against a paging data source
that also answers the group header query. It read rows off the screen
and `$top` off the wire. It ran at head `a2c3e5ba7`, and again with
`ObjectGrid.tsx`, `ListView.tsx` and `ObjectKanban.tsx` swapped to
`main`'s blobs (blob hashes equal to `0ffc423b1`'s; on-disk markers
`DEFAULT_SERVER_WINDOW_SIZE` 2, `DEFAULT_DISPLAY_PAGE_SIZE` 0,
`DEFAULT_LIST_PAGE_SIZE` 3, `export const DEFAULT_KANBAN_LIMIT` 1). The
restore was proven by hash equality with `HEAD` and an empty `git diff
HEAD`.
| surface, nothing declared | before (`main` `0ffc423b1`) | after |
|:--|--:|--:|
| `object-grid` fetching its own rows: rows per page / `$top` | 50 / 50
| 50 / 50 |
| `object-grid` over inline `data`: rows per page | 10 | **50** |
| grouped `object-grid`: groups per page | 10 | **50** |
| server-grouped `object-grid`: `$top` of each group's row page | 50 |
50 |
| `list-view`, grid view (paged): rows per page / `$top` | 100 / 100 |
**50 / 50** |
| `list-view` kanban, gallery, calendar, timeline, grouped grid: `$top`
| 100 | 100 |
| `object-kanban` with no `limit`: `$top` | 100 | 100 |
Premises from the dispatch, re-measured:
- The self-fetching grid is 50 → 50, the inline grid 10 → 50, and groups
10 → 50. **Holds.**
- The spec default is read, not hardcoded. **Holds**: the stubbed pins
below move with the spec, and ablation 2 reddens them.
- "The grouped fetch batch `DEFAULT_FETCH_BATCH_SIZE` is 50 today" is
**partly overtaken by `main`**. Since objectui#7189, a grouped grid that
fetches its own rows groups on the server: `serverGroupedFetch` strips
`$top`, and each group pages its rows by the display page size. Since
objectui#10881, a data source with no `queryGroupHeaders` is refused,
and no rows are fetched. The batch therefore has one reader left: a grid
that buckets a window in the browser. The case that reaches it today is
a grouping key the principal may not read, over a source that answers
the header query. It is its own constant (50) and is not read from the
spec. The pin "a window the grid groups in the browser FETCHES the
batch" runs that exact path.
- **The list half.** Only the flat grid view pages on the server:
`paginate` is `currentView === 'grid' &&
!(groupingConfig?.fields?.length)`. Every other kind issues one unpaged
`$top`. The previous executor's cost reproduces: with nothing declared,
a paged-to-unpaged switch re-issues the fetch (`[50, 100]` on grid →
kanban). See **Open question**.
## Conflict resolution (merge of `origin/main` `0ffc423b1`)
`git merge-tree` reported content conflicts in the three files the
dispatch named. Every hunk:
1. `ObjectGrid.tsx`, the loader effect's dependency list. Resolved as
`main`'s list and comments (it adds `schemaDefaultFilters`,
`invalidationNonce`, `serverGroupedFetch`, `groupingNeedsHeaderQuery`),
with this branch's `fetchWindow` in place of `serverPageSize`, because
the loader's `$top` / `$skip` read `fetchWindow`.
2. `ObjectGrid.tsx`, the "Is the grouping on screen page-scoped?" marker
block. `main` retired it (objectui#10881). This branch had only renamed
what it compared against (`groupingRowsLoaded >= fetchWindow`), so
`main`'s deletion stands. Nothing else reads `groupingIsPartial` (grep:
0).
3. `packages/plugin-grid/README.md` and 4.
`content/docs/plugins/plugin-grid.mdx`: this branch's
undeclared-page-size paragraph, followed by `main`'s retitled "Grouping
is server-side" heading.
There was also one **semantic** conflict that git merged cleanly. This
branch's `groupedFetch =
usableGroupingFields(schema.grouping?.fields).length > 0` assumed that
every grouped self-fetch buckets a window, and `main`'s server grouping
made that false. Resolved in `3445f3213`: the predicate became
`bucketsFetchedWindow`, which is `!serverGroupedFetch &&
!groupingNeedsHeaderQuery` plus a grouping entry left after known masked
keys are refused. It is counted the way the two server predicates count,
so the first fetch does not flip from page size to batch when the
object's types land. The docs paragraph was rewritten to match. Carried
on the same file: the server pagination comment's `framework #2212` is
qualified as `objectstack-ai/objectstack#2212` (carrier note on this
PR).
## Census of the three constants
Instrument: `git grep -n` over the whole tree for each old and new name,
re-run at head.
- `DEFAULT_SERVER_WINDOW_SIZE`, `DEFAULT_FLAT_PAGE_SIZE`,
`DEFAULT_GROUPS_PER_PAGE`, `DEFAULT_LIST_PAGE_SIZE`: 0 hits.
- `DEFAULT_KANBAN_LIMIT`: every reader updated to
`DEFAULT_KANBAN_FETCH_BATCH_SIZE`. That covers `ObjectKanban.tsx`,
`plugin-kanban/src/index.tsx`, two plugin-kanban pins, the types
docblock (`objectql.ts`) and the zod `limit` describe text
(`objectql.zod.ts`), `app-shell` `block-config.ts` and three app-shell
pins, and the types read-text pin
`object-kanban-group-by-limit-7322.test.ts`. That pin reads `export
const DEFAULT_KANBAN_FETCH_BATCH_SIZE = 100;` and `$top:
resolveRowLimit(schema.limit, DEFAULT_KANBAN_FETCH_BATCH_SIZE)` off
disk. The `block-config.test.ts` regex now reads the new name.
- Left on purpose, all historical prose:
- two docblock sentences that describe the old spelling as history
(`ObjectKanban.tsx` "Before that ruling it was named…"; the
objectui#9925 note);
- one "re-measured then" sentence in `plugin-kanban/src/index.tsx`;
- one in the 7322 types pin's header;
- three pending changesets of other cards (7322, 7772, 8307), which
describe the tree they were written about.
## Pins
**One pin across every paged surface:
`packages/app-shell/src/__tests__/displayPageSizeFromSpec-9853.test.tsx`
(new).** It lives in app-shell because that package already depends on
grid, list and board, so no new dependency edge is needed. It stands in
a spec default the spec never shipped, and a probe records that the
stand-in's factory ran and what the real default is. It then mounts the
real components.
- ONE assertion over grid self-fetch rows and `$top`, grid inline rows,
grouped groups per page, group-row `$top`, paged list rows and `$top`.
Every value equals the default read from the spec at test time.
- A second row: the unpaged list view and the standalone board both send
`$top` 100, and neither equals the page size.
No literal 50 appears in any assertion.
Per package:
- `ObjectGrid.displayPageSizeDefault-9853.test.tsx` (reworked for the
merged tree, stubbed spec default). Rows: stand-in live; every page the
grid shows; the bucketed window fetches the batch; the selector shows
the size in force (the stand-in is not a fixed step); the declared
control on every surface including the bucketed fetch; the refused
control. Grouped rows now use a data source that answers the group
header query.
- `ListView.pageSizeAndFetchBatch-9853.test.tsx` (new, real spec). Rows:
paged grid `$top` and hand-off = the spec default; five unpaged views
`$top` = 100; the declared control on a paged and an unpaged view; the
switch cost `[default, 100]`; the refused value names the fallback
number.
- Kanban pins keep `$top` 100 under the new name.
**Flipped, none deleted:**
- `groupedPagination.test.tsx`: the fixture is two pages plus ten of the
spec default. The resize step is derived (a fixed step that is not the
default and splits the fixture in two), and the one-page control
declares `pageSize` equal to the group count.
- `ObjectGrid.pageSizeNonPositive-9853.test.tsx`: the inline fixture is
the spec default plus ten rows, so `12.5` still discriminates at 50.
These were the reds on head `454232890` (CI shards 4/8 and 5/8, and
locally before rework: 9 failed / 17 passed across the three grid
files). The grouped rows failed because `main`'s objectui#10881 refuses
a grouped grid over a data source with no `queryGroupHeaders`.
## Ablations (predicted before running; each through
`ablation-replace.mjs`, restore proven by blob == HEAD and an empty `git
diff HEAD`)
1. **Tie the list's unpaged fallback to the page size.** Anchor
`paginate ? DEFAULT_LIST_DISPLAY_PAGE_SIZE :
DEFAULT_LIST_FETCH_BATCH_SIZE,` became `DEFAULT_LIST_DISPLAY_PAGE_SIZE,`
(anchor 1 → 0, blob moved).
- Predicted: list pin 7 red / 3 green, app-shell pin 1 red / 2 green.
- Observed: **8 failed / 5 passed** = the five unpaged rows, the
switch-cost row, the refused-name row, and the app-shell fetch-batch
row. As predicted.
2. **Hardcode the display number in place of the spec read** in both
`ObjectGrid.tsx` (`const DEFAULT_DISPLAY_PAGE_SIZE = 50;`) and
`ListView.tsx`. Both anchors went 1 → 0.
- Predicted: stubbed grid pin 4 red / 2 green, stubbed app-shell pin 1
red / 2 green, while the unstubbed list pin and `groupedPagination` stay
green (they cannot tell a hardcoded 50 from the spec's 50).
- Observed: **5 failed / 21 passed**: the grid rows every-page,
bucketed, selector and refused, plus the app-shell every-paged-surface
row. All unstubbed rows green. As predicted. This is why the
cross-surface pin stands in the default.
3. **Root cause of the one remaining red** (below). The `10512` file at
head: 1 failed / 5 passed. With the fallback collapsed back to one
number for every kind (`DEFAULT_LIST_FETCH_BATCH_SIZE`): 6 passed. The
extra query is exactly the kind-dependent window.
## Open question (blocks landing; this seat does not decide it)
`ListView.datasetChartAppliedFilter-10512.test.tsx`, row "CONTROL
(objectui#7394): with nothing held, the switch to the dataset chart
re-issues no query", reads `expected 2 to be 1` at head (CI shard 3/8 on
`a2c3e5ba7`, reproduced locally).
- The cause, proven by ablation 3: with no declared `pageSize`, the grid
view's window is the display default (50) and the chart's is the fetch
batch (100). A switch therefore changes `$top`, and the list issues a
real, different query.
- It is not objectui#7394's defect, which was a byte-identical duplicate
request.
- It is inherent to structure B: the two views need different windows.
The pin is untouched. The options, with their costs, are in the
`os-dev-report` on the card.
## Gates (local, head `a2c3e5ba7`; exit codes captured before any pipe)
- The three package suites, `pnpm exec vitest run --maxWorkers=2
packages/plugin-grid/ packages/plugin-list/ packages/plugin-kanban/`:
exit 1. `Test Files 1 failed | 343 passed (344)`, `Tests 1 failed | 3202
passed (3203)`. The one red is the open question's row in
`ListView.datasetChartAppliedFilter-10512.test.tsx`.
- Every test outside those packages that names `ObjectGrid`, `ListView`
or `ObjectKanban`, their registry types, or their source paths. The
census is `git grep -lE` over test files, plus the touched app-shell and
types pins: 320 paths, 318 of them test files (the other two are a
`__mocks__` module and a fixture). Result: exit 0. `Test Files 318
passed (318)`, `Tests 6339 passed | 9 skipped (6348)`.
- type-check: exit 0 for `@object-ui/plugin-grid`,
`@object-ui/plugin-list`, `@object-ui/plugin-kanban` and
`@object-ui/types`, after building the grid/list/kanban dependency
closure (build exit 0). `tsconfig.test.json --listFiles` includes every
touched test file (1 each) and the `ListView.tsx` control.
- lint: `eslint .` exit 0 for plugin-grid, plugin-list and plugin-kanban
(0 errors). The touched app-shell and types files: 0 errors. Findings on
the three touched sources, `main` versus head, read through
`--stdin-filename`: `ObjectGrid.tsx` 0e/207w vs 0e/207w; `ListView.tsx`
0e/188w vs 0e/188w; `ObjectKanban.tsx` 0e/30w vs 0e/30w.
- exit 0:
- changeset gates: `check-changeset-presence`,
`check-changeset-no-major`, `check-changeset-fixed`,
`check:changeset-claims` (report-only; pending bodies read, none of the
touched ones is falsified by this change),
`check:pending-changeset-literals`;
- hygiene gates: `check:control-bytes`, `check:new-line-citations` (0
new), `check:spec-symbols`, `check:test-path-roots`,
`check:phantom-deps`, `check:unreferenced-sources`,
`check:element-data-source-declaration`;
- mock gates: `check:vi-mock-specifiers`, `check:vi-mock-inherit`,
`check:vi-mock-override-shape`;
- doc gates: `check:doc-fences`, `check:doc-types`,
`check:doc-example-ids`;
- `check-governed-queue-guard --test` on the diff paths: NOT GOVERNED.
- `check:spec-floors`, after building plugin-grid, plugin-list and
plugin-kanban (build exit 0): exit 1. The 11 findings are all
`[no-artifact]` for packages this PR neither touches nor built, and
plugin-grid, plugin-list and plugin-kanban draw none. The gate judges
declaration files, where the new runtime import does not appear, so the
floor question was also read directly: `@objectstack/spec` 17.0.0 and
17.4.0, fetched from the registry, both export `PaginationConfigSchema`
from `./ui`, in `index.d.mts` and in `index.mjs`.
- NOT MEASURED locally, left to CI:
- `check:doc-snippets`, `check:doc-examples`, `check:readme-exports`.
They need the near-whole-workspace build their `--build-filter` names.
The docs diff changes no fenced block and no import line, so their
verdict cannot move.
- The app-shell `type-check`, which needs app-shell's whole dependency
closure built.
- `check:eager-closure`, which needs a console build.
- The full lint and test farm.
## Acceptance notes (not carded)
- The display default follows the installed spec.
`@object-ui/plugin-grid` declares `@objectstack/spec` `^17.4.0` and
`@object-ui/plugin-list` `^17.0.0`. A host whose lockfile resolves an
older spec gets that spec's default, on every surface alike. The floors
are not raised here.
- The earlier pending changeset of this card,
`.changeset/9853-grid-non-positive-page-size.md`, ends by saying the
default question "is handed back on the issue". That was true of its PR,
and it publishes in the same release as this one, which answers it. Left
as history.
- A declared `pagination.pageSize` still caps unpaged list views and a
bound board, as before. Ruling `5824040487` splits only the undeclared
fallback, and this PR reads it that way.
- Carried from the previous body, still true: the page-size `useState`
seeds are read only at mount. The grouped view's `$skip` is `(serverPage
- 1) * fetchWindow`, which now matters only on the bucketed-window path.
- Commit `43d21e6b1` (a pushed commit of the previous executor) carries
a model-named co-author trailer. It is left as is: pushed history is not
rewritten. Every commit of this round carries the model-free pair.
## Round 2: ruling record `5909000462` (head `5a2d1e66a`)
The maintainer answered the **Open question** above with A: accept the
one extra fetch. Ruling record `5909000462` on the card records the
ruling verbatim. The first line of this body is now the closing keyword.
The paragraph under it that explains `Part of`, and the **Open
question** and **Gates** sections above, describe head `a2c3e5ba7` and
are superseded by this section. They are left as written.
- **Merge.** `origin/main` at `574d82fdf`, merged as commit `118cdbe5a`
(no rebase, no force-push, no pushed commit rewritten). Git reported
**no conflict hunk**. Both sides touched five files (`ObjectGrid.tsx`,
the plugin-grid `README.md` and `plugin-grid.mdx`, and types
`objectql.ts` and `objectql.zod.ts`), and all five auto-merged. The one
`ObjectGrid.tsx` change from `main` (objectui#11021: the search term on
the group header query) reads neither the page size nor the fetch batch.
The old-name census, re-run on the merged tree, is unchanged from round
1.
- **Flipped row** (commit `39994581a`), in
`ListView.datasetChartAppliedFilter-10512.test.tsx`. It was "CONTROL
(objectui#7394): with nothing held, the switch to the dataset chart
re-issues no query". It is now "with nothing held and no pageSize
declared, the switch to the dataset chart re-issues exactly one query,
whose $top moves from the spec display default to the fetch batch".
- The first query's `$top` is read against
`PaginationConfigSchema.parse({}).pageSize`.
- The one further query's `$top` is read against
`DEFAULT_LIST_FETCH_BATCH_SIZE`. `ListView.tsx` now exports that
constant as a module export; the package index does not re-export it. No
literal 100 appears in the row.
- The further query equals the one on screen with only `$top` changed,
so nothing the chart withholds reached it.
- A comment cites ruling record `5909000462` by id.
- **New control, same file:** "CONTROL (objectui#7394 §1): with nothing
held and a pageSize declared, the switch to the dataset chart re-issues
no query". With a declared 7, the first `$top` is 7 and no further query
follows. objectui#7394's own §1
(`ListView.viewSwitchRefetch-7394.test.tsx`) pins the same for grid to
kanban.
- **No other assertion in the file changed.** The diff removes three
lines: the old row's title, one header bullet and one import line.
- **Changeset** (commit `5a2d1e66a`). The plugin-list bullet now says
the switch issues one request, whose `$top` is the fetch batch. It also
says that this qualifies the pending objectui#10512 note, which
publishes in the same release and reads "a switch into a dataset chart
with no user filter set issues no new request": that sentence now holds
only when a page size is declared. The objectui#10512 changeset itself
is not edited (`check-changeset-overwrite` green).
`check:changeset-claims` cannot flag that note, because it names no file
path.
- **Ablation.** Predicted before running: the flipped row goes red on
its `$top` assertion, and the other six rows stay green.
- Mutation: `ablation-replace.mjs` replaced `paginate ?
DEFAULT_LIST_DISPLAY_PAGE_SIZE : DEFAULT_LIST_FETCH_BATCH_SIZE,` with
`DEFAULT_LIST_DISPLAY_PAGE_SIZE,`. The anchor count went 1 → 0 and the
blob moved `5789e6b50742` → `85a9025b2d66`.
- Observed: `Tests 1 failed | 6 passed (7)`, with `AssertionError:
expected [] to deeply equal [ 100 ]` at the `$top` wait. As predicted.
- Restore: the blob equals `HEAD`'s and `git diff HEAD` is empty.
- No build was involved: the test imports `../ListView` from source.
Gates at head `5a2d1e66a`, run after the last commit. Exit codes were
captured before any pipe.
| gate | exit | reading |
|:--|--:|:--|
| vitest `packages/plugin-grid/ packages/plugin-list/
packages/plugin-kanban/`, 4 shards (`vitest list` counts the same 345
files) | 0 ×4 | 345 files, 3207 tests passed |
| cross-package union: round 1's 320 paths, plus the three
`packages/types` pins `main` added that name these views | 0 ×5 parts |
321 test files, 6638 passed, 9 skipped |
| `type-check` plugin-grid / plugin-list / plugin-kanban, after the
dependency-closure build (exit 0) | 0 / 0 / 0 | `tsconfig.test.json
--listFiles` includes the 10512 file |
| `lint` (`eslint .`) plugin-grid / plugin-list / plugin-kanban | 0 / 0
/ 0 | 0 errors each; `ListView.tsx` 0e/188w (as in round 1), the 10512
file 0e/0w |
| `check-changeset-presence`, `-no-major`, `-fixed`, `-overwrite` | 0 |
|
| `check:changeset-claims` | 0 | report-only |
| `check:pending-changeset-literals` | 0 | |
| `check:control-bytes` | 0 | |
| `check:new-line-citations` | 0 | 0 new |
| `check:vi-mock-specifiers`, `check:vi-mock-inherit`,
`check:vi-mock-override-shape`, `check:test-path-roots`,
`check:phantom-deps`, `check:spec-symbols`,
`check:unreferenced-sources`, `check:doc-fences`, `check:doc-types`,
`check:doc-example-ids` | 0 | |
NOT MEASURED this round: `check:spec-floors`, `check:doc-snippets`,
`check:doc-examples` and `check:readme-exports`. Reason: they need the
near-whole-workspace build, and this round's diff adds no import to
published source (the only new `@objectstack/spec` import is in a test)
and touches no doc outside `.changeset/`.
---
_Generated by [Claude
Code](https://claude.ai/code/session_012UwY3ahMixEFkfTUxMVkYm)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 3cc4fe5 commit de5d400
24 files changed
Lines changed: 1282 additions & 130 deletions
File tree
- .changeset
- content/docs/plugins
- packages
- app-shell/src
- __tests__
- views/metadata-admin
- inspectors
- previews
- __tests__
- plugin-grid
- src
- __tests__
- plugin-kanban/src
- __tests__
- plugin-list
- src
- __tests__
- types/src
- __tests__
- zod
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
367 | 367 | | |
368 | 368 | | |
369 | 369 | | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
370 | 379 | | |
371 | 380 | | |
372 | 381 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
211 | | - | |
| 211 | + | |
212 | 212 | | |
213 | 213 | | |
214 | 214 | | |
215 | | - | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
216 | 218 | | |
217 | 219 | | |
218 | 220 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
| 107 | + | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
389 | 389 | | |
390 | 390 | | |
391 | 391 | | |
392 | | - | |
| 392 | + | |
393 | 393 | | |
394 | 394 | | |
395 | 395 | | |
| |||
403 | 403 | | |
404 | 404 | | |
405 | 405 | | |
406 | | - | |
| 406 | + | |
407 | 407 | | |
408 | 408 | | |
409 | 409 | | |
| |||
0 commit comments