Giter Club home page Giter Club logo

vscode-sprint-planner's Introduction

MarketPlace Tag Visual Studio Marketplace Downloads

Coffee

Azure DevOps planner

This extension features ability to export a planning session into Azure DevOps system. Planning in Azure DevOps itself is hard, way too much clicking. It's so much easier to just type all the tasks in a simple text form and then just export them.

Usage

To start a planning session open a new file in vscode and change the language to planner (Change Language mode command). This should enable the extension and all its features.

Before you can start you have to configure connection to your Azure DevOps account. For that you will need a URL and a token for authentication. For details please check the Configuration.

Now it's time to start planning your first story. You can start by typing US# to get an autocomplete for user stories of current sprint:

user story autocomplete

If you wish to add tasks for iteration other than current you can do so by choosing it at the beginning of the file:

iteration autocomplete

Then it's time to enter some tasks in the following manner:

user story autocomplete

The image should be pretty self-explanatory I hope. The numbers following the tasks are estimations. They will be filled in both Original and Remaining Estimation field in Azure DevOps. As you can see it can be specified in both hours (up to 2 decimal places) and minutes (integer).

At this point there is a Code Lens action above the user story that lets you publish the changes. Check it out. In case of something is not working just open Output panel and pick Azure DevOps planner channel to see what might be wrong. If it's not obvious just raise an issue.

Setting area path (since 0.5.0)

There is an option to override default area path set by Azure DevOps. One can do so either in the settings (global and can be persisted between sessions) or inline: area

Area set inline applies to all user stories in all lines below until another area is specified. This means it can be combined like this:

Area: Area1

US#1
US#2
US#3

Area: Area2

US#4
US#5
...

It supports autocompletion and some basic diagnostics to avoid typos.

Updating tasks

Since 0.3.0 tasks can be updated. After a publish all published tasks should get their ID instered at the end of task line. Don't play with those IDs if you don't want to make a mess. Later on you can change the title or estimation and such task will get updated next time this User Story is published.

Creating User Stories

Apart from creating tasks you can now also create new user stories. Just use the snippet create user story or type it manually like this:

create user story

After publishing you will get User Story ID filled and you can add more tasks then or update existing ones:

user story created

Synchronize tasks from Azure DevOps (since 0.5.0)

It's now possible to pull the tasks from Azure DevOps:

sync-tasks

All unsaved tasks added prior to synchronization will be preserved and merged into respective Activity. When you modify a task which is already saved in Azure DevOps and pull the tasks from Azure DevOps before publishing your changes, it will be overwritten by the data pulled from Azure DevOps. There is no confilct resolution feature available. When pulling, the one being pulled always wins. It's just as Publish feature have worked since the beginning. When pushing changes they will always overwrite the original task/user story even if it has been modified by someone else in the meantime so please bear that in mind and be careful.

Configuration

This extension contributes the following settings:

  • planner.azure-devops.organization: Organization name
  • planner.azure-devops.project: Project name
  • planner.azure-devops.team: Team name
  • planner.azure-devops.token: Authentication token (https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops)
  • planner.azure-devops.proxy: Proxy to be used when connecting to Azure DevOps API (leave empty if your proxy is set in env under $HTTPS_PROXY or $HTTP_PROXY)
  • planner.azure-devops.process: Project process (currently only Agile and Scrum are supported)
  • planner.azure-devops.debug: whether to turn debug logging on or off
  • planner.azure-devops.default.activity: default Activity used when none is provided for the task (default: Development)
  • planner.azure-devops.default.area: default Area used when none is provided inline (default: empty -> Azure DevOps default)
  • planner.azure-devops.snippets: custom tasks snippets that can be used (see Task snippets)

To change the settings please use Preferences: Open User Settings command (or Workspace Settings if you like to use different Azure DevOps accounts per workspace). This is by default bound to Ctrl+,. In the settings expand Extensions section and look for this extension's settings.

Token permissions

For the token to work correctly it only needs one single scope: Work Items (read & write) scopes

Task snippets

It's often the case that some tasks repeat among all or almost all user stories. There is no need to type them all manually every time. It's a tedious task and should be automated. For instance we have automated tests. Additionally we do so called triangle meetings (BA/DEV/TEST) before starting the story to make sure we understand it correctly and also a short test pyramid meeting to preselect which tests go where (unit, integration, ui). Given that activities we have 6 common tasks (actually it's even more but you get the point) that we should add to every single User Story on planning session. We never liked adding that manually.

Let's handle this like a pro! Go to settings file (UI doesn't provide option to define this yet) so Preferences: Open Settings (JSON) command. Then just add a new setting called planner.azure-devops.snippets which is a map of snippets:

"planner.azure-devops.snippets": {
    "local_relative": "./.planner/relative_snippet",
    "local_absolute": "D:\\my-snippets\\absolute_snippet",
    "pastebin": "https://pastebin.com/raw/5eSr8eLZ"
},

Note: it can be either a local file or HTTP(S) direct link to a file

The format of the file is as in the example: https://gist.github.com/ipatalas/8bb7b2fdb2e1c26dc8249659791cf56e#file-taxes

It will be read only once when activating the extension (usually first time you open a planner file) and then cached. From now on you can simply use names of those snippets as snippets in the editor like this:

snippets

Isn't it better than you used to do it?

Complementary extensions

I am using another extension to make it easier to change the estimations:

incrementor

There are few similar extensions available on the market. I picked Incrementor. VSCode allows you to bind any commands to a key so I bound increment/decrement to Ctrl+Shift+Up and Ctrl+Shift+Down but that's up to you.

Update: apparently there is such an option built-in. Check Emmet: Increment by 1 and similar commands. Still using Incrementor though to easily toggle between let/const/var or private/public. Pick whatever suites you more.

Roadmap

  • ability to define arbitrary activity type (hardcoded to 'Development' now)
  • option for partial update (take already published tasks into account) ๐Ÿ‘‰ Updating tasks
  • snippets for "taxes" tasks (common tasks among many user stories, eg. unit tests) ๐Ÿ‘‰ Task snippets
  • want more? open an issue or PR

vscode-sprint-planner's People

Contributors

chrisjainsley avatar dependabot[bot] avatar heresandyboy avatar ipatalas avatar sammeel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

vscode-sprint-planner's Issues

A potentially dangerous Request.Path error when attempting to connect

[Extension Host] [DEBUG] Response: {"$id":"1","innerException":null,"message":"A potentially dangerous Request.Path value was detected from the client (:).","typeName":"System.Web.HttpException, System.Web","typeKey":"HttpException","errorCode":0,"eventId":0}

I've tried several variations on org included the https://dev.azure.com/orgname and dev.azure.com/orgname and even orgname, but none seem to work.

The extension seems to be throwing this invalid request error and primarily fails on the first step of iteration path retrieval. The debug console log shows: [Extension Host] [DEBUG] GET /https%3A%2F%2Fdev.azure.com%2Fmyorg%2F/PROJECTNAME/DEV%20TEAM%20DEVS/_apis/work/teamsettings/iterations?$timeframe=current and fails here without any ability to retrieve work items.

I'm using an inherited scrum template so default work-items expected like PBI and Task should be there.

Token Permissions definition

Hello
First of all thank you this extensions is exactly what i was looking for.
Can you please add to the Readme which settings should be enabled on the token so that we do not have to enable full access.
thank you

Enroll existing tasks on US selection (edit mode)

Goal: edit existing tasks in user story for (current/any) sprint.
When: Right after autocompletion for User Story is made and it is enrolled into a US#xxx - title string
It would be nice to have: all existing Tasks enrolled as well right below, just like in new US mode.

Feature Request - Pull task updates from Azure DevOps

Our developers have started to use this extension and it works well for them when logging bugs, but often QA will need to update the task to ask a question or ad repo steps.
The devs would like to see that update in VS code, so 1st see that there is an update then have an a refresh or update command?

Step 1. Dev creates task -

*Publish to Azure DevOps, 1 task (0h)*
US#49 - WebSite Users - Create User
- 	User registration page - register button broken
  After clicking button form refreshes but does not send registration email

Step 2. Updated on web app by QA-

*Publish to Azure DevOps, 1 task (0h)*
US#49 - WebSite Users - Create User
*Updated in Azure DevOps*
- 	User registration page - register button broken [#21]
  After clicking button form refreshes but does not send registration email

Step 3. Pull update from Azure DevOps on click of "Updated in Azure DevOps" -

*Publish to Azure DevOps, 1 task (0h) *
US#49 - WebSite Users - Create User
- 	User registration page - register button broken [#21]
  After clicking button form refreshes but does not send registration email 
  Checked DB no user is created probably an issue with the form
  Please add full repo steps

That way they can see there is an update ("Updated in AzureDevOps" text) and choose to pull it down (they may have local changes so may choose to use the web UI)
They can then use the existing update functionality to respond and update the description

License missing

Would you mind declaring a license for this extension (or am I am missing something?)? :)
Cheers!

Add Area

When ever you publish the files are created in the main project area not under our team area. It would be nice if you can specify the area for each item so things will be in the correct place instead of having to move them after creating.

Other than that this seems great good work.

Feature Request - Pull all user stories in an iteration

Similar to how we can pull tasks from a story, would it be possible to pull user stories from an iteration?
The same button, but when defining IT#?

It wouldn't have to recursively pull tasks from stories - just a single line for each user story.

Flow:

  1. Type "IT#sprint name"
  2. Press "sync work items from iteration"

File should look like:

IT#sprint name
US#12134
US#22342
US#35322
...

Connecting to OnPremise Installation

I am trying to connect to an on premise install, but only receive a "Request failed with status code 404".

Does this not function with an on-premise setup?

Remaining Work Error

I've set up a new user story and added tasks with estimated time.
After publishing, tasks got IDs, but estimated time disappeared.

Now I'm trying to set it again, as shown on your addon documentation, but receive the following error:
TF401320: Rule Error for field Remaining Work. Error code: InvalidNotEmpty.

In my file it looks like that:

US#2 - Name of Story
Development:
- Task 1, 2h [# 3]
- Task 2, 1h [# 4]
- Task 3, 1h [# 5]

Is it a bug or what am I missing?

PS: Added space to task id only here so no tasks in Github get linked.

Unable to retrieve US

With Full Access token It seems that i cannot retrieve the user stories from any given sprints.
Iteration retrieval works fine though.
image
Am i missing some configuration on Azure devops?

[BUG] No REST request sent?

For some reason, after installing the plugin and filling in configuration details, the sync and publish commands are not working properly. At first, there was a "command not found" error and then for some reason the message was no longer showing but the REST request is never made. Any tips?

Feature Request: Hide Completed Items

I'm evaluating a PBI that has been carried over from a prior sprint.
This means the completed items from that show up, but due to the Estimated Effort being locked, it will recreate the work-item as a duplicate. This makes it hard to seperate out my new planning from prior work.

Can we consider an option to "hide completed" items in the synced items from Azure DevOps to avoid this conflict?

Feature Request: Add Child / Parent for all items

Some project frameworks need milestones to be user stories and the other user stories the work is delivered against are owned by sprint team members. It would be extremely handy if one could add this in the snippet or in the items after they are created.

problems behind proxy

without proxy everything works fine.

But I have to work behind a proxy and there it doesn't work at all.

for sync:
Getting user story info...
Running the contributed command: 'sprintplanner.syncTasks' failed.

for publish:
Running the contributed command: '_vscode_delegate_cmd_knydxwib' failed.
Cannot read property 'toUpperCase' of undefined

sometimes I have this, when testing the extension I get
connect ETIMEDOUT 13.107.42.20:443

other extensions use the proxy setting that are set for windows:
$env:https_proxy
http://user:password@host:port

so my question is, can You add proxy support for the extension. Or tell me, what I have to do, to make it work

Can we add Features / Epics too?

Just to say I love this extension and if I could plan out a whole large project with a Yaml style syntax I'd be v happy.
Sadly I don't think I have the skills to help code anything.

Certificate Expired

Hi, I'm getting a "certificate has expired" error from your plug-in. I've uninstalled and reinstalled, same error.

Order of pushed tasks is not preserved

Due to the fact that tasks from a user story are being added simultaneously it leads to race conditions and causes the order of the tasks in Azure DevOps to be semi-random after they are published.

Idea: add tasks in a sequential way to keep the order. It will take longer to publish, but it will keep the correct order.

Iterations Note being Detected

When trying to define my iterations it isn't able to search my tenant for the proper iterations.

Further when trying to push an update so that it uses current iterations I get a 401 error and the following returned in the output

[4:21:57 PM.881] Iteration not specified - will default to @CurrentIteration
[4:21:57 PM.881] Getting current iteration info...
[4:21:57 PM.943] ''

I have manually retrieved the Iteration ID and tried supplying that using
IT#47fa6b31-41b4-*****-985d-abdba9e604f0

And still get the same message above.

Ability to update existing tasks

That's the next big thing coming which I miss as well.
I don't know yet how is this going to look exactly but the first idea is to just put the ID of a saved task somewhere in the editor after they are published like:

Development:
- A task that has just been created, 2h (#123)

#123 being the ID of the task

Later then next publish command can easily grab the tasks and distinguish which of them are new or existing and issue create/update operation accordingly.

Moreover there will probably be a command to import all existing tasks from a User Story so that one can just focus on batch update rather than only adding new ones.

If anyone has any thoughts please share it here.

Issues setting up the extension

Hi,
I was wondering if you could provide some more information regarding what is needed.
I have the proxy and the token set up, however I'm not sure which of the other items I should declare.

As of now I'm not sure if this extension is set up correctly.

Thanks in advance

Update Description from VSTS

First of all thanks for great library
Issue: While we can update description, when getting new tasks, the description moves to bottom of all tasks and we do not know which description is for which. Additionally, Update made of description on vsts is not brought so the data doesnt match
Request:
if we can bring in addition to task list, description of current task and populate in file it shall be very helpful to see what is being done in task and solve both issue mentioned above

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.