Update participant guide and interface instructions for clarity and consistency
This commit is contained in:
@@ -4,7 +4,7 @@ Welcome! This survey evaluates how people use different project management inter
|
||||
|
||||
## Overview
|
||||
|
||||
**Duration**: 15-20 minutes
|
||||
**Duration**: 15-25 minutes
|
||||
**Goal**: Complete 8 task-based exercises using different interfaces and provide feedback on your experience
|
||||
|
||||
## Data Collection Notice
|
||||
@@ -14,10 +14,9 @@ We do this to ensure no unwanted actors are interfering with our data collecting
|
||||
|
||||
- Responses are anonymized before analysis
|
||||
- We collect task results, questionnaire answers, and interaction events during the survey
|
||||
- We do not intentionally collect personally identifying information
|
||||
- We do not collect personally identifying information
|
||||
- You may exit at any time by pressing Esc between tasks or closing the terminal
|
||||
- Data is collected continuously, so exiting early still contributes valuable insights
|
||||
- Contact us if you want your data deleted.
|
||||
|
||||
## After Each Task
|
||||
|
||||
@@ -45,7 +44,6 @@ You'll answer a short questionnaire about:
|
||||
- **Interface not responding**: Press Ctrl+C to exit, then restart the survey
|
||||
|
||||
|
||||
|
||||
## Interfaces You'll Use
|
||||
|
||||
You will complete tasks using different interfaces. Here's what to expect:
|
||||
@@ -71,8 +69,7 @@ You will complete tasks using different interfaces. Here's what to expect:
|
||||
- Mouse-driven interaction only
|
||||
- For task progress press the red button in the upper right corner.
|
||||
- Two views: Issues (list format) and Kanban (sprint tracking)
|
||||
- Press `esc` or `q` in the terminal to skip the task
|
||||
|
||||
- Press `q` in the server terminal to skip the task
|
||||
|
||||
|
||||
## The Tasks
|
||||
@@ -102,6 +99,7 @@ Create a new issue with specific details:
|
||||
3. Assign to: **"Me"**
|
||||
4. Mark as: **"In Progress"**
|
||||
|
||||
**Note**: The test is not case sensitive.
|
||||
|
||||
|
||||
### 3. Coding Task
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"charm.land/bubbles/v2/key"
|
||||
"charm.land/bubbletea/v2"
|
||||
tea "charm.land/bubbletea/v2"
|
||||
"charm.land/lipgloss/v2"
|
||||
"github.com/LazyBachelor/LazyPM/internal/models"
|
||||
"github.com/LazyBachelor/LazyPM/internal/style"
|
||||
@@ -15,17 +15,16 @@ const stages = 2
|
||||
const (
|
||||
IntroTitle = "Project Management Interface Survey"
|
||||
IntroductionText = `This survey evaluates how people use different project management interfaces to complete common tasks.
|
||||
You will complete a short set of task-based exercises and answer a few follow-up questions about the experience.
|
||||
Your feedback helps us compare interface design and usability.
|
||||
You will complete a short set of task-based exercises and answer a few follow-up questions about the experience. Your feedback helps us compare interface design and usability.
|
||||
|
||||
The survey takes around 15-20 minutes to complete.`
|
||||
The survey takes around 15-25 minutes to complete.`
|
||||
|
||||
Disclaimer = `Data Collection Notice
|
||||
|
||||
• Responses are anonymized before analysis
|
||||
• We do not collect personally identifying information
|
||||
• You may exit at any time by pressing Ctrl+C between tasks or closing the terminal.
|
||||
• We collect task results, questionnaire answers, and interaction events during the survey
|
||||
• We do not intentionally collect personally identifying information
|
||||
• You may exit at any time by pressing Esc between tasks or closing the terminal.
|
||||
• Data is collected continuously during the survey, so exiting early will still contribute valuable insights.`
|
||||
)
|
||||
|
||||
@@ -58,7 +57,7 @@ func newIntroModel() introModel {
|
||||
key.WithHelp("b", "back"),
|
||||
),
|
||||
Quit: key.NewBinding(
|
||||
key.WithKeys("esc", "ctrl+c", "q"),
|
||||
key.WithKeys("esc", "ctrl+c"),
|
||||
key.WithHelp("esc", "quit"),
|
||||
),
|
||||
}
|
||||
|
||||
@@ -59,14 +59,19 @@ func BaseDetails(interfaceType InterfaceType) TaskDetails {
|
||||
case InterfaceTypeREPL:
|
||||
interfaceDesc = `About our REPL Interface?
|
||||
|
||||
- REPL stands for Read-Eval-Print Loop. It is an interactive programming environment that takes single user inputs (reads), executes them (eval), and returns the result to the user (print), then waits for the next input (loop).
|
||||
- REPL stands for Read-Eval-Print Loop.
|
||||
It's an interactive programming environment that takes single user inputs (reads),
|
||||
executes them (eval), and returns the result to the user (print),
|
||||
then waits for the next input (loop).
|
||||
|
||||
- In a traditional CLI, you would use the help command to see available commands and their descriptions.
|
||||
In this REPL interface, you can also type 'pm help' to get a list of available commands and their descriptions.
|
||||
- In a traditional CLI, you would use the help command to see available commands.
|
||||
|
||||
- You can also run shell commands directly from the REPL, like "git" or "ls".
|
||||
- You can type 'pm help' to get a list of available commands and their descriptions.
|
||||
|
||||
- When you type commands in this interface, suggestions will appear as you type, which you can select to auto-complete your command.
|
||||
- You can run shell commands directly from the REPL, like "git" or "ls".
|
||||
|
||||
- When you type commands in this interface, suggestions will appear as you type,
|
||||
which you can select to auto-complete your command.
|
||||
|
||||
- Write "exit" to skip task during the survey.`
|
||||
case InterfaceTypeTUI:
|
||||
@@ -87,7 +92,7 @@ func BaseDetails(interfaceType InterfaceType) TaskDetails {
|
||||
interfaceDesc = `About our Web Interface?
|
||||
|
||||
- A Web Interface is a user interface that is accessed through a web browser.
|
||||
It allows users to interact with the application using graphical elements such as buttons, forms, and menus.
|
||||
Users to interact with the application using graphical elements such as buttons and forms.
|
||||
|
||||
- We designed this interface to only be interactive through mouse clicks.
|
||||
|
||||
@@ -95,7 +100,8 @@ func BaseDetails(interfaceType InterfaceType) TaskDetails {
|
||||
- Issues: This view shows the available issues in a list format.
|
||||
- Kanban: This view allows you to manage and track the progress of different issues.
|
||||
|
||||
- Press esc/q in the terminal to skip the task.`
|
||||
- Press q in the server terminal to skip the task.`
|
||||
default:
|
||||
interfaceDesc = "Unknown Interface"
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@ Your task:
|
||||
3. Assign the issue to yourself as "Me"
|
||||
4. Mark the issue as In Progress when you are done.
|
||||
|
||||
Make sure to fill out all the necessary details to help others understand the work item.`
|
||||
Make sure to fill out all the necessary details to help others understand the work item.
|
||||
Note: The test is not case sensitive, so you can use "me" instead of "Me".`
|
||||
|
||||
type CreateIssueTask struct {
|
||||
done bool
|
||||
|
||||
@@ -43,7 +43,7 @@ func (q *QuestionnaireModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
q.form.WithWidth(msg.Width)
|
||||
case tea.KeyPressMsg:
|
||||
switch msg.String() {
|
||||
case "q", "ctrl+c":
|
||||
case "ctrl+c":
|
||||
q.userQuit = true
|
||||
return q, tea.Quit
|
||||
}
|
||||
|
||||
@@ -28,16 +28,16 @@ type TaskHelpKeys struct {
|
||||
|
||||
var DefaultTaskKeys = TaskHelpKeys{
|
||||
Quit: key.NewBinding(
|
||||
key.WithKeys("q", "ctrl+c"),
|
||||
key.WithHelp("q", "Quit"),
|
||||
key.WithKeys("ctrl+c"),
|
||||
key.WithHelp("ctrl+c", "quit"),
|
||||
),
|
||||
Start: key.NewBinding(
|
||||
key.WithKeys("enter"),
|
||||
key.WithHelp("enter", "Start"),
|
||||
key.WithHelp("enter", "start"),
|
||||
),
|
||||
About: key.NewBinding(
|
||||
key.WithKeys("?"),
|
||||
key.WithHelp("?", "Learn interface"),
|
||||
key.WithHelp("?", "interface info"),
|
||||
),
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ func (m TaskModel) View() tea.View {
|
||||
var body string
|
||||
if m.aboutVisible {
|
||||
about := style.TextStyle.
|
||||
Width(textWidth).
|
||||
Width(bodyWidth - 2).
|
||||
Align(lipgloss.Left).
|
||||
Render(m.InterfaceDescription)
|
||||
|
||||
@@ -147,9 +147,9 @@ func (m TaskModel) View() tea.View {
|
||||
|
||||
card := cardStyle.Render(body)
|
||||
|
||||
helpText := "Press " + m.keys.Start.Help().Key + " " + m.keys.Start.Help().Desc +
|
||||
" • " + m.keys.Quit.Help().Key + " " + m.keys.Quit.Help().Desc +
|
||||
" • " + m.keys.About.Help().Key + " " + m.keys.About.Help().Desc
|
||||
helpText := "Press " + m.keys.Start.Help().Key + " to " + m.keys.Start.Help().Desc +
|
||||
" • " + m.keys.Quit.Help().Key + " to " + m.keys.Quit.Help().Desc +
|
||||
" • " + m.keys.About.Help().Key + " for " + m.keys.About.Help().Desc
|
||||
|
||||
view := lipgloss.JoinVertical(
|
||||
lipgloss.Center,
|
||||
@@ -176,11 +176,13 @@ func (m TaskModel) View() tea.View {
|
||||
func (m TaskModel) getQuitHelpText() string {
|
||||
switch m.InterfaceType {
|
||||
case models.InterfaceTypeWeb:
|
||||
return "Press esc/q in the terminal to skip the task"
|
||||
return "Press 'q' in the server terminal to skip the task"
|
||||
case models.InterfaceTypeTUI:
|
||||
return "Press 'q' to skip task during the survey"
|
||||
case models.InterfaceTypeCLI, models.InterfaceTypeREPL:
|
||||
return "Write 'exit' to skip task during the survey"
|
||||
return `Write 'exit' to skip task during the survey
|
||||
|
||||
Note: Use 'tab' to scroll through suggestions`
|
||||
default:
|
||||
return m.keys.Quit.Help().Key + " to quit"
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ func helpBarConfig(view ViewKind) HelpBarConfig {
|
||||
{Key: "/", Desc: "search"},
|
||||
{Key: "a", Desc: "add"},
|
||||
{Key: "c", Desc: "comment"},
|
||||
{Key: "e/d/s/p/t/A/D", Desc: "edit"},
|
||||
{Key: "e/d/s/p/t/A/D", Desc: `edit("?" for details)`},
|
||||
{Key: "x", Desc: "delete"},
|
||||
{Key: "q", Desc: "quit"},
|
||||
{Key: "?", Desc: "help"},
|
||||
|
||||
@@ -56,7 +56,7 @@ func (m tuiModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
return m, nil
|
||||
case tea.KeyPressMsg:
|
||||
switch msg.String() {
|
||||
case "q", "esc", "ctrl+c":
|
||||
case "q":
|
||||
select {
|
||||
case <-m.quitChan:
|
||||
default:
|
||||
@@ -71,7 +71,7 @@ func (m tuiModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
|
||||
func (m tuiModel) View() tea.View {
|
||||
content := lipgloss.Place(m.width, m.height, lipgloss.Center, lipgloss.Center, fmt.Sprintf(
|
||||
"Web server running at %s\n\nPress q, esc, or Ctrl+C to stop the task and server.\n",
|
||||
"Web server running at %s\n\nPress q to stop the task and server.\n",
|
||||
m.address,
|
||||
))
|
||||
v := tea.NewView(content)
|
||||
|
||||
Reference in New Issue
Block a user