Add memory-viewer from silicondawn
- Web UI for browsing and editing OpenClaw memory files - Cloned from https://github.com/silicondawn/memory-viewer - Built and running on port 8901 - Features: file tree, markdown rendering, search, live reload - Full access to MEMORY.md, daily notes, skills, automations
This commit is contained in:
77
memory-viewer/take-screenshots.mjs
Normal file
77
memory-viewer/take-screenshots.mjs
Normal file
@@ -0,0 +1,77 @@
|
||||
import { chromium } from 'playwright';
|
||||
import { join } from 'path';
|
||||
|
||||
const BASE = 'http://localhost:8901';
|
||||
const DOCS = join(import.meta.dirname, 'docs');
|
||||
const VP = { width: 1280, height: 800 };
|
||||
|
||||
async function screenshot(page, name) {
|
||||
await page.waitForTimeout(500);
|
||||
await page.screenshot({ path: join(DOCS, name), fullPage: false });
|
||||
console.log(`✅ ${name}`);
|
||||
}
|
||||
|
||||
const browser = await chromium.launch();
|
||||
|
||||
// --- DARK THEME ---
|
||||
let ctx = await browser.newContext({ viewport: VP, colorScheme: 'dark' });
|
||||
let page = await ctx.newPage();
|
||||
|
||||
// Dashboard (dark)
|
||||
await page.goto(BASE);
|
||||
await page.waitForLoadState('networkidle');
|
||||
await screenshot(page, 'screenshot-dashboard-dark.png');
|
||||
|
||||
// Viewer - open MEMORY.md (dark)
|
||||
// Click on MEMORY.md in file tree
|
||||
await page.click('text=MEMORY.md');
|
||||
await page.waitForTimeout(800);
|
||||
await screenshot(page, 'screenshot-viewer-dark.png');
|
||||
|
||||
// Editor mode (dark) - click edit button
|
||||
const editBtn = page.locator('button:has-text("Edit"), button[title*="edit"], button[title*="Edit"], [aria-label*="edit"], [aria-label*="Edit"]').first();
|
||||
if (await editBtn.count() > 0) {
|
||||
await editBtn.click();
|
||||
await page.waitForTimeout(500);
|
||||
await screenshot(page, 'screenshot-editor-dark.png');
|
||||
}
|
||||
|
||||
// Search panel (dark) - Ctrl+K
|
||||
await page.keyboard.press('Control+k');
|
||||
await page.waitForTimeout(500);
|
||||
// Type something to show results
|
||||
await page.keyboard.type('memory');
|
||||
await page.waitForTimeout(800);
|
||||
await screenshot(page, 'screenshot-search-dark.png');
|
||||
await page.keyboard.press('Escape');
|
||||
|
||||
await ctx.close();
|
||||
|
||||
// --- LIGHT THEME ---
|
||||
ctx = await browser.newContext({ viewport: VP, colorScheme: 'light' });
|
||||
page = await ctx.newPage();
|
||||
|
||||
// Set light theme via localStorage before navigating
|
||||
await page.addInitScript(() => {
|
||||
localStorage.setItem('theme', 'light');
|
||||
});
|
||||
await page.goto(BASE);
|
||||
await page.waitForLoadState('networkidle');
|
||||
// Also try setting it after load
|
||||
await page.evaluate(() => {
|
||||
localStorage.setItem('theme', 'light');
|
||||
document.documentElement.classList.remove('dark');
|
||||
document.documentElement.classList.add('light');
|
||||
});
|
||||
await page.reload();
|
||||
await page.waitForLoadState('networkidle');
|
||||
await screenshot(page, 'screenshot-dashboard-light.png');
|
||||
|
||||
// Viewer light
|
||||
await page.click('text=MEMORY.md');
|
||||
await page.waitForTimeout(800);
|
||||
await screenshot(page, 'screenshot-viewer-light.png');
|
||||
|
||||
await ctx.close();
|
||||
await browser.close();
|
||||
console.log('🎉 All screenshots done!');
|
||||
Reference in New Issue
Block a user