Skip to content

feat(results): copy cells, rows and result sets - #757

Closed
2160039878-cyber wants to merge 2 commits into
libredb:mainfrom
2160039878-cyber:feat/result-clipboard-695
Closed

feat(results): copy cells, rows and result sets#757
2160039878-cyber wants to merge 2 commits into
libredb:mainfrom
2160039878-cyber:feat/result-clipboard-695

Conversation

@2160039878-cyber

@2160039878-cyber 2160039878-cyber commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Description

The results grid now provides Copy Cell and Copy Row as JSON through the existing context-menu primitive. A Copy rows menu copies the loaded, filtered and sorted result rows as JSON, YAML or CSV without downloading a file or fetching more pages.

Type of Change

  • New feature (non-breaking)
  • Documentation and test updates

Changes Made

  • Share the actions across desktop cells, mobile table cells and mobile cards. Context-menu selection does not open the row detail sheet.
  • Project only declared result columns, preserve visible desktop edits and apply the active display mask even after a temporary reveal.
  • Reuse the existing clipboard fallback and safe JSON/CSV/binary serializers; YAML uses the already-installed package and the same bigint/cycle/Date representation as JSON. Single-cell copy preserves full text and binary contents.
  • Report actual clipboard success or failure; disable result copying when filters leave no rows.
  • Document the behavior in README and the feature guide. No new dependency or provider change.

Testing

  • TDD: the initial eight new regression cases failed against the original implementation.
  • bun run test:components --pass-with-no-tests -t 'ResultsGrid|results-grid/StatsBar': 80 matching tests passed, 0 failed, including real Radix context/dropdown menus. Added the existing Happy DOM DOMRect to the test environment for context-menu positioning.
  • bun run test:unit --isolate --pass-with-no-tests -t 'result clipboard serialization': 7 passed, 0 failed, covering nulls, long Unicode/multiline text, binary, dates, bigint, cycles, CSV quoting and formula neutralization.
  • Passed locally: format, lint, typecheck, knip, readme:check, chart:check, channels:showcase:check, security:check, production build, build:lib and attw.
  • Full local bun run test / coverage and E2E were not completed: this Windows host lacks Helm/chart dependencies, Docker is unavailable, and existing SQLite cleanup tests encounter Windows file-lock errors. Official Linux CI must verify the full suite and 100% line-coverage gate.

Environment: Windows, Node.js 24.18.1, Bun 1.4.2. Both builds ran from a clean checkout of the submitted commit with real local dependencies.

Checklist

  • Reviewed the diff, added regression tests and updated documentation.
  • Required CI test job passes the 100% line-coverage gate; latest-head CI completed with 20 successful checks and 2 normal skips.

Additional Notes

AI-assisted implementation and test execution using Codex. Clipboard masking is the existing client-side display policy; this change does not alter database execution or access controls.

@cevheri cevheri added the loop:needs-moderator-action Flagged by the maintainer loop: suspicious content or a decision only a human can make label Sep 9, 2026
@codecov

codecov Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@cevheri

cevheri commented Sep 10, 2026

Copy link
Copy Markdown
Member

Closing as an automated bulk submission that this project cannot absorb.

This account opened 35 pull requests here in under 25 hours, a median of 17 minutes apart and four inside the same 13 seconds. That is machine cadence, not a person working through a backlog, and 35 of its 41 pull requests across all of GitHub targeted this one repository. On the earlier ones I did review, the review threads were never answered and review was never re-requested, so nothing closed out.

This pull request never reached review, and the account is now blocked at the organization level, so it cannot move forward.

If a person wants to contribute here: open one issue, wait for assignment, and send one pull request at a time.

@cevheri cevheri closed this Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

loop:needs-moderator-action Flagged by the maintainer loop: suspicious content or a decision only a human can make

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants