Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CSP handling #4449

Merged
merged 25 commits into from
Apr 6, 2019
Merged

Fix CSP handling #4449

merged 25 commits into from
Apr 6, 2019

Conversation

sulkaharo
Copy link
Member

  • Replaces the node-cache module with memory-cache, which works with CSP
  • Fixes a memory leak with profile caching
  • Allow embedded fonts with CSP
  • Allow web socket connection to self

@PieterGit PieterGit added this to the 0.11.2 milestone Mar 5, 2019
PieterGit and others added 2 commits March 5, 2019 22:08
…culate IOB with three digit precision to keep tests happy (and this is roughly the precision we're operating at anyway).
@jweismann
Copy link
Contributor

@sulkaharo. Looks good. A couple of comments:

I guess connectSrc: [ "'self'" ] is overkill with your defaultSrc.

Moreover, may I suggest to add

app.use(bodyParser.json({ type: ['json', 'application/csp-report'] })) app.post('/report-violation', (req, res) => { if (req.body) { console.log('CSP Violation: ', req.body) } else { console.log('CSP Violation: No data received!') } res.status(204).end() })

prior to the CSP directive and then also add

upgradeInsecureRequests: true, reportUri: '/report-violation' }, reportOnly: true }));

to the CSP directive allowing us to catch issues in the log.

Finally, in the past I also had to add ``imgSrc: [ "'self'", 'data:'], to the directives too (for report, profile or admin section) but maybe this isn't necessary anymore.

Thanks for your efforts on this. Highly appreciated!

- add frameAncestors, baseUri and formAction protection
@jweismann
Copy link
Contributor

@PieterGit That was extremely fast:). Thanks. It looks like reportOnly got inside the directive scope. It has to go outside, c.f. the }, after reportUri: '/report-violation'.

@PieterGit
Copy link
Contributor

@jweismann Will fix that tommorow. It took a bit longer than I thought, and I don't want to test this overnight. The branch is available at https://github.com/PieterGit/cgm-remote-monitor/commits/201903_wip_fix_csp

I think this error is causing the /socket.io/?EIO=3&transport=polling&t=XXX 503 (Service Unavailable) on that branch now.

@PieterGit
Copy link
Contributor

PieterGit commented Mar 5, 2019

Pushed fixes to this branch/PR. Am I right that only the clock stuff requires scriptSrc: ["'self'", "'unsafe-inline'"],? That is the only inline unsafe Javascript I can find, with a search on: https://github.com/nightscout/cgm-remote-monitor/search?q=javascript&type=Code

@jweismann
Copy link
Contributor

@PieterGit

As to unsafe-inline: There are issues in view/index.html with the onload construct, cf:
<link rel="stylesheet" type="text/css" href="css/jquery.tooltips.css" media="none" onload="if(media!='all')media='all'">

My suggestion was to have reportOnly: true while we test this option. This will flag all violations in the log but will still run them so pages will show as usual but log will reveal all violations and they can be handled one by one. Eventually, when pages have been tested one by one we should set reportOnly: false whereby we have bumped our header grade to A :).

Having said that, as long as we have unsafe-inline present we will get a warning about this since this is not recommended. Maybe this link could serve as inspiration for the refactoring of these constructs.

@sulkaharo
Copy link
Member Author

@jweismann What's the rationale behind reportOnly: true? I got websocket errors without the connectSrc and thus added it, but I guess that might have been caused by something else.

@jweismann
Copy link
Contributor

@sulkaharo The rationale is that we can turn CSP on and have all pages behave as usual with reportOnly: true, but besides working as usual all violations to our current specification of directives will be flagged in the log. Thus the violations become transparent and we have two options in dealing with each of the violations either by a refactoring that avoids the violations or if we are OK with it then make the directives less strict so that a given construction will not be flagged as a violation anymore. Once we cannot trigger more violations on our pages we have a set of directives that we can enforce by setting reportOnly: false.

I think that your websocket errors was caused by something else.

@sulkaharo
Copy link
Member Author

Note replacing the node-cache module with memory-cache changed the profile calculations slightly, as it looks like the previous value cache implementation was buggy and didn't actually cache the values. This broke a few tests that assumed IOB is calculated at 8 digit precision at all times, so I changed the IOB math to use three digit precision for the presentation, which should be at least as precise as needed given the smallest available dosing in there market is 0.025 IU / dose. Regardless, this PR needs good testing to ensure IOB is still reported consistently.

@sulkaharo
Copy link
Member Author

Re: websockets, we have to add a directive to allow the client to connect to the site itself, as not all browsers recognize a websocket connection correctly when only "self" is mapped. This is fixed in newer Chrome versions but Safari for example still reports websocket connections to self as a violation. https://outlandish.com/blog/configure-content-security-policy-with-websockets-and-express/ lists how to do this, but looks like setting the HOSTNAME variable for the env has other side effects so that can't be used for this without refactoring. @jweismann do you know if there's a way to have helmet set the csp policy upon request, so we could detect the host from the request? This would be the user friendly way for people who host in Heroku, Azure etc

@jweismann
Copy link
Contributor

@sulkaharo alas, not that I'm aware of.

@jweismann
Copy link
Contributor

BTW, should we add the last two headers just for the sake of completeness say something like:

app.use(helmet.referrerPolicy({ policy: 'no-referrer' }))

app.use(helmet.featurePolicy({ features: { payment: ["'none'"], } }))

@PieterGit
Copy link
Contributor

@jpweisman Just added the referrerPolicy and featurePolicy when CSP is enabled.
I think we should release 0.11.2 with SECURE_CSP set to false and then enable it by default for 0.12.

@sulkaharo I had strange caching issue when upgrading from this branch with CSP enabled to dev (0.11 without this PR and so not working CSP ). The browser kept thinking CSP was enabled, even after restarting the dynos. So we need to check if enabling/disabling CSP works as expected and perhaps even roll back to see if there is no CSP caching issue.

@jpweisman @sulkaharo. Can you please confirm this branch is good to merge to dev and include it in 0.11.2?

@jweismann
Copy link
Contributor

@PieterGit, @sulkaharo Thanks for all your efforts here. I will deploy it during the weekend and see if something looks wrong but here are some initial comments from a quick browsing of the code:

  1. I wonder if we should confine the optional redirection to heroku deploys only, i.e. something like:

if (!insecureUseHttp) { app.use((req, res, next) => { if(req.hostname.indexOf('herokuapp.com') > -1) { console.info('Redirecting http traffic to https because INSECURE_USE_HTTP=', insecureUseHttp); if (req.header('x-forwarded-proto') !== 'https') ....

  1. I wonder if the name REDIRECT_HTTP_2_HTTPS is easier to understand than INSECURE_USE_HTTP

  2. I guess that we should set reportOnly: false before we release so that the rules are indeed enforced if the flag is set to true. While we test (like now) I agree that setting it to true is the right approach.

  3. Finally, maybe the HEADER block should be controlled by the active protocol (HTTPS) rather than the flag 'INSECURE_USE_HTTP'.

Hope this is useful input, will get back when I have had time to deploy it.

@sulkaharo
Copy link
Member Author

I think the idea behind having a variable called INSECURE_USE_HTTP and having that disable HTTPS is simply due to the fact that we need to default to a settings that are secure as most people won't configure their sites to almost any degree, so if we default to HTTP, for most users it's effectively the same as not having HTTPS redirects at all and explicitly naming the variable as INSECURE is possibly good way to make Joe Regular to understand they shouldn't touch this (at cost of confusion for experts).

Re: CSP - I realized implementing CSP by default might actually break a lot of scenarios for users, where I've seen all kinds of frame based implementations to see multiple users at the same time and I'm wondering what the impact will be for apps that act as Nightscout containers. And Tesla dashboards etc. CSP is great for protecting multitenant sites from attacks, but in case of Nightscout where each instance is uniquely hosted on per user basis, the attack vectors CSP aims to protect sites against don't really exist with Nightscout. So if we do implement CSP, this needs to be documented extremely clearly for people who have no idea how web security works and it might be better to actually default to CSP being turned off.

@jweismann
Copy link
Contributor

@sulkaharo Regarding CSP, I didn't mean to turn it on by default (i.e. SECURE_CSP should default to false) but I mean that if its indeed turned on (SECURE_CSP explicitly set to true by the user) then we shouldn't just report violations in the console log but actually enforce it. Sorry if this was unclear.

Your point regarding the many variables that most users probably don't touch is indeed a good point.

@PieterGit
Copy link
Contributor

@sulkaharo @jweismann Added SECURE_CSP_REPORT_ONLY (default false). So, my view for the defaults:

0.11.2: SECURE_CSP=false and SECURE_CSP_REPORT_ONLY=false
0.12.0-dev: SECURE_CSP=true and SECURE_CSP_REPORT_ONLY=true (not enforcing, testing)
0.12.0: SECURE_CSP=true and SECURE_CSP_REPORT_ONLY=false
Please let me know if you agree, this can be merged to dev

Let's discuss the future of INSECURE_USE_HTTP at #4483 . I think it's possible to let it work out of the box for all users, AND require secure connections by default.

@jweismann
Copy link
Contributor

@PieterGit your flag settings sounds very reasonable to me. THANKS!

@nightscout nightscout deleted a comment Mar 27, 2019
@jweismann
Copy link
Contributor

@PieterGit Forgot to mention that I tried to deploy this branch too (on heroku) and did not stumble on any obstacles. Looks good to me.

@PieterGit
Copy link
Contributor

I also am running this branch without any problems. Merging to dev

@PieterGit PieterGit merged commit d73958d into dev Apr 6, 2019
tanja3981 pushed a commit to tanja3981/cgm-remote-monitor that referenced this pull request May 21, 2019
* Change incompatible module and fix a memory leak in the process

* Fix fonts, allow websocket

* Oops fix a brainfart with using the hostname

* Don't inlude null hostname

* Update the shrinkwrap

* Instantiate new cache if new instance of profile code is created. Calculate IOB with three digit precision to keep tests happy (and this is roughly the precision we're operating at anyway).

* - implement @jweismann suggestions nightscout#4449 (comment)
- add frameAncestors, baseUri and formAction protection

* update README and run doctoc

* fix reportOnly

* add objectSrc

* Use modern CSS loading

* Change CSS to use the "official" async loading across the board (which hopefully plays nicer with CSP)

* first release candiate for 0.11.2 with Minimed EU Server and Guardian Connect integration

- integrates mddub/minimed-connect-to-nightscout#11 into Nightscout

* bump node 10 LTS version

* increase logging, fix /swagger.yaml

* fix typo

* set version to rc2, update mongodb to 3.2.2

* add SECURE_CSP_REPORT_ONLY (default false).

* npm update and revert to requiring Node versions without security issues.
@sulkaharo sulkaharo deleted the wip/fix_csp branch May 30, 2019 19:52
PavloBasiuk added a commit to PavloBasiuk/cgm-remote-monitor that referenced this pull request Jun 4, 2019
* remove sgvdata

* Fix re-loading bug in profile editor and ensure changes made by the user aren't lost

* Add treatments delete id debug.

* Fix devicestatus ObjectID usage.

* Use new objId in api call

* Make ObjectID initialization consistent

* Fix syntax errors in websocket.js

(cherry picked from commit c945c2e)

* update fontello

use  fontello-cli --config ./config.json install and move the files to the staic/glyphs directory

* minor german language changes

* Adding me to list of translators

* improve helmet use

* add default security settings and test

* add default for hsts extendsettings

* fix app.json

* redirect by default

* test

* test csp

* allow 'unsafe-inline' for stylesSrc and scriptSrc

* Turkish language support added

* npm update, disable Content Security Policy headers for now.  Currently Nightscout is not yet compatible with CSP.

* fix settings.test.js

* fix INSECURE_USE_HTTP

* Some correction

* Some corrections

* Some corrections-1

* Some corrections-2

* Some corrections-3

* clean Turkish language support

* Fix identation

* Initial weektoweek

* More updates for weektoweek

* Add weektoweek report to index

* Fix syntax error

* Fix syntax error

* Fix spelling for localeData

* Fix initialization of weekstoshow array

* Initialize new week

* Fix call to prepareHtml

* Make new sgv array for each week

* Fix reference into datastorage array

* Increment currDay as required

* error correction rising/falling

* Add weektoweek debug logs

* Update CONTRIBUTING.md

Added notes on expectations on Pull Requests

* clean Turkish language support

* Update CONTRIBUTING.md

Added note on README updates

* Update CONTRIBUTING.md

Clarified plugins, bug fixing parts

* Fix syntax error

* Fixed index error

* Handle sort order differences

* Sort week before prepareHtml

* Fix syntax error

* Test fix for week partition

* Fix first day of week getting squashed

* Fix it for real this time

* Update app.json

* Fix missing comma

* Adds back the support for loading Entries with CSV and TEXT formats (nightscout#4114)

* Adds back the support for loading Entries with CSV and TEXT formats

* Add default JSON processing MIME type to request formatting

* Cleanly return a blank string if no entries are found

* Restore TSV output extension, better logging

* Initial Japanese Additions

* Don't move to next week if current week is empty

* Fix syntax error

* Color by day and week report specific size and scale

* Comment out some debug

* style format update

* Use from and to dates to set week span for week2week

* Fix newest on top start point

* Fix newest on top

* Don't render week to week if not selected

* Add unit test for weektoweek report

* Remove weektoweek logging code

* Add clean treatments admin tool.

* Fix clean treatments status html id name

* Return status to treatments delete by query

* Add clean entries db admin tool

(cherry picked from commit f56f0b3)

* Correct delete query fields for entries db

* Make devicestatus delete consistent with entries

* cleanup devicestatus delete

* Add isId to api/devicestatus

* Set query options correctly for devicestatus

* Use dateString for devicestatus date field

* Fix devicestatus default date field

* Fix devicestatus delete query handling

* No 'model' concept for devicestatus

* initialize query find by id correctly for devicestatus delete

* Match devicestatus api indention

* Make treatments delete match devicestatus

* Remove old treatments id api path

* Add entries support for delete query

* Remove unused function.

* Removed unused function.

* Add API updates for new delete options.

* Reload data when entries or treatments are deleted

* Fix week 2 week report when not all weekdays are selected

* Fix weekNum calculation

* Make week2week more resilient to date selections

* Fix codacy findings

* Remove more unused variables

* Add new strings to language.js

* Prevent deleting entries or treatments more recent than 2 days ago

* Add unit test for removing old devicestatus records

* Fix codacy finding

* Add unit test for cleantreatmentsdb.js

* Add unit test for cleanentriesdb.js

* Update Makefile

Regenerated the Codacy Token and gave the new token to Travis

* Update Makefile

Regenerated the Codacy Token and gave the new token to Travis

* Add insert, query, delete test for treatments api

* Add insert, query, delete test for entries api

* Add insert, query, delete test for devicestatus api

* Japanese!

Adding myself as a Japanese Translator. ^_^

* More Japanese

Trying to add an additional update. Having issues with the process. Hopefully I got it this time!

* Add support for Node 10. Upgrade to node 8.14.x . Don't start on older Node versions (except Node 8.11.1 from Azure)

- incorporates nightscout#4134 and nightscout#4129

* allow node ^10.4.2 || ^8.14.1 || ~8.11.1

* fix version typo and add missing parts of PR

* Additions and improvements for Danish language

* Update bgclock.html

Fix for clock showing "24:xx" in 24-hour mode.

* Pad 24h hours with zero

* Upgrade to Node 10 for Azure. Upgrade to version Node 8.15.0 for Node 8 users.

According to Darren Lee @balshor Node 10.14.1 is available on Azure, see https://gitter.im/nightscout/public?at=5c2a50c70b7fc97caaca6211 or https://gist.github.com/balshor/f3bbb86ff98eeecefc5dd4bdb4118b1b

* update code comments on Node versions

thanks @jpcunningh nightscout#4155 (comment)

* Updated rawbg settings to use a single setting tri-state variable.

* upgrade share2nightscout-bridge to  ~0.2.0-dev-20190102

Use npm released version instead of wip/generalize branch. This version will also make sure Nightscout won't crash if Dexcom servers are down.

* update to released version of share2nightscout-bridge and update webpck-cli to 3.2.0

* Added Japanese

Added Japanese and myself to the list of editors. :) Hope I got the details right!

* add jsdom pinned to 11.11.0 (required for benv unit tests)

* Make weektoweek use SCALE_Y system setting correctly

* Make default scale y initialize correctly

* Cleanup code for initializing weektoweek scale

* Add mmconnect note to the ENABLE description

* Add MMCONNECT_ vars

* Update minimed-connect-to-nightscout reference

* Update moment dependency to match dev

* Removed advanced entries for clarity

Didn't get any feedback either way on this change after multiple enquiries, so going ahead with simplification here. If anyone sorely misses any of these items from the default form, can always put them back in. Also added SHOW_PLUGINS, as it's a useful starter setting.

* Tweak mLab/Mongo wording

* Have the UI fully update immediately after new data update. Debounce the Mongo loading for 5 seconds after data has been updated (nightscout#4189)

* Update --bug-report.md

Adding auto-labeling of bugs with the bug label

* Update README.md

Added clarity to ssl config details, and specifics for the use of letsencrypt

* Update README.md

Feedback from @unsoluble

* Fixed the spacing.

I see what you mean. Fixed it. :)

* Semiquote

Used the wrong semiquote.. urg. sorry! All better now.

* spacing check.

* Spacing Test x2

* This should do it!

* Norwegian language corrections and translations

* make Saving profile translatable

* revert minimed-connect version

* two small tweaks

* fix readENVTruthy and make INSECURE_USE_HTTP, SECURE_HSTS_HEADER, SECURE_HSTS_HEADER_* and SECURE_CSP work as expected.

readENVTruthy never returned defaultValue. if not set to on|off|true|false the default value is returned

* npm update

* add missing env

* upgrade to minmum of Node 10.15.1

* fix ident and add extra test to env.test.js

* remove mqtt leftover

* ie8 is not compatible with Terser, so make that explicit

* npm update and integrate terser-webpack-plugin as minimizer

Stick to `terser` version `~3.14.1` instead of `^3.16.0`, because of
```
ERROR in js/bundle.js from Terser
TypeError: Cannot read property 'minify' of undefined
    at minify (E:\path\toc\cgm-remote-monitor\node_modules\terser-webpack-plugin\dist\minify.js:175:23)
```

See terser/terser#254 for details on that bug

* user correct env

* Update IFTTT maker-setup.md docs (nightscout#4206)

* Create test.md

Create folder maker-setup-images

* Add files via upload

Added images to maker-setup-images

* Delete test.md

Delete temp file

* Update maker-setup.md

* Update README.md

Altered the IFTTT section

* Loopalyzer enhanced (nightscout#4215)

* Added table with profiles

First attempt

* Prettified profiles table, ensured last profile displayed

* 1st attempt add showing active profile

* Finalized support for displaying multiple profiles

* Improved deduplication of profiles

* Restored formatting

* Made profiles table a selectable option

* Tolerant in case profile is missing data

* More tolerant on bad profiles

* Refactored the deduplication

Note - needs to be thoroughly tested

* Fixed the profiles table and deduplication of profiles

* Fixed enable/disable of time shift checkbox

* Added explanation of time shift feature

* Added timeshift explanation

Need to run through a last verification before merging to NS,
but my NS currently won't build b/c of npm issues.

* Final Loopalyzer-enhanced

Profiles table works, information on time shift feature added, time shift disabled when only single day.

* Maker docs copyedit & cleanup (nightscout#4256)

* copyedit-and-cleanup

* fix filename typo

* Reimplement Predictions support to Reports (nightscout#4254)

* reimplement nightscout#3179 (Predictions support to Reports)

* add predictions.js

* set version to release candidate 1: 0.11.0-rc1-20190205 (nightscout#4259)

* Tag matafiles with 0.10.3-master-20180805

* Fixes the site for iOS 9 and older

* Name too long, please switch back to BWP

* Create issue templates for NS repo

* Update CONTRIBUTING.md

Added notes on expectations on Pull Requests

* Update CONTRIBUTING.md

Added note on README updates

* Update CONTRIBUTING.md

Clarified plugins, bug fixing parts

* Update --bug-report.md

Adding auto-labeling of bugs with the bug label

* fix contributors (nightscout#4260)

* fix typo in contributors

* fix typo

* Fix auth button ui & update cache busting for App Cache (nightscout#4270)

* small doc fix to comments on Node versions

* Update README.md

* * Fixes authentication dialog UI on Mobile Safari
* Improves app cache busting, so after deploy the app is guaranteed to notice it has to reload content
* Small fix to Finnish language related to auth UI

* Merge master to dev (nightscout#4273)

Merging changes made to Master since last release into Dev for a release

* Update release version

* Update dev version to 0.11.1

* remove + from version, make way for 0.11.1, upgrade webpack (nightscout#4277)

* Improvement: causes client to say Ok Ok when the alarm test button is pressed, needed for speech to work on mobile browsers

* Added janrpn as maintainer of the Danish language (nightscout#4379)

* Update CONTRIBUTING.md

Added myself as maintainer of the Danish language

* Revert "Update CONTRIBUTING.md"

This reverts commit 4864a67.

* Added myself as maintainer of the Danish language

* Changed base image to node:10-alpine (nightscout#4409)

* Wrong Korean translation update (nightscout#4407)

Korean translation update

* @diabetlum added in the list (nightscout#4328)

Add @diabetlum as a maintainer for Türkçe / Turkish language

* Turkish language updates (nightscout#4271)

* required correction

* required correction2

* @diabetlum added in the list

@diabetlum added in the list

* Testing if recent changes have fixed builds in Linux-based Travis instances

* Make sure NPM is up to date

* Protein and Fat logging support (nightscout#3830)

* Add protein and fat logging to CarePortal, simple sums to day to day reporting, grams in graphs

* Add fat and protein to swagger

* Fix aggregate report sometimes considering logged carbs, protein and fat as a string. Add editing of protein and fat to reports. Show protein and carbs on daily reports

* Node and npm update (nightscout#4412)

* npmupdate, update webpack, webpack-bundle-analyzer, swagger-ui-dist, jsonwebtoken, helmet, flot

* update to version 0.11.2-dev-20190224

* also test on latest Node (currently 11), but don't fail Travis build if it fails.

implement cclauss suggestion on openaps/oref0#1203 (comment)

* fix travis

* Node minor security upgrade

Node.js 8.15.1 (LTS "Carbon")
Node.js 10.15.2 (LTS "Dubnium")
Node.js 11.10.1 (Current)

https://nodejs.org/en/blog/vulnerability/february-2019-security-releases/

* fix typo

* npm update

* update npm-shrinkwrap.json

* Croatian translation (nightscout#4349)

* Croatian (hr) translations

* typo correction in hr translation

* added myself to translation

* fix incomplete edit

* few Croatian translation enhancements

* Remove profile toggle and always show Profile Editor link (nightscout#4448)

* Remove Profile Editor toggle

`profile` isn't an optional plugin anymore; doesn't need this display toggle. (Plus it was erroneously toggling off in the absence of the `basal` plugin — see nightscout#4442.)

* Remove profilecontrol class

* Add support for rendering Triple Up and Triple Down Direction (nightscout#4458)

* Support TripleUp Direction for Medtronic Guardian using a single triple arrow Unicode char

* release candiate for 0.11.2 with Minimed EU Server and Guardian Connecti integration (nightscout#4487)

* first release candiate for 0.11.2 with Minimed EU Server and Guardian Connect integration

- integrates mddub/minimed-connect-to-nightscout#11 into Nightscout

* bump node 10 LTS version

* cover request.secure in HTTPS redirect exemption (nightscout#4483)

* Fix CSP handling (nightscout#4449)

* Change incompatible module and fix a memory leak in the process

* Fix fonts, allow websocket

* Oops fix a brainfart with using the hostname

* Don't inlude null hostname

* Update the shrinkwrap

* Instantiate new cache if new instance of profile code is created. Calculate IOB with three digit precision to keep tests happy (and this is roughly the precision we're operating at anyway).

* - implement @jweismann suggestions nightscout#4449 (comment)
- add frameAncestors, baseUri and formAction protection

* update README and run doctoc

* fix reportOnly

* add objectSrc

* Use modern CSS loading

* Change CSS to use the "official" async loading across the board (which hopefully plays nicer with CSP)

* first release candiate for 0.11.2 with Minimed EU Server and Guardian Connect integration

- integrates mddub/minimed-connect-to-nightscout#11 into Nightscout

* bump node 10 LTS version

* increase logging, fix /swagger.yaml

* fix typo

* set version to rc2, update mongodb to 3.2.2

* add SECURE_CSP_REPORT_ONLY (default false).

* npm update and revert to requiring Node versions without security issues.

* Enable id query with no date (nightscout#4481)

* Enable id query with no date

* Add unit test for query.js

* Fix stale data alarms on latest iOS  (nightscout#4542)

* Suspend TimeAgo reports for 15 seconds if the app has been sleeping. Add a BACK link to reports (due to iOS now not resetting springboard web apps, so it's impossible to go back to the main view)

* Move detection to another plugin call

* Wip/ios springboard app fixes (nightscout#4543)

* Suspend TimeAgo reports for 15 seconds if the app has been sleeping. Add a BACK link to reports (due to iOS now not resetting springboard web apps, so it's impossible to go back to the main view)

* Move detection to another plugin call

* Fix typoed millsecond multiplier and drop the alarm suspend to 10 seconds

* Moved to braces module, which is maintained and doesn't have vulnerable dependencies. Added a mention of EU minimed servers to README.

* Wip/libre reporting fixes (nightscout#4502)

* release 0.11.1 (nightscout#4279)

* Update dev version to 0.11.1

* remove + from version, make way for 0.11.1, upgrade webpack (nightscout#4277)

* Reporting compatibiilty fixes for Libre/Miaomiao

  * Allow sgv readings that are spaced 1 minute apart (report.js)
  * Calculate GVI using the actual time deltas of each individual sgv record (don't assume 5 minute gaps)
  * Calculate rapid rise deltas using time delta of the sgv record (don't assume 5 minute gaps)
  * Fix bug in GVIDelta calculation

* Bug fixes after testing

  * Each for loop was dropping the last 2 values of the array
      - firstly, due to using < instead of <= for the length comparator
      - secondly, the last value in the array is never checked, so it was not added

* Code clean ups

  * Commented out all unused references to RMS calculation
  * Removed unused totals variable
  * Formatted using project js-beautify rules

* Update npm-shrinkwrap.json

* Add display_units as a required variable (nightscout#4559)

* re-add out of range RMS (nightscout#4450)

* Allow framing in Helmet, as many users have setups like monitoring two PWDs in a frame-based setup, which was broken by the previous release (nightscout#4495)

* Fixed alexa doc link. (nightscout#4423)

* uncomment the rest of rms
not sure if it's right, but at least there's no error

* display '50+ U', when there's no reservoir value for an Eros pod

* display Loop override in a new pill

could be also be used by openaps, AAPS, or other systems

* css tweaks so the pills align better

* another CSS tweak that allows the pills on the right side to wrap

* update readme to include the override plugin and resole TODO

* fix loop test to expect evBG in the pill value

* Add try/catch blocks to around plugin calls, which should in most cases prevent a single data error in a single plugin from taking down the entire Nightscout (nightscout#4595)

* add triple-arrow svgs (nightscout#4640)

* Fix BG data wrapping issue with Chrome (nightscout#4667)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants