richard pushed to branch main at The Tor Project / Applications / tor-browser-build

Commits:

4 changed files:

Changes:

  • .gitlab/issue_templates/Release Prep - Mullvad Browser Alpha.md
    ... ... @@ -27,172 +27,178 @@
    27 27
     </details>
    
    28 28
     
    
    29 29
     **NOTE** It is assumed that the `tor-browser` alpha rebase and security backport tasks have been completed
    
    30
    +
    
    30 31
     **NOTE** This can/is often done in conjunction with the equivalent Tor Browser release prep issue
    
    31 32
     
    
    32 33
     <details>
    
    33 34
       <summary>Building</summary>
    
    34 35
     
    
    35
    -  ### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
    
    36
    -  Mullvad Browser Alpha (and Nightly) are on the `main` branch
    
    37
    -
    
    38
    -  - [ ] Update `rbm.conf`
    
    39
    -    - [ ] `var/torbrowser_version` : update to next version
    
    40
    -    - [ ] `var/torbrowser_build` : update to `$(MULLVAD_BROWSER_BUILD_N)`
    
    41
    -    - [ ] `var/torbrowser_incremental_from` : update to previous Desktop version
    
    42
    -      - **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
    
    43
    -      - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make mullvadbrowser-incrementals-*` step will fail
    
    44
    -  - [ ] Update build configs
    
    45
    -    - [ ] Update `projects/firefox/config`
    
    46
    -      - [ ] `browser_build` : update to match `mullvad-browser` tag
    
    47
    -      - [ ] ***(Optional)*** `var/firefox_platform_version` : update to latest `$(ESR_VERSION)` if rebased
    
    48
    -    - [ ] Update `projects/translation/config`:
    
    49
    -      - [ ] run `make list_translation_updates-alpha` to get updated hashes
    
    50
    -      - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    51
    -      - [ ] `steps/mullvad-browser/git_hash` : update with `HEAD` commit of project's `mullvad-browser` branch
    
    52
    -  - [ ] Update common build configs
    
    53
    -    - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
    
    54
    -      - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
    
    55
    -        - [ ] `URL`
    
    56
    -        - [ ] `sha256sum`
    
    57
    -    - [ ] Check for uBlock-origin updates here : https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
    
    58
    -      - [ ] ***(Optional)*** If new version available, update `ublock-origin` section of `input_files` in `projects/browser/config`
    
    59
    -        - [ ] `URL`
    
    60
    -        - [ ] `sha256sum`
    
    61
    -    - [ ] Check for Mullvad Privacy Companion updates here : https://github.com/mullvad/browser-extension/releases
    
    62
    -      - [ ] ***(Optional)*** If new version available, update `mullvad-extension` section of `input_files` in `projects/browser/config`
    
    63
    -        - [ ] `URL`
    
    64
    -        - [ ] `sha256sum`
    
    65
    -    - [ ] Update `ChangeLog-MB.txt`
    
    66
    -      - [ ] Ensure `ChangeLog-MB.txt` is sync'd between alpha and stable branches
    
    67
    -      - [ ] Check the linked issues: ask people to check if any are missing, remove the not fixed ones
    
    68
    -      - [ ] Run `tools/fetch-changelogs.py $(ISSUE_NUMBER) --date $date $updateArgs`
    
    69
    -        - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
    
    70
    -        - The first time you run this script you will need to generate an access token; the script will guide you
    
    71
    -        - `$updateArgs` should be these arguments, depending on what you actually updated:
    
    72
    -          - [ ] `--firefox`
    
    73
    -          - [ ] `--no-script`
    
    74
    -          - [ ] `--ublock`
    
    75
    -          - E.g., `tools/fetch-changelogs.py 41029 --date 'December 19 2023' --firefox 115.6.0esr --no-script 11.4.29 --ublock 1.54.0`
    
    76
    -        - `--date $date` is optional, if omitted it will be the date on which you run the command
    
    77
    -      - [ ] Copy the output of the script to the beginning of `ChangeLog-MB.txt` and adjust its output
    
    78
    -  - [ ] Open MR with above changes, using the template for release preparations
    
    79
    -  - [ ] Merge
    
    80
    -  - [ ] Sign+Tag
    
    81
    -    - **NOTE** this must be done by one of:
    
    82
    -      - boklm
    
    83
    -      - dan
    
    84
    -      - ma1
    
    85
    -      - pierov
    
    86
    -      - richard
    
    87
    -    - [ ] Run: `make mullvadbrowser-signtag-alpha`
    
    88
    -    - [ ] Push tag to `upstream`
    
    89
    -  - [ ] Build the tag on at least one of:
    
    90
    -    - Run `make mullvadbrowser-alpha && make mullvadbrowser-incrementals-alpha`
    
    36
    +### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
    
    37
    +Mullvad Browser Alpha (and Nightly) are on the `main` branch
    
    38
    +
    
    39
    +- [ ] Update `rbm.conf`
    
    40
    +  - [ ] `var/torbrowser_version` : update to next version
    
    41
    +  - [ ] `var/torbrowser_build` : update to `$(MULLVAD_BROWSER_BUILD_N)`
    
    42
    +  - [ ] `var/torbrowser_incremental_from` : update to previous Desktop version
    
    43
    +    - **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
    
    44
    +    - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make mullvadbrowser-incrementals-*` step will fail
    
    45
    +- [ ] Update build configs
    
    46
    +  - [ ] Update `projects/firefox/config`
    
    47
    +    - [ ] `browser_build` : update to match `mullvad-browser` tag
    
    48
    +    - [ ] ***(Optional)*** `var/firefox_platform_version` : update to latest `$(ESR_VERSION)` if rebased
    
    49
    +  - [ ] Update `projects/translation/config`:
    
    50
    +    - [ ] run `make list_translation_updates-alpha` to get updated hashes
    
    51
    +    - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    52
    +    - [ ] `steps/mullvad-browser/git_hash` : update with `HEAD` commit of project's `mullvad-browser` branch
    
    53
    +- [ ] Update common build configs
    
    54
    +  - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
    
    55
    +    - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
    
    56
    +      - [ ] `URL`
    
    57
    +      - [ ] `sha256sum`
    
    58
    +  - [ ] Check for uBlock-origin updates here : https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/
    
    59
    +    - [ ] ***(Optional)*** If new version available, update `ublock-origin` section of `input_files` in `projects/browser/config`
    
    60
    +      - [ ] `URL`
    
    61
    +      - [ ] `sha256sum`
    
    62
    +  - [ ] Check for Mullvad Browser Extension updates here : https://github.com/mullvad/browser-extension/releases
    
    63
    +    - [ ] ***(Optional)*** If new version available, update `mullvad-extension` section of `input_files` in `projects/browser/config`
    
    64
    +      - [ ] `URL`
    
    65
    +      - [ ] `sha256sum`
    
    66
    +- [ ] Update `ChangeLog-MB.txt`
    
    67
    +  - [ ] Ensure `ChangeLog-MB.txt` is sync'd between alpha and stable branches
    
    68
    +  - [ ] Check the linked issues: ask people to check if any are missing, remove the not fixed ones
    
    69
    +  - [ ] Run `tools/fetch-changelogs.py $(ISSUE_NUMBER) --date $date $updateArgs`
    
    70
    +    - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
    
    71
    +    - The first time you run this script you will need to generate an access token; the script will guide you
    
    72
    +    - `$updateArgs` should be these arguments, depending on what you actually updated:
    
    73
    +      - [ ] `--firefox` (be sure to include esr at the end if needed, which is usually the case)
    
    74
    +      - [ ] `--no-script`
    
    75
    +      - [ ] `--ublock`
    
    76
    +      - E.g., `tools/fetch-changelogs.py 41029 --date 'December 19 2023' --firefox 115.6.0esr --no-script 11.4.29 --ublock 1.54.0`
    
    77
    +    - `--date $date` is optional, if omitted it will be the date on which you run the command
    
    78
    +  - [ ] Copy the output of the script to the beginning of `ChangeLog-MB.txt` and adjust its output
    
    79
    +- [ ] Open MR with above changes, using the template for release preparations
    
    80
    +- [ ] Merge
    
    81
    +- [ ] Sign+Tag
    
    82
    +  - **NOTE** this must be done by one of:
    
    83
    +    - boklm
    
    84
    +    - dan
    
    85
    +    - ma1
    
    86
    +    - pierov
    
    87
    +    - richard
    
    88
    +  - [ ] Run: `make mullvadbrowser-signtag-alpha`
    
    89
    +  - [ ] Push tag to `upstream`
    
    90
    +- [ ] Build the tag:
    
    91
    +  - Run `make mullvadbrowser-alpha && make mullvadbrowser-incrementals-alpha` on:
    
    91 92
         - [ ] Tor Project build machine
    
    92 93
         - [ ] Local developer machine
    
    93 94
       - [ ] Submit build request to Mullvad infrastructure:
    
    94 95
         - **NOTE** this requires a devmole authentication token
    
    95 96
         - Run `make mullvadbrowser-kick-devmole-build`
    
    96
    -  - [ ] Ensure builders have matching builds
    
    97
    +- [ ] Ensure builders have matching builds
    
    97 98
     
    
    98 99
     </details>
    
    99 100
     
    
    100 101
     <details>
    
    101 102
       <summary>Signing</summary>
    
    102 103
     
    
    103
    -  ### signing
    
    104
    -  - [ ] Assign this issue to the signer, one of:
    
    105
    -    - boklm
    
    106
    -    - richard
    
    107
    -  - [ ] On `$(STAGING_SERVER)`, ensure updated:
    
    108
    -    - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
    
    109
    -      - `ssh_host_builder` : ssh hostname of machine with unsigned builds
    
    110
    -        - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
    
    111
    -      - `ssh_host_linux_signer` : ssh hostname of linux signing machine
    
    112
    -    - [ ] `tor-browser-build/tools/signing/set-config.rcodesign-appstoreconnect`
    
    113
    -      - `appstoreconnect_api_key_path` : path to json file containing appstoreconnect api key infos
    
    114
    -    - [ ] `set-config.update-responses`
    
    115
    -      - `update_responses_repository_dir` : directory where you cloned `git@gitlab.torproject.org:tpo/applications/mullvad-browser-update-responses.git`
    
    116
    -    - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
    
    117
    -      - `tbb_version` : mullvad browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
    
    118
    -      - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
    
    119
    -      - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
    
    120
    -  - [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
    
    121
    -  - [ ] run do-all-signing script:
    
    122
    -      - `cd tor-browser-build/tools/signing/`
    
    123
    -      - `./do-all-signing.mullvadbrowser`
    
    124
    -  - **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
    
    125
    -  - [ ] Update `staticiforme.torproject.org`:
    
    126
    -    - From `screen` session on `staticiforme.torproject.org`:
    
    127
    -    - [ ] Static update components : `static-update-component dist.torproject.org`
    
    128
    -    - [ ] Remove old release data from `/srv/dist-master.torproject.org/htdocs/mullvadbrowser`
    
    129
    -    - [ ] Static update components (again) : `static-update-component dist.torproject.org`
    
    104
    +### release signing
    
    105
    +- [ ] Assign this issue to the signer, one of:
    
    106
    +  - boklm
    
    107
    +  - richard
    
    108
    +- [ ] On `$(STAGING_SERVER)`, ensure updated:
    
    109
    +  - [ ] `tor-browser-build` is on the right commit: `git tag -v tbb-$(MULLVAD_BROWSER_VERSION)-$(MULLVAD_BROWSER_BUILD_N) && git checkout tbb-$(MULLVAD_BROWSER_VERSION)-$(MULLVAD_BROWSER_BUILD_N)`
    
    110
    +  - [ ] `tor-browser-build/tools/signing/set-config.hosts`
    
    111
    +    - `ssh_host_builder` : ssh hostname of machine with unsigned builds
    
    112
    +      - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
    
    113
    +    - `ssh_host_linux_signer` : ssh hostname of linux signing machine
    
    114
    +  - [ ] `tor-browser-build/tools/signing/set-config.rcodesign-appstoreconnect`
    
    115
    +    - `appstoreconnect_api_key_path` : path to json file containing appstoreconnect api key infos
    
    116
    +  - [ ] `set-config.update-responses`
    
    117
    +    - `update_responses_repository_dir` : directory where you cloned `git@gitlab.torproject.org:tpo/applications/mullvad-browser-update-responses.git`
    
    118
    +  - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
    
    119
    +    - `tbb_version` : mullvad browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
    
    120
    +    - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
    
    121
    +    - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
    
    122
    +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
    
    123
    +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, run do-all-signing script:
    
    124
    +  - `cd tor-browser-build/tools/signing/`
    
    125
    +  - `./do-all-signing.mullvadbrowser`
    
    126
    +- **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
    
    127
    +- [ ] Update `staticiforme.torproject.org`:
    
    128
    +  - From `screen` session on `staticiforme.torproject.org`:
    
    129
    +  - [ ] Remove old release data from `/srv/dist-master.torproject.org/htdocs/mullvadbrowser`
    
    130
    +  - [ ] Static update components (again) : `static-update-component dist.torproject.org`
    
    130 131
     
    
    131 132
     </details>
    
    132 133
     
    
    133 134
     <details>
    
    134 135
       <summary>Publishing</summary>
    
    135 136
     
    
    136
    -  ### mullvad-browser (github): https://github.com/mullvad/mullvad-browser/
    
    137
    -  - [ ] Assign this issue to someone with mullvad commit access, one of:
    
    137
    +### mullvad-browser (GitHub): https://github.com/mullvad/mullvad-browser/
    
    138
    +- [ ] Assign this issue to someone with mullvad commit access, one of:
    
    138 139
         - richard
    
    139
    -  - [ ] Push this release's associated `mullvad-browser.git` branch to github
    
    140
    -  - [ ] Push this release's associated tags to github:
    
    141
    -    - [ ] Firefox ESR tag
    
    142
    -      - **example** : `FIREFOX_102_12_0esr_BUILD1,`
    
    143
    -    - [ ] `base-browser` tag
    
    144
    -      - **example** : `base-browser-102.12.0esr-12.0-1-build1`
    
    145
    -    - [ ] `mullvad-browser` tag
    
    146
    -      - **example** : `mullvad-browser-102.12.0esr-12.0-1-build1`
    
    147
    -  - [ ] Sign+Tag additionally the `mullvad-browser.git` `firefox` commit used in build:
    
    148
    -    - **Tag**: `$(MULLVAD_BROWSER_VERSION)`
    
    149
    -      - **example** : `12.5a7`
    
    150
    -    - **Message**: `$(ESR_VERSION)esr-based $(MULLVAD_BROWSER_VERSION)`
    
    151
    -      - **example** : `102.12.0esr-based 12.5a7`
    
    152
    -    - [ ] Push tag to github
    
    153
    -
    
    154
    -  ### email
    
    155
    -  - [ ] Email Mullvad with release information: support@mullvad.net, rui@mullvad.net
    
    156
    -    <details>
    
    157
    -      <summary>email template</summary>
    
    158
    -
    
    159
    -        Subject:
    
    160
    -        New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (signed)
    
    161
    -
    
    162
    -        Body:
    
    163
    -        signed builds: https://dist.torproject.org/mullvadbrowser/$(MULLVAD_BROWSER_VERSION)
    
    164
    -
    
    165
    -        update_response hashes: $(MULLVAD_UPDATE_RESPONSES_HASH)
    
    166
    -
    
    167
    -        changelog:
    
    168
    -        ...
    
    169
    -
    
    170
    -    </details>
    
    140
    +- [ ] Push this release's associated `mullvad-browser.git` branch to github
    
    141
    +- [ ] Push this release's associated tags to github:
    
    142
    +  - [ ] Firefox ESR tag
    
    143
    +    - **example** : `FIREFOX_102_12_0esr_BUILD1`
    
    144
    +  - [ ] `base-browser` tag
    
    145
    +    - **example** : `base-browser-102.12.0esr-12.0-1-build1`
    
    146
    +  - [ ] `mullvad-browser` tag
    
    147
    +    - **example** : `mullvad-browser-102.12.0esr-12.0-1-build1`
    
    148
    +- [ ] Sign+Tag additionally the `mullvad-browser.git` `firefox` commit used in build:
    
    149
    +  - **Tag**: `$(MULLVAD_BROWSER_VERSION)`
    
    150
    +    - **example** : `12.5a7`
    
    151
    +  - **Message**: `$(ESR_VERSION)esr-based $(MULLVAD_BROWSER_VERSION)`
    
    152
    +    - **example** : `102.12.0esr-based 12.5a7`
    
    153
    +  - [ ] Push tag to github
    
    154
    +
    
    155
    +### email
    
    156
    +- [ ] **(Once branch+tags pushed to GitHub)** Email Mullvad with release information:
    
    157
    +  - [ ] support alias: support@mullvadvpn.net
    
    158
    +  - [ ] Rui: rui@mullvad.net
    
    159
    +  - **Subject**
    
    160
    +    ```
    
    161
    +    New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (signed)
    
    162
    +    ```
    
    163
    +  - **Body**
    
    164
    +    ```
    
    165
    +    Hello,
    
    166
    +
    
    167
    +    Branch+Tags have been pushed to Mullvad's GitHub repo.
    
    168
    +
    
    169
    +    - signed builds: https://dist.torproject.org/mullvadbrowser/$(MULLVAD_BROWSER_VERSION)
    
    170
    +    - update_response hashes: $(MULLVAD_UPDATE_RESPONSES_HASH)
    
    171
    +
    
    172
    +    changelog:
    
    173
    +    ...
    
    174
    +    ```
    
    175
    +
    
    171 176
     </details>
    
    172 177
     
    
    173 178
     <details>
    
    174 179
       <summary>Downstream</summary>
    
    175 180
     
    
    176
    -  ### notify packagers
    
    177
    -
    
    178
    -  - [ ] **(Optional, Once Mullvad Updates their Github Releases Page)** Email downstream consumers:
    
    179
    -    - **NOTE**: This is an optional step and only necessary close a major release/transition from alpha to stable, or if there are major packing changes these developers need to be aware of
    
    180
    -    <details>
    
    181
    -      <summary>email template</summary>
    
    182
    -
    
    183
    -        Hello!
    
    184
    -
    
    185
    -        Mullvad-Browser $(MULLVAD_BROWSER_VERSION) packages are available, so you should all update your respective downstream packages.
    
    186
    -
    
    187
    -        Release builds can be found here:
    
    188
    -
    
    189
    -        - https://github.com/mullvad/mullvad-browser/releases/tag/$(MULLVAD_BROWSER_VERSION)
    
    190
    -
    
    191
    -    </details>
    
    192
    -
    
    193
    -    - flathub package maintainer: proletarius101@protonmail.com
    
    194
    -    - arch package maintainer: bootctl@gmail.com
    
    195
    -    - nixOS package maintainer: dev@felschr.com
    
    181
    +### notify packagers
    
    182
    +These steps depend on Mullvad having updated their [GitHub Releases](https://github.com/mullvad/mullvad-browser/releases/) page with the latest release
    
    183
    +- [ ] **(Optional)** Email downstream consumers:
    
    184
    +  - **NOTE**: This is an optional step and only necessary close a major release/transition from alpha to stable, or if there are major packing changes these developers need to be aware of
    
    185
    +  - [ ] flathub package maintainer: proletarius101@protonmail.com
    
    186
    +  - [ ] arch package maintainer: bootctl@gmail.com
    
    187
    +  - [ ] nixOS package maintainer: dev@felschr.com
    
    188
    +  - **Subject**
    
    189
    +    ```
    
    190
    +    Mullvad Browser $(MULLVAD_BROWSER_VERSION) released
    
    191
    +    ```
    
    192
    +  - **Body**
    
    193
    +    ```
    
    194
    +    Hello!
    
    195
    +
    
    196
    +    This is a major alpha release which may require changes in your respective downstream packages once it stabilises.
    
    197
    +
    
    198
    +    The latest alpha builds can be found here:
    
    199
    +
    
    200
    +    - https://github.com/mullvad/mullvad-browser/releases?q=prerelease%3Atrue
    
    201
    +    ```
    
    196 202
     
    
    197 203
     </details>
    
    198 204
     
    

  • .gitlab/issue_templates/Release Prep - Mullvad Browser Stable.md
    ... ... @@ -28,6 +28,8 @@
    28 28
     
    
    29 29
     **NOTE** It is assumed that the `tor-browser` stable rebase and security backport tasks have been completed
    
    30 30
     
    
    31
    +**NOTE** This can/is often done in conjunction with the equivalent Tor Browser release prep issue
    
    32
    +
    
    31 33
     <details>
    
    32 34
       <summary>Building</summary>
    
    33 35
     
    
    ... ... @@ -38,6 +40,7 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    38 40
       - [ ] `var/torbrowser_version` : update to next version
    
    39 41
       - [ ] `var/torbrowser_build` : update to `$(MULLVAD_BROWSER_BUILD_N)`
    
    40 42
       - [ ] `var/torbrowser_incremental_from` : update to previous Desktop version
    
    43
    +    - **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
    
    41 44
         - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make mullvadbrowser-incrementals-*` step will fail
    
    42 45
     - [ ] Update build configs
    
    43 46
       - [ ] Update `projects/firefox/config`
    
    ... ... @@ -46,7 +49,7 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    46 49
       - [ ] Update `projects/translation/config`:
    
    47 50
         - [ ] run `make list_translation_updates-release` to get updated hashes
    
    48 51
         - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    49
    -    - [ ] `steps/base-browser-fluent/git_hash` : update with `HEAD` commit of project's `basebrowser-newidentityftl` branch
    
    52
    +    - [ ] `steps/mullvad-browser/git_hash` : update with `HEAD` commit of project's `mullvad-browser` branch
    
    50 53
     - [ ] Update common build configs
    
    51 54
       - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
    
    52 55
         - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
    
    ... ... @@ -56,7 +59,7 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    56 59
         - [ ] ***(Optional)*** If new version available, update `ublock-origin` section of `input_files` in `projects/browser/config`
    
    57 60
           - [ ] `URL`
    
    58 61
           - [ ] `sha256sum`
    
    59
    -  - [ ] Check for Mullvad Privacy Companion updates here : https://github.com/mullvad/browser-extension/releases
    
    62
    +  - [ ] Check for Mullvad Browser Extension updates here : https://github.com/mullvad/browser-extension/releases
    
    60 63
         - [ ] ***(Optional)*** If new version available, update `mullvad-extension` section of `input_files` in `projects/browser/config`
    
    61 64
           - [ ] `URL`
    
    62 65
           - [ ] `sha256sum`
    
    ... ... @@ -67,39 +70,43 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    67 70
         - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
    
    68 71
         - The first time you run this script you will need to generate an access token; the script will guide you
    
    69 72
         - `$updateArgs` should be these arguments, depending on what you actually updated:
    
    70
    -      - [ ] `--firefox`
    
    73
    +      - [ ] `--firefox` (be sure to include esr at the end if needed, which is usually the case)
    
    71 74
           - [ ] `--no-script`
    
    72 75
           - [ ] `--ublock`
    
    73 76
           - E.g., `tools/fetch-changelogs.py 41029 --date 'December 19 2023' --firefox 115.6.0esr --no-script 11.4.29 --ublock 1.54.0`
    
    74 77
         - `--date $date` is optional, if omitted it will be the date on which you run the command
    
    75 78
       - [ ] Copy the output of the script to the beginning of `ChangeLog-MB.txt` and adjust its output
    
    76
    -  - [ ] Open MR with above changes, using the template for release preparations
    
    77
    -  - [ ] Merge
    
    78
    -  - [ ] Sign+Tag
    
    79
    -    - **NOTE** this must be done by one of:
    
    80
    -      - boklm
    
    81
    -      - dan
    
    82
    -      - ma1
    
    83
    -      - pierov
    
    84
    -      - richard
    
    85
    -    - [ ] Run: `make mullvadbrowser-signtag-release`
    
    86
    -    - [ ] Push tag to `upstream`
    
    87
    -  - [ ] Build on at least one of:
    
    88
    -    - Run `make mullvadbrowser-release && make mullvadbrowser-incrementals-release`
    
    79
    +- [ ] Open MR with above changes, using the template for release preparations
    
    80
    +- [ ] Merge
    
    81
    +- [ ] Sign+Tag
    
    82
    +  - **NOTE** this must be done by one of:
    
    83
    +    - boklm
    
    84
    +    - dan
    
    85
    +    - ma1
    
    86
    +    - pierov
    
    87
    +    - richard
    
    88
    +  - [ ] Run: `make mullvadbrowser-signtag-release`
    
    89
    +  - [ ] Push tag to `upstream`
    
    90
    +- [ ] Build the tag:
    
    91
    +  - Run `make mullvadbrowser-release && make mullvadbrowser-incrementals-release`
    
    89 92
         - [ ] Tor Project build machine
    
    90 93
         - [ ] Local developer machine
    
    91 94
       - [ ] Submit build request to Mullvad infrastructure:
    
    92 95
         - **NOTE** this requires a devmole authentication token
    
    93 96
         - Run `make mullvadbrowser-kick-devmole-build`
    
    94
    -  - [ ] Ensure builders have matching builds
    
    97
    +- [ ] Ensure builders have matching builds
    
    95 98
     
    
    96 99
     </details>
    
    97 100
     
    
    98 101
     <details>
    
    99 102
       <summary>Signing</summary>
    
    100 103
     
    
    101
    -### signing
    
    104
    +### release signing
    
    105
    +- [ ] Assign this issue to the signer, one of:
    
    106
    +  - boklm
    
    107
    +  - richard
    
    102 108
     - [ ] On `$(STAGING_SERVER)`, ensure updated:
    
    109
    +  - [ ] `tor-browser-build` is on the right commit: `git tag -v tbb-$(MULLVAD_BROWSER_VERSION)-$(MULLVAD_BROWSER_BUILD_N) && git checkout tbb-$(MULLVAD_BROWSER_VERSION)-$(MULLVAD_BROWSER_BUILD_N)`
    
    103 110
       - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
    
    104 111
         - `ssh_host_builder` : ssh hostname of machine with unsigned builds
    
    105 112
           - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
    
    ... ... @@ -113,13 +120,12 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    113 120
         - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
    
    114 121
         - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
    
    115 122
     - [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
    
    116
    -- [ ] run do-all-signing script:
    
    117
    -    - `cd tor-browser-build/tools/signing/`
    
    118
    -    - `./do-all-signing.mullvadbrowser`
    
    123
    +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, run do-all-signing script:
    
    124
    +  - `cd tor-browser-build/tools/signing/`
    
    125
    +  - `./do-all-signing.mullvadbrowser`
    
    119 126
     - **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
    
    120 127
     - [ ] Update `staticiforme.torproject.org`:
    
    121 128
       - From `screen` session on `staticiforme.torproject.org`:
    
    122
    -  - [ ] Static update components : `static-update-component dist.torproject.org`
    
    123 129
       - [ ] Remove old release data from `/srv/dist-master.torproject.org/htdocs/mullvadbrowser`
    
    124 130
       - [ ] Static update components (again) : `static-update-component dist.torproject.org`
    
    125 131
     
    
    ... ... @@ -128,30 +134,13 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    128 134
     <details>
    
    129 135
       <summary>Publishing</summary>
    
    130 136
     
    
    131
    -### email
    
    132
    -
    
    133
    -- [ ] Email Mullvad with release information: support@mullvad.net, rui@mullvad.net
    
    134
    -  <details>
    
    135
    -    <summary>email template</summary>
    
    136
    -
    
    137
    -      Subject:
    
    138
    -      New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (signed)
    
    139
    -
    
    140
    -      Body:
    
    141
    -      signed builds: https://dist.torproject.org/mullvadbrowser/$(MULLVAD_BROWSER_VERSION)
    
    142
    -
    
    143
    -      update_response hashes: $(MULLVAD_UPDATE_RESPONSES_HASH)
    
    144
    -
    
    145
    -      changelog:
    
    146
    -      ...
    
    147
    -
    
    148
    -  </details>
    
    149
    -
    
    150
    -### mullvad-browser (github): https://github.com/mullvad/mullvad-browser/
    
    137
    +### mullvad-browser (GitHub): https://github.com/mullvad/mullvad-browser/
    
    138
    +- [ ] Assign this issue to someone with mullvad commit access, one of:
    
    139
    +    - richard
    
    151 140
     - [ ] Push this release's associated `mullvad-browser.git` branch to github
    
    152 141
     - [ ] Push this release's associated tags to github:
    
    153 142
       - [ ] Firefox ESR tag
    
    154
    -    - **example** : `FIREFOX_102_12_0esr_BUILD1,`
    
    143
    +    - **example** : `FIREFOX_102_12_0esr_BUILD1`
    
    155 144
       - [ ] `base-browser` tag
    
    156 145
         - **example** : `base-browser-102.12.0esr-12.0-1-build1`
    
    157 146
       - [ ] `mullvad-browser` tag
    
    ... ... @@ -163,32 +152,59 @@ Mullvad Browser Stable lives in the various `maint-$(MULLVAD_BROWSER_MAJOR).$(MU
    163 152
         - **example** : `102.12.0esr-based 12.0.7`
    
    164 153
       - [ ] Push tag to github
    
    165 154
     
    
    155
    +### email
    
    156
    +- [ ] **(Once branch+tags pushed to GitHub)** Email Mullvad with release information:
    
    157
    +  - [ ] support alias: support@mullvadvpn.net
    
    158
    +  - [ ] Rui: rui@mullvad.net
    
    159
    +  - **Subject**
    
    160
    +    ```
    
    161
    +    New build: Mullvad Browser $(MULLVAD_BROWSER_VERION) (signed)
    
    162
    +    ```
    
    163
    +  - **Body**
    
    164
    +    ```
    
    165
    +    Hello,
    
    166
    +
    
    167
    +    Branch+Tags have been pushed to Mullvad's GitHub repo.
    
    168
    +
    
    169
    +    - signed builds: https://dist.torproject.org/mullvadbrowser/$(MULLVAD_BROWSER_VERSION)
    
    170
    +    - update_response hashes: $(MULLVAD_UPDATE_RESPONSES_HASH)
    
    171
    +
    
    172
    +    changelog:
    
    173
    +    ...
    
    174
    +    ```
    
    175
    +
    
    166 176
     </details>
    
    167 177
     
    
    168 178
     <details>
    
    169 179
       <summary>Downstream</summary>
    
    170 180
     
    
    171 181
     ### notify packagers
    
    172
    -
    
    173
    -- [ ] **(Once Mullvad Updates their Github Releases Page)** Email downstream consumers:
    
    174
    -  <details>
    
    175
    -    <summary>email template</summary>
    
    176
    -
    
    177
    -    ...
    
    178
    -
    
    179
    -    ...
    
    180
    -
    
    181
    -  </details>
    
    182
    -
    
    182
    +These steps depend on Mullvad having updated their [GitHub Releases](https://github.com/mullvad/mullvad-browser/releases/) page with the latest release
    
    183
    +- [ ] Email downstream consumers:
    
    183 184
       - [ ] flathub package maintainer: proletarius101@protonmail.com
    
    184 185
       - [ ] arch package maintainer: bootctl@gmail.com
    
    185 186
       - [ ] nixOS package maintainer: dev@felschr.com
    
    187
    +  - **Subject**
    
    188
    +    ```
    
    189
    +    Mullvad Browser $(MULLVAD_BROWSER_VERSION) released
    
    190
    +    ```
    
    191
    +  - **Body**
    
    192
    +    ```
    
    193
    +    Hello!
    
    186 194
     
    
    187
    -### merge requests
    
    195
    +    Mullvad-Browser packages are available, so you should update your respective downstream packages.
    
    196
    +
    
    197
    +    The latest release builds can be found here:
    
    188 198
     
    
    189
    -- [ ] homebrew: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/mullvad-browser.rb
    
    190
    -  - **NOTE**: should just need to update the version to latest
    
    199
    +    - https://github.com/mullvad/mullvad-browser/releases?q=prerelease%3Afalse
    
    200
    +    ```
    
    201
    +
    
    202
    +### merge requests
    
    203
    +- [ ] homebrew: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/m/mullvad-browser.rb
    
    204
    +  - **NOTE**: should just need to update `version` and `sha256` to latest
    
    191 205
     
    
    192 206
     </details>
    
    193 207
     
    
    194
    -/label ~"Release Prep" ~"Sponsor 131"
    208
    +/label ~"Release Prep"
    
    209
    +/label  ~"Sponsor 131"
    
    210
    +

  • .gitlab/issue_templates/Release Prep - Tor Browser Alpha.md
    ... ... @@ -32,197 +32,176 @@
    32 32
     <details>
    
    33 33
       <summary>Building</summary>
    
    34 34
     
    
    35
    -  ### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
    
    36
    -  Tor Browser Alpha (and Nightly) are on the `main` branch
    
    37
    -
    
    38
    -  - [ ] Update `rbm.conf`
    
    39
    -    - [ ] `var/torbrowser_version` : update to next version
    
    40
    -    - [ ] `var/torbrowser_build` : update to `$(TOR_BROWSER_BUILD_N)`
    
    41
    -    - [ ] ***(Desktop Only)***`var/torbrowser_incremental_from` : update to previous Desktop version
    
    42
    -      - **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
    
    43
    -      - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
    
    44
    -  - [ ] Update Desktop-specific build configs
    
    45
    -    - [ ] Update `projects/firefox/config`
    
    46
    -      - [ ] `browser_build` : update to match `tor-browser` tag
    
    47
    -      - [ ] ***(Optional)*** `var/firefox_platform_version` : update to latest `$(ESR_VERSION)` if rebased
    
    48
    -    - [ ] Update `projects/translation/config`:
    
    49
    -      - [ ] run `make list_translation_updates-alpha` to get updated hashes
    
    50
    -      - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    51
    -      - [ ] `steps/tor-browser/git_hash` : update with `HEAD` commit of project's `tor-browser` branch
    
    52
    -      - [ ] `steps/fenix/git_hash` : update with `HEAD` commit of project's `fenix-torbrowserstringsxml` branch
    
    53
    -  - [ ] Update Android-specific build configs
    
    54
    -    - [ ] Update `projects/geckoview/config`
    
    55
    -      - [ ] `browser_build` : update to match `tor-browser` tag
    
    56
    -      - [ ] ***(Optional)*** `var/geckoview_version` : update to latest `$(ESR_VERSION)` if rebased
    
    57
    -    - [ ] ***(Optional)*** Update `projects/tor-android-service/config`
    
    58
    -      - [ ] `git_hash` : update with `HEAD` commit of project's `main` branch
    
    59
    -    - [ ] ***(Optional)*** Update `projects/application-services/config`:
    
    60
    -      **NOTE** we don't currently have any of our own patches for this project
    
    61
    -      - [ ] `git_hash` : update to appropriate git commit associated with `$(ESR_VERSION)`
    
    62
    -    - [ ] ***(Optional)*** Update `projects/firefox-android/config`:
    
    63
    -      - [ ] `fenix_version` : update to match alpha `firefox-android` build tag
    
    64
    -      - [ ] `browser_branch` : update to match alpha `firefox-android` build tag
    
    65
    -    - [ ] Update allowed_addons.json by running (from `tor-browser-build` root):
    
    66
    -      - `./tools/fetch_allowed_addons.py > projects/browser/allowed_addons.json`
    
    67
    -  - [ ] Update common build configs
    
    68
    -    - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
    
    69
    -      - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
    
    70
    -        - [ ] `URL`
    
    71
    -        - [ ] `sha256sum`
    
    72
    -    - [ ] Check for OpenSSL updates here : https://www.openssl.org/source/
    
    73
    -      - [ ] ***(Optional)*** If new 3.0.X version available, update `projects/openssl/config`
    
    74
    -        - [ ] `version` : update to next 3.0.X version
    
    75
    -        - [ ] `input_files/sha256sum` : update to sha256 sum of source tarball
    
    76
    -    - [ ] Check for zlib updates here: https://github.com/madler/zlib/releases
    
    77
    -      - [ ] **(Optional)** If new tag available, update `projects/zlib/config`
    
    78
    -        - [ ] `version` : update to next release tag
    
    79
    -    - [ ] Check for tor updates here : https://gitlab.torproject.org/tpo/core/tor/-/tags
    
    80
    -      - [ ] ***(Optional)*** Update `projects/tor/config`
    
    81
    -        - [ ] `version` : update to latest `-alpha` tag or release tag if newer (ping dgoulet or ahf if unsure)
    
    82
    -    - [ ] Check for go updates here : https://golang.org/dl
    
    83
    -      - **NOTE** : Tor Browser Alpha uses the latest Stable major series go version
    
    84
    -      - [ ] ***(Optional)*** Update `projects/go/config`
    
    85
    -        - [ ] `version` : update go version
    
    86
    -        - [ ] `input_files/sha256sum` for `go` : update sha256sum of archive (sha256 sums are displayed on the go download page)
    
    87
    -    - [ ] Check for manual updates by running (from `tor-browser-build` root): `./tools/fetch-manual.py`
    
    88
    -      - [ ] ***(Optional)*** If new version is available:
    
    89
    -        - [ ] Upload the downloaded `manual_$PIPELINEID.zip` file to `tb-build-02.torproject.org`
    
    90
    -        - [ ] Deploy to `tb-builder`'s `public_html` directory:
    
    91
    -          - `sudo -u tb-builder cp manual_$PIPELINEID.zip ~/../tb-builder/public_html/.`
    
    92
    -        - [ ] Update `projects/manual/config`:
    
    93
    -          - [ ] Change the `version` to `$PIPELINEID`
    
    94
    -          - [ ] Update `sha256sum` in the `input_files` section
    
    95
    -  - [ ] Update `ChangeLog-TBB.txt`
    
    96
    -    - [ ] Ensure `ChangeLog-TBB.txt` is sync'd between alpha and stable branches
    
    97
    -    - [ ] Check the linked issues: ask people to check if any are missing, remove the not fixed ones
    
    98
    -    - [ ] Run `tools/fetch-changelogs.py $(ISSUE_NUMBER) --date $date $updateArgs`
    
    99
    -      - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
    
    100
    -      - The first time you run this script you will need to generate an access token; the script will guide you
    
    101
    -      - `$updateArgs` should be these arguments, depending on what you actually updated:
    
    102
    -          - [ ] `--firefox` (be sure to include esr at the end if needed, which is usually the case)
    
    103
    -          - [ ] `--tor`
    
    104
    -          - [ ] `--no-script`
    
    105
    -          - [ ] `--openssl`
    
    106
    -          - [ ] `--zlib`
    
    107
    -          - [ ] `--go`
    
    108
    -          - E.g., `tools/fetch-changelogs.py 41028 --date 'December 19 2023' --firefox 115.6.0esr --tor 0.4.8.10 --no-script 11.4.29 --zlib 1.3 --go 1.21.5 --openssl 3.0.12`
    
    109
    -        - `--date $date` is optional, if omitted it will be the date on which you run the command
    
    110
    -      - [ ] Copy the output of the script to the beginning of `ChangeLog-TBB.txt` and adjust its output
    
    111
    -  - [ ] Open MR with above changes, using the template for release preparations
    
    112
    -  - [ ] Merge
    
    113
    -  - [ ] Sign+Tag
    
    114
    -    - **NOTE** this must be done by one of:
    
    115
    -      - boklm
    
    116
    -      - dan
    
    117
    -      - ma1
    
    118
    -      - pierov
    
    119
    -      - richard
    
    120
    -    - [ ] Run: `make torbrowser-signtag-alpha`
    
    121
    -    - [ ] Push tag to `upstream`
    
    122
    -  - [ ] Build on at least one of:
    
    123
    -    - Run `make torbrowser-alpha && make torbrowser-incrementals-alpha`
    
    35
    +### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
    
    36
    +Tor Browser Alpha (and Nightly) are on the `main` branch
    
    37
    +
    
    38
    +- [ ] Update `rbm.conf`
    
    39
    +  - [ ] `var/torbrowser_version` : update to next version
    
    40
    +  - [ ] `var/torbrowser_build` : update to `$(TOR_BROWSER_BUILD_N)`
    
    41
    +  - [ ] ***(Desktop Only)***`var/torbrowser_incremental_from` : update to previous Desktop version
    
    42
    +    - **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
    
    43
    +    - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
    
    44
    +- [ ] Update Desktop-specific build configs
    
    45
    +  - [ ] Update `projects/firefox/config`
    
    46
    +    - [ ] `browser_build` : update to match `tor-browser` tag
    
    47
    +    - [ ] ***(Optional)*** `var/firefox_platform_version` : update to latest `$(ESR_VERSION)` if rebased
    
    48
    +- [ ] Update Android-specific build configs
    
    49
    +  - [ ] Update `projects/geckoview/config`
    
    50
    +    - [ ] `browser_build` : update to match `tor-browser` tag
    
    51
    +    - [ ] ***(Optional)*** `var/geckoview_version` : update to latest `$(ESR_VERSION)` if rebased
    
    52
    +  - [ ] ***(Optional)*** Update `projects/tor-android-service/config`
    
    53
    +    - [ ] `git_hash` : update with `HEAD` commit of project's `main` branch
    
    54
    +  - [ ] ***(Optional)*** Update `projects/application-services/config`:
    
    55
    +    **NOTE** we don't currently have any of our own patches for this project
    
    56
    +    - [ ] `git_hash` : update to appropriate git commit associated with `$(ESR_VERSION)`
    
    57
    +  - [ ] ***(Optional)*** Update `projects/firefox-android/config`:
    
    58
    +    - [ ] `fenix_version` : update to match alpha `firefox-android` build tag
    
    59
    +    - [ ] `browser_branch` : update to match alpha `firefox-android` build tag
    
    60
    +  - [ ] Update allowed_addons.json by running (from `tor-browser-build` root):
    
    61
    +    - `./tools/fetch_allowed_addons.py > projects/browser/allowed_addons.json`
    
    62
    +- [ ] Update `projects/translation/config`:
    
    63
    +  - [ ] run `make list_translation_updates-alpha` to get updated hashes
    
    64
    +  - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    65
    +  - [ ] `steps/tor-browser/git_hash` : update with `HEAD` commit of project's `tor-browser` branch
    
    66
    +  - [ ] `steps/fenix/git_hash` : update with `HEAD` commit of project's `fenix-torbrowserstringsxml` branch
    
    67
    +- [ ] Update common build configs
    
    68
    +  - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
    
    69
    +    - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
    
    70
    +      - [ ] `URL`
    
    71
    +      - [ ] `sha256sum`
    
    72
    +  - [ ] Check for OpenSSL updates here : https://www.openssl.org/source/
    
    73
    +    - [ ] ***(Optional)*** If new 3.0.X version available, update `projects/openssl/config`
    
    74
    +      - [ ] `version` : update to next 3.0.X version
    
    75
    +      - [ ] `input_files/sha256sum` : update to sha256 sum of source tarball
    
    76
    +  - [ ] Check for zlib updates here: https://github.com/madler/zlib/releases
    
    77
    +    - [ ] **(Optional)** If new tag available, update `projects/zlib/config`
    
    78
    +      - [ ] `version` : update to next release tag
    
    79
    +  - [ ] Check for tor updates here : https://gitlab.torproject.org/tpo/core/tor/-/tags
    
    80
    +    - [ ] ***(Optional)*** Update `projects/tor/config`
    
    81
    +      - [ ] `version` : update to latest `-alpha` tag or release tag if newer (ping dgoulet or ahf if unsure)
    
    82
    +  - [ ] Check for go updates here : https://go.dev/dl
    
    83
    +    - **NOTE** : In general, Tor Browser Alpha uses the latest Stable major series Go version, but there are sometimes exceptions. Check with the anti-censorship team before doing a major version update in case there is incompatibilities.
    
    84
    +    - [ ] ***(Optional)*** Update `projects/go/config`
    
    85
    +      - [ ] `version` : update go version
    
    86
    +      - [ ] `input_files/sha256sum` for `go` : update sha256sum of archive (sha256 sums are displayed on the go download page)
    
    87
    +  - [ ] Check for manual updates by running (from `tor-browser-build` root): `./tools/fetch-manual.py`
    
    88
    +    - [ ] ***(Optional)*** If new version is available:
    
    89
    +      - [ ] Upload the downloaded `manual_$PIPELINEID.zip` file to `tb-build-02.torproject.org`
    
    90
    +      - [ ] Deploy to `tb-builder`'s `public_html` directory:
    
    91
    +        - `sudo -u tb-builder cp manual_$PIPELINEID.zip ~tb-builder/public_html/.`
    
    92
    +      - [ ] Update `projects/manual/config`:
    
    93
    +        - [ ] Change the `version` to `$PIPELINEID`
    
    94
    +        - [ ] Update `sha256sum` in the `input_files` section
    
    95
    +- [ ] Update `ChangeLog-TBB.txt`
    
    96
    +  - [ ] Ensure `ChangeLog-TBB.txt` is sync'd between alpha and stable branches
    
    97
    +  - [ ] Check the linked issues: ask people to check if any are missing, remove the not fixed ones
    
    98
    +  - [ ] Run `tools/fetch-changelogs.py $(ISSUE_NUMBER) --date $date $updateArgs`
    
    99
    +    - Make sure you have `requests` installed (e.g., `apt install python3-requests`)
    
    100
    +    - The first time you run this script you will need to generate an access token; the script will guide you
    
    101
    +    - `$updateArgs` should be these arguments, depending on what you actually updated:
    
    102
    +      - [ ] `--firefox` (be sure to include esr at the end if needed, which is usually the case)
    
    103
    +      - [ ] `--tor`
    
    104
    +      - [ ] `--no-script`
    
    105
    +      - [ ] `--openssl`
    
    106
    +      - [ ] `--zlib`
    
    107
    +      - [ ] `--go`
    
    108
    +      - E.g., `tools/fetch-changelogs.py 41028 --date 'December 19 2023' --firefox 115.6.0esr --tor 0.4.8.10 --no-script 11.4.29 --zlib 1.3 --go 1.21.5 --openssl 3.0.12`
    
    109
    +    - `--date $date` is optional, if omitted it will be the date on which you run the command
    
    110
    +  - [ ] Copy the output of the script to the beginning of `ChangeLog-TBB.txt` and adjust its output
    
    111
    +- [ ] Open MR with above changes, using the template for release preparations
    
    112
    +- [ ] Merge
    
    113
    +- [ ] Sign+Tag
    
    114
    +  - **NOTE** this must be done by one of:
    
    115
    +    - boklm
    
    116
    +    - dan
    
    117
    +    - ma1
    
    118
    +    - pierov
    
    119
    +    - richard
    
    120
    +  - [ ] Run: `make torbrowser-signtag-alpha`
    
    121
    +  - [ ] Push tag to `upstream`
    
    122
    +- [ ] Build the tag:
    
    123
    +  - Run `make torbrowser-alpha && make torbrowser-incrementals-alpha`
    
    124 124
         - [ ] Tor Project build machine
    
    125 125
         - [ ] Local developer machine
    
    126 126
       - [ ] Submit build request to Mullvad infrastructure:
    
    127 127
         - **NOTE** this requires a devmole authentication token
    
    128 128
         - Run `make torbrowser-kick-devmole-build`
    
    129
    -  - [ ] Ensure builders have matching builds
    
    129
    +- [ ] Ensure builders have matching builds
    
    130 130
     
    
    131 131
     </details>
    
    132 132
     
    
    133 133
     <details>
    
    134 134
       <summary>Communications</summary>
    
    135 135
     
    
    136
    -  ### notify stakeholders
    
    137
    -
    
    138
    -  - [ ] Email tor-qa mailing list: tor-qa@lists.torproject.org
    
    139
    -    <details>
    
    140
    -      <summary>email template</summary>
    
    141
    -
    
    142
    -        Subject:
    
    143
    -        Tor Browser $(TOR_BROWSER_VERION) (Android, Windows, macOS, Linux)
    
    144
    -
    
    145
    -        Body:
    
    146
    -        Hello All,
    
    147
    -
    
    148
    -        Unsigned Tor Browser $(TOR_BROWSER_VERSION) alpha candidate builds are now available for testing:
    
    149
    -
    
    150
    -        - https://tb-build-05.torproject.org/~$(BUILDER)/builds/alpha/unsigned/$(TOR_BROWSER_VERSION)/
    
    151
    -
    
    152
    -        The full changelog can be found here:
    
    153
    -
    
    154
    -        - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/raw/$(TBB_BUILD_TAG)/projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
    
    155
    -
    
    156
    -    </details>
    
    157
    -
    
    158
    -    - ***(Optional)*** Additional information:
    
    159
    -      - [ ] Note any new functionality which needs testing
    
    160
    -      - [ ] Link to any known issues
    
    161
    -  - [ ] ***(Optional, only around build/packaging changes)*** Email packagers:
    
    162
    -    - Recipients:
    
    163
    -      - Tails dev mailing list: tails-dev@boum.org
    
    164
    -      - Guardian Project: nathan@guardianproject.info
    
    165
    -      - torbrowser-launcher: micah@micahflee.com
    
    166
    -      - FreeBSD port: freebsd@sysctl.cz <!-- Gitlab user maxfx -->
    
    167
    -      - OpenBSD port: caspar@schutijser.com <!-- Gitlab user cschutijser -->
    
    168
    -    - [ ] Note any changes which may affect packaging/downstream integration
    
    169
    -  - [ ] Email external partners:
    
    170
    -    - ***(Optional, after ESR migration)*** Cloudflare: ask-research@cloudflare.com
    
    171
    -      - **NOTE** :  We need to provide them with updated user agent string so they can update their internal machinery to prevent Tor Browser users from getting so many CAPTCHAs
    
    172
    -    - ***(Optional, after ESR migration)*** Startpage: admin@startpage.com
    
    173
    -      - **NOTE** : Startpage also needs the updated user-agent string for better experience on their onion service sites.
    
    136
    +### notify stakeholders
    
    137
    +- [ ] **(Once builds confirmed matching)** Email tor-qa mailing list with release information
    
    138
    +  - [ ] tor-qa: tor-qa@lists.torproject.org
    
    139
    +  - **Subject**
    
    140
    +    ```
    
    141
    +    Tor Browser $(TOR_BROWSER_VERION) (Android, Windows, macOS, Linux)
    
    142
    +    ```
    
    143
    +  - **Body**
    
    144
    +    ```
    
    145
    +    Hello,
    
    146
    +
    
    147
    +    Unsigned Tor Browser $(TOR_BROWSER_VERSION) alpha candidate builds are now available for testing:
    
    148
    +
    
    149
    +    - https://tb-build-02.torproject.org/~$(BUILDER)/builds/alpha/unsigned/$(TOR_BROWSER_VERSION)/
    
    150
    +
    
    151
    +    The full changelog can be found here:
    
    152
    +
    
    153
    +    - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/raw/$(TBB_BUILD_TAG)/projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
    
    154
    +    ```
    
    155
    +- [ ] ***(Optional, only around build/packaging changes)*** Email packagers:
    
    156
    +  - [ ] Tails dev mailing list: tails-dev@boum.org
    
    157
    +  - [ ] Guardian Project: nathan@guardianproject.info
    
    158
    +  - [ ] FreeBSD port: freebsd@sysctl.cz <!-- Gitlab user maxfx -->
    
    159
    +  - [ ] OpenBSD port: caspar@schutijser.com <!-- Gitlab user cschutijser -->
    
    160
    +  - [ ] Note any changes which may affect packaging/downstream integration
    
    161
    +- [ ] ***(Optional, after ESR migration)*** Email external partners:
    
    162
    +  - [ ] Cloudflare: ask-research@cloudflare.com
    
    163
    +    - **NOTE** :  We need to provide them with updated user agent string so they can update their internal machinery to prevent Tor Browser users from getting so many CAPTCHAs
    
    164
    +  - [ ]  Startpage: admin@startpage.com
    
    165
    +    - **NOTE** : Startpage also needs the updated user-agent string for better experience on their onion service sites.
    
    174 166
     
    
    175 167
     </details>
    
    176 168
     
    
    177 169
     <details>
    
    178 170
       <summary>Signing</summary>
    
    179 171
     
    
    180
    -  ### signing
    
    181
    -  - **NOTE** : In practice, it's most efficient to have the blog post and website updates ready to merge, since signing doesn't take very long
    
    182
    -  - [ ] Assign this issue to the signer, one of:
    
    183
    -    - boklm
    
    184
    -    - richard
    
    185
    -  - [ ] On `$(STAGING_SERVER)`, ensure updated:
    
    186
    -    - [ ] `tor-browser-build` is on the right commit: `git tag -v tbb-$(TOR_BROWSER_VERSION)-$(TOR_BROWSER_BUILD_N) && git checkout tbb-$(TOR_BROWSER_VERSION)-$(TOR_BROWSER_BUILD_N)`
    
    187
    -    - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
    
    188
    -      - `ssh_host_builder` : ssh hostname of machine with unsigned builds
    
    189
    -        - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
    
    190
    -      - `ssh_host_linux_signer` : ssh hostname of linux signing machine
    
    191
    -    - [ ] `tor-browser-build/tools/signing/set-config.rcodesign-appstoreconnect`
    
    192
    -      - `appstoreconnect_api_key_path` : path to json file containing appstoreconnect api key infos
    
    193
    -    - [ ] `set-config.update-responses`
    
    194
    -      - `update_responses_repository_dir` : directory where you cloned `git@gitlab.torproject.org:tpo/applications/tor-browser-update-responses.git`
    
    195
    -    - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
    
    196
    -      - `tbb_version` : tor browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
    
    197
    -      - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
    
    198
    -      - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
    
    199
    -  - [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
    
    200
    -  - [ ] run do-all-signing script:
    
    201
    -      - `cd tor-browser-build/tools/signing/`
    
    202
    -      - `./do-all-signing.torbrowser`
    
    203
    -  - **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
    
    204
    -  - [ ] Update `staticiforme.torproject.org`:
    
    205
    -    - From `screen` session on `staticiforme.torproject.org`:
    
    206
    -    - [ ] Static update components : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
    
    207
    -    - [ ] Enable update responses : `sudo -u tb-release ./deploy_update_responses-alpha.sh`
    
    208
    -    - [ ] Remove old release data from following places:
    
    209
    -      - **NOTE** : Skip this step if we need to hold on to older versions for some reason (for example, this is an Andoid or Desktop-only release, or if we need to hold back installers in favor of build-to-build updates if there are signing issues, etc)
    
    210
    -      - [ ] `/srv/cdn-master.torproject.org/htdocs/aus1/torbrowser`
    
    211
    -      - [ ] `/srv/dist-master.torproject.org/htdocs/torbrowser`
    
    212
    -    - [ ] Static update components (again) : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
    
    213
    -  - [ ] Publish APKs to Google Play:
    
    214
    -    - Log into https://play.google.com/apps/publish
    
    215
    -    - Select `Tor Browser (Alpha)` app
    
    216
    -    - Navigate to `Release > Production` and click `Create new release` button:
    
    217
    -      - Upload the `tor-browser-android-*.apk` APKs
    
    218
    -      - Update Release Name to Tor Browser version number
    
    219
    -      - Update Release Notes
    
    220
    -      - Next to 'Release notes', click `Copy from a previous release`
    
    221
    -      - Edit blog post url to point to most recent blog post
    
    222
    -    - Save, review, and configure rollout percentage
    
    223
    -      - [ ] 25% rollout when publishing a scheduled update
    
    224
    -      - [ ] 100% rollout when publishing a security-driven release
    
    225
    -    - [ ] Update rollout percentage to 100% after confirmed no major issues
    
    172
    +### release signing
    
    173
    +- **NOTE** : In practice, it's most efficient to have the blog post and website updates ready to merge, since signing doesn't take very long
    
    174
    +- [ ] Assign this issue to the signer, one of:
    
    175
    +  - boklm
    
    176
    +  - richard
    
    177
    +- [ ] On `$(STAGING_SERVER)`, ensure updated:
    
    178
    +  - [ ] `tor-browser-build` is on the right commit: `git tag -v tbb-$(TOR_BROWSER_VERSION)-$(TOR_BROWSER_BUILD_N) && git checkout tbb-$(TOR_BROWSER_VERSION)-$(TOR_BROWSER_BUILD_N)`
    
    179
    +  - [ ] `tor-browser-build/tools/signing/set-config.hosts`
    
    180
    +    - `ssh_host_builder` : ssh hostname of machine with unsigned builds
    
    181
    +      - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
    
    182
    +    - `ssh_host_linux_signer` : ssh hostname of linux signing machine
    
    183
    +  - [ ] `tor-browser-build/tools/signing/set-config.rcodesign-appstoreconnect`
    
    184
    +    - `appstoreconnect_api_key_path` : path to json file containing appstoreconnect api key infos
    
    185
    +  - [ ] `set-config.update-responses`
    
    186
    +    - `update_responses_repository_dir` : directory where you cloned `git@gitlab.torproject.org:tpo/applications/tor-browser-update-responses.git`
    
    187
    +  - [ ] `tor-browser-build/tools/signing/set-config.tbb-version`
    
    188
    +    - `tbb_version` : tor browser version string, same as `var/torbrowser_version` in `rbm.conf` (examples: `11.5a12`, `11.0.13`)
    
    189
    +    - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
    
    190
    +    - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
    
    191
    +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
    
    192
    +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, run do-all-signing script:
    
    193
    +  - `cd tor-browser-build/tools/signing/`
    
    194
    +  - `./do-all-signing.torbrowser`
    
    195
    +- **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
    
    196
    +- [ ] Update `staticiforme.torproject.org`:
    
    197
    +  - From `screen` session on `staticiforme.torproject.org`:
    
    198
    +  - [ ] Static update components : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
    
    199
    +  - [ ] Enable update responses : `sudo -u tb-release ./deploy_update_responses-alpha.sh`
    
    200
    +  - [ ] Remove old release data from following places:
    
    201
    +    - **NOTE** : Skip this step if we need to hold on to older versions for some reason (for example, this is an Andoid or Desktop-only release, or if we need to hold back installers in favor of build-to-build updates if there are signing issues, etc)
    
    202
    +    - [ ] `/srv/cdn-master.torproject.org/htdocs/aus1/torbrowser`
    
    203
    +    - [ ] `/srv/dist-master.torproject.org/htdocs/torbrowser`
    
    204
    +  - [ ] Static update components (again) : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
    
    226 205
     
    
    227 206
     </details>
    
    228 207
     
    
    ... ... @@ -262,55 +241,58 @@ popd
    262 241
     <details>
    
    263 242
       <summary>Publishing</summary>
    
    264 243
     
    
    265
    -  ### website: https://gitlab.torproject.org/tpo/web/tpo.git
    
    266
    -  - [ ] `databags/versions.ini` : Update the downloads versions
    
    267
    -      - `torbrowser-stable/version` : sort of a catch-all for latest stable version
    
    268
    -      - `torbrowser-alpha/version` : sort of a catch-all for latest stable version
    
    269
    -      - `torbrowser-*-stable/version` : platform-specific stable versions
    
    270
    -      - `torbrowser-*-alpha/version` : platform-specific alpha versions
    
    271
    -      - `tor-stable`,`tor-alpha` : set by tor devs, do not touch
    
    272
    -  - [ ] Push to origin as new branch, open 'Draft :' MR
    
    273
    -  - [ ] Remove `Draft:` from MR once signed-packages are uploaded
    
    274
    -  - [ ] Merge
    
    275
    -  - [ ] Publish after CI passes and builds are published
    
    276
    -
    
    277
    -  ### blog: https://gitlab.torproject.org/tpo/web/blog.git
    
    278
    -  - [ ] Duplicate previous Stable or Alpha release blog post as appropriate to new directory under `content/blog/new-release-tor-browser-$(TOR_BROWSER_VERSION)` and update with info on release :
    
    279
    -      - [ ] Run `tools/signing/create-blog-post` which should create the new blog post from a template (edit set-config.blog to set you local blog directory)
    
    280
    -      - [ ] Update Tor Browser version numbers
    
    281
    -      - [ ] Note any ESR rebase
    
    282
    -      - [ ] Link to any Firefox security updates from ESR upgrade
    
    283
    -      - [ ] Link to any Android-specific security backports
    
    284
    -      - [ ] Note any updates to :
    
    285
    -        - tor
    
    286
    -        - OpenSSL
    
    287
    -        - NoScript
    
    288
    -      - [ ] Convert ChangeLog-TBB.txt to markdown format used here by :
    
    289
    -        - `tor-browser-build/tools/changelog-format-blog-post`
    
    290
    -  - [ ] Push to origin as new branch, open `Draft:` MR
    
    291
    -  - [ ] Remove `Draft:` from MR once signed-packages are uploaded
    
    292
    -  - [ ] Merge
    
    293
    -  - [ ] Publish after CI passes and website has been updated
    
    294
    -
    
    295
    -  ### tor-announce mailing list
    
    296
    -  - [ ] Email tor-announce mailing list: tor-announce@lists.torproject.org
    
    297
    -    <details>
    
    298
    -      <summary>email template</summary>
    
    299
    -
    
    300
    -        Subject:
    
    301
    -        New Release: Tor Browser $(TOR_BROWSER_VERSION) (Android, Windows, macOS, Linux)
    
    302
    -
    
    303
    -        Body:
    
    304
    -        Hi everyone,
    
    305
    -
    
    306
    -        Tor Browser $(TOR_BROWSER_VERSION) has now been published for all platforms. For details please see our blog post:
    
    307
    -
    
    308
    -        - $(BLOG_POST_URL)
    
    309
    -
    
    310
    -    </details>
    
    311
    -
    
    312
    -    - **(Optional)** Additional information:
    
    313
    -      - [ ] Link to any known issues
    
    244
    +### Google Play: https://play.google.com/apps/publish
    
    245
    +- [ ] Publish APKs to Google Play:
    
    246
    +  - Select `Tor Browser (Alpha)` app
    
    247
    +  - Navigate to `Release > Production` and click `Create new release` button:
    
    248
    +    - Upload the `tor-browser-android-*.apk` APKs
    
    249
    +    - Update Release Name to Tor Browser version number
    
    250
    +    - Update Release Notes
    
    251
    +    - Next to 'Release notes', click `Copy from a previous release`
    
    252
    +    - Edit blog post url to point to most recent blog post
    
    253
    +  - Save, review, and configure rollout percentage
    
    254
    +    - [ ] 25% rollout when publishing a scheduled update
    
    255
    +    - [ ] 100% rollout when publishing a security-driven release
    
    256
    +  - [ ] Update rollout percentage to 100% after confirmed no major issues
    
    257
    +
    
    258
    +### website: https://gitlab.torproject.org/tpo/web/tpo.git
    
    259
    +- [ ] `databags/versions.ini` : Update the downloads versions
    
    260
    +    - `torbrowser-stable/version` : sort of a catch-all for latest stable version
    
    261
    +    - `torbrowser-alpha/version` : sort of a catch-all for latest stable version
    
    262
    +    - `torbrowser-*-stable/version` : platform-specific stable versions
    
    263
    +    - `torbrowser-*-alpha/version` : platform-specific alpha versions
    
    264
    +    - `tor-stable`,`tor-alpha` : set by tor devs, do not touch
    
    265
    +- [ ] Push to origin as new branch, open 'Draft :' MR
    
    266
    +- [ ] Remove `Draft:` from MR once signed-packages are accessible on https://dist.torproject.org
    
    267
    +- [ ] Merge
    
    268
    +- [ ] Publish after CI passes and builds are published
    
    269
    +
    
    270
    +### blog: https://gitlab.torproject.org/tpo/web/blog.git
    
    271
    +- [ ] Run `tools/signing/create-blog-post` which should create the new blog post from a template (edit set-config.blog to set you local blog directory)
    
    272
    +  - [ ] Note any ESR update
    
    273
    +  - [ ] Note any updates to dependencies (OpenSSL, zlib, NoScript, tor, etc)
    
    274
    +  - [ ] Thank any users which have contributed patches  
    
    275
    +  - [ ] **(Optional)** Draft any additional sections for new features which need testing, known issues, etc
    
    276
    +- [ ] Push to origin as new branch, open `Draft:` MR
    
    277
    +- [ ] Merge once signed-packages are accessible on https://dist.torproject.org
    
    278
    +- [ ] Publish after CI passes and website has been updated
    
    279
    +
    
    280
    +### tor-announce mailing list
    
    281
    +- [ ] Email tor-announce mailing list: tor-announce@lists.torproject.org
    
    282
    +  - **Subject**
    
    283
    +    ```
    
    284
    +    New Release: Tor Browser $(TOR_BROWSER_VERSION) (Android, Windows, macOS, Linux)
    
    285
    +    ```
    
    286
    +  - **Body**
    
    287
    +    ```
    
    288
    +    Hi everyone,
    
    289
    +
    
    290
    +    Tor Browser $(TOR_BROWSER_VERSION) has now been published for all platforms. For details please see our blog post:
    
    291
    +    - $(BLOG_POST_URL)
    
    292
    +
    
    293
    +    Changelog:
    
    294
    +    # paste changleog as quote here
    
    295
    +    ```
    
    314 296
     
    
    315 297
     </details>
    
    316 298
     
    

  • .gitlab/issue_templates/Release Prep - Tor Browser Stable.md
    ... ... @@ -27,29 +27,24 @@
    27 27
     </details>
    
    28 28
     
    
    29 29
     **NOTE** It is assumed that the `tor-browser` stable rebase and security backport tasks have been completed
    
    30
    +**NOTE** This can/is often done in conjunction with the equivalent Mullvad Browser release prep issue
    
    30 31
     
    
    31 32
     <details>
    
    32 33
       <summary>Building</summary>
    
    33 34
     
    
    34 35
     ### tor-browser-build: https://gitlab.torproject.org/tpo/applications/tor-browser-build.git
    
    35
    -Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSER_MINOR)` (and possibly more specific) branches
    
    36
    +Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSER_MINOR)` (and possibly more specific) branches.
    
    36 37
     
    
    37 38
     - [ ] Update `rbm.conf`
    
    38 39
       - [ ] `var/torbrowser_version` : update to next version
    
    39 40
       - [ ] `var/torbrowser_build` : update to `$(TOR_BROWSER_BUILD_N)`
    
    40 41
       - [ ] ***(Desktop Only)***`var/torbrowser_incremental_from` : update to previous Desktop version
    
    42
    +    - **NOTE**: We try to build incrementals for the previous 3 desktop versions except in the case of a watershed update
    
    41 43
         - **IMPORTANT**: Really *actually* make sure this is the previous Desktop version or else the `make torbrowser-incrementals-*` step will fail
    
    42 44
     - [ ] Update Desktop-specific build configs
    
    43 45
       - [ ] Update `projects/firefox/config`
    
    44 46
         - [ ] `browser_build` : update to match `tor-browser` tag
    
    45 47
         - [ ] ***(Optional)*** `var/firefox_platform_version` : update to latest `$(ESR_VERSION)` if rebased
    
    46
    -  - [ ] Update `projects/translation/config`:
    
    47
    -    - [ ] run `make list_translation_updates-release` to get updated hashes
    
    48
    -    - [ ] Update `projects/translation/config`:
    
    49
    -      - [ ] run `make list_translation_updates-alpha` to get updated hashes
    
    50
    -      - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    51
    -      - [ ] `steps/tor-browser/git_hash` : update with `HEAD` commit of project's `tor-browser` branch
    
    52
    -      - [ ] `steps/fenix/git_hash` : update with `HEAD` commit of project's `fenix-torbrowserstringsxml` branch
    
    53 48
     - [ ] Update Android-specific build configs
    
    54 49
       - [ ] Update `projects/geckoview/config`
    
    55 50
         - [ ] `browser_build` : update to match `tor-browser` tag
    
    ... ... @@ -60,27 +55,32 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    60 55
         **NOTE** we don't currently have any of our own patches for this project
    
    61 56
         - [ ] `git_hash` : update to appropriate git commit associated with `$(ESR_VERSION)`
    
    62 57
       - [ ] ***(Optional)*** Update `projects/firefox-android/config`:
    
    63
    -      - [ ] `fenix_version` : update to match alpha `firefox-android` build tag
    
    64
    -      - [ ] `browser_branch` : update to match alpha `firefox-android` build tag
    
    58
    +    - [ ] `fenix_version` : update to match alpha `firefox-android` build tag
    
    59
    +    - [ ] `browser_branch` : update to match alpha `firefox-android` build tag
    
    65 60
       - [ ] Update allowed_addons.json by running (from `tor-browser-build` root):
    
    66 61
         - `./tools/fetch_allowed_addons.py > projects/browser/allowed_addons.json`
    
    62
    +- [ ] Update `projects/translation/config`:
    
    63
    +  - [ ] run `make list_translation_updates-release` to get updated hashes
    
    64
    +  - [ ] `steps/base-browser/git_hash` : update with `HEAD` commit of project's `base-browser` branch
    
    65
    +  - [ ] `steps/tor-browser/git_hash` : update with `HEAD` commit of project's `tor-browser` branch
    
    66
    +  - [ ] `steps/fenix/git_hash` : update with `HEAD` commit of project's `fenix-torbrowserstringsxml` branch
    
    67 67
     - [ ] Update common build configs
    
    68 68
       - [ ] Check for NoScript updates here : https://addons.mozilla.org/en-US/firefox/addon/noscript
    
    69 69
         - [ ] ***(Optional)*** If new version available, update `noscript` section of `input_files` in `projects/browser/config`
    
    70 70
           - [ ] `URL`
    
    71 71
           - [ ] `sha256sum`
    
    72 72
       - [ ] Check for OpenSSL updates here : https://www.openssl.org/source/
    
    73
    -    - [ ] ***(Optional)*** If new 1.X.Y version available, update `projects/openssl/config`
    
    74
    -      - [ ] `version` : update to next 1.X.Y version
    
    73
    +    - [ ] ***(Optional)*** If new 3.0.X version available, update `projects/openssl/config`
    
    74
    +      - [ ] `version` : update to next 3.0.X version
    
    75 75
           - [ ] `input_files/sha256sum` : update to sha256 sum of source tarball
    
    76 76
       - [ ] Check for zlib updates here: https://github.com/madler/zlib/releases
    
    77 77
         - [ ] **(Optional)** If new tag available, update `projects/zlib/config`
    
    78 78
           - [ ] `version` : update to next release tag
    
    79 79
       - [ ] Check for tor updates here : https://gitlab.torproject.org/tpo/core/tor/-/tags
    
    80
    -    - [ ] ***(Optional)*** Update `projects/tor/config` 
    
    80
    +    - [ ] ***(Optional)*** Update `projects/tor/config`
    
    81 81
           - [ ] `version` : update to latest non `-alpha` tag (ping dgoulet or ahf if unsure)
    
    82 82
       - [ ] Check for go updates here : https://go.dev/dl
    
    83
    -    - **NOTE** : Tor Browser Stable uses the latest of the *previous* Stable major series go version (apart from the transition phase from Tor Browser Alpha to Stable, in which case Tor Browser Stable may use the latest major series go version)
    
    83
    +    - **NOTE** : In general, Tor Browser Stable uses the latest of the *previous* Stable major series Go version, but there are sometimes exceptions. Check with the anti-censorship team before doing a major version update in case there is incompatibilities.
    
    84 84
         - [ ] ***(Optional)*** Update `projects/go/config`
    
    85 85
           - [ ] `version` : update go version
    
    86 86
           - [ ] `input_files/sha256sum` for `go` : update sha256sum of archive (sha256 sums are displayed on the go download page)
    
    ... ... @@ -88,7 +88,7 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    88 88
         - [ ] ***(Optional)*** If new version is available:
    
    89 89
           - [ ] Upload the downloaded `manual_$PIPELINEID.zip` file to `tb-build-02.torproject.org`
    
    90 90
           - [ ] Deploy to `tb-builder`'s `public_html` directory:
    
    91
    -        - `sudo -u tb-builder cp manual_$PIPELINEID.zip ~/../tb-builder/public_html/.`
    
    91
    +        - `sudo -u tb-builder cp manual_$PIPELINEID.zip ~tb-builder/public_html/.`
    
    92 92
           - [ ] Update `projects/manual/config`:
    
    93 93
             - [ ] Change the `version` to `$PIPELINEID`
    
    94 94
             - [ ] Update `sha256sum` in the `input_files` section
    
    ... ... @@ -108,25 +108,25 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    108 108
           - E.g., `tools/fetch-changelogs.py 41028 --date 'December 19 2023' --firefox 115.6.0esr --tor 0.4.8.10 --no-script 11.4.29 --zlib 1.3 --go 1.21.5 --openssl 3.0.12`
    
    109 109
         - `--date $date` is optional, if omitted it will be the date on which you run the command
    
    110 110
       - [ ] Copy the output of the script to the beginning of `ChangeLog-TBB.txt` and adjust its output
    
    111
    -  - [ ] Open MR with above changes, using the template for release preparations
    
    112
    -  - [ ] Merge
    
    113
    -  - [ ] Sign+Tag
    
    114
    -    - **NOTE** this must be done by one of:
    
    115
    -      - boklm
    
    116
    -      - dan
    
    117
    -      - ma1
    
    118
    -      - pierov
    
    119
    -      - richard
    
    120
    -    - [ ] Run: `make torbrowser-signtag-release`
    
    121
    -    - [ ] Push tag to `upstream`
    
    122
    -  - [ ] Build on at least one of:
    
    123
    -    - Run `make torbrowser-release && make torbrowser-incrementals-release`
    
    111
    +- [ ] Open MR with above changes, using the template for release preparations
    
    112
    +- [ ] Merge
    
    113
    +- [ ] Sign+Tag
    
    114
    +  - **NOTE** this must be done by one of:
    
    115
    +    - boklm
    
    116
    +    - dan
    
    117
    +    - ma1
    
    118
    +    - pierov
    
    119
    +    - richard
    
    120
    +  - [ ] Run: `make torbrowser-signtag-release`
    
    121
    +  - [ ] Push tag to `upstream`
    
    122
    +- [ ] Build the tag:
    
    123
    +  - Run `make torbrowser-release && make torbrowser-incrementals-release`
    
    124 124
         - [ ] Tor Project build machine
    
    125 125
         - [ ] Local developer machine
    
    126 126
       - [ ] Submit build request to Mullvad infrastructure:
    
    127 127
         - **NOTE** this requires a devmole authentication token
    
    128 128
         - Run `make torbrowser-kick-devmole-build`
    
    129
    -  - [ ] Ensure builders have matching builds
    
    129
    +- [ ] Ensure builders have matching builds
    
    130 130
     
    
    131 131
     </details>
    
    132 132
     
    
    ... ... @@ -134,49 +134,44 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    134 134
       <summary>Communications</summary>
    
    135 135
     
    
    136 136
     ### notify stakeholders
    
    137
    +- [ ] **(Once builds confirmed matching)** Email tor-qa mailing list with release information
    
    138
    +  - [ ] tor-qa: tor-qa@lists.torproject.org
    
    139
    +  - **Subject**
    
    140
    +    ```
    
    141
    +    Tor Browser $(TOR_BROWSER_VERION) (Android, Windows, macOS, Linux)
    
    142
    +    ```
    
    143
    +  - **Body**
    
    144
    +    ```
    
    145
    +    Hello,
    
    137 146
     
    
    138
    -  <details>
    
    139
    -    <summary>email template</summary>
    
    140
    -
    
    141
    -      Subject:
    
    142
    -      Tor Browser $(TOR_BROWSER_VERION) (Android, Windows, macOS, Linux)
    
    143
    -
    
    144
    -      Body:
    
    145
    -      Hello All,
    
    146
    -
    
    147
    -      Unsigned Tor Browser $(TOR_BROWSER_VERSION) release candidate builds are now available for testing:
    
    148
    -
    
    149
    -      - https://tb-build-05.torproject.org/~$(BUILDER)/builds/release/unsigned/$(TOR_BROWSER_VERSION)/
    
    150
    -
    
    151
    -      The full changelog can be found here:
    
    147
    +    Unsigned Tor Browser $(TOR_BROWSER_VERSION) release candidate builds are now available for testing:
    
    152 148
     
    
    153
    -      - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/$(TBB_BUILD_TAG)/ChangeLog.txt
    
    149
    +    - https://tb-build-02.torproject.org/~$(BUILDER)/builds/release/unsigned/$(TOR_BROWSER_VERSION)/
    
    154 150
     
    
    155
    -  </details>
    
    151
    +    The full changelog can be found here:
    
    156 152
     
    
    157
    -- [ ] Email tor-qa mailing list: tor-qa@lists.torproject.org
    
    158
    -  - ***(Optional)*** Additional information:
    
    159
    -    - [ ] Note any new functionality which needs testing
    
    160
    -    - [ ] Link to any known issues
    
    153
    +    - https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/raw/$(TBB_BUILD_TAG)/projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt
    
    154
    +    ```
    
    161 155
     - [ ] Email packagers:
    
    162
    -  - Recipients:
    
    163
    -    - Tails dev mailing list: tails-dev@boum.org
    
    164
    -    - Guardian Project: nathan@guardianproject.info
    
    165
    -    - torbrowser-launcher: micah@micahflee.com
    
    166
    -    - FreeBSD port: freebsd@sysctl.cz <!-- Gitlab user maxfx -->
    
    167
    -    - OpenBSD port: caspar@schutijser.com <!-- Gitlab user cschutijser -->
    
    168
    -  - [ ] ***(Optional)*** Note any changes which may affect packaging/downstream integration
    
    156
    +  - [ ] Tails dev mailing list: tails-dev@boum.org
    
    157
    +  - [ ] Guardian Project: nathan@guardianproject.info
    
    158
    +  - [ ] FreeBSD port: freebsd@sysctl.cz <!-- Gitlab user maxfx -->
    
    159
    +  - [ ] OpenBSD port: caspar@schutijser.com <!-- Gitlab user cschutijser -->
    
    160
    +  - [ ] Note any changes which may affect packaging/downstream integration
    
    169 161
     
    
    170 162
     </details>
    
    171 163
     
    
    172 164
     <details>
    
    173 165
       <summary>Signing</summary>
    
    174 166
     
    
    175
    -### signing
    
    167
    +### release signing
    
    176 168
     - **NOTE** : In practice, it's most efficient to have the blog post and website updates ready to merge, since signing doesn't take very long
    
    169
    +- [ ] Assign this issue to the signer, one of:
    
    170
    +  - boklm
    
    171
    +  - richard
    
    177 172
     - [ ] On `$(STAGING_SERVER)`, ensure updated:
    
    178 173
       - [ ] `tor-browser-build` is on the right commit: `git tag -v tbb-$(TOR_BROWSER_VERSION)-$(TOR_BROWSER_BUILD_N) && git checkout tbb-$(TOR_BROWSER_VERSION)-$(TOR_BROWSER_BUILD_N)`
    
    179
    -  - [ ]  `tor-browser-build/tools/signing/set-config.hosts`
    
    174
    +  - [ ] `tor-browser-build/tools/signing/set-config.hosts`
    
    180 175
         - `ssh_host_builder` : ssh hostname of machine with unsigned builds
    
    181 176
           - **NOTE** : `tor-browser-build` is expected to be in the `$HOME` directory)
    
    182 177
         - `ssh_host_linux_signer` : ssh hostname of linux signing machine
    
    ... ... @@ -189,9 +184,9 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    189 184
         - `tbb_version_build` : the tor-browser-build build number (if `var/torbrowser_build` in `rbm.conf` is `buildN` then this value is `N`)
    
    190 185
         - `tbb_version_type` : either `alpha` for alpha releases or `release` for stable releases
    
    191 186
     - [ ] On `$(STAGING_SERVER)` in a separate `screen` session, ensure tor daemon is running with SOCKS5 proxy on the default port 9050
    
    192
    -- [ ] run do-all-signing script:
    
    193
    -    - `cd tor-browser-build/tools/signing/`
    
    194
    -    - `./do-all-signing.torbrowser`
    
    187
    +- [ ] On `$(STAGING_SERVER)` in a separate `screen` session, run do-all-signing script:
    
    188
    +  - `cd tor-browser-build/tools/signing/`
    
    189
    +  - `./do-all-signing.torbrowser`
    
    195 190
     - **NOTE**: at this point the signed binaries should have been copied to `staticiforme`
    
    196 191
     - [ ] Update `staticiforme.torproject.org`:
    
    197 192
       - From `screen` session on `staticiforme.torproject.org`:
    
    ... ... @@ -201,20 +196,7 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    201 196
         - **NOTE** : Skip this step if we need to hold on to older versions for some reason (for example, this is an Andoid or Desktop-only release, or if we need to hold back installers in favor of build-to-build updates if there are signing issues, etc)
    
    202 197
         - [ ] `/srv/cdn-master.torproject.org/htdocs/aus1/torbrowser`
    
    203 198
         - [ ] `/srv/dist-master.torproject.org/htdocs/torbrowser`
    
    204
    -- [ ] Static update components (again) : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
    
    205
    -- [ ] Publish APKs to Google Play:
    
    206
    -  - Log into https://play.google.com/apps/publish
    
    207
    -  - Select `Tor Browser` app
    
    208
    -  - Navigate to `Release > Production` and click `Create new release` button:
    
    209
    -    - Upload the `tor-browser-android-*.apk` APKs
    
    210
    -    - Update Release Name to Tor Browser version number
    
    211
    -    - Update Release Notes
    
    212
    -    - Next to 'Release notes', click `Copy from a previous release`
    
    213
    -    - Edit blog post url to point to most recent blog post
    
    214
    -  - Save, review, and configure rollout percentage
    
    215
    -    - [ ] 25% rollout when publishing a scheduled update
    
    216
    -    - [ ] 100% rollout when publishing a security-driven release
    
    217
    -  - [ ] Update rollout percentage to 100% after confirmed no major issues
    
    199
    +  - [ ] Static update components (again) : `static-update-component cdn.torproject.org && static-update-component dist.torproject.org`
    
    218 200
     
    
    219 201
     </details>
    
    220 202
     
    
    ... ... @@ -223,33 +205,51 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    223 205
     
    
    224 206
       <details>
    
    225 207
         <summary>Check whether the .exe files got properly signed and timestamped</summary>
    
    226
    -    ```
    
    227
    -    # Point OSSLSIGNCODE to your osslsigncode binary
    
    228
    -    pushd tor-browser-build/${channel}/signed/$TORBROWSER_VERSION
    
    229
    -    OSSLSIGNCODE=/path/to/osslsigncode
    
    230
    -    ../../../tools/authenticode_check.sh
    
    231
    -    popd
    
    232
    -    ```
    
    208
    +
    
    209
    +```bash
    
    210
    +# Point OSSLSIGNCODE to your osslsigncode binary
    
    211
    +pushd tor-browser-build/${channel}/signed/$TORBROWSER_VERSION
    
    212
    +OSSLSIGNCODE=/path/to/osslsigncode
    
    213
    +../../../tools/authenticode_check.sh
    
    214
    +popd
    
    215
    +```
    
    216
    +
    
    233 217
       </details>
    
    234 218
       <details>
    
    235 219
         <summary>Check whether the MAR files got properly signed</summary>
    
    236
    -    ```
    
    237
    -    # Point NSSDB to your nssdb containing the mar signing certificate
    
    238
    -    # Point SIGNMAR to your signmar binary
    
    239
    -    # Point LD_LIBRARY_PATH to your mar-tools directory
    
    240
    -    pushd tor-browser-build/${channel}/signed/$TORBROWSER_VERSION
    
    241
    -    NSSDB=/path/to/nssdb
    
    242
    -    SIGNMAR=/path/to/mar-tools/signmar
    
    243
    -    LD_LIBRARY_PATH=/path/to/mar-tools/
    
    244
    -    ../../../tools/marsigning_check.sh
    
    245
    -    popd
    
    246
    -    ```
    
    220
    +
    
    221
    +```bash
    
    222
    +# Point NSSDB to your nssdb containing the mar signing certificate
    
    223
    +# Point SIGNMAR to your signmar binary
    
    224
    +# Point LD_LIBRARY_PATH to your mar-tools directory
    
    225
    +pushd tor-browser-build/${channel}/signed/$TORBROWSER_VERSION
    
    226
    +NSSDB=/path/to/nssdb
    
    227
    +SIGNMAR=/path/to/mar-tools/signmar
    
    228
    +LD_LIBRARY_PATH=/path/to/mar-tools/
    
    229
    +../../../tools/marsigning_check.sh
    
    230
    +popd
    
    231
    +```
    
    232
    +
    
    247 233
       </details>
    
    248 234
     </details>
    
    249 235
     
    
    250 236
     <details>
    
    251 237
       <summary>Publishing</summary>
    
    252 238
     
    
    239
    +### Google Play: https://play.google.com/apps/publish
    
    240
    +- [ ] Publish APKs to Google Play:
    
    241
    +  - Select `Tor Browser` app
    
    242
    +  - Navigate to `Release > Production` and click `Create new release` button:
    
    243
    +    - Upload the `tor-browser-android-*.apk` APKs
    
    244
    +    - Update Release Name to Tor Browser version number
    
    245
    +    - Update Release Notes
    
    246
    +    - Next to 'Release notes', click `Copy from a previous release`
    
    247
    +    - Edit blog post url to point to most recent blog post
    
    248
    +  - Save, review, and configure rollout percentage
    
    249
    +    - [ ] 25% rollout when publishing a scheduled update
    
    250
    +    - [ ] 100% rollout when publishing a security-driven release
    
    251
    +  - [ ] Update rollout percentage to 100% after confirmed no major issues
    
    252
    +
    
    253 253
     ### website: https://gitlab.torproject.org/tpo/web/tpo.git
    
    254 254
     - [ ] `databags/versions.ini` : Update the downloads versions
    
    255 255
         - `torbrowser-stable/version` : sort of a catch-all for latest stable version
    
    ... ... @@ -258,49 +258,37 @@ Tor Browser Stable lives in the various `maint-$(TOR_BROWSER_MAJOR).$(TOR_BROWSE
    258 258
         - `torbrowser-*-alpha/version` : platform-specific alpha versions
    
    259 259
         - `tor-stable`,`tor-alpha` : set by tor devs, do not touch
    
    260 260
     - [ ] Push to origin as new branch, open 'Draft :' MR
    
    261
    -- [ ] Remove `Draft:` from MR once signed-packages are uploaded
    
    261
    +- [ ] Remove `Draft:` from MR once signed-packages are accessible on https://dist.torproject.org
    
    262 262
     - [ ] Merge
    
    263 263
     - [ ] Publish after CI passes and builds are published
    
    264 264
     
    
    265 265
     ### blog: https://gitlab.torproject.org/tpo/web/blog.git
    
    266
    -
    
    267
    -- [ ] Duplicate previous Stable or Alpha release blog post as appropriate to new directory under `content/blog/new-release-tor-browser-$(TOR_BROWSER_VERSION)` and update with info on release :
    
    268
    -    - [ ] Run `tools/signing/create-blog-post` which should create the new blog post from a template (edit set-config.blog to set you local blog directory)
    
    269
    -    - [ ] Update Tor Browser version numbers
    
    270
    -    - [ ] Note any ESR rebase
    
    271
    -    - [ ] Link to any Firefox security updates from ESR upgrade
    
    272
    -    - [ ] Link to any Android-specific security backports
    
    273
    -    - [ ] Note any updates to :
    
    274
    -      - tor
    
    275
    -      - OpenSSL
    
    276
    -      - NoScript
    
    277
    -    - [ ] Convert ChangeLog.txt to markdown format used here by :
    
    278
    -      - `tor-browser-build/tools/changelog-format-blog-post`
    
    266
    +- [ ] Run `tools/signing/create-blog-post` which should create the new blog post from a template (edit set-config.blog to set you local blog directory)
    
    267
    +  - [ ] Note any ESR update
    
    268
    +  - [ ] Note any updates to dependencies (OpenSSL, zlib, NoScript, tor, etc)
    
    269
    +  - [ ] Thank any users which have contributed patches
    
    279 270
     - [ ] Push to origin as new branch, open `Draft:` MR
    
    280
    -- [ ] Remove `Draft:` from MR once signed-packages are uploaded
    
    281
    -- [ ] Merge
    
    271
    +- [ ] Merge once signed-packages are accessible on https://dist.torproject.org
    
    282 272
     - [ ] Publish after CI passes and website has been updated
    
    283 273
     
    
    284 274
     ### tor-announce mailing list
    
    285
    -  <details>
    
    286
    -    <summary>email template</summary>
    
    287
    -
    
    288
    -      Subject:
    
    289
    -      New Release: Tor Browser $(TOR_BROWSER_VERSION) (Android, Windows, macOS, Linux)
    
    290
    -
    
    291
    -      Body:
    
    292
    -      Hi everyone,
    
    293
    -
    
    294
    -      Tor Browser $(TOR_BROWSER_VERSION) has now been published for all platforms. For details please see our blog post:
    
    295
    -
    
    296
    -      - $(BLOG_POST_URL)
    
    275
    +- [ ] Email tor-announce mailing list: tor-announce@lists.torproject.org
    
    276
    +  - **Subject**
    
    277
    +    ```
    
    278
    +    New Release: Tor Browser $(TOR_BROWSER_VERSION) (Android, Windows, macOS, Linux)
    
    279
    +    ```
    
    280
    +  - **Body**
    
    281
    +    ```
    
    282
    +    Hi everyone,
    
    297 283
     
    
    298
    -  </details>
    
    284
    +    Tor Browser $(TOR_BROWSER_VERSION) has now been published for all platforms. For details please see our blog post:
    
    285
    +    - $(BLOG_POST_URL)
    
    299 286
     
    
    300
    -- [ ] Email tor-announce mailing list: tor-announce@lists.torproject.org
    
    301
    -  - **(Optional)** Additional information:
    
    302
    -    - [ ] Link to any known issues
    
    287
    +    Changelog:
    
    288
    +    # paste changleog as quote here
    
    289
    +    ```
    
    303 290
     
    
    304 291
     </details>
    
    305 292
     
    
    306 293
     /label ~"Release Prep"
    
    294
    +