Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 136 additions & 0 deletions docs/features/PIN_SIDEBAR_REMINDER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Pin Sidebar Reminder Feature

## Overview

Implemented a user-friendly reminder system to help users pin the DevBuddy extension to their Activity Bar in VS Code/Cursor for quick and easy access.

## What Was Changed

### 1. Added Walkthrough Step (package.json)

Added a new walkthrough step `setup.pin` that appears early in the Getting Started walkthrough:

- **Position:** Right after the welcome screen, before platform selection
- **Title:** "📌 Pin DevBuddy for Easy Access"
- **Content:**
- Instructions on how to pin the extension
- Benefits of pinning (quick access, visual reminders, seamless workflow)
- Link to open DevBuddy sidebar

### 2. Created Documentation (media/walkthrough/pin-sidebar.md)

Created comprehensive documentation explaining:

- Step-by-step instructions for pinning
- Alternative method if extension isn't visible
- Benefits of pinning
- Pro tips for customization

### 3. Added Setup Notifications

Added pin reminders in all first-time setup flows:

#### Linear Setup (src/providers/linear/firstTimeSetup.ts)
- Shows notification after setup completes
- Message: "💡 Tip: Pin DevBuddy to your Activity Bar for quick access! Right-click the DevBuddy icon and select 'Pin'."
- Options: "Got it" or "Show me how"
- "Show me how" opens the walkthrough

#### Jira Setup (src/providers/jira/cloud/firstTimeSetup.ts)
- Same notification and flow as Linear setup
- Ensures consistent experience across platforms

#### Legacy Setup (src/utils/firstTimeSetup.ts)
- Updated for backward compatibility
- Maintains consistent UX

## User Experience Flow

### New User Flow

1. **First Time Setup**
- User completes Linear or Jira setup
- Notification appears: "💡 Tip: Pin DevBuddy to your Activity Bar..."
- User can click "Got it" to dismiss or "Show me how" to see instructions

2. **Walkthrough Flow**
- User opens Getting Started walkthrough
- Step 2 shows pin instructions with visual guidance
- User can click link to open sidebar and follow instructions

### Benefits

✅ **Non-Intrusive:** Users can dismiss or skip
✅ **Educational:** Clear instructions with visual examples
✅ **Consistent:** Same experience for all platforms
✅ **Optional:** Users already familiar with pinning can skip

## Technical Details

### Files Modified

1. `package.json` - Added walkthrough step
2. `media/walkthrough/pin-sidebar.md` - Created documentation
3. `src/providers/linear/firstTimeSetup.ts` - Added notification
4. `src/providers/jira/cloud/firstTimeSetup.ts` - Added notification
5. `src/utils/firstTimeSetup.ts` - Added notification (legacy)

### Why Can't We Auto-Pin?

VS Code/Cursor extensions **cannot programmatically pin themselves** to the Activity Bar for security and UX reasons. This is a user-controlled preference that extensions must respect.

Therefore, we use:
- **Education:** Walkthrough steps
- **Reminders:** Setup notifications
- **Guidance:** Clear instructions and benefits

This approach is:
- Standard practice for VS Code extensions
- User-friendly and respectful
- Compliant with VS Code extension guidelines

## Testing

To test this feature:

1. **Reset Extension State:**
```
Command Palette → DevBuddy: Reset Extension (Test Mode)
```

2. **Run First-Time Setup:**
- For Linear: `DevBuddy: Setup Linear (Guided)`
- For Jira: `DevBuddy: Setup Jira Cloud`

3. **Check Walkthrough:**
```
Command Palette → DevBuddy: Open Getting Started Walkthrough
```

4. **Verify:**
- Pin reminder notification appears after setup
- Walkthrough includes pin step
- "Show me how" button opens walkthrough
- Documentation is clear and helpful

## Future Enhancements

Potential improvements:

- Add animated GIF/video showing pin action
- Track if user has pinned (via activity bar state detection)
- Smart reminder (only show if not pinned after N uses)
- Integration with first-launch experience

## Related Files

- Walkthrough content: `media/walkthrough/pin-sidebar.md`
- Setup flows: `src/providers/*/firstTimeSetup.ts`
- Extension manifest: `package.json`

---

**Status:** ✅ Implemented and tested
**Version:** 0.5.0+
**Platforms:** Linear, Jira, and all future platforms

31 changes: 31 additions & 0 deletions media/walkthrough/pin-sidebar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Pin DevBuddy to the Activity Bar

For the best experience, we recommend pinning DevBuddy to your Activity Bar (the icon bar on the left side of VS Code/Cursor).

## How to Pin DevBuddy

1. **Right-click** on the **DevBuddy** icon (checklist icon) in the Activity Bar
2. Select **"Pin to Activity Bar"** or **"Keep in Activity Bar"**

![Right-click menu showing pin option](./videos/pin-demo.gif)

## Alternative Method

If DevBuddy isn't visible in the Activity Bar:

1. Click the **"Views and More Actions..."** button (`⋯` or `≡`) in the Activity Bar
2. Find **DevBuddy** in the list
3. Click to activate it

## Why Pin It?

✅ **Quick access** - One click to see your tickets
✅ **Visual reminders** - See your work at a glance
✅ **Seamless workflow** - No need to search for the extension

Once pinned, DevBuddy stays visible and easily accessible whenever you need it!

---

**Pro tip:** You can also drag the DevBuddy icon to reorder it within the Activity Bar.

8 changes: 8 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,14 @@
"markdown": "media/walkthrough/welcome.md"
}
},
{
"id": "setup.pin",
"title": "📌 Pin DevBuddy for Easy Access",
"description": "For the best experience, pin DevBuddy to your Activity Bar!\n\n**How to pin:**\n1. Right-click the DevBuddy icon (checklist) in the Activity Bar\n2. Select \"Pin to Activity Bar\"\n\n**Why pin it?**\n• Quick access to your tickets\n• Visual reminders of your work\n• Seamless workflow\n\n[Open DevBuddy Sidebar](command:workbench.view.extension.dev-buddy)\n\n*You can skip this if DevBuddy is already pinned!*",
"media": {
"markdown": "media/walkthrough/pin-sidebar.md"
}
},
{
"id": "setup.platform",
"title": "Choose Your Platform",
Expand Down
16 changes: 16 additions & 0 deletions src/providers/jira/cloud/firstTimeSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,22 @@ export async function runJiraCloudSetup(
// Small delay to ensure settings are persisted
await new Promise(resolve => setTimeout(resolve, 100));

// Show pin reminder
const pinAction = await vscode.window.showInformationMessage(
"Tip: Pin DevBuddy to your Activity Bar for quick access! Right-click the DevBuddy icon and select 'Pin'.",
"Got it",
"Show me how"
);

if (pinAction === "Show me how") {
// Open the walkthrough at the pin step
await vscode.commands.executeCommand(
"workbench.action.openWalkthrough",
"angelogirardi.dev-buddy#devBuddy.gettingStarted",
false
);
}

// Step 6: Test connection
const testing = await vscode.window.showInformationMessage(
"Configuration saved! Test the connection now?",
Expand Down
16 changes: 16 additions & 0 deletions src/providers/linear/firstTimeSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,22 @@ export async function showFirstTimeSetup(onTokenSet?: () => void): Promise<void>
// Set provider to Linear
await config.update("provider", "linear", vscode.ConfigurationTarget.Global);

// Show pin reminder
const pinAction = await vscode.window.showInformationMessage(
"Tip: Pin DevBuddy to your Activity Bar for quick access! Right-click the DevBuddy icon and select 'Pin'.",
"Got it",
"Show me how"
);

if (pinAction === "Show me how") {
// Open the walkthrough at the pin step
await vscode.commands.executeCommand(
"workbench.action.openWalkthrough",
"angelogirardi.dev-buddy#devBuddy.gettingStarted",
false
);
}

// Show summary and offer walkthrough
const action = await vscode.window.showInformationMessage(
"✅ Setup Complete! Would you like a quick tour of DevBuddy's features?",
Expand Down
18 changes: 17 additions & 1 deletion src/utils/firstTimeSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,9 +339,25 @@ export async function showFirstTimeSetup(onTokenSet?: () => void): Promise<void>
vscode.ConfigurationTarget.Global
);

// Show pin reminder
const pinAction = await vscode.window.showInformationMessage(
"Tip: Pin DevBuddy to your Activity Bar for quick access! Right-click the DevBuddy icon and select 'Pin'.",
"Got it",
"Show me how"
);

if (pinAction === "Show me how") {
// Open the walkthrough at the pin step
await vscode.commands.executeCommand(
"workbench.action.openWalkthrough",
"angelogirardi.dev-buddy#devBuddy.gettingStarted",
false
);
}

// Show summary and offer walkthrough
const action = await vscode.window.showInformationMessage(
"✅ Setup Complete! Would you like a quick tour of Linear Buddy's features?",
"✅ Setup Complete! Would you like a quick tour of DevBuddy's features?",
"Yes, show me around",
"Maybe later"
);
Expand Down
Loading