Repository navigation
A full review: crashes, lost settings and slow spots fixed in both apps (2.24.3) - #216
Merged
Merged
Conversation
…he terminal is tiny; a panic turns the mouse off
…ile beside it on every path, inline tables editable
…ters per status, and status runs shared per repository
… connect to draw, leave the other app's registration alone
…the known map, prepare gone statements once, drop old vectors and errors, clear Index now after any scan, log store errors with the time
…odels on disk only when they change; tool install lines are asked once; the guide names an own theme by its name and uses base64
…son written only when a count changed
…t all of them at the first text
…the async workers The mail preview used mail-parser's full parse, which overflows the stack on deeply nested messages; it now uses extract::mail::summary, with the same depth and size limits as the search. The EPUB preview joined spine links as plain strings; it now uses extract::book::first_chapter, which resolves '..', %20, #fragments and case. Percent decoding is one function, fs::percent_decode. The preview commands run their disk and process work on the blocking pool.
… map's items to their number
…d is open, the quick poll only while an answer is out, the hint only after a change, git only for the panel that moved
…s goes back to the dialog it came from, and a folder not found in a commit says why
…ne folder removal for every model
…o actions is refused by name; one way to show keys (Ctrl+F for ctrl+f) in Features, hints and the guide
…s, Ask's list opens on a model by Space as by Enter and skips headings; the setup guide marks built-in models slow on a Mac set to the processor
…s no half file; one size walk, one name sanitiser, Entry::default in listings
… read once, one rule for a server's address, downloads that Cancel stops even on a dead connection, the model's files as pinned files
…s let go and said, so the app can still quit
…elf, not in a commit, pick a commit, not in the trash; read-only texts without a colon that cause() cut
… one fail; advice listed once each; the language set once at start-up
… caught in the plan, and a failure undoes the whole batch
….log, and a top-level folder excluded by name is not watched
…what the overview keeps
… is compiled and tested once
…e-limited) for tools, bsd and zfs; fc-list without the AppImage's libraries; the font notice names NetBSD's package and no Linux list elsewhere
… cloud notice names each cloud once; empty test gone
…anguage's digits, sizes from 1 PiB labelled right
… sysconf on every Unix but Linux
…olders, and every action has its name; branches' switch-where text gets its key
- archive::endings, update::host, provenance dependency_key and the server's host and locality go to the page from coxswain-core instead of copies there. - BOM and provenance errors are translated in core's Display, for both apps; an output missing from a statement has a message of its own. - generate_handler names each command once; run_command and run_script wait on the blocking pool; command-line folders need not be Unicode. - Converters read stderr to its end (keeping the last 64 KiB), use tools::wait, and find a LaTeX document's main file once. - The asset protocol answers the dev server's origin in debug builds. - git_status returns the recent repositories as saved; BOM advice is shown once each; the two-file caches are one Recent<T>.
- Ctrl+Enter quotes a name for cmd on Windows. - Duplicates: a copy inside a trashed or marked folder counts as gone, so a group never loses its last copy; rules keep the marks of groups they skip; waste is counted again; home is shortened with the system's separator. - The search setup window keeps Enter for its fields and returns to the first-run guide by its back link; F1 twice returns to the dialog. - Sorting a column sorts the listing in the page (natord as in core). - Fonts previewed are removed again; late note and size answers are dropped; a statement with a CycloneDX predicate stays provenance with Source on. - Shared helpers: addTab/closeTab, showInTab, keysOf, transferTo, day(). - Settings polls the index and models only where they are shown, and opens at tui_theme; mermaid 12.2 (katex advisory).
Every zip 8 release is yanked on crates.io. ZipFile::name() and file_names() now give a Result; the readers skip an entry whose name cannot be decoded, and aes_mode is read through aes_settings().
…or one page only A ToUnicode map walks at most MAX_CODES codes over all its ranges. The trailer search reads each candidate only up to the next one, at most 64 KiB, so a file of trailer words is linear. Forms quieted for a page too dear to read are put back afterwards, so later pages keep their text. Attachments and XMP are hushed without being inflated, and a predictor stream is no longer inflated twice.
…l characters, shared helpers Presentations, books and spreadsheets open zips through the same meter as Word files. A text file with a stray non-UTF-8 byte keeps its text. Control characters part words everywhere. A page named .xls follows its charset. Charts and formulas set into an .odt are read. Notebooks skip null values. OCR finds tesseract before reading a picture and uses the language Coxswain is set to. The LibreOffice profile URL is percent-encoded. MD5 comes from md-5; the char-boundary cut, attributes and XML entities have one copy each.
…rors for locked zips A .tar.zst whose disk fills comes back as an error instead of a panic, and a plain .tar's last write is no longer lost. A write error on a locked zip entry is shown as it is, not as a password question. Search reads past a zip entry it cannot open. The entry list is shared, not cloned, and a preview that read the whole archive is kept for browsing it. Errors are translated, and the peek and provenance folders share one helper.
…errors, less copying parse_time no longer slices inside a character. Issue texts and load errors go through t!. Each component keeps its own fields only, and statements are moved, not cloned. A DOCTYPE is refused by the parser alone, so the words in a comment pass. Windows source paths nest. sources() looks checkouts up once. sniff/load, is_crypto and the dependency key have one copy each.
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.
The fixes from the full codebase review: 23 reviewers, every finding checked twice (does it reproduce, is the fix right); 237 confirmed. This PR carries the code fixes of five areas, merged into one branch so their overlaps are resolved once. CI, packaging and docs are in #214; the OpenIndiana recipe goes in #215.
High-severity fixes
config::update_configfor every writer (core).git config; now only where filters matter, andgit statusruns are shared per repository (core)...,%20,#); Windowscmdquoting for Ctrl+Enter; Duplicates can no longer trash the last real copy; Enter in the search-setup URL field no longer closes the window.Also
cargo installneeds--lockeduntil candle moves (docs in Install scripts, release downloads, CI and docs put right (2.24.2) #214).SCHEME4): every user's code vectors are made once again.User-Agent: coxswain/<version>(docs/reference/privacy.md).tools::capture, one zip opener, one percent decoder, BOM/provenance error texts from core, archive endings from core, natural sort ported once.Checks (fake HOME):
cargo test --workspace --locked0 failed (core 459 passed);svelte-check0 errors;npm test20/20;npm run buildok; clippy: no new warnings (29, all on master already).Before merge:
tools/preview-check.pyon a release build (mail, EPUB, Mermaid with KaTeX, sheets changed), and the VM checks here.Follow-ups for a later PR: desktop hints via
menu::hint_in;open_defaultoff the terminal app's main thread; mail text through book's HTML reader; clippy as a CI gate;cargo fmtover the workspace (master is not rustfmt-clean).