Skip to content

Commit 550d694

Browse files
authored
Merge pull request #902 from marionbarker/working-docs
Browser Build: remove old 3.2 to 3.4 update section, update information about certificate renewal
2 parents b468127 + ef76f78 commit 550d694

File tree

6 files changed

+92
-95
lines changed

6 files changed

+92
-95
lines changed

docs/browser/automatic.md

+58
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,64 @@ The `alive` branch you need is created automatically when you run the `Build Loo
6565
* You can delete every branch that starts with the name `alive`
6666
* Leave the other branches alone unless a mentor directs you to take action
6767

68+
## Automatic Certificates
69+
70+
Coming soon with `Loop 3.6.0`.
71+
72+
Already here with `LoopFollow 2.3.0` and some other Open-Source apps.
73+
74+
### Requirements
75+
76+
You must have the `ENABLE_NUKE_CERTS` variable set to `true` for your *GitHub* organization, or when using a personal account to build, add it to each repository.
77+
78+
* Refer to [Add Variable](prepare-fork.md#add-variable){: target="_blank" }
79+
80+
### Certificates and `Match-Secrets`
81+
82+
The Create Certificates action does the following:
83+
84+
* Reads existing signing credentials from your `Match-Secrets` private respository and confirms if they are valid
85+
* OR
86+
* Uses your `Distribution` Certificate from *Apple* or creates a new one if one does not exist
87+
* Securely stores, in your `Match-Secrets` private repository, signing credentials (like certificates and provisioning profiles from *Apple*) used for code signing for each Identifier in your app when you build
88+
89+
### Annual Renewal
90+
91+
This happens once a year after *Apple* automatically expires your `Distribution` Certificate.
92+
93+
* When the *Apple* `Distribution` certificate expires, the saved credentials in your `Match-Secrets` private repository are invalid and need to be removed (<code>nuke</code>)
94+
* You need a new `Distribution` Certificate at *Apple*
95+
* You need to create new signing credentials for `Match-Secrets`
96+
97+
For the `Loop` app, up through version 3.4.4, you need to do this process manually.
98+
99+
### Automatic Certificate Renewal
100+
101+
Some Open-Source apps, in particular `Trio` and `LoopFollow 2.3.0` already have this capability.
102+
103+
* If your signing credentials for the app being built are invalid and `ENABLE_NUKE_CERTS` is `true`, then signing credentials will be cleared from your `Match-Secrets` repository, a new `Distribution` certificate will be created at *Apple* and signing credentials for the current app will be generated and stored in `Match-Secrets`.
104+
105+
* Next app you build will need certificates created because all signing credentials were cleared out of your `Match-Secrets` repository
106+
* If that app is configured for automatic certificate renewal, you only need to run the `Build Action`; it detects no signing credentials are available and creates them
107+
* If that app is not configured for automatic certificate renewal, you must first run the action `Create Certificates` and then `Build`
108+
109+
### Open-Source App Schedule
110+
111+
Each Open-Source App has a schedule for when the automatic build happens. This determines when the automatic check for certificate status happens.
112+
113+
The times are shifted to make sure only one Open-Source app performs a `nuke` process at one time. This only happens once a year, but we wanted to be sure there are no conflicts. Even if an app doesn't have automatic certificates implemented yet, they are added to the table as suggested values to use when this capability gets added. All times are UTC. If other apps decide to add this feature, please make a pull request to LoopDocs so we can add those times to the deconfliction table.
114+
115+
| Open-Source App | AutoCerts? | Wed Time | 1st of Month Time |
116+
|:--|:-:|--:|--:|
117+
| <span translate="no">Loop</span> | `dev` only | 09:00 | 07:00 |
118+
| <span translate="no">LoopCaregiver</span> | n | 13:00 | 11:00 |
119+
| <span translate="no">LoopFollow</span> | y | 12:00 | 10:00 |
120+
| <span translate="no">LoopFollow_Second</span> | y | 12:20 | 10:20 |
121+
| <span translate="no">LoopFollow_Third</span> | y | 12:40 | 10:40 |
122+
| <span translate="no">Trio</span> | y | 08:00 | 06:00 |
123+
| <span translate="no">xDrip4iOS</span> | n | 16:00 | 14:00 |
124+
125+
68126
## Modify Automatic Building
69127

70128
For someone using [development code](build-dev-browser.md) for their own use, they could decide to choose when to update their `fork` to the most recent commit. They can still have the advantage of automatic building without automatic updates; in other words, they want a new build added to TestFlight every month. There may be other configurations someone would choose. These options are available starting with Loop 3.3.0 (`dev` branch) and later.

docs/browser/bb-update.md

+9-92
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
> Regardless of build method, this is an **update** and will install over your existing app; your **settings are maintained including your current CGM and Pump.**
88
9+
**For most, the *Loop* app is configured for automatic build, so you only need to come to this page if the automatic build failed.**
10+
911
???+ info "Time Estimate (click to open/close)"
10-
Build the *Loop* App
12+
Manually update and build the *Loop* App
1113

1214
- 5 min: Check *Apple* account status
1315
- Check if you need to renew certificates (once a year only)
@@ -21,6 +23,7 @@
2123

2224
* 5 min: Clear out expired certificates
2325
* 5 min: Generate new certificates
26+
> When Loop 3.6.0 is released, certificate renewal will be automatic once you [Add Variable](prepare-fork.md#add-variable){: target="_blank" }
2427

2528
One Time: Complete the information for the Digital Service Act Compliance
2629

@@ -32,7 +35,6 @@
3235

3336
Most users will start at [How to Update or Rebuild](#how-to-update-or-rebuild):
3437

35-
* If currently using verion 3.2.3 or earlier, there are manual steps included to update to 3.4
3638
* If currently using verion 3.4.0 or later, builds are automatic but you still need to do some actions:
3739
* Your *Apple Developer* account must be active
3840
* All agreements must be signed for your *Apple Developer* account
@@ -115,6 +117,8 @@ Digital Service Act Compliance
115117

116118
> This is Step 2 of 6 - it is only needed once a year - you should get an email from Apple 30 days before your `Distribution Certificate` expires. (Don't worry if you did not see the email.)
117119
120+
> If you have not added the `Variable` `ENABLE_NUKE_CERTS`, do it now. See [Add Variable](prepare-fork.md#add-variable){: target="_blank" }. Once `Loop 3.6.0` is released, your fork is updated and you set up that variable, you can skip this step - it will be automatic.
121+
118122
**Apps in TestFlight are not affected when a certificate expires or is revoked.**
119123

120124
* Apps installed on the phone continue to run
@@ -222,95 +226,6 @@ The bullets below show typical messages when you are building the `main` branch.
222226

223227
> This is Step 4 of 6 - this is always required.
224228
225-
### Update from 3.2.x to 3.4
226-
227-
For the update from 3.2.x to 3.4, you must do more than "just" build. If you skip this step - the build will fail.
228-
229-
* The `Identifier` for the "`widget`" changed from "`SmallStatusWidget`" to the more descriptive "`LoopWidgetExtension`"
230-
231-
> If you built version 3.3.0 (the `dev branch` before release of version 3.4) or newer, you can skip ahead to [Build the App](#build-the-app).
232-
233-
You will (1) run [`Add Identifiers`](#add-identifiers), (2) [add the `App Group`](#add-app-group-to-new-identifier) to the new identifier, (3) run [`Create Certificates`](#create-certificates) and then (4) run [`Build Loop`](#build-the-app).
234-
235-
#### Add Identifiers
236-
237-
In your fork of LoopWorkspace:
238-
239-
* Run the Action: `Add Identifier`
240-
* Wait for it to succeed
241-
242-
??? tip "Detailed instructions for `Add Identifier` (Click to open/close)"
243-
Refer to the graphic below for the numbered steps:
244-
245-
1. Click on the `Actions` tab of your <code>LoopWorkspace</code> repository
246-
1. On the left side, click on 2. <code>Add Identifiers</code>
247-
1. On the right side, click `Run Workflow` to show a dropdown menu
248-
* You will see your default branch (typically this is `main`)
249-
1. Tap the green button that says `Run workflow`.
250-
251-
![add identifiers using github actions](img/action-02-add-identifiers.svg){width="700"}
252-
{align="center"}
253-
254-
The `Add Identifiers` &nbsp;<span class=notranslate>Action</span>&nbsp; should succeed or fail in a few minutes. Do not continue to the next step until this one succeeds.
255-
256-
* If you see the green check (:octicons-check-circle-fill-16:{: .passed }) continue to the next section
257-
* If you see the red `X` (:octicons-x-circle-fill-16:{: .failed }):
258-
* [Action: Add Identifiers Errors](bb-errors.md#action-add-identifiers-errors){: target="_blank" } tells you what to search for in the file
259-
* Resolve the error and repeat `Add Identifiers`
260-
261-
#### Add `App Group` to New `Identifier`
262-
263-
Open the [Certificates, Identifiers & Profiles: Identifiers List](https://developer.apple.com/account/resources/identifiers/list){: target="_blank" } page.
264-
265-
Click on the "`LoopWidgetExtension`" identifier to open the `Edit Your App ID Configuration` screen.
266-
267-
| `NAME` | `IDENTIFIER` |
268-
|-------|------------|
269-
| `Loop Widget Extension` | `com.TEAMID.loopkit.Loop.LoopWidgetExtension` |
270-
271-
The graphic below has numbered steps that match these directions:
272-
273-
1. Looking at the `App Services` column, scroll down to the `App Groups` row and ensure the check box (under the `Capabilities column`) for `App Groups` is checked
274-
2. If the word `Configure` shows up, tap on it
275-
* This opens the `App Group Assignment` screen
276-
* If it said `Edit` instead of `Configure` - you can click to confirm you have the correct App Group but won't need to continue or save if it is correct
277-
3. Check the box by `Loop App Group` that uses your `TEAMID` in `group.com.TEAMID.loopkit.LoopGroup`
278-
* Note that if you previously built with Xcode, the name may be different, i.e., `XC group com TEAMID loopkit LoopGroup`
279-
4. Tap `Continue`
280-
5. Tap `Save`
281-
282-
![graphic showing selection of the correct App Group](img/update-identifier-loop-3-4.png){width="700"}
283-
{align="center"}
284-
285-
If you did not need to make changes, the `Save` button will not be active.
286-
287-
* Tap on the `< All Identifiers` link at the top left
288-
289-
The full list of Identifiers should be displayed again.
290-
291-
!!! note "Other Identifiers"
292-
All other identifiers should be already set up.
293-
294-
* If they are not, refer to [Configure to Use Browser: Add App Group to Identifiers](prepare-app.md#add-app-group-to-identifiers){: target="_blank" }
295-
296-
#### Create Certificates
297-
298-
You must run the action `Create Certificates` again because the `Identifiers` were updated. Wait for this to succeed before trying to build.
299-
300-
???+ tip "Detailed instructions (Click to open/close)"
301-
Refer to the graphic below for the numbered steps:
302-
303-
1. Click on the "<code>Actions</code>" tab of your <code>LoopWorkspace</code> repository
304-
1. On the left side, click on "`Create Certificates`"
305-
1. On the right side, click "`Run Workflow`" to show a dropdown menu
306-
* You will see your default branch (typically `main`)
307-
1. Tap the green button that says "`Run workflow`".
308-
309-
![create certificates using github actions](img/action-03-create-certs.svg){width="700"}
310-
{align="center"}
311-
312-
1. Wait a minute or two for the action to finish
313-
314229
#### Build the App
315230

316231
Refer to graphic below as you follow the steps to build the *Loop* app.
@@ -328,7 +243,9 @@ Refer to graphic below as you follow the steps to build the *Loop* app.
328243

329244
#### What if the Build Fails
330245

331-
If a new release is announced at [Current Release](../version/releases.md#current-release){: target="_blank" }, look to see if there are instructions about extra steps required with the release. ([Updating from 3.2.3 to 3.4.x](#update-from-32x-to-34) requires extra steps described above.)
246+
If a new release is announced at [Current Release](../version/releases.md#current-release){: target="_blank" }, look to see if there are instructions about extra steps required with the release.
247+
248+
> When `Loop 3.6.0` is released, if you customized your Loop app, you may need to discard your customization and manually sync your `fork`. Check out the [Ahead and Behind](#ahead-and-behind) instructions.
332249
333250
If you are using the dev branch, the update steps are the same, but review information on this page: [Build Loop dev with Browser](build-dev-browser.md){: target="_blank" }.
334251

docs/browser/other-apps.md

+21-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ The same technique is used and the same six <code>Secrets</code> are used for ma
1717

1818
If you are coming to this page to update one of the other apps, follow the [How to Update or Rebuild](bb-update.md#how-to-update-or-rebuild){: target="_blank" } instructions provided for the *Loop* app, but substitute the repository name for the app you want to rebuild for all references to&nbsp;*<span translate="no">LoopWorkspace</span>*.
1919

20+
> If you have not added the `Variable` `ENABLE_NUKE_CERTS`, do it now. See [Add Variable](prepare-fork.md#add-variable){: target="_blank" }.
21+
2022
### Multiple Copies of `LoopFollow`
2123

2224
For the convenience of caregivers who use `LoopFollow` to monitor multiple people, updates were added in v2.1.2 to make this more convenient. This works regardless of the build method. (Build with Browser or [Build with *Mac*](https://www.loopandlearn.org/loop-follow#lf-script){: target="_blank" }).
@@ -52,6 +54,18 @@ You will return to this page after reviewing (but not doing) this step [Configur
5254
| <span translate="no">LoopCaregiver</span> | [https://github.com/LoopKit/LoopCaregiver](https://github.com/LoopKit/LoopCaregiver){: target="_blank" } | [LoopDocs: <span translate="no">LoopCaregiver</span>](../nightscout/loop-caregiver.md) |
5355
| <span translate="no">LoopFollow</span> | [https://github.com/loopandlearn/LoopFollow](https://github.com/loopandlearn/LoopFollow){: target="_blank" } | [<span translate="no">LoopFollow</span>](https://www.loopandlearn.org/loop-follow){: target="_blank" }|
5456

57+
??? tips "LoopFollow Builders: Display Name (Click to Open/Close)"
58+
* Would you like the name of your LoopFollow app to be personalized?
59+
* Do you have more than one Looper, so you are using LoopFollow_Second or LoopFollow_Third?
60+
* The 3 LoopFollow repositories enable you to customize the name shown on your phone
61+
62+
After you `fork` your *LoopFollow* repository, find the file named: `LoopFollowDisplayNameConfig.xcconfig`
63+
64+
* Open it in your browser
65+
* Follow the directions to change `display_name`
66+
* "Save the file" means commit the change to your `main` branch
67+
* It is recommended that you use LF_name, where name is the customized name - that way you can find it in an alphabetic list of apps
68+
5569
The two repositories below are only if you need to follow a second or third looper. All others should use just the table above. The instructions for the second and third looper are otherwise identical to the first looper. Note that `LoopCaregiver` can follow multiple Loopers; you select the person inside the app.
5670

5771
| Special Case | Fork from this Address |
@@ -65,7 +79,7 @@ The two repositories below are only if you need to follow a second or third loop
6579

6680
* All `repositories` in your *GitHub* organization use the organization <code>Secrets and Variables</code>
6781
* If you have not already completed [Add <code>Secrets</code> to your *GitHub* Organization](#add-secrets-to-your-github-organization), do it now
68-
* Skip ahead to [Validate <code>Secrets</code>](#validate-secrets)
82+
* Skip ahead to [Add Identifiers](#add-identifiers)
6983

7084
### Using a Personal *GitHub* Account
7185

@@ -98,7 +112,9 @@ Open the text file in which you maintain a copy of your 6 <code>Secrets</code> s
98112
![dialog for entering a new secret](img/repeat-secret-dialog.png){width="500"}
99113
{align="center"}
100114

101-
Once all six <code>Secrets</code> are added, proceed to the first Action to validate your secrets.
115+
Be sure to [Add Variable](prepare-fork.md#add-variable){: target="_blank" } to the repository as well as `Secrets` to enable automatic certificate creation.
116+
117+
Once the <code>Secrets</code> and `Variable` are added, proceed to the first Action to validate your secrets.
102118

103119
## Validate <code>Secrets</code>
104120

@@ -135,6 +151,8 @@ The `Validate Secrets` &nbsp;<span class=notranslate>Action</span>&nbsp; should
135151

136152
Near the top middle of your Repository fork, click on the "Actions" tab.
137153

154+
* If this is the first `Action` you run with this repository you'll be informed that `Workflows aren't being run on this forked repository`
155+
* Tap on the green button that says: `I understand my workflows, go ahead and enable them`
138156
* The graphic below is an example from Loop, your screen will show your app and associated repository
139157

140158
Refer to the graphic below for the numbered steps:
@@ -448,6 +466,7 @@ The directions below may be sufficient for some.
448466
* In the left pane, scroll down to find `Secrets and variables` and click on the dropdown symbol and choose `Actions`
449467
* At this point, tap on `New organization secret` and add your 6 secrets
450468
* Then tap on the `Variable` tab and enter your Variable
469+
* For details on adding the variable, see [Add Variable](prepare-fork.md#add-variable){: target="_blank" }
451470

452471
### Build with Organization
453472

docs/browser/prepare-fork.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ If you are someone who already has a lot of forks in your personal account and w
225225

226226
1. Follow the steps to create your organization
227227
* [Create a Free *GitHub* Organization](secrets.md#create-a-free-github-organization){: target="_blank" }
228-
1. Add the `Secrets` and the `Variable` as explained in [Prepare to Enter `Secrets`](#prepare-to-enter-secrets)
228+
1. Add the `Secrets` and the `Variable` to your *GitHub* organization as explained in [Prepare to Enter `Secrets`](#prepare-to-enter-secrets)
229229
1. Fork all the repos you normally use, but this time, set your organization as the owner
230230
1. For each repository in your organization:
231231
* Tap on the Actions tab

docs/faqs/glossary.md

+2
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ When Google Translate is selected:
164164

165165
**<span translate="no">Nightscout</span>**&nbsp; (Nightscout): a personal website used to view your glucose and diabetes management data, `Loop` can upload to `Nightscout`
166166

167+
**<span translate="no">nuke</span>**&nbsp; (nuke): clear signing credentials from your Match-Secrets repository
168+
167169
**<span translate="no">Onboarding</span>**&nbsp; (Onboarding): familiarize new, and existing, Loop users with settings in Loop 3 and ensure the Therapy Settings are all entered and are within safety guardrails
168170

169171
**<span translate="no">Omnipod</span>**&nbsp; (Omnipod): Insulet tubeless insulin pump; Loop supports Eros (with RileyLink) and DASH. Eros is also known as Classic, UST400, and System.

includes/tooltip-list.txt

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
*[MPC]: model predictive control; the type of control algorithm used by Loop
7676
*[NFC]: Near-Field Communication is used for scanning devices such as Libre sensors
7777
*[Nightscout]: a personal website used to view your glucose and diabetes management data, `Loop` can upload to `Nightscout`
78+
*[nuke]: clear signing credentials from your Match-Secrets repository
7879
*[Onboarding]: familiarize new, and existing, Loop users with settings in Loop 3 and ensure the Therapy Settings are all entered and are within safety guardrails
7980
*[Omnipod]: Insulet tubeless insulin pump; Loop supports Eros (with RileyLink) and DASH. Eros is also known as Classic, UST400, and System.
8081
*[OrangeLink]: radio-frequency device Loop uses to control Eros pods (aka. Gen 3) and older Medtronic pumps

0 commit comments

Comments
 (0)