[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [038640c](https://github.com/morethanwords/tweb/commit/038640c96fd6320854b52a41374a80323e6cea92) • _3 files, +26/-12_
Build: its test run goes first in the machine's test queue, and a wait for its turn shows

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [030f1d7](https://github.com/morethanwords/tweb/commit/030f1d72a46139340ef1b2f3075f2305033f78bc) • _246 files, +2534/-2232_
Imports: components, popups and tabs read the app's top level from a registry instead of importing it, and an edit reruns far fewer tests

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [1472d25](https://github.com/morethanwords/tweb/commit/1472d258af32a5a290233556f0f8fcebdbf6206e) • _71 files, +4751/-85_
Dev server: a hot update keeps what a module made, and most edits update the page in place instead of reloading it

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [669e0f7](https://github.com/morethanwords/tweb/commit/669e0f759d373c727cbc60be7011049e3e88c284) • _18 files, +85/-6_
Popup sandbox: open over the app, it reloads for an edit of a story only, and an edit of a popup stays hot

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [e43481a](https://github.com/morethanwords/tweb/commit/e43481afbc721e52e9383aa7f2d1615cf9ffeb35) • _4 files, +842/-0_
Import graph: a tool that shows what an edit reloads and how many tests it reruns, and a budget that keeps both from growing

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [84eefa0](https://github.com/morethanwords/tweb/commit/84eefa0c9168220d2c975f8ab0e38a60329163de) • _37 files, +1135/-295_
Profile: a sender's avatar opens their profile in a popup, and the profile gets action buttons

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [f3ff8a2](https://github.com/morethanwords/tweb/commit/f3ff8a24164e615860a2c40cd5a6e068e913a61f) • _5 files, +42/-3_
Memory: a redrawn media bubble, a shown ad and a left chat no longer stay in memory

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [a77c9c1](https://github.com/morethanwords/tweb/commit/a77c9c1aac9a8d49142848bc269e634567805ca0) • _39 files, +1595/-87_
Member tags: anyone in a group can wear a short tag by their name, shown in messages and set from a popup

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [49a6756](https://github.com/morethanwords/tweb/commit/49a6756f43adb4e8058edadb06cb2a75ad9b6513) • _30 files, +237/-92_
Tests: the sandbox suites run on the app as a bundle, about twice as fast

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [96fb5fb](https://github.com/morethanwords/tweb/commit/96fb5fb7cda97d21aaa0a9018f87a65b15dd09a4) • _7 files, +45/-12_
Tests: each suite's server takes a port of its checkout's own, so the suites of different worktrees run side by side

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [4e60b47](https://github.com/morethanwords/tweb/commit/4e60b477384333b3bfde9b678861ad6b250a247b) • _41 files, +1112/-350_
Animations: an idle chat, a chat switch, scrolling and menus cost the main thread up to 90% less

[morethanwords/tweb/master](https://github.com/morethanwords/tweb/tree/master) • [bc569b6](https://github.com/morethanwords/tweb/commit/bc569b60211e2f53125387e676c47ceb31d799bd) • _12 files, +834/-86_
Chat opening: a big channel opened at its end shows its posts in a third of the time

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