new personal data page that details what data Mycroft collects and what data is sent to third parties

pull/86/head
Chris Veilleux 2022-07-26 11:42:19 -05:00
parent 75da5c89ad
commit 6d35b290cd
6 changed files with 235 additions and 0 deletions

View File

@ -30,6 +30,7 @@ import { ProfileModule } from './modules/profile/profile.module';
import { SharedModule as SharedLibModule } from 'shared'; import { SharedModule as SharedLibModule } from 'shared';
import { SharedModule } from 'shared'; import { SharedModule } from 'shared';
import { SkillModule } from './modules/skill/skill.module'; import { SkillModule } from './modules/skill/skill.module';
import { PersonalDataModule } from './modules/personal-data/personal-data.module';
@NgModule( @NgModule(
{ {
@ -41,6 +42,7 @@ import { SkillModule } from './modules/skill/skill.module';
GlobalnavModule, GlobalnavModule,
HttpClientModule, HttpClientModule,
DeviceModule, DeviceModule,
PersonalDataModule,
ProfileModule, ProfileModule,
SharedLibModule, SharedLibModule,
SharedModule, SharedModule,

View File

@ -0,0 +1,36 @@
/*! *****************************************************************************
SPDX-License-Identifier: Apache-2.0
Copyright (c) Mycroft AI Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { PersonalDataComponent } from './personal-data.component';
const personalDataRoutes: Routes = [
{path: 'personal-data', component: PersonalDataComponent},
];
@NgModule({
imports: [
RouterModule.forChild(personalDataRoutes)
],
exports: [
RouterModule
]
})
export class PersonalDataRoutingModule { }

View File

@ -0,0 +1,90 @@
<h1 class="mat-h1" fxLayoutAlign="center">Data Mycroft Collects</h1>
<div class="personal-data-page" fxLayout="row wrap" fxLayoutAlign="center" fxLayout.xs="column" fxLayoutGap="16px">
<mat-card fxFlex="70">
<mat-card-header>
<fa-icon mat-card-avatar [icon]="emailAddressIcon"></fa-icon>
<mat-card-title>Email Address</mat-card-title>
</mat-card-header>
<mat-card-content>
<p class="mat-body">
When you created this account, you provided your email address. It is the method we
use to identify users. It is also used to send you confirmation messages when
actions are taken against your account. For example, a password reset request is
sent to this email address.
<p class="mat-body">
We do not use your email address for marketing purposes, unless you used the same
email address to sign up for our newsletter or other such mailing list. Your email
address is never shared with third parties.
</p>
</mat-card-content>
</mat-card>
<mat-card fxFlex="70">
<mat-card-header>
<fa-icon mat-card-avatar [icon]="locationIcon"></fa-icon>
<mat-card-title>Geographical Location</mat-card-title>
</mat-card-header>
<mat-card-content>
<p class="mat-body">
When you register a device with Mycroft, the Add Device screen asks for the
geographical location of yor device. This data is synchronized to your device when
it is registered and when it is changed via the Edit Device screen. Your device
uses this data for location-specific services such as date, time and weather.
</p>
</mat-card-content>
</mat-card>
<mat-card fxFlex="70">
<mat-card-header>
<fa-icon mat-card-avatar [icon]="dataPresentationIcon"></fa-icon>
<mat-card-title>Data Presentation</mat-card-title>
</mat-card-header>
<mat-card-content>
<p class="mat-body">
When you register your first device, you are asked for your preferred date format,
time format, and measurement system. This data is synchronized to each of your
devices when they are registered. If the values of these preferences change, the
new values are synchronized to all your devices. Your device uses this data for
when formatting data for presentation such as date, time and weather.
</p>
</mat-card-content>
</mat-card>
</div>
<h1 class="mat-h1" fxLayoutAlign="center">Data Sent to Third Parties</h1>
<div class="personal-data-page" fxLayout="row wrap" fxLayoutAlign="center" fxLayout.xs="column" fxLayoutGap="16px">
<mat-card fxFlex="70">
<mat-card-header>
<fa-icon mat-card-avatar [icon]="voiceIcon"></fa-icon>
<mat-card-title>Speech Transcription</mat-card-title>
</mat-card-header>
<mat-card-content>
<p class="mat-body">
When you issue a command or request to your voice assistant, the audio data is
transcribed into text. The transcription can be performed on your device, but
on-device transcription software does not provide the best user experience.
Transcriptions are more accurate when sent to a third party service provider
over the internet.
<p class="mat-body">
Mycroft has partnered with Assembly AI to provide a privacy focused solution for
speech transcription. Your voice request will be sent for transcription, but will
not be saved.
</p>
</mat-card-content>
</mat-card>
<mat-card fxFlex="70">
<mat-card-header>
<fa-icon mat-card-avatar [icon]="queryIcon"></fa-icon>
<mat-card-title>Answering Queries</mat-card-title>
</mat-card-header>
<mat-card-content>
<p class="mat-body">
When you ask the Mycroft voice assistant a question that cannot be answered by one
of the installed skills, a textual representation of the question is sent to
services like Wolfram Alpha, Duck Duck Go and Wikipedia in an attempt to find the
answer.
</p>
</mat-card-content>
</mat-card>
</div>

View File

@ -0,0 +1,42 @@
@import "@angular/material/theming";
@import "mycroft-colors";
@import "components/buttons";
.personal-data-page {
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
.mat-h1 {
color: mat-color($mycroft-accent);
font-size: 32px;
margin-top: 32px;
}
mat-card {
border-radius: 12px;
margin: 16px;
max-width: 500px;
min-width: 300px;
mat-card-header {
fa-icon {
font-size: 32px;
color: mat-color($mycroft-primary);
padding-left: 16px;
padding-top: 8px;
}
mat-card-title {
font-weight: bold;
padding-top: 16px;
}
}
mat-card-content {
padding: 16px;
}
}

View File

@ -0,0 +1,22 @@
import { Component, OnInit } from '@angular/core';
import { faComments, faEarthAmericas, faEnvelope, faGauge, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
@Component({
selector: 'account-personal-data',
templateUrl: './personal-data.component.html',
styleUrls: ['./personal-data.component.scss']
})
export class PersonalDataComponent implements OnInit {
public dataPresentationIcon = faGauge;
public emailAddressIcon = faEnvelope;
public locationIcon = faEarthAmericas;
public queryIcon = faQuestionCircle;
public voiceIcon = faComments;
constructor() { }
ngOnInit(): void {
}
}

View File

@ -0,0 +1,43 @@
/*! *****************************************************************************
SPDX-License-Identifier: Apache-2.0
Copyright (c) Mycroft AI Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { PersonalDataComponent } from './personal-data.component';
import { PersonalDataRoutingModule } from './personal-data-routing.module';
@NgModule({
declarations: [
PersonalDataComponent
],
imports: [
CommonModule,
FlexLayoutModule,
FontAwesomeModule,
MatButtonModule,
MatCardModule,
PersonalDataRoutingModule
]
})
export class PersonalDataModule { }