This summer I worked on improving the developer-friendliness of the frontend toolchain as well as fixing other miscellaneous issues. It has been a rewarding experience to work with Zulip and learn from this awesome community. Huge thanks to @tabbott and @andersk for their help and reviews on my work.
Below is a list of work I did during the summer:
-
Upgrade frontend dependencies
This series of PRs upgraded almost all frontend dependencies. A few package upgrades does not work well with our setup or have performance regressions so they are left as it.
-
draft: Fix draft list not being able to scoll to bottom. (#12558 / merged)
-
Encode brackets in URI to avoid conflict with markdown links. (#12583 / merged)
-
docs: Update and polish docs on the static asset pipeline. (#12585 / merged)
The documentation on our frontend setup was not updated through various configuration and language changes. This commit fixes the mismatch between the docs and the actual code.
-
blueslip: Make stacktrace more readable. (#12608 / open)
The existing blueslip popup does not source-map the stacktrace produced from an error, which makes it not as useful as it could be. This PR fixes that issue as well as adding a code context window to further aid debugging.
-
refactor: Convert 0/2 to "off"/"error" in eslintrc. (#12628 / merged)
-
lint: Add --fix option to ./tools/lint. (#12639 / merged)
-
webpack: Use handlebars-loader to handle frontend templates. (#12667 / merged)
- templates: Fix wrong path to edit-embedded-bot-service template. (#12706 / merged)
-
Preparation for TS migration (#12858 / open)
Adding typings to our javascript files is fairly straightforward. What took me a lot of time is figuring out how to modify our unit-testing facility to handle the different module system, in particular how to support function stubbing. The solution ended up pretty simple and requires minimal changes to the test files.
-
Migrate people.js to typescript (#12779 / open)
-
typescript: Migrate hash_util. (#12845 / open)
-
markdown: Render ordered lists using <ol> markup. (#12921 / open)
-
settings: Move API key form into its own modal. (#12989 / merged)
-
Make table-based widgets sortable. (#13017 / merged)
-
Follow-up to #13017 / settings modal enhancements (#13049 / merged)
A complete list of my PRs can be found here.
I will continue the work on TypeScript migration and other open PRs after GSoC. I will also love to contribute to the project in other areas whenever I can.