@cyber-dash-tech/revela 0.18.12 → 0.18.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,6 +22,10 @@ import { annotateVisualEditTargets, applyVisualTargetChanges, type VisualEditTar
22
22
  const TOKEN_BYTES = 24
23
23
  const SESSION_TTL_MS = 2 * 60 * 60 * 1000
24
24
  const IDLE_STOP_MS = 30 * 60 * 1000
25
+ const REVIEW_UI_ASSET_ROUTE = "/__revela_ui_asset"
26
+ const REVIEW_UI_ASSETS = new Map<string, string>([
27
+ ["/logo-wordmark.png", resolve(dirname(fileURLToPath(import.meta.url)), "../../assets/img/logo-wordmark.png")],
28
+ ])
25
29
  export const REVIEW_REF_LABEL_MAX_DISPLAY_CHARS = 32
26
30
  export const LIVE_EDITOR_IDLE_MS = 10 * 1000
27
31
 
@@ -199,6 +203,10 @@ async function handleRequest(req: Request): Promise<Response> {
199
203
 
200
204
  if (url.pathname === "/health") return textResponse("ok")
201
205
 
206
+ if (url.pathname.startsWith(`${REVIEW_UI_ASSET_ROUTE}/`) && (req.method === "GET" || req.method === "HEAD")) {
207
+ return handleReviewUiAsset(url.pathname, req.method)
208
+ }
209
+
202
210
  if (url.pathname === "/refine" && req.method === "GET") {
203
211
  const session = validateSession(url.searchParams.get("token"))
204
212
  if (!session.ok) return session.response
@@ -608,6 +616,21 @@ function handleAsset(session: EditSession, id: string | null, method: string): R
608
616
  return new Response(new Uint8Array(readFileSync(asset.absoluteFile)), { status: 200, headers })
609
617
  }
610
618
 
619
+ function handleReviewUiAsset(pathname: string, method: string): Response {
620
+ const assetPath = pathname.slice(REVIEW_UI_ASSET_ROUTE.length)
621
+ const absoluteFile = REVIEW_UI_ASSETS.get(assetPath)
622
+ if (!absoluteFile || !existsSync(absoluteFile) || !statSync(absoluteFile).isFile()) {
623
+ return textResponse("Asset not found", 404)
624
+ }
625
+
626
+ const headers = {
627
+ "content-type": mimeTypeForPath(absoluteFile),
628
+ "cache-control": "no-store, max-age=0",
629
+ }
630
+ if (method === "HEAD") return new Response(null, { status: 200, headers })
631
+ return new Response(new Uint8Array(readFileSync(absoluteFile)), { status: 200, headers })
632
+ }
633
+
611
634
  function rewriteLocalAssetRefs(content: string, input: { session: EditSession; sourceFile: string; contentType: "html" | "css" }): string {
612
635
  const baseDir = dirname(input.sourceFile)
613
636
  let rewritten = rewriteCssUrls(content, input.session, baseDir)
@@ -1367,7 +1390,7 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1367
1390
  body { margin: 0; background: #f8fafc; color: #111827; height: 100vh; overflow: hidden; }
1368
1391
  body.resizing { cursor: col-resize; user-select: none; }
1369
1392
  body.resizing iframe, body.resizing .hitbox { pointer-events: none; }
1370
- .app { --editor-width: 376px; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) var(--editor-width); height: 100vh; }
1393
+ .app { --editor-width: 620px; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) var(--editor-width); height: 100vh; }
1371
1394
  .preview { position: relative; min-width: 0; background: #eef2f7; }
1372
1395
  .resize-handle { position: absolute; top: 0; bottom: 0; right: calc(var(--editor-width) - 7px); width: 14px; z-index: 5; cursor: col-resize; background: transparent; }
1373
1396
  .resize-handle::before { content: ""; position: absolute; left: 50%; top: 50%; width: 4px; height: 44px; border-radius: 999px; transform: translate(-50%, -50%); background: rgba(148,163,184,.34); box-shadow: 0 1px 2px rgba(15,23,42,.06); transition: background .16s ease, height .16s ease, box-shadow .16s ease; }
@@ -1392,7 +1415,8 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1392
1415
  aside { position: relative; display: flex; flex-direction: column; gap: 16px; padding: 18px; background: #ffffff; overflow: hidden; border-left: 1px solid #e2e8f0; box-shadow: -10px 0 28px rgba(15,23,42,.06); }
1393
1416
  aside button, aside input, aside select, aside textarea, aside .comment-editor { font-family: inherit; }
1394
1417
  h1 { margin: 0; font-size: 17px; line-height: 1.2; letter-spacing: 0; color: #0f172a; }
1395
- .wordmark { font-family: inherit; font-size: 17px; letter-spacing: 0; font-weight: 800; }
1418
+ .review-brand { display: inline-flex; align-items: center; min-width: 0; max-width: 100%; }
1419
+ .wordmark-logo { display: block; width: auto; height: 30px; max-width: min(210px, 82%); object-fit: contain; flex: 0 1 auto; }
1396
1420
  .panel { display: flex; flex-direction: column; gap: 10px; }
1397
1421
  .tabs { display: flex; gap: 4px; padding: 3px; border: 1px solid #e2e8f0; border-radius: 999px; background: #f8fafc; }
1398
1422
  .tab { width: auto; min-width: 112px; padding: 8px 16px; border: 1px solid transparent; border-radius: 999px; background: transparent; color: #64748b; box-shadow: none; font-weight: 750; }
@@ -1558,7 +1582,7 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1558
1582
  <div id="resizeHandle" class="resize-handle" role="separator" aria-label="Resize editor panel" aria-orientation="vertical" title="Drag to resize editor. Double-click to reset."></div>
1559
1583
  <aside>
1560
1584
  <div>
1561
- <h1><span class="wordmark">REVELA</span> Review</h1>
1585
+ <h1 class="review-brand" aria-label="Revela Review"><img class="wordmark-logo" src="${REVIEW_UI_ASSET_ROUTE}/logo-wordmark.png" alt="Revela" /></h1>
1562
1586
  </div>
1563
1587
  <div id="selectionSummary" class="selection-summary sr-only" aria-live="polite"><strong>Selection</strong><span>No references selected.</span><div id="selectionChips" class="selection-chips"></div></div>
1564
1588
  <div class="tabs" role="tablist" aria-label="Review mode">
@@ -1629,7 +1653,7 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1629
1653
  const codexReview = reviewSurface === 'codex';
1630
1654
  const COMMENT_STALE_MS = 60000;
1631
1655
  const EDITOR_WIDTH_KEY = 'revela-edit-editor-width';
1632
- const DEFAULT_EDITOR_WIDTH = 376;
1656
+ const DEFAULT_EDITOR_WIDTH = 620;
1633
1657
  const MIN_EDITOR_WIDTH = 320;
1634
1658
  const MAX_EDITOR_WIDTH = 620;
1635
1659
  const REFERENCE_COLORS = [
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cyber-dash-tech/revela",
3
- "version": "0.18.12",
4
- "description": "OpenCode plugin for trusted narrative artifacts from local sources, research, and evidence",
3
+ "version": "0.18.14",
4
+ "description": "Codex-first CLI/MCP workspace for trusted narrative artifacts from local sources, research, and evidence",
5
5
  "type": "module",
6
6
  "main": "./index.ts",
7
7
  "bin": {
@@ -11,6 +11,11 @@
11
11
  ".": "./index.ts"
12
12
  },
13
13
  "files": [
14
+ "assets/img/logo.png",
15
+ "assets/img/logo-64.png",
16
+ "assets/img/logo-256.png",
17
+ "assets/img/logo-wordmark.png",
18
+ "assets/img/review-ui.png",
14
19
  "bin/",
15
20
  "plugin.ts",
16
21
  "lib/",
@@ -24,19 +29,25 @@
24
29
  "designs/summit/preview.html",
25
30
  "designs/monet/DESIGN.md",
26
31
  "designs/monet/preview.html",
32
+ "designs/lucent/DESIGN.md",
33
+ "designs/lucent/preview.html",
34
+ "designs/lucent/assets/",
27
35
  "domains/general/INDUSTRY.md",
28
36
  "domains/deeptech-investment/INDUSTRY.md",
29
37
  "domains/consulting/INDUSTRY.md",
30
38
  "index.ts"
31
39
  ],
32
40
  "keywords": [
33
- "opencode",
34
- "opencode-plugin",
41
+ "codex",
42
+ "mcp",
43
+ "revela",
35
44
  "slides",
36
45
  "presentation",
37
46
  "ai",
38
47
  "html",
39
- "deck"
48
+ "deck",
49
+ "opencode",
50
+ "opencode-plugin"
40
51
  ],
41
52
  "repository": {
42
53
  "type": "git",
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "revela": {
4
4
  "command": "npx",
5
- "args": ["-y", "@cyber-dash-tech/revela@0.18.12", "mcp"]
5
+ "args": ["-y", "@cyber-dash-tech/revela@0.18.14", "mcp"]
6
6
  }
7
7
  }
8
8
  }