blob: 1ab9140616fb44b430123d047b03a55ad64d488b [file] [log] [blame] [view]
avm99963bf0849a2020-08-08 16:16:04 +02001# TW Power Tools
avm99963a6eedcf2020-12-08 14:08:57 +01002[![Available in the Chrome Web Store](docs/resources/ChromeWebStore_Badge_v2_206x58.png)](https://chrome.google.com/webstore/detail/infinite-scroll-in-tw/hpgakoecmgibigdbnljgecablpipbajb)
avm9996303d54092020-01-18 21:33:16 +01003
avm99963b69eb3d2020-08-20 02:03:44 +02004An extension which brings several enhancements to the Google Forums and the
5Community Console.
avm99963bf0849a2020-08-08 16:16:04 +02006
avm99963666575f2020-08-08 15:40:39 +02007## Release cycle
avm99963b69eb3d2020-08-20 02:03:44 +02008When the code in the `master` branch is considered to be stable, a release can
9be made. This is the procedure:
avm99963666575f2020-08-08 15:40:39 +020010
avm99963b69eb3d2020-08-20 02:03:44 +0200111. Tag the last commit with a version number (in the format `vx`, where x is the
12extension's [version number](https://developer.chrome.com/extensions/manifest/version)
avm999634c584882020-08-23 16:08:50 +020013for that release) by running `bash tagRelease.bash --version vx`. Note that the
14tag must be pushed to Gerrit after being created.
avm99963b69eb3d2020-08-20 02:03:44 +0200152. Build the extension for both the stable and beta channels (this is explained
16in the next section). This will output a ZIP file for each release channel and
17each supported browser.
avm999636c357302020-08-09 19:54:08 +020018
avm99963b69eb3d2020-08-20 02:03:44 +020019Afterwards, the release/build files must be submitted to the Chrome Web Store
20and addons.mozilla.org.
avm999636c357302020-08-09 19:54:08 +020021
22### Submitting to the Chrome Web Store
avm99963b69eb3d2020-08-20 02:03:44 +0200231. [Upload both release files](https://developer.chrome.com/webstore/publish#upload-your-item)
24to the Chrome Web Store, one for each release channel.
252. [Submit both releases](https://developer.chrome.com/webstore/publish#submit-your-item-for-publishing)
26to be reviewed by the Chrome Web Store team, but in the case of the stable
27channel uncheck the "Publish automatically after it has passed review" option.
283. Upload the beta release file to the
29[GitHub releases page](https://github.com/avm99963/infinitegforums/releases)
30under the newly created tag. Mark that release as a pre-release at GitHub.
avm999636c357302020-08-09 19:54:08 +0200314. Wait until the beta release is reviewed and approved by Google.
avm99963b69eb3d2020-08-20 02:03:44 +0200325. Test again the extension by using the beta channel. Check if the options have
33been transfered correctly from version to version, and wait some days (for
34instance between 3 and 5 days) to see if other people report issues with the
35updated version.
366. If everything goes well, publish the update in the stable channel. The
37updated version should have already been reviewed by the Chrome Web Store team
38at this time.
397. Update the release file in the GitHub releases page by removing the beta
40release file and uploading the stable release file. Also, remove the pre-release
41label.
avm99963666575f2020-08-08 15:40:39 +020042
avm99963b69eb3d2020-08-20 02:03:44 +020043If during this process the release wasn't approved by Google or an issue was
44found during beta testing, a new release which fixes this should be created.
avm99963666575f2020-08-08 15:40:39 +020045
avm999636c357302020-08-09 19:54:08 +020046### Submitting to addons.mozilla.org
47The procedure is similar to the one with the Chrome Web Store.
48
avm99963b69eb3d2020-08-20 02:03:44 +020049@TODO: Add more details once the first version of the extension has been
50uploaded to addons.mozilla.org.
avm999636c357302020-08-09 19:54:08 +020051
avm99963666575f2020-08-08 15:40:39 +020052## Build the extension
avm99963b69eb3d2020-08-20 02:03:44 +020053A zip file with the contents of the extension, which can be uploaded to the
54Chrome Web Store and addons.mozilla.org, can be created with any of the
avm99963e13bace2020-12-25 01:35:25 +010055following procedures (make sure to [install Go](https://golang.org) before
56building the extension, as it is needed during the build):
avm9996303d54092020-01-18 21:33:16 +010057
avm999636c357302020-08-09 19:54:08 +020058### Using the release.bash script
avm99963b69eb3d2020-08-20 02:03:44 +020059Run `bash release.bash -h` in order to learn how to use this command. To
60summarize, the command accepts the `--channel` and `--browser` flags (or their
61short versions `-c` and `-b`).
avm99963666575f2020-08-08 15:40:39 +020062
avm99963b69eb3d2020-08-20 02:03:44 +020063As an example, if you wanted to create a ZIP file of the beta-branded extension
64targeted for Firefox, you would run `bash release.bash -c beta -b gecko`.
avm999636c357302020-08-09 19:54:08 +020065
66### Using make
avm99963b69eb3d2020-08-20 02:03:44 +020067You can also use _make_ to build the extension. This is just a wrapper for the
68`release.bash` command.
avm999636c357302020-08-09 19:54:08 +020069
avm99963b69eb3d2020-08-20 02:03:44 +020070Run `make all` to build the extension for all the available channels and
71browsers. You can also run `make {target}` where `{target}` is one of the
avm99963bbc88c62020-12-25 03:44:41 +010072following: `chromium-stable`, `chromium-beta`, `chromium-mv3-beta`,
73`gecko-stable`.
avm999636c357302020-08-09 19:54:08 +020074
avm99963b69eb3d2020-08-20 02:03:44 +020075Run `make clean` to clean all the release files (this removes the `out` folder,
76which is where the release files are saved).
avm9996303d54092020-01-18 21:33:16 +010077
Alex Ivanov4f3df182020-04-10 09:33:05 +030078## Testing notes
avm99963b69eb3d2020-08-20 02:03:44 +020079When testing the extension during development, you don't have to build the
80extension each time you want to import an updated version to Chrome/Firefox.
avm99963e13bace2020-12-25 01:35:25 +010081Instead, run `go run generateManifest.go {browser}` once, where `{browser}` is
avm99963bbc88c62020-12-25 03:44:41 +010082`CHROMIUM`, `GECKO` or `CHROMIUM_MV3`, and this will generate a `manifest.json`
83file for the specified browser in the `src` directory. Now, you can load the
84`src` folder directly in the browser in order to import the extension, which
85removes the need to build it. When the `manifest.gjson` file is modified,
86you'll have to generate the manifest again.
avm999636c357302020-08-09 19:54:08 +020087
avm99963b69eb3d2020-08-20 02:03:44 +020088To test translations, you might want to set your browser's locale. This section
89tells you how to set the locale in
90[Windows](https://developer.chrome.com/extensions/i18n#testing-win),
91[Mac OS X](https://developer.chrome.com/extensions/i18n#testing-mac),
92[Linux](https://developer.chrome.com/extensions/i18n#testing-linux),
93and [Chrome OS](https://developer.chrome.com/extensions/i18n#testing-chromeos).
avm99963666575f2020-08-08 15:40:39 +020094
95## Beta channel
avm99963b69eb3d2020-08-20 02:03:44 +020096The beta channel for Chrome is available
97[here](https://chrome.google.com/webstore/detail/infinite-scroll-in-tw-bet/memmklnkkhifmflmidnflfcdepamljef).