Skip to content

Commit

Permalink
Updated to version 5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
keesschollaart81 committed Jul 29, 2019
1 parent a9b18dc commit 3f3d2bb
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 20 deletions.
18 changes: 11 additions & 7 deletions Marketplace.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ After setting the goal, the goal will be shown in the tab-label on every page wi

## Release notes

### Version 4.0 - 5-02-2019
### Version 5.0 - 29-07-2019

- Support for dark theme
- From Azure hosted to self contained (Azure DevOps hosted) package
- No more issues with SSL on TFS (Azure DevOps Server) On-Premises
- No more error when no initial goal is set
- Several bugfixes (see GitHub closed issues)
- Rich Text field for detailed goal description
- Toggle to set if goal was achieved
- Export all sprint goals to JSON
- Toggle in settings to disable all telemetry
- Warning that sprint goal in tab title does not update when using inline sprint-picker

For details of older releases check [GitHub Releases](https://github.com/keesschollaart81/vsts-sprint-goal/releases)

Expand All @@ -29,7 +29,11 @@ For details of older releases check [GitHub Releases](https://github.com/keessch

## Privacy

Sprint Goal uses Application Insights to track telemetry. When: 'sprint form page loaded', 'sprint saved', data: the id's (guids) of the account, project and user.
Sprint Goal uses Application Insights to track some telemetry. 3 events are tracked: 'sprint form page loaded', 'sprint goal saved', and 'sprint widget configuration saved'. Your sprint goal and details never leave your Azure DevOps tenant / are not included in the telemetry.

Telemetry can be disabled on the settings page of Sprint Goal which can be found in the Azure DevOps project settings.

When saving the sprint goal, we track if you're showing the goal in the tab title (yes/no) and if the detail text field is used (yes/no) (more than 10 characters). When updating the widget, the size and color of the widget. For every telemetry the id's (guids) of the account, project and user are included as metadata.

## Contact

Expand Down
Binary file modified images/dist/screenshots-vsts-sprint-goal-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/dist/sprint-goal-gif.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 14 additions & 9 deletions script/sprint-goal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { RunningDocumentsTable } from "VSS/Events/Document";
export class SprintGoal {
private iterationId: string;
private teamId: string;
private storageUri: string;
private storageUri: HTMLAnchorElement;
private waitControl: StatusIndicator.WaitControl;
private editor: RoosterJs.Editor;
private helpers: Helpers;
Expand All @@ -22,7 +22,7 @@ export class SprintGoal {
this.helpers = new Helpers();

var context = VSS.getExtensionContext();
this.storageUri = this.getLocation(context.baseUri).hostname;
this.storageUri = this.getLocation(context.baseUri);

var webContext = VSS.getWebContext();
this.log('TeamId:' + webContext.team.id);
Expand Down Expand Up @@ -153,14 +153,18 @@ export class SprintGoal {
this.log("getTabTitle: Sprint goal net yet loaded in cookie, getting it async...");
try {
var settings = await this.getSettings(true);
return "Goal: " + settings.goal;
if (settings.goal && settings.goal != "") {
return "Goal: " + settings.goal;
} else {
return "Goal";
}
}
catch{
return "Goal";
}
}

if (sprintGoalCookie && sprintGoalCookie.sprintGoalInTabLabel && sprintGoalCookie.goal != null) {
if (sprintGoalCookie && sprintGoalCookie.sprintGoalInTabLabel && sprintGoalCookie.goal != null && sprintGoalCookie.goal != "") {
this.log("getTabTitle: loaded title from cookie");
return "Goal: " + sprintGoalCookie.goal;
}
Expand Down Expand Up @@ -206,9 +210,10 @@ export class SprintGoal {
};

if (this.ai) {
if (sprintConfig.goal.substr(0, 1) != "!") {
await this.ai.trackEvent("SaveSettings", <any>sprintConfig);
}
await this.ai.trackEvent("SaveSettings", <any>{
sprintGoalInTabLabel: sprintConfig.sprintGoalInTabLabel,
detailsUsed: `${this.editor.getTextContent()}`.length > 10
});
}

var configIdentifierWithTeam: string = this.helpers.getConfigKey(this.iterationId, this.teamId);
Expand Down Expand Up @@ -306,7 +311,7 @@ export class SprintGoal {
public setCookie = (key, value) => {
var expires = new Date();
expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));
document.cookie = key + '=' + value + ';expires=' + expires.toUTCString() + ';domain=' + this.storageUri + ';path=/';
document.cookie = key + '=' + value + ';expires=' + expires.toUTCString() + ';domain=' + this.storageUri.hostname + ';path=/';
}

public getCookie(key) {
Expand All @@ -323,7 +328,7 @@ export class SprintGoal {
private log = (message: string, object: any = null) => {
if (!window.console) return;

if (this.storageUri.indexOf('dev') === -1 && this.storageUri.indexOf('acc') === -1) return;
if (this.storageUri.href.indexOf('dev') === -1 && this.storageUri.href.indexOf('acc') === -1) return;

if (object) {
console.log(message, object);
Expand Down
5 changes: 2 additions & 3 deletions static/SprintGoalAdmin.html
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ <h1>Sprint Goal</h1>

<div class="form-group">
<label for="telemetryCheckbox">Disable Telemetry</label>
<small>Some data is send to the monitoring backend of the developer to make this a better product. Turn this toggle to 'on' to disable this behaviour.</small>
<small>Some data is send to the monitoring backend of the developer to make this a better product. Turn this toggle to 'on' to disable this behaviour. <a href="https://marketplace.visualstudio.com/items?itemName=keesschollaart.sprint-goal">More info about telemetry/private can be found on the Azure Marketplace / Privacy section.</a></small>
<div class="onoffswitch">
<input type="checkbox" class="onoffswitch-checkbox" name="telemetry" id="telemetryCheckbox">
<label class="onoffswitch-label" for="telemetryCheckbox"></label>
Expand All @@ -94,8 +94,7 @@ <h1>Sprint Goal</h1>
<label for="telemetryCheckbox">Export all goals for project to JSON file</label>
<button id="exportButton">Export</button>
</div>
<!-- <button type="submit" id="submitbutton" class="btn btn-primary">Save</button> -->
<br /><br />
<br />
</form>
</div>
</body>
Expand Down
2 changes: 1 addition & 1 deletion vss-extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"manifestVersion": 1,
"id": "sprint-goal-dev",
"name": "Sprint Goal Dev",
"version": "4.1.33",
"version": "5.0.0",
"publisher": "keesschollaart",
"public": false,
"helpMarkDown": "[More Information](https://github.com/keesschollaart81/vsts-sprint-goal)",
Expand Down

0 comments on commit 3f3d2bb

Please sign in to comment.