TryGhost
OSS
Ghost
Sign in / Sign up
Open main menu
Ghost
GitHub
Overview
Runs
Analytics
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Succeeded
29044
d815234a 🎨 Improved author selection performance on sites with many staff users ref https://linear.app/ghost/issue/BER-3760/admin-is-inefficient-on-sites-with-large-numbers-of-staff - on sites with very large staff lists, Admin fetched every user up-front to populate author dropdowns — with 18k+ staff that meant 180+ API requests before the post settings menu or the posts screen were usable - extracted the tags input's paginate-on-scroll + server-side search behaviour into an abstract `GhPaginatedOptions` component: options load a page at a time when the dropdown opens, search queries the API until every option has been loaded, then switches to client-side filtering - added two components on that base: a multi-select `GhPaginatedTokenInput` and a single-select `GhPaginatedFilterSelect` - rebuilt the post settings menu authors input and the tags input on `GhPaginatedTokenInput`, so authors load a page at a time and searching queries the API across name, slug, and email - rebuilt the posts/pages screens' author and tag filters on `GhPaginatedFilterSelect`, replacing the eager all-users fetch and the bespoke tag pagination logic that lived in the posts controller; deep-linked `?author=` filters now resolve with a single by-slug lookup - consolidated the NQL search-term escaping that was duplicated across tags, labels, and resource-select searches into a shared `escapeNqlString` util
by Kevin Ansf...
K
Succeeded
29044
e1374bd4 Added round-trip tests for NQL search term escaping ref https://github.com/TryGhost/Ghost/security/code-scanning/522 - CodeQL flagged `escapeNqlString` as incomplete escaping because it doesn't escape backslashes, but that is intentional: the NQL lexer has no backslash escape (`\\` means two literal backslashes), so doubling them would corrupt any search term containing a backslash - the tests run adversarial terms (embedded/trailing backslashes, quotes, filter-injection shapes) through the real `@tryghost/nql` parser to prove quote-only escaping round-trips every term exactly and can't break out into additional filter conditions
by Kevin Ansf...
K
Succeeded
29044
e1374bd4 Added round-trip tests for NQL search term escaping ref https://github.com/TryGhost/Ghost/security/code-scanning/522 - CodeQL flagged `escapeNqlString` as incomplete escaping because it doesn't escape backslashes, but that is intentional: the NQL lexer has no backslash escape (`\\` means two literal backslashes), so doubling them would corrupt any search term containing a backslash - the tests run adversarial terms (embedded/trailing backslashes, quotes, filter-injection shapes) through the real `@tryghost/nql` parser to prove quote-only escaping round-trips every term exactly and can't break out into additional filter conditions
by Kevin Ansf...
K
Succeeded
29044
54124f44 🎨 Improved author filter performance on sites with many staff users ref https://linear.app/ghost/issue/BER-3760/admin-is-inefficient-on-sites-with-large-numbers-of-staff - visiting the posts or pages screens fetched every user up-front for the author filter dropdown, which on sites with very large staff lists meant hundreds of API requests before the screen was usable (18k+ staff = 180+ requests on every visit) - extracted the paginate-on-scroll + server-side search behaviour from the authors token input into a shared base component and added a single-select `GhPaginatedFilterSelect` on top of it, so the author filter now loads a page of authors when the dropdown opens and searches via the API - rebuilt the posts screen's tag filter on the same component, replacing the bespoke pagination logic that previously lived in the posts controller - deep-linked `?author=` filters resolve with a single by-slug lookup instead of relying on all users being loaded
by Kevin Ansf...
K
Previous page
Previous
Next
Next page