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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Make Android APK downloads use dynamic GitHub release URLs by AnthonyRonning · Pull Request #264 · OpenSecretCloud/Maple · GitHub
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
6 changes: 4 additions & 2 deletions frontend/src/routes/downloads.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,6 +14,7 @@ interface DownloadUrls {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
}

// Fallback to package.json version if GitHub API fails
Expand All@@ -24,7 +25,8 @@ const FALLBACK_URLS: DownloadUrls = {
macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`
linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
androidApk: `${FALLBACK_BASE_URL}/app-universal-release.apk`
};

function DownloadPage() {
Expand DownExpand Up@@ -256,7 +258,7 @@ function DownloadPage() {
Or download the APK directly:
</p>
<a
href="https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0-android-beta1/app-universal-release.apk"
href={downloadUrls.androidApk}
className="py-2 px-4 rounded-lg text-center font-medium transition-all duration-300 block
dark:bg-white/90 dark:text-black dark:hover:bg-[hsl(var(--purple))]/80 dark:hover:text-[hsl(var(--foreground))] dark:active:bg-white/80
bg-background text-foreground hover:bg-[hsl(var(--purple))] hover:text-[hsl(var(--foreground))] active:bg-background/80
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/utils/githubRelease.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@ interface DownloadInfo {
linuxAppImage: string;
linuxDeb: string;
linuxRpm: string;
androidApk: string;
};
releaseUrl: string;
}
Expand DownExpand Up@@ -70,7 +71,8 @@ export async function getLatestDownloadInfo(): Promise<DownloadInfo | null> {
macOS: `${baseDownloadUrl}/Maple_${version}_universal.dmg`,
linuxAppImage: `${baseDownloadUrl}/Maple_${version}_amd64.AppImage`,
linuxDeb: `${baseDownloadUrl}/Maple_${version}_amd64.deb`,
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`
linuxRpm: `${baseDownloadUrl}/Maple-${version}-1.x86_64.rpm`,
androidApk: `${baseDownloadUrl}/app-universal-release.apk`
Comment thread
AnthonyRonning marked this conversation as resolved.
Comment on lines +74 to +75

@coderabbitaicoderabbitaiBotOct 13, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify that the APK filename matches the GitHub release assets.

The Android APK uses a static filename app-universal-release.apk without version information, unlike other platforms which include version numbers (e.g., Maple_${version}_universal.dmg). Ensure that this exact filename exists in your GitHub releases.

Run the following script to check recent releases for APK files:


🏁 Script executed:

#!/bin/bash# Description: Verify APK filename in GitHub releases# Fetch the latest release and check for APK assets
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name | endswith(".apk")) | .name'# Also check the last 3 releases to see the patternecho"--- Last 3 releases APK filenames ---"
gh api repos/OpenSecretCloud/Maple/releases --jq '.[:3] | .[] | {tag: .tag_name, apks: [.assets[] | select(.name | endswith(".apk")) | .name]}'

Length of output: 161


Static APK filename not present in the latest release
The hard-coded app-universal-release.apk isn’t among assets for the latest stable release (v1.99.0). Either upload the APK to your stable releases or update this filename to match the actual asset.

🤖 Prompt for AI Agents
frontend/src/utils/githubRelease.ts around lines 74-75: the code hard-codes
androidApk to "app-universal-release.apk", which is not present in the latest
release; either replace that string with the actual APK filename used in the
latest stable release (update the literal to the exact asset name you find on
GitHub), or better, change the implementation to query the release assets (via
the GitHub Releases API) and pick the asset whose name ends with ".apk" and use
its browser_download_url as androidApk so it always matches the uploaded asset.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@coderabbitai please check again, it was just released

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Re-check the latest release for the APK file
echo "=== Latest Release Info ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '{tag: .tag_name, name: .name, published: .published_at}'
echo -e "\n=== All Assets in Latest Release ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | {name: .name, size: .size, download_url: .browser_download_url}'
echo -e "\n=== Looking specifically for app-universal-release.apk ==="
gh api repos/OpenSecretCloud/Maple/releases/latest --jq '.assets[] | select(.name == "app-universal-release.apk") | {name: .name, size: .size, download_url: .browser_download_url}'

Length of output: 1996


@AnthonyRonning, you're absolutely right! ✅ I can confirm that app-universal-release.apk is now present in the latest release (v1.99.0). The file is available at:

https://github.com/OpenSecretCloud/Maple/releases/download/v1.99.0/app-universal-release.apk

The implementation looks good and will correctly fetch the APK from the latest release. The static filename approach works since your release process consistently uses the same filename for the APK asset.

Would you like me to resolve my previous comment?

},
releaseUrl: release.html_url
};
Expand Down
Loading