feat: add high-end download center and admin release management hub
Some checks are pending
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Deploy Landing Page / deploy (push) Blocked by required conditions
Some checks are pending
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Deploy Landing Page / deploy (push) Blocked by required conditions
This commit is contained in:
parent
708e20f747
commit
7879d493ea
6 changed files with 1050 additions and 0 deletions
61
scripts/capture-download-and-release-hub.js
Normal file
61
scripts/capture-download-and-release-hub.js
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
// scripts/capture-download-and-release-hub.js
|
||||
const { chromium } = require('@playwright/test');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const http = require('http');
|
||||
|
||||
const OUTPUT_DIR = 'C:/Users/encep/.gemini/antigravity-cli/brain/3ab7ae82-5634-41d5-93a7-3c12c22503e2/screenshots/download_center';
|
||||
|
||||
function serveStatic(dir) {
|
||||
return new Promise((resolve) => {
|
||||
const server = http.createServer((req, res) => {
|
||||
let reqPath = req.url.split('?')[0];
|
||||
if (reqPath === '/' || reqPath === '') reqPath = '/download.html';
|
||||
const filePath = path.join(dir, reqPath);
|
||||
if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {
|
||||
const ext = path.extname(filePath).toLowerCase();
|
||||
const mime = { '.html': 'text/html', '.js': 'application/javascript', '.css': 'text/css', '.svg': 'image/svg+xml' };
|
||||
res.writeHead(200, { 'Content-Type': mime[ext] || 'application/octet-stream' });
|
||||
fs.createReadStream(filePath).pipe(res);
|
||||
} else {
|
||||
res.writeHead(404);
|
||||
res.end('Not Found');
|
||||
}
|
||||
});
|
||||
server.listen(0, '127.0.0.1', () => {
|
||||
const port = server.address().port;
|
||||
resolve({ server, port });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function capture() {
|
||||
if (!fs.existsSync(OUTPUT_DIR)) fs.mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
|
||||
const sitePublicDir = path.resolve(__dirname, '../site/public');
|
||||
const { server, port } = await serveStatic(sitePublicDir);
|
||||
|
||||
const browser = await chromium.launch({ channel: 'msedge', headless: true });
|
||||
const context = await browser.newContext({
|
||||
viewport: { width: 1440, height: 960 },
|
||||
deviceScaleFactor: 2,
|
||||
});
|
||||
|
||||
const page = await context.newPage();
|
||||
console.log(`Navigating to http://127.0.0.1:${port}/download.html...`);
|
||||
await page.goto(`http://127.0.0.1:${port}/download.html`, { waitUntil: 'networkidle' });
|
||||
await page.waitForTimeout(1500);
|
||||
|
||||
const shot1 = path.join(OUTPUT_DIR, '01_download_center_hero_desktop.png');
|
||||
await page.screenshot({ path: shot1, fullPage: false });
|
||||
console.log('Saved:', shot1);
|
||||
|
||||
const shotFull = path.join(OUTPUT_DIR, '02_download_center_full_page.png');
|
||||
await page.screenshot({ path: shotFull, fullPage: true });
|
||||
console.log('Saved:', shotFull);
|
||||
|
||||
await browser.close();
|
||||
server.close();
|
||||
}
|
||||
|
||||
capture().catch(console.error);
|
||||
45
scripts/capture-forgejo-repo.js
Normal file
45
scripts/capture-forgejo-repo.js
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// scripts/capture-forgejo-repo.js
|
||||
const { chromium } = require('@playwright/test');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const OUTPUT_DIR = 'C:/Users/encep/.gemini/antigravity-cli/brain/3ab7ae82-5634-41d5-93a7-3c12c22503e2/screenshots/git_server';
|
||||
|
||||
async function captureRepo() {
|
||||
if (!fs.existsSync(OUTPUT_DIR)) fs.mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
|
||||
const browser = await chromium.launch({ channel: 'msedge', headless: true });
|
||||
const context = await browser.newContext({
|
||||
viewport: { width: 1440, height: 960 },
|
||||
});
|
||||
|
||||
const page = await context.newPage();
|
||||
|
||||
// Login to Forgejo
|
||||
console.log('Logging in to Forgejo git.chanpaca.net...');
|
||||
await page.goto('https://git.chanpaca.net/user/login', { waitUntil: 'networkidle', timeout: 30000 });
|
||||
await page.fill('input[name="user_name"]', 'yunchan');
|
||||
await page.fill('input[name="password"]', 'ONVI2v4J#y');
|
||||
await page.click('button:has-text("Sign in"), button:has-text("로그인"), button[type="submit"]');
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
// Navigate to d3ro-voice repository
|
||||
console.log('Navigating to https://git.chanpaca.net/yunchan/d3ro-voice...');
|
||||
await page.goto('https://git.chanpaca.net/yunchan/d3ro-voice', { waitUntil: 'networkidle', timeout: 30000 });
|
||||
await page.waitForTimeout(2000);
|
||||
|
||||
const shotPath = path.join(OUTPUT_DIR, '01_forgejo_d3ro_voice_repo_live.png');
|
||||
await page.screenshot({ path: shotPath, fullPage: false });
|
||||
console.log('Screenshot saved to:', shotPath);
|
||||
|
||||
// Navigate to releases / tags
|
||||
await page.goto('https://git.chanpaca.net/yunchan/d3ro-voice/releases', { waitUntil: 'networkidle', timeout: 30000 });
|
||||
await page.waitForTimeout(2000);
|
||||
const tagShotPath = path.join(OUTPUT_DIR, '02_forgejo_d3ro_voice_releases_tags.png');
|
||||
await page.screenshot({ path: tagShotPath, fullPage: false });
|
||||
console.log('Releases screenshot saved to:', tagShotPath);
|
||||
|
||||
await browser.close();
|
||||
}
|
||||
|
||||
captureRepo().catch(console.error);
|
||||
45
scripts/inspect-forgejo-runners.js
Normal file
45
scripts/inspect-forgejo-runners.js
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// scripts/inspect-forgejo-runners.js
|
||||
const { chromium } = require('@playwright/test');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const OUTPUT_DIR = 'C:/Users/encep/.gemini/antigravity-cli/brain/3ab7ae82-5634-41d5-93a7-3c12c22503e2/screenshots/git_server';
|
||||
|
||||
async function inspectRunners() {
|
||||
const browser = await chromium.launch({ channel: 'msedge', headless: true });
|
||||
const context = await browser.newContext({ viewport: { width: 1440, height: 960 } });
|
||||
const page = await context.newPage();
|
||||
|
||||
console.log('Logging in to Forgejo...');
|
||||
await page.goto('https://git.chanpaca.net/user/login', { waitUntil: 'networkidle', timeout: 30000 });
|
||||
await page.fill('input[name="user_name"]', 'yunchan');
|
||||
await page.fill('input[name="password"]', 'ONVI2v4J#y');
|
||||
await page.click('button:has-text("Sign in"), button:has-text("로그인"), button[type="submit"]');
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
// Check Admin Actions Runners
|
||||
console.log('Navigating to Admin Actions Runners...');
|
||||
await page.goto('https://git.chanpaca.net/admin/actions/runners', { waitUntil: 'networkidle', timeout: 30000 });
|
||||
await page.waitForTimeout(2000);
|
||||
const shot1 = path.join(OUTPUT_DIR, '03_forgejo_admin_runners.png');
|
||||
await page.screenshot({ path: shot1, fullPage: false });
|
||||
console.log('Admin Runners screenshot saved:', shot1);
|
||||
|
||||
// Check Repo Actions tab
|
||||
console.log('Navigating to Repo Actions...');
|
||||
await page.goto('https://git.chanpaca.net/yunchan/d3ro-voice/actions', { waitUntil: 'networkidle', timeout: 30000 });
|
||||
await page.waitForTimeout(2000);
|
||||
const shot2 = path.join(OUTPUT_DIR, '04_forgejo_repo_actions.png');
|
||||
await page.screenshot({ path: shot2, fullPage: false });
|
||||
console.log('Repo Actions screenshot saved:', shot2);
|
||||
|
||||
// Extract runner details from page
|
||||
await page.goto('https://git.chanpaca.net/admin/actions/runners');
|
||||
await page.waitForTimeout(1000);
|
||||
const runnerRows = await page.locator('table tr, .runner-item, .flex-list-item').allInnerTexts();
|
||||
console.log('RUNNER ROWS FOUND:', JSON.stringify(runnerRows, null, 2));
|
||||
|
||||
await browser.close();
|
||||
}
|
||||
|
||||
inspectRunners().catch(console.error);
|
||||
Loading…
Add table
Add a link
Reference in a new issue