[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [2e5ef7a](https://github.com/morethanwords/tweb/commit/2e5ef7a21031343cd72a1781f975fe0cfe12f036) • _3 files, +112/-0_
Contacts: a failed contacts.getContacts no longer leaves its waiters hanging

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [4cd3c52](https://github.com/morethanwords/tweb/commit/4cd3c5281340522bd22e6e97d59bb97f220a8de8) • _4 files, +116/-34_
Top-bar search in a chat (topbarSearch.tsx createSearchLoader): the hold on the search's history key (appMessagesManager.toggleHistoryKeySubscription) was taken inside loadMore for every page, with onCleanup to release it; a page loaded on a scroll (onScrolledBottom) runs outside any reactive owner, so its onCleanup never ran and the key stayed held for good. For a cacheable search (a hashtag in my messages / public posts) the worker keeps searchesStorage[key] while held and answers the same search later from it, without messages posted since. Fix: key computed once, held once per search in the loader's owner, released on its cleanup. Round 2: createLoadableList moved out of statistics.tsx into [@helpers](https://t.me/helpers)/solid/createLoadableList (statistics re-exports it for its other importers) so topbarSearch and the regression test do not pull the statistics tab; the test uses pause.

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [6268392](https://github.com/morethanwords/tweb/commit/6268392b625b79cdfbf54e021ef43b235105116d) • _2 files, +67/-6_
Chat list search: an Escape pressed as the search opens closes it, instead of being dropped

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [bda78a9](https://github.com/morethanwords/tweb/commit/bda78a9343e570beaae4d06ec8c168b86c536a6e) • _1 files, +8/-1_
Left sidebar search (a11y layer): Escape no longer drops the keyboard focus on the document when it was left outside the search.

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [295a275](https://github.com/morethanwords/tweb/commit/295a275cb333735db230bfbdc3bce3a1900f87b0) • _2 files, +42/-22_
Composer: formatting on the whitespace a message is sent without is dropped, not moved

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [e4a3548](https://github.com/morethanwords/tweb/commit/e4a3548714f2afbc37c31b6c92604eb4c12896c2) • _2 files, +24/-4_
Composer: code indented with tabs pastes as text, not as a table ([bugs.telegram.org/c/66868](http://bugs.telegram.org/c/66868)).

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [a9c7b62](https://github.com/morethanwords/tweb/commit/a9c7b622cc66dbc82bc532283e8c2c7047c577b6) • _8 files, +105/-27_
Composer: Cmd+M is left to macOS (minimize), monospace takes Cmd+Shift+M there, as in tdesktop

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [5fa0bf4](https://github.com/morethanwords/tweb/commit/5fa0bf47b85cc905ecc4a18ffe8f2f82ab4d5081) • _2 files, +18/-3_
Chat: Ctrl+Insert copies the text selected in the chat ([bugs.telegram.org/c/63946](http://bugs.telegram.org/c/63946)).

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [a6e0855](https://github.com/morethanwords/tweb/commit/a6e08557fe17c26e01d7b01c934015e954d4049b) • _2 files, +26/-0_
Composer: a held space bar no longer slides the whole interface left in Firefox

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [8d09810](https://github.com/morethanwords/tweb/commit/8d09810e78f2f632052dc455ce92df81f091a274) • _5 files, +53/-4_
Chat: a link inside a folding quote opens instead of folding or unfolding the quote ([bugs.telegram.org/c/64903](http://bugs.telegram.org/c/64903)).

[#webk](?q=%23webk)