Content
View differences
Updated by Hagen Mahnke 9 months ago
# Extensions
## Embed existing work package
## Goal
Work with Create a rich representations representation of OpenProject objects within documents. We'll an existing work package that automatically updates when the work package changes WITHIN OpenProject. Keep in mind that we'll want to make these extensions available as a library soon-ish (tm).
### Invoking
* Via Slash command
* TODO: define command and keywords
* ~~Maybe add shortcuts via #, ##, ###~~(conflicts with BlockNote's Headline # Extensions triggers)
* Via pasting URL
* block-level if newline, inline otherwise?
### Result
## Embed existing We see two main versions of the work package embed
See * block-level
* in-line
For the block-level, multiple levels of detail should be available - similar to the #, ## and ### embeds work in CKEditor now.
Decision needed: <mention class="mention" data-id="67552" data-id="67476" data-type="work_package" data-text="###67552">###67552</mention> data-text="##67476">##67476</mention>
<br>
##
###
## Create and embed work package
See ## Goal
Create a new work package from the document and have a rich representation of it in the document.
### Invoking
* Via Slash command
* TODO: define command and keywords
* Decision needed: <mention class="mention" data-id="67552" data-id="67485" data-type="work_package" data-text="###67552">###67552</mention> data-text="##67485">##67485</mention>
### Result
Same as _**'Embed existing work package'**_ - see above.
<br>
##
## Batch create work packages mode
### Goal
Quickly create multiple new work packages from the document and have a rich representation of them in the document.
### Invoking
* Via Slash command
* TODO: define command and keywords
* If using the 'create work package command' in a list
* Defaults are set for project (current project), status (?) and type (?)
* Next element (work package) should use project, status and type from last created element as default
* Decision needed: <mention class="mention" data-id="67485" data-type="work_package" data-text="##67485">##67485</mention>
Decision needed: <mention class="mention" data-id="67477" data-type="work_package" data-text="##67477">##67477</mention>
### Result
Same as _**'Embed existing work package'**_ - see above, but in a list.
Decision needed: <mention class="mention" data-id="67476" data-type="work_package" data-text="##67476">##67476</mention>
##
## Convert text list into individual work packages embeds
### Goal
Quickly turn each element in a list into a work package.
### Invoking
* Select elements in the list + context menu
* Defaults are set for project (current project), status (?) and type (?)
* All elements (work package) use the same project, status and type
* Work package title is the text of the list element
Decision needed: <mention class="mention" data-id="67477" data-type="work_package" data-text="##67477">##67477</mention>
### Result
Same as _**'Embed existing work package'**_ - see above, but in a list.
Decision needed: <mention class="mention" data-id="67476" data-type="work_package" data-text="##67476">##67476</mention>
<br>
# Long tail:
\- If you select text and add a link, that's just a normal link.
###
### Copy & Paste
* When copy & pasting into a plain text editor/field, the work package embeds should be turned into plain links
* When copy & pasting into another Blocknote instance
* if the receiving Blocknote instance has our extensions
* maintain the embeds
* if the receiving Blocknote does not have our extension
* display as plain links (how can we do this?)
<br>
\- Copy/paste text, graceful degradation of embeds into links when it doesn't have access to that data. But if the "embed" can be restored if it has access to that information.
\- On copy we can put the data with multiple different MIME types into the clipboard - the receiving client chooses the MIME type that makes sense. So we can keep embeds when we're copying from one document to another, but offer good data when copying to a simple text editor.
\- Open question: How do we gracefully degrade if it's copied to another Blocknote instance that does not have access to the original OP instance (and even be able to restore full info if the access to that OP instance is granted)?
\- Open question: How do we gracefully degrade if it's copied to a Blocknote instance that does not have our extension?\\
[Article explaining the use of different MIME types in the clipboard](https://www.stefanjudis.com/notes/a-clipboard-magic-trick-how-to-use-different-mime-types-with-the-clipboard/)
### Permissions
\* Users who don't have access to a certain work package will not be able see them (for cards)
\* They'll see "Ghost references" (so they know there's something there they can't see). The link to WP will still be exposed, but the anonymous /wp/#id (without leaking project name).
# How
\* / command, pick OP item from general list
\* /op command, pick from only OP-specific command set
\* Type #, ##, ### and have a search
\* Paste link
Thinks to start keeping track/follow/up/having-on-the-radar:
- Configure Gateway path
#
#
#
# User Problem
## User
_What persona, persona segment, or customer type experiences the problem most acutely?_
* Project manager
* Project member
* Product owner
* Customer
* ....
## Problem
_What problem or job does the user have?_
* ...
* <br>
## Pain
_What is the primary workaround that users perform that we could remove or replace? Why is it painful?_
* ....
* <br>
# Business Case
## Reach
_About how many users, customers or potential customers currently have this problem? (Low / Worst Case)_
> Add this value to the custom field and delete this section.
## Impact
_Among relevant customers or prospects, how much value do they get from a comprehensive solution to this problem? (Conservative case)_
> Add this value to the custom field and delete this section.
## Confidence
_What are the top risk factors that could inhibit our ability to deliver this solution? Please consider how we can mitigate these risks._
> Add this value to the custom field and delete this section.
## Urgency and Priority
_What is the relative priority of this opportunity in your backlog? What tradeoffs must you make? Is there a hard deadline or could this wait?_
> Add this value to the custom field and delete this section.
## Solution
_How do we solve the user’s problem. What is our “pain killer”? What must we achieve in the first version of the solution in order to achieve value for the user?_
* ....
* <br>
## Out of Scope for the MVC
_What should NOT be in the minimal viable change, and can be considered for future iterations? Why? Please order them by importance._
* ...
## Differentiation
_What do you believe will differentiate us from the current experience or competitive experiences?_
* ...
## Next iteration
_What is the next solution that would allow us to release meaningful customer value quickly?_
* ...
* <br>
# Launch and Growth
## Measures
_How will you know you solved the problem? Please list measurable, quantitative indicators (preferred) or qualitative ways you plan on assessing the solution?_
* ...
## Messaging
_If you were to write a press release, how would you describe the value to customers?_
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Headline</p></th><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">First Paragraph</p></th><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Customer Quote</p></th><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr></tbody></table></figure>
## Go to market
_How are you planning on getting this into users' hands?_
## Embed existing work package
##
Work with
* Via Slash command
* TODO: define command and keywords
* ~~Maybe add shortcuts via #, ##, ###~~(conflicts with BlockNote's Headline
* Via pasting URL
* block-level if newline, inline otherwise?
### Result
## Embed existing
See
* in-line
For the block-level, multiple levels of detail should be available - similar to the #, ## and ### embeds work in CKEditor now.
Decision needed:
###
## Create and embed work package
See
Create a new work package from the document and have a rich representation of it in the document.
### Invoking
* Via Slash command
* TODO: define command and keywords
* Decision needed:
### Result
Same as _**'Embed existing work package'**_ - see above.
<br>
##
## Batch create work packages mode
### Goal
Quickly create multiple new work packages from the document and have a rich representation of them in the document.
### Invoking
* Via Slash command
* TODO: define command and keywords
* If using the 'create work package command' in a list
* Defaults are set for project (current project), status (?) and type (?)
* Next element (work package) should use project, status and type from last created element as default
* Decision needed: <mention class="mention" data-id="67485" data-type="work_package" data-text="##67485">##67485</mention>
Decision needed: <mention class="mention" data-id="67477" data-type="work_package" data-text="##67477">##67477</mention>
### Result
Same as _**'Embed existing work package'**_ - see above, but in a list.
Decision needed: <mention class="mention" data-id="67476" data-type="work_package" data-text="##67476">##67476</mention>
##
## Convert text list into individual work packages embeds
### Goal
Quickly turn each element in a list into a work package.
### Invoking
* Select elements in the list + context menu
* Defaults are set for project (current project), status (?) and type (?)
* All elements (work package) use the same project, status and type
* Work package title is the text of the list element
Decision needed: <mention class="mention" data-id="67477" data-type="work_package" data-text="##67477">##67477</mention>
### Result
Same as _**'Embed existing work package'**_ - see above, but in a list.
Decision needed: <mention class="mention" data-id="67476" data-type="work_package" data-text="##67476">##67476</mention>
<br>
# Long tail:
\- If you select text and add a link, that's just a normal link.
###
### Copy & Paste
* When copy & pasting into a plain text editor/field, the work package embeds should be turned into plain links
* When copy & pasting into another Blocknote instance
* if the receiving Blocknote instance has our extensions
* maintain the embeds
* if the receiving Blocknote does not have our extension
* display as plain links (how can we do this?)
<br>
\- Copy/paste text, graceful degradation of embeds into links when it doesn't have access to that data. But if the "embed" can be restored if it has access to that information.
\- On copy we can put the data with multiple different MIME types into the clipboard - the receiving client chooses the MIME type that makes sense. So we can keep embeds when we're copying from one document to another, but offer good data when copying to a simple text editor.
\- Open question: How do we gracefully degrade if it's copied to another Blocknote instance that does not have access to the original OP instance (and even be able to restore full info if the access to that OP instance is granted)?
\- Open question: How do we gracefully degrade if it's copied to a Blocknote instance that does not have our extension?\\
[Article explaining the use of different MIME types in the clipboard](https://www.stefanjudis.com/notes/a-clipboard-magic-trick-how-to-use-different-mime-types-with-the-clipboard/)
### Permissions
\* Users who don't have access to a certain work package will not be able see them (for cards)
\* They'll see "Ghost references" (so they know there's something there they can't see). The link to WP will still be exposed, but the anonymous /wp/#id (without leaking project name).
# How
\* / command, pick OP item from general list
\* /op command, pick from only OP-specific command set
\* Type #, ##, ### and have a search
\* Paste link
Thinks to start keeping track/follow/up/having-on-the-radar:
- Configure Gateway path
#
#
#
# User Problem
## User
_What persona, persona segment, or customer type experiences the problem most acutely?_
* Project manager
* Project member
* Product owner
* Customer
* ....
## Problem
_What problem or job does the user have?_
* ...
* <br>
## Pain
_What is the primary workaround that users perform that we could remove or replace? Why is it painful?_
* ....
* <br>
# Business Case
## Reach
_About how many users, customers or potential customers currently have this problem? (Low / Worst Case)_
> Add this value to the custom field and delete this section.
## Impact
_Among relevant customers or prospects, how much value do they get from a comprehensive solution to this problem? (Conservative case)_
> Add this value to the custom field and delete this section.
## Confidence
_What are the top risk factors that could inhibit our ability to deliver this solution? Please consider how we can mitigate these risks._
> Add this value to the custom field and delete this section.
## Urgency and Priority
_What is the relative priority of this opportunity in your backlog? What tradeoffs must you make? Is there a hard deadline or could this wait?_
> Add this value to the custom field and delete this section.
## Solution
_How do we solve the user’s problem. What is our “pain killer”? What must we achieve in the first version of the solution in order to achieve value for the user?_
* ....
* <br>
## Out of Scope for the MVC
_What should NOT be in the minimal viable change, and can be considered for future iterations? Why? Please order them by importance._
* ...
## Differentiation
_What do you believe will differentiate us from the current experience or competitive experiences?_
* ...
## Next iteration
_What is the next solution that would allow us to release meaningful customer value quickly?_
* ...
* <br>
# Launch and Growth
## Measures
_How will you know you solved the problem? Please list measurable, quantitative indicators (preferred) or qualitative ways you plan on assessing the solution?_
* ...
## Messaging
_If you were to write a press release, how would you describe the value to customers?_
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Headline</p></th><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">First Paragraph</p></th><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Customer Quote</p></th><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr></tbody></table></figure>
## Go to market
_How are you planning on getting this into users' hands?_