Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
e1a48cc
fix: disable static generation to fix deployment
Ryjen1 Nov 25, 2025
ae74695
fix: remove localStorage and add server-side verification polling
Ryjen1 Nov 26, 2025
3c7eb85
Add comprehensive onboarding system with welcome screen, feature high…
Ryjen1 Nov 30, 2025
962fc3b
Merge branch 'dev' into onboardUX
Ryjen1 Nov 30, 2025
5e93711
Merge pull request #14 from Ryjen1/onboardUX
Ryjen1 Nov 30, 2025
59115d8
Add dark mode toggle functionality
Ryjen1 Nov 30, 2025
442c25b
dark-mode toggle implementation complete
Ryjen1 Nov 30, 2025
6596c00
Merge pull request #15 from Ryjen1/feature/dark-mode-toggle
Ryjen1 Nov 30, 2025
3666757
Add notification service and context
Ryjen1 Nov 30, 2025
66f01b7
Add notification settings UI and chat integration
Ryjen1 Nov 30, 2025
fc9f088
Add PWA support and service worker registration
Ryjen1 Nov 30, 2025
56443b9
Merge pull request #16 from Ryjen1/feature/push-notifications
Ryjen1 Nov 30, 2025
41252a8
Resolve merge conflicts before ENS feature implementation
Ryjen1 Dec 1, 2025
f0316d0
Add ENS SDK dependencies for profile integration
Ryjen1 Dec 1, 2025
f78502b
Implement ENS data fetching service
Ryjen1 Dec 1, 2025
622e99c
Add ENS profile React hooks and component
Ryjen1 Dec 1, 2025
1942404
Update UserList to integrate ENS profiles
Ryjen1 Dec 1, 2025
1178efb
Update ChatInterface to integrate ENS profiles
Ryjen1 Dec 1, 2025
f28b3f6
Enhance ENS service with change detection and monitoring
Ryjen1 Dec 1, 2025
ccaf53d
Add comprehensive test suite for ENS profile integration
Ryjen1 Dec 1, 2025
d1eee1a
Add comprehensive implementation summary for ENS integration PR
Ryjen1 Dec 1, 2025
6ec42a0
Merge pull request #17 from Ryjen1/ens-profile-integration
Ryjen1 Dec 1, 2025
29c3498
feat: Add chat search and message filtering functionality
Ryjen1 Dec 1, 2025
38ab26f
feat: Integrate chat search into ChatInterface component
Ryjen1 Dec 1, 2025
e4ce7b8
feat: Integrate chat search into GroupChat component
Ryjen1 Dec 1, 2025
183f5a1
Merge pull request #18 from Ryjen1/feature/chat-search-and-filtering
Ryjen1 Dec 1, 2025
ac529af
Fix GroupChat message bubble styling and text wrapping
Ryjen1 Dec 1, 2025
c4772fb
Update MainChat to use MessageBubble component
Ryjen1 Dec 1, 2025
5ccc795
Add responsive MessageBubble component and update all chat components
Ryjen1 Dec 1, 2025
db053ae
Merge pull request #19 from Ryjen1/fix/chat-message-rendering-bugs
Ryjen1 Dec 1, 2025
848089e
feat: analyze codebase for help wanted labeling opportunities
Ryjen1 Dec 1, 2025
82be7b3
docs: create comprehensive help wanted labels implementation guide
Ryjen1 Dec 1, 2025
3cedea4
feat: add final PR preparation documentation and implementation guide
Ryjen1 Dec 1, 2025
af4a270
Merge pull request #20 from Ryjen1/add-help-wanted-labels
Ryjen1 Dec 1, 2025
55d55a8
chore: add next-intl dependency for i18n support
Ryjen1 Dec 2, 2025
1dc2560
feat: add complete i18n setup with translation files and routing
Ryjen1 Dec 2, 2025
9d48bb5
feat: add LanguageToggle component with dropdown support
Ryjen1 Dec 2, 2025
911338f
feat: integrate language toggle into notification settings
Ryjen1 Dec 2, 2025
09c1276
feat: add language toggle to homepage header
Ryjen1 Dec 2, 2025
8745db7
feat: establish i18n foundation structure
Ryjen1 Dec 2, 2025
7805965
docs: add comprehensive i18n documentation
Ryjen1 Dec 2, 2025
3c687df
docs: add i18n documentation guide
Ryjen1 Dec 2, 2025
eb0f256
Merge branch 'feature/i18n-support' into dev
Ryjen1 Dec 2, 2025
a717d5a
Merge branch 'dev' of https://github.com/Ryjen1/BlockBelle into dev
Ryjen1 Dec 2, 2025
d371f5e
Merge prod into feature/i18n-support - resolved conflicts in useSelfV…
Ryjen1 Dec 2, 2025
f86b712
Merge feature/i18n-support into dev - resolved MainChat.tsx verificat…
Ryjen1 Dec 2, 2025
452c14a
feat: add Playwright E2E testing framework configuration
Ryjen1 Dec 2, 2025
5104930
feat: add comprehensive test utilities and helpers
Ryjen1 Dec 2, 2025
c8e9df5
ci: add GitHub Actions workflow for E2E testing
Ryjen1 Dec 2, 2025
f649549
config: add E2E test environment configuration
Ryjen1 Dec 2, 2025
68ccb4b
fix: correct import paths in test files
Ryjen1 Dec 2, 2025
fe6fc90
feat: add comprehensive test runner script
Ryjen1 Dec 2, 2025
0ef1e29
docs: add comprehensive changelog for E2E test suite
Ryjen1 Dec 2, 2025
c6fad20
docs: add comprehensive implementation summary
Ryjen1 Dec 2, 2025
6c39dfe
feat: complete E2E test suite implementation
Ryjen1 Dec 2, 2025
73b1adf
docs: add comprehensive pull request template
Ryjen1 Dec 2, 2025
61e4349
Remove unused documentation files
Ryjen1 Dec 2, 2025
84a28be
feat: add database schema for mute functionality
Ryjen1 Dec 2, 2025
76e683a
feat: add backend API endpoints for mute functionality
Ryjen1 Dec 2, 2025
21d94ea
feat: implement frontend mute UI components
Ryjen1 Dec 2, 2025
21a0e20
feat: add mute controls to MainChat component
Ryjen1 Dec 2, 2025
bf9781b
feat: update notification system to respect mute settings
Ryjen1 Dec 2, 2025
1e5eb01
feat: integrate mute controls into chat interfaces
Ryjen1 Dec 2, 2025
332b9b3
feat: add mute controls to GroupChat component
Ryjen1 Dec 2, 2025
764c92a
test: add comprehensive test suite for mute functionality
Ryjen1 Dec 2, 2025
63e77ea
docs: add comprehensive documentation for mute feature
Ryjen1 Dec 2, 2025
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
164 changes: 164 additions & 0 deletions .github/workflows/auto-label.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
name: Auto Label Issues and PRs

on:
issues:
types: [opened, edited]
pull_request:
types: [opened, edited, synchronize]
label:
types: [created, deleted]

jobs:
label_issues:
runs-on: ubuntu-latest
if: github.event.action == 'opened' || github.event.action == 'edited'

steps:
- name: Label enhancement issues
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue || context.payload.pull_request;
const title = issue.title.toLowerCase();
const body = (issue.body || '').toLowerCase();
const content = `${title} ${body}`;

const labels = [];

// Frontend labels
if (content.match(/\b(ui|ux|frontend|react|nextjs|component|interface|design|css|tailwind)\b/)) {
labels.push('frontend');
}

// Backend labels
if (content.match(/\b(api|backend|server|database|postgres|neon)\b/)) {
labels.push('backend');
}

// Smart contract labels
if (content.match(/\b(solidity|contract|smart|blockchain|foundry|whispr)\b/)) {
labels.push('smart-contracts');
}

// Documentation labels
if (content.match(/\b(doc|readme|guide|tutorial|documentation)\b/)) {
labels.push('documentation');
}

// Testing labels
if (content.match(/\b(test|testing|unit|integration|e2e|coverage)\b/)) {
labels.push('testing');
}

// Bug labels
if (content.match(/\b(bug|error|fix|broken|issue|problem)\b/)) {
labels.push('bug');
}

// Enhancement labels
if (content.match(/\b(feature|enhancement|improve|add|implement|support)\b/)) {
labels.push('enhancement');
}

// Help wanted labels
const hasHelpWantedKeywords = content.match(/\b(help|welcome|contribution|community)\b/);
const isEnhancement = labels.includes('enhancement') || labels.includes('documentation') || labels.includes('testing');
const isBug = labels.includes('bug');

if (hasHelpWantedKeywords || (isEnhancement && !isBug)) {
labels.push('help wanted');
}

// Good first issue labels
const hasGoodFirstKeywords = content.match(/\b(simple|easy|beginner|starter|quick)\b/);
const isShortContent = content.length < 500;
const isDocOnly = labels.includes('documentation') && !labels.includes('smart-contracts') && !labels.includes('backend');

if ((hasGoodFirstKeywords || isDocOnly) && isShortContent && !content.match(/\b(complex|advanced|security)\b/)) {
labels.push('good first issue');
}

// Apply labels if any were identified
if (labels.length > 0) {
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: labels
});
console.log(`Applied labels to ${issue.html_url}: ${labels.join(', ')}`);
} catch (error) {
console.log(`Error applying labels: ${error.message}`);
}
}

welcome_new_contributors:
runs-on: ubuntu-latest
if: github.event.action == 'opened'

steps:
- name: Welcome new contributors
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue || context.payload.pull_request;
const isPR = !!context.payload.pull_request;
const url = issue.html_url;

if (context.actor !== context.repo.owner) {
const welcomeMessage = isPR
? `🎉 Thanks for your contribution to BlockBelle! We'll review your pull request shortly.`
: `👋 Welcome to BlockBelle! Thanks for your interest in helping improve this project.`;

const helpMessage = `📝 Looking for ways to help? Check out our ["help wanted" issues](${context.payload.repository.html_url}/labels/help%20wanted) and [good first issues](${context.payload.repository.html_url}/labels/good%20first%20issue)!`;

try {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body: `${welcomeMessage}\n\n${helpMessage}\n\n💡 Don't forget to check out our [contribution guide](${context.payload.repository.html_url}/blob/main/docs/help-wanted-labels-guide.md) for more details!`
});
} catch (error) {
console.log(`Error creating welcome comment: ${error.message}`);
}
}

weekly_label_review:
runs-on: ubuntu-latest
if: github.event_name == 'schedule'

steps:
- name: Review and suggest labels for old issues
uses: actions/github-script@v7
with:
script: |
const oneWeekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();

const { data: issues } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
since: oneWeekAgo,
per_page: 100
});

for (const issue of issues) {
const hasHelpWanted = issue.labels.some(label => label.name === 'help wanted');
const hasGoodFirst = issue.labels.some(label => label.name === 'good first issue');
const hasEnhancement = issue.labels.some(label => label.name === 'enhancement');

// Suggest help wanted for unlabelled enhancements
if (!hasHelpWanted && hasEnhancement) {
console.log(`Suggesting 'help wanted' label for issue: ${issue.title}`);

// Add a comment suggesting the label
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body: `💡 This issue looks like it could benefit from community help! Consider adding the \`help wanted\` label to attract contributors.`
});
}
}
1 change: 1 addition & 0 deletions contracts/lib/self
Submodule self added at 03e471
153 changes: 153 additions & 0 deletions docs/PR_PREPARATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# Pull Request: Add Help Wanted Labels System

## Summary

This PR implements a comprehensive "help wanted" labeling system to encourage community contributions to the BlockBelle project. The system includes automated labeling, detailed documentation, and practical tools for maintaining contributor-friendly issues.

## What This PR Does

### 🎯 Core Implementation
- **Labels Framework**: 10 primary and secondary labels for categorizing issues
- **Issue Templates**: 3 pre-built templates for different contribution types
- **Automation Tools**: Scripts and GitHub Actions for label management
- **Documentation**: Complete guides for maintainers and contributors

### 📋 Files Changed

#### Documentation (New)
- `docs/help-wanted-analysis.md` - Comprehensive codebase analysis
- `docs/help-wanted-labels-guide.md` - Implementation and usage guide
- `docs/PR_PREPARATION.md` - This file

#### Scripts (New)
- `scripts/labels-setup.sh` - Automated GitHub label creation
- `scripts/label-issues.py` - Smart issue labeling tool
- `scripts/requirements.txt` - Python dependencies

#### GitHub Actions (New)
- `.github/workflows/auto-label.yml` - Automated labeling workflow

## Immediate Action Items

### 1. Review the Documentation
Read the following files to understand the complete system:
- `docs/help-wanted-analysis.md` - Understanding of project areas needing help
- `docs/help-wanted-labels-guide.md` - Implementation instructions
- This file - Next steps and timeline

### 2. Create GitHub Labels
Use the automated script to create all necessary labels:

```bash
# Make sure you have a GitHub token with repo permissions
export GITHUB_TOKEN="your_token_here"

# Run the label setup script
./scripts/labels-setup.sh $GITHUB_TOKEN Ryjen1 BlockBelle
```

### 3. Apply Labels to Existing Issues
Run the issue analysis script to suggest labels:

```bash
# Install dependencies
pip install -r scripts/requirements.txt

# Analyze and suggest labels (manual mode)
python scripts/label-issues.py $GITHUB_TOKEN Ryjen1 BlockBelle

# Or auto-apply all suggestions
python scripts/label-issues.py $GITHUB_TOKEN Ryjen1 BlockBelle --auto
```

### 4. Enable GitHub Actions
The workflow file is included and will automatically:
- Label new issues based on content analysis
- Welcome new contributors with helpful messages
- Suggest "help wanted" labels for unlabelled enhancement issues

## Expected Timeline

### Day 1: Setup (30 minutes)
- [ ] Create GitHub labels using automation script
- [ ] Test issue labeling on a few existing issues
- [ ] Verify GitHub Actions workflow is enabled

### Day 2: Launch (15 minutes)
- [ ] Create 5-10 new issues using the provided templates
- [ ] Apply "help wanted" labels to appropriate existing issues
- [ ] Announce in project documentation/communication channels

### Week 1: Monitor & Adjust
- [ ] Review automated labeling accuracy
- [ ] Adjust labeling rules if needed
- [ ] Track community engagement with labeled issues

## Benefits for the Project

### For Contributors
- **Clear Entry Points**: Good first issues for newcomers
- **Detailed Guidance**: Templates ensure well-described tasks
- **Automated Support**: Welcome messages and helpful comments

### for Maintainers
- **Organized Issues**: Systematic labeling improves project management
- **Reduced Friction**: Automated workflows handle routine tasks
- **Community Growth**: Clear pathways for new contributors

### For the Project
- **Increased Contributions**: Better discoverability of contribution opportunities
- **Quality Improvement**: More community eyes lead to better code
- **Sustainable Growth**: Systems that support long-term contributor engagement

## Monitoring Success

### Key Metrics to Track
1. **New Contributors**: Number of first-time contributors per month
2. **Help Wanted Issues**: Ratio of labeled to unlabeled enhancement issues
3. **Issue Resolution**: Time to close "good first issues"
4. **Community Engagement**: Comments and discussions on labeled issues

### Monthly Reviews
- Review labeling accuracy and adjust rules
- Archive completed "help wanted" issues
- Add new issues based on project evolution
- Update documentation based on community feedback

## Support & Resources

### For Contributors
- **Getting Started**: Check `docs/help-wanted-analysis.md` for beginner-friendly tasks
- **Contribution Guide**: Refer to issue templates for detailed requirements
- **Help Available**: All labeled issues welcome community questions and discussions

### For Maintainers
- **Label Management**: Use `scripts/labels-setup.sh` for consistent labeling
- **Issue Creation**: Template files ensure quality issue descriptions
- **Automation**: GitHub Actions handle routine labeling tasks

## Rollback Plan

If needed, the system can be easily removed:
1. Delete GitHub labels through repository settings
2. Remove `.github/workflows/auto-label.yml`
3. Archive or delete the documentation files
4. The scripts are standalone and don't affect core functionality

## Next Steps After Merge

1. **Immediate**: Follow the "Immediate Action Items" section above
2. **Week 1**: Monitor automated labeling and community response
3. **Month 1**: Evaluate metrics and adjust the system as needed
4. **Ongoing**: Keep the system current with project evolution

## Questions or Issues?

If you encounter any problems with this implementation:
1. Check the troubleshooting section in `docs/help-wanted-labels-guide.md`
2. Review the automation scripts for error handling
3. Consider temporary manual labeling while troubleshooting

---

**Ready to build a more contributor-friendly community? Let's make BlockBelle accessible to everyone!** 🚀
Loading