Fix Full data toggle overlap in AI explorations - #2045
Conversation
Keep the Full data toggle in the results layout flow so it cannot cover the SQL editor, while preserving right alignment and limit behavior. Assisted-by: OpenAI Codex (GPT-5)
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2045 +/- ##
==========================================
+ Coverage 75.02% 75.57% +0.55%
==========================================
Files 212 214 +2
Lines 38883 39727 +844
==========================================
+ Hits 29171 30025 +854
+ Misses 9712 9702 -10 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Hey @fly1d, Thanks for taking this up :) Can you attach a quick video/photo of the fix. |
Use a source with more rows than SQLLimit and verify that toggling Full data restores the omitted row. Assisted-by: OpenAI Codex (GPT-5)
|
This checkbox is not looking good here. Can you do something else or align it |
Let the checkbox size to its label and remove excess row spacing so the control stays on one line at narrow widths. Assisted-by: OpenAI Codex (GPT-5)
|
Thanks for the feedback. I tightened the control row and let the checkbox use its natural content width, so Updated in |
|
Thanks @fly1d, Much better can you also upload video with the functionality working properly :) Also instead of probe can you run the server. |
|
Thanks! I ran the actual Panel server and recorded the real Full data functionality recording (MP4) For a short, visible demonstration, the local server uses four DuckDB rows with |
Anchor the control to the table container's bottom-right corner and reserve footer space so pagination remains clear. On narrow viewports, move the control into its own right-aligned row below the footer. Assisted-by: OpenAI Codex (GPT-5)
|
Thanks for the suggestion. Updated in
I also ran the actual Panel server with a 175-row DuckDB source and 175-row Full data recording (MP4) Verification: |
|
Can you please run |
Target Tabulator footer contents directly and retain the reserved space when Panel theme styles load later. Assisted-by: OpenAI Codex (GPT-5)
Use a stable page size and restore each query limit when Full data is disabled. Assisted-by: OpenAI Codex (GPT-5)
|
Thanks! I reran this through the actual Lumen AI server (not the isolated Panel probe) and used a real natural-language query. Command: pixi run -e test-312 lumen-ai serve /private/tmp/lumen-full-data-demo.db --provider ollama --model qwen3:4b --port 5010 --address 127.0.0.1 --allow-websocket-origin=127.0.0.1:5010 --log-level infoThe DuckDB Real-server Full data recording (MP4) The recording shows:
While validating the real server, I found one remaining theme-specific layout issue: the earlier rule reserved space on I fixed this narrowly in I also reproduced two follow-up issues while checking the recording:
Both are fixed in Verification after the fix:
I kept this PR focused on the current layout. Longer term, would you prefer this kind of control to use an explicit Panel/Tabulator footer slot or extension point instead of being overlaid with reserved footer space? I can investigate that separately if it matches the maintainers' direction. |
Keep the stable page size aligned with the real-server viewport and recorded 100003-page result. Assisted-by: OpenAI Codex (GPT-5)
|
Correction to the pagination verification above: the real-server viewport and recording use 10 rows per page, so the expected final page for 1,000,025 rows is I initially fixed the resize instability with a 20-row page size, which made the expected final page 50,002 and did not match the maintainer's requested viewport evidence. I corrected this in The test suite still passes ( |
|
Thanks for the careful review. I reproduced the pagination behavior on the real Lumen AI server, fixed the remaining issues, and recorded the latest result. Sorry, GitHub's PR uploader available here only accepted videos up to 10 MB, so I could not upload the full-resolution original recording (10,949,090 bytes). I reduced the frame rate to 8 fps and cropped only the browser chrome; the compressed recording is 1,669,167 bytes and keeps the relevant UI and values readable: Latest real-server recording: pagination and limit fixes (MP4) The recording shows the complete fixed sequence:
The issues and fixes are:
Verification on the latest code:
The fixes and this verification summary were prepared with OpenAI Codex assistance. |
Keep the Full data checkbox vertically centered with the footer controls and move it to a separate row when the table container narrows to prevent overlap. Assisted-by: OpenAI Codex (GPT-5)
|
I made the follow-up layout adjustment in
I checked the real server DOM in the narrowed layout (table container width 419px): the footer ends before the separate This change was prepared with OpenAI Codex assistance. |
Use the compact pagination controls at narrower viewports so the Full data checkbox remains aligned in the footer without overlap. Assisted-by: OpenAI Codex (GPT-5)
|
I refined the footer layout again in The I also moved the responsive rules into the actual Tabulator and Panel shadow-DOM stylesheets, so they apply reliably in the running application. Local DOM verification at a 1280px viewport showed:
Verification: This change was prepared with OpenAI Codex assistance. |
Restore every visible pagination page number and compact the buttons at narrower widths so the Full data control stays on the same footer row without overlap. Align the control height with the pagination buttons and cover the layout contract with regression assertions. Assisted-by: OpenAI Codex (GPT-5)
|
I found a regression in the previous layout adjustment: the narrow-screen rule hid every non-active page button, so a multi-page result could show only the current page. Sorry about that. I corrected it in
I verified the running Panel components with five pages at 1280px and fixed table widths of 600px and 430px. In each case the complete page sequence stayed on one row, This follow-up was prepared with OpenAI Codex assistance. |
|
I found one more layout case while testing the real 1,000,000-row result: when the paginator reaches six-digit page numbers ( Before making another layout change, could you advise which behavior you prefer for this case?
The second option keeps every page button readable and guarantees no overlap, while the first preserves the single-row appearance. I will follow the project's preference rather than guessing at another breakpoint. |
|
Thanks for considering this. I am happy to follow whichever layout pattern the maintainers consider most appropriate for this footer. If the project already has a preferred Panel or Tabulator approach, I would appreciate your guidance and can adapt the patch accordingly. In particular, what would you recommend for keeping the full pagination readable while making the |
|
@fly1d, The full data thing is overlapping with next and last have to look any other way then |
Stop overlaying the Full data control on the Tabulator footer. The checkbox now sits in a right-aligned row in normal document flow below the table, so long page numbers can never push it into Next or Last. Assisted-by: OpenAI Codex (GPT-5)
|
Thanks for the feedback. I changed the approach so the checkbox no longer sits on top of the footer: Because the pagination keeps its full footer width and the checkbox is no longer absolutely positioned, long page numbers can never push it into Updated in This change was prepared with OpenAI Codex assistance. |
Rename the focused test to describe the final below-table layout in holoviz#2045. OpenAI Codex assisted with the PR review and narrow cleanup.
Only add the Full data row when a query is actually capped, so ordinary SQL results do not gain a blank 36px footer. Add regression coverage for uncapped pipelines.\n\nOpenAI Codex assisted with the implementation and testing; the submitted change was reviewed by fly1d.
Allow the Tabulator paginator to wrap when six-digit page buttons do not fit in the result footer, instead of hiding the page-number group. Keep the existing right-aligned layout at wider widths. OpenAI Codex assisted with the implementation and testing; the submitted change was reviewed by fly1d.
|
Thanks for the screenshot. I reproduced this case with the real 1,000,025-row DuckDB result. The page-number buttons are still generated, but Tabulator hides the I fixed this in Verification: Could you please confirm whether this wrapped paginator layout matches the project's preferred behavior for narrow result panes? This follow-up was prepared with OpenAI Codex assistance and reviewed by fly1d. |




Summary
Fixes #1893.
In Lumen AI explorations, the
Full datacheckbox appeared above the result table and could overlap the SQL editor. The final layout renders the table first and adds the checkbox in a right-aligned row below it, only when the materialized result reaches itsSQLLimit.The table keeps a fixed 10-row remote page size. Enabling the checkbox removes the query limit; disabling it restores the original limit for that query.
Tabulator hides its page-number group when footer contents overflow. A scoped stylesheet makes the paginator and page group wrap, so long page numbers remain available without competing with
NextorLast.Verification
pixi run -e test-312 pytest lumen/tests/ai/test_editors.py -q(37 passed)pixi run -e test-312 pre-commit run --files lumen/ai/editors.py lumen/tests/ai/test_editors.py(passed)git diff --check(passed)lumen ai serve --providerchecks covered the 1,000,025-row DuckDB result, six-digit pagination, narrow result panes, pane resizing, and Full data toggle round-trips without overlap.OpenAI Codex assisted with the implementation and verification; fly1d reviewed the submitted changes.