Which organization's GitHub activity?
- Enter the GitHub organization name to fetch activites for. Default is fossasia.
+ Enter the GitHub organization name to fetch activities for. Leave empty to fetch all your GitHub
+ activities across all organizations.
Organization name is not case-sensitive.
@@ -143,7 +144,7 @@
Please note that some discrepancies may occur in the generated SCRUM. We recommend manually reviewing
and editing the report to ensure accuracy before sharing
+
diff --git a/src/scripts/popup.js b/src/scripts/popup.js
index 855da2a..b45a888 100644
--- a/src/scripts/popup.js
+++ b/src/scripts/popup.js
@@ -129,7 +129,7 @@ document.addEventListener('DOMContentLoaded', function () {
'githubToken',
'projectName',
'settingsToggle',
-
+
];
const radios = document.querySelectorAll('input[name="timeframe"]');
@@ -217,9 +217,7 @@ document.addEventListener('DOMContentLoaded', function () {
generateBtn.addEventListener('click', function () {
// Check org input value before generating report
let org = orgInput.value.trim().toLowerCase();
- if (!org) {
- org = 'fossasia';
- }
+ // Allow empty org to fetch all GitHub activities
chrome.storage.local.set({ orgName: org }, () => {
generateBtn.innerHTML = ' Generating...';
generateBtn.disabled = true;
@@ -379,9 +377,7 @@ document.addEventListener('DOMContentLoaded', function () {
// Auto-update orgName in storage on input change
orgInput.addEventListener('input', function () {
let org = orgInput.value.trim().toLowerCase();
- if (!org) {
- org = 'fossasia';
- }
+ // Allow empty org to fetch all GitHub activities
chrome.storage.local.set({ orgName: org }, function () {
chrome.storage.local.remove('githubCache'); // Clear cache on org change
});
@@ -390,12 +386,23 @@ document.addEventListener('DOMContentLoaded', function () {
// Add click event for setOrgBtn to set org
setOrgBtn.addEventListener('click', function () {
let org = orgInput.value.trim().toLowerCase();
+ // Do not default to any org, allow empty string
+ // if (!org) {
+ // org = 'fossasia';
+ // }
+ console.log('[Org Check] Checking organization:', org);
if (!org) {
- org = 'fossasia';
+ // If org is empty, clear orgName in storage but don't auto-generate report
+ chrome.storage.local.set({ orgName: '' }, function () {
+ console.log('[Org Check] Organization cleared from storage');
+ });
+ return;
}
+
setOrgBtn.disabled = true;
const originalText = setOrgBtn.innerHTML;
setOrgBtn.innerHTML = '';
+
fetch(`https://api.github.com/orgs/${org}`)
.then(res => {
if (res.status === 404) {
@@ -425,6 +432,7 @@ document.addEventListener('DOMContentLoaded', function () {
}
const oldToast = document.getElementById('invalid-org-toast');
if (oldToast) oldToast.parentNode.removeChild(oldToast);
+
chrome.storage.local.set({ orgName: org }, function () {
// Always clear the scrum report and show org changed message
const scrumReport = document.getElementById('scrumReport');
@@ -454,6 +462,7 @@ document.addEventListener('DOMContentLoaded', function () {
setTimeout(() => {
if (toastDiv.parentNode) toastDiv.parentNode.removeChild(toastDiv);
}, 2500);
+
});
})
.catch((err) => {
diff --git a/src/scripts/scrumHelper.js b/src/scripts/scrumHelper.js
index 3aebad4..fc3aac6 100644
--- a/src/scripts/scrumHelper.js
+++ b/src/scripts/scrumHelper.js
@@ -14,7 +14,9 @@ let refreshButton_Placed = false;
let enableToggle = true;
let hasInjectedContent = false;
let scrumGenerationInProgress = false;
-let orgName = 'fossasia'; // default
+
+let orgName = '';
+
function allIncluded(outputTarget = 'email') {
if (scrumGenerationInProgress) {
console.warn('[SCRUM-HELPER]: Scrum generation already in progress, aborting new call.');
@@ -175,8 +177,9 @@ function allIncluded(outputTarget = 'email') {
log('Restored cache from storage');
}
- if (items.orgName) {
- orgName = items.orgName;
+ if (typeof items.orgName !== 'undefined') {
+ orgName = items.orgName || '';
+ console.log('[SCRUM-HELPER] orgName set to:', orgName);
}
},
);
@@ -324,7 +327,7 @@ function allIncluded(outputTarget = 'email') {
}
async function fetchGithubData() {
- const cacheKey = `${githubUsername}-${orgName}-${startingDate}-${endingDate}`;
+ const cacheKey = `${githubUsername}-${startingDate}-${endingDate}-${orgName || 'all'}`;
if (githubCache.fetching || (githubCache.cacheKey === cacheKey && githubCache.data)) {
log('Fetch already in progress or data already fetched. Skipping fetch.');
@@ -396,8 +399,17 @@ function allIncluded(outputTarget = 'email') {
log('Making public requests');
}
- let issueUrl = `https://api.github.com/search/issues?q=author%3A${githubUsername}+org%3A${orgName}+updated%3A${startingDate}..${endingDate}&per_page=100`;
- let prUrl = `https://api.github.com/search/issues?q=commenter%3A${githubUsername}+org%3A${orgName}+updated%3A${startingDate}..${endingDate}&per_page=100`;
+ // Build org part for query only if orgName is set and not empty
+ console.log('[SCRUM-HELPER] orgName before API query:', orgName);
+ console.log('[SCRUM-HELPER] orgName type:', typeof orgName);
+ console.log('[SCRUM-HELPER] orgName length:', orgName ? orgName.length : 0);
+ let orgPart = orgName && orgName.trim() ? `+org%3A${orgName}` : '';
+ console.log('[SCRUM-HELPER] orgPart for API:', orgPart);
+ console.log('[SCRUM-HELPER] orgPart length:', orgPart.length);
+ let issueUrl = `https://api.github.com/search/issues?q=author%3A${githubUsername}${orgPart}+updated%3A${startingDate}..${endingDate}&per_page=100`;
+ let prUrl = `https://api.github.com/search/issues?q=commenter%3A${githubUsername}${orgPart}+updated%3A${startingDate}..${endingDate}&per_page=100`;
+ console.log('[SCRUM-HELPER] issueUrl:', issueUrl);
+ console.log('[SCRUM-HELPER] prUrl:', prUrl);
let userUrl = `https://api.github.com/users/${githubUsername}`;
try {
@@ -676,6 +688,7 @@ ${lastWeekUl}
${nextWeekUl} 3. What is blocking me from making progress?
${userReason}`;
+
}
@@ -1145,6 +1158,7 @@ async function forceGithubDataRefresh() {
// allIncluded('email');
+
if (window.location.protocol.startsWith('http')) {
allIncluded('email');
$('button>span:contains(New conversation)').parent('button').click(() => {
@@ -1177,6 +1191,7 @@ ${prs.map((pr, i) => ` repo${i}: repository(owner: \"${pr.owner}\", name: \"${pr
pr${i}: pullRequest(number: ${pr.number}) { merged }
}`).join('\n')}
}`;
+
try {
const res = await fetch('https://api.github.com/graphql', {
method: 'POST',
@@ -1196,4 +1211,5 @@ ${prs.map((pr, i) => ` repo${i}: repository(owner: \"${pr.owner}\", name: \"${pr
} catch (e) {
return results;
}
-}
\ No newline at end of file
+}
+