Repository navigation
refactor(linux): finish remediation steps 46 to 55 - #3420
Merged
Merged
Conversation
TrackerEdit::DeleteRows replaces Delete and DiscardDraft and is one undo step. TrackerDelta lists inserted and removed drafts for the one store path. Delete is tab.delete-rows, enabled from the selection and the delta.
relm4's ComponentSender::input and FactorySender::input expect on a closed channel, so a read or save that answered after its window closed aborted the whole process. Both are now banned in favour of deliver.
Ctrl+Shift+N becomes the application's New Window, and GTK runs application accelerators before a focused grid sees the key.
Drafts hold CellInput, so a cell left to the server is not a NULL, and InsertDraft seeds Default where the server fills. The grid parses each commit against its column and sends a TrackerEdit; untouched text is no edit.
An adw::Application subclass replaces RelmApp and the flock gate: a second launch hands over to the running instance on D-Bus, and --new-window opens a window there. Quit asks each window through its close prompts and never calls g_application_quit, so the process ends only once every close and save hold has dropped.
A copied draft keeps the cells it leaves to the server instead of writing NULL there. One Ctrl+Z removes every copy, past the 50-step history limit too.
GtkCalendar emits day-selected only when the date changes, so a click or Space on the selected day, such as today on a NULL cell, picked nothing.
begin_edit flipped the check box, so the auto-edit after Insert Row would write TRUE into a new row once its cells take focus.
GTK takes C strings: the cell drew such a value cut at the NUL, or aborted in a debug build, and an editor would save the cut text.
A new row is dropped at once with its undo history, so the prompt no longer tells it to wait for Save.
The Delete button takes its icon from the template. A preset for a column the tab lacks is logged and dropped instead of reading as a missing value.
- A view or trigger whose SQL cannot be replayed is named as itself, not as a column. - new.x and old.x in a trigger on another table no longer block dropping column x.
- The Structure tab hides Add Foreign Key and foreign key removal there. - The CREATE TABLE read for capabilities is kept per thread, so a wide table is read once, not once per column.
The table definition also reads the CREATE statement once, not again for its foreign keys.
# Conflicts: # linux/CHANGELOG.md
A stopped export deleted its path, even when another export had since finished a file there. It now checks the inode it created first, and a second export to a file still being written is refused.
A grid copy checked only the other grid copies, so Copy Query in the history, Copy SQL in a structure tab or a text field's own Copy was overwritten when it landed. It now gives way to any copy this process made since it was asked for, and the two direct writes go through copy_text.
The list only doubled quotes, so on MySQL, MariaDB and ClickHouse a value ending in a backslash closed the string and the rest ran as SQL. Each value now goes through the session dialect's literal.
A toast read its title as markup, so an export to R&D.csv, or a column, path or server message with an & or <, showed an empty toast.
A status page reads its description as markup, so a table named R&D left the loading page blank, and a failed connect to a path or host with an & or < showed no reason.
Copy offers rows as text/tab-separated-values, which a spreadsheet pastes into cells and runs a cell starting with = as a formula. Free text gets the apostrophe the CSV copy gives it.
A connection name, or error text with a lone carriage return, could end its -- comment in the SQL export, and what followed would run when the script was replayed on PostgreSQL.
An Excel export held every row until the last arrived, then built the workbook in memory. The sheet now takes each batch as it lands, in rust_xlsxwriter's constant memory mode, which spills rows to a temporary file; only the compressed workbook is held at the end.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Steps 46 to 55 of
linux/docs/plan-2026-09-14-audit-remediation.md. A failed reload cleared the grid, exports and copies ran on the GTK thread and stopped at the page in memory, shortcuts were bound in a dozen places, and history search, the sidebar and the picker did not scale.Change
Verified
fmt, both clippy runs, nextest and
cargo testsuites, the CI source scans and the license regeneration in theubuntu:26.04image.Not in this PR
stream_readis covered by the driver suites.