@cyber-dash-tech/revela 0.18.14 → 0.18.16
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.
- package/README.md +35 -46
- package/README.zh-CN.md +35 -46
- package/bin/revela.ts +0 -0
- package/designs/lucent/DESIGN.md +32 -1
- package/designs/lucent/preview.html +411 -494
- package/designs/monet/DESIGN.md +39 -9
- package/designs/monet/preview.html +157 -2260
- package/designs/starter/DESIGN.md +8 -5
- package/designs/starter/preview.html +70 -49
- package/designs/summit/DESIGN.md +36 -9
- package/designs/summit/preview.html +139 -2237
- package/lib/commands/designs-new.ts +9 -0
- package/lib/design/designs.ts +84 -4
- package/lib/prompt-builder.ts +4 -0
- package/lib/qa/artifact.ts +52 -7
- package/lib/qa/checks.ts +1 -1
- package/lib/qa/component-contracts.ts +90 -0
- package/package.json +1 -1
- package/plugins/revela/.codex-plugin/plugin.json +4 -4
- package/plugins/revela/.mcp.json +3 -2
- package/plugins/revela/hooks/revela_post_write_notice.ts +39 -9
- package/plugins/revela/mcp/revela-server.ts +3 -3
- package/plugins/revela/skills/revela/SKILL.md +3 -3
- package/plugins/revela/skills/revela-design/SKILL.md +6 -0
- package/plugins/revela/skills/revela-helper/SKILL.md +3 -3
- package/plugins/revela/skills/revela-make-deck/SKILL.md +9 -3
- package/plugins/revela/skills/revela-research/SKILL.md +1 -0
- package/skill/SKILL.md +11 -2
- package/plugins/revela/skills/revela-review/SKILL.md +0 -46
package/designs/monet/DESIGN.md
CHANGED
|
@@ -35,6 +35,27 @@ Inspired by Claude Monet's *Le Bassin aux Nymphéas* — mist, water, and soft l
|
|
|
35
35
|
--shadow-soft: rgba(0, 55, 102, 0.18);
|
|
36
36
|
--font-display: 'EB Garamond', 'Georgia', ui-serif, serif;
|
|
37
37
|
--font-body: 'EB Garamond', 'Georgia', ui-serif, serif;
|
|
38
|
+
--grid-page-inset: 40px;
|
|
39
|
+
--grid-content-width: 1480px;
|
|
40
|
+
--grid-text-col: 480px;
|
|
41
|
+
--grid-image-col: 880px;
|
|
42
|
+
--grid-gutter: 40px;
|
|
43
|
+
--grid-safe-x: 80px;
|
|
44
|
+
--grid-safe-y: 72px;
|
|
45
|
+
--space-1: 8px;
|
|
46
|
+
--space-2: 16px;
|
|
47
|
+
--space-3: 24px;
|
|
48
|
+
--space-4: 32px;
|
|
49
|
+
--space-5: 48px;
|
|
50
|
+
--space-6: 72px;
|
|
51
|
+
--font-size-meta: 13px;
|
|
52
|
+
--font-size-body: 17px;
|
|
53
|
+
--font-size-body-strong: 20px;
|
|
54
|
+
--font-size-h3: 24px;
|
|
55
|
+
--font-size-h2: 36px;
|
|
56
|
+
--font-size-hero: 116px;
|
|
57
|
+
--surface-radius: 0px;
|
|
58
|
+
--surface-shadow: 0 24px 80px var(--shadow-soft);
|
|
38
59
|
}
|
|
39
60
|
```
|
|
40
61
|
|
|
@@ -85,6 +106,14 @@ All sizes are fixed `px` for the 1920x1080 canvas. JS `transform: scale()` handl
|
|
|
85
106
|
- Headings align to the text column, not to the full canvas.
|
|
86
107
|
- Let images carry visual weight; text should remain narrow, calm, and readable.
|
|
87
108
|
|
|
109
|
+
Design contract:
|
|
110
|
+
- Grid: use `--grid-page-inset`, `--grid-content-width`, and editorial split ratios as the source of layout alignment; do not scatter content with unrelated absolute offsets.
|
|
111
|
+
- Safe area: image captions, source notes, page numbers, and brand marks stay inside `--grid-safe-x` / `--grid-safe-y` unless the `hero` component owns the full canvas.
|
|
112
|
+
- Spacing: use the `--space-*` rhythm for editorial gaps, plaques, captions, and component padding. Dense pages may tighten within the scale, but should not invent one-off spacing systems.
|
|
113
|
+
- Type scale: use fixed 1920x1080 type tokens and the Monet serif stack. Do not introduce viewport-relative text sizing or sans-serif fallbacks for deck body copy.
|
|
114
|
+
- Surfaces: panels remain paper-like and flat. Use tonal blocks, whitespace, and `--surface-shadow`; avoid default container outlines, glass, neon, blob, or dashboard-card treatments.
|
|
115
|
+
- Chart tokens: charts use Monet accents, quiet gridlines, transparent backgrounds, explicit axis text colors, and stable `echart-panel` containers.
|
|
116
|
+
|
|
88
117
|
### Image Treatment
|
|
89
118
|
|
|
90
119
|
- Use impressionist-inspired photography: water surfaces, gardens, soft natural light, reflections, and botanical subjects.
|
|
@@ -884,7 +913,7 @@ Card/group primitive for one idea, case, evidence item, metric, objection, risk,
|
|
|
884
913
|
```
|
|
885
914
|
|
|
886
915
|
```css
|
|
887
|
-
.box { height: 100%; min-height: 0; padding: 28px;
|
|
916
|
+
.box { height: 100%; min-height: 0; padding: 28px; background: rgba(255,255,255,0.46); display: flex; flex-direction: column; gap: 18px; overflow: hidden; }
|
|
888
917
|
.box--quiet { background: transparent; }
|
|
889
918
|
.box--mist { background: rgba(240,244,247,0.72); }
|
|
890
919
|
.box--dark { background: #0d1a24; --text-primary:#f0f4f7; --text-secondary:rgba(240,244,247,0.72); --text-muted:rgba(240,244,247,0.55); --line:rgba(240,244,247,0.16); }
|
|
@@ -2630,6 +2659,7 @@ A horizontal milestone timeline with a central axis line. Nodes sit on the axis;
|
|
|
2630
2659
|
|
|
2631
2660
|
Rules:
|
|
2632
2661
|
- Position nodes with `left: X%` inline style. For N nodes, space them at `(100/(N+1)) * k %` or manually distribute to reflect time proportions.
|
|
2662
|
+
- Treat `left: X%` as the milestone centreline. The label, tip dot, stem, and axis dot must remain centered on that same x-position; do not left-align the label block away from the marker.
|
|
2633
2663
|
- Each node requires `--tjh-item-color` set inline (use any summit accent colour).
|
|
2634
2664
|
- **`--up` DOM order**: label → tip-dot → stem → axis-dot (label at top, axis-dot at bottom touching axis).
|
|
2635
2665
|
- **`--down` DOM order**: axis-dot → stem → tip-dot → label (axis-dot at top touching axis, label at bottom).
|
|
@@ -2718,19 +2748,20 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
|
|
|
2718
2748
|
position: absolute;
|
|
2719
2749
|
display: flex;
|
|
2720
2750
|
align-items: center;
|
|
2751
|
+
min-width: 260px;
|
|
2721
2752
|
height: 80px; /* vertical size of the clickable/hover zone */
|
|
2722
2753
|
transform: translateY(-50%); /* center the row on the top: Y% point */
|
|
2723
2754
|
}
|
|
2724
2755
|
|
|
2725
2756
|
/* LEFT: row-reverse flips DOM order so axis-dot appears on the right (on the axis) */
|
|
2726
2757
|
.tjv-item--left {
|
|
2727
|
-
right: 50
|
|
2758
|
+
right: calc(50% - var(--tjv-node) / 2);
|
|
2728
2759
|
flex-direction: row-reverse;
|
|
2729
2760
|
}
|
|
2730
2761
|
|
|
2731
2762
|
/* RIGHT: standard row; axis-dot appears on the left (on the axis) */
|
|
2732
2763
|
.tjv-item--right {
|
|
2733
|
-
left: 50
|
|
2764
|
+
left: calc(50% - var(--tjv-node) / 2);
|
|
2734
2765
|
flex-direction: row;
|
|
2735
2766
|
}
|
|
2736
2767
|
|
|
@@ -2746,13 +2777,9 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
|
|
|
2746
2777
|
}
|
|
2747
2778
|
|
|
2748
2779
|
/* LEFT: axis-dot is visually rightmost (row-reverse); push right to straddle axis */
|
|
2749
|
-
.tjv-item--left .tjv-axis-dot
|
|
2750
|
-
margin-right: calc(-1 * var(--tjv-node) / 2);
|
|
2751
|
-
}
|
|
2752
|
-
|
|
2753
|
-
/* RIGHT: axis-dot is visually leftmost; push left to straddle axis */
|
|
2780
|
+
.tjv-item--left .tjv-axis-dot,
|
|
2754
2781
|
.tjv-item--right .tjv-axis-dot {
|
|
2755
|
-
margin
|
|
2782
|
+
margin: 0;
|
|
2756
2783
|
}
|
|
2757
2784
|
|
|
2758
2785
|
/* Tip dot — small square at the stem end near the label */
|
|
@@ -2831,6 +2858,9 @@ Can be placed inside any layout slot that provides a defined height (`narrative`
|
|
|
2831
2858
|
Rules:
|
|
2832
2859
|
- **DOM order is identical for left and right nodes**: `axis-dot → stem → tip-dot → label`. The visual direction is controlled by CSS (`row-reverse` for left, `row` for right) — never by changing the DOM order.
|
|
2833
2860
|
- Position each node with `top: Y%` inline style. For N nodes, distribute evenly: `(100 / (N + 1)) * k %` or manually to reflect actual time proportions.
|
|
2861
|
+
- Treat `top: Y%` as the milestone row centre. The axis dot, stem, tip dot, and label row must stay vertically centered on that same y-position.
|
|
2862
|
+
- Anchor left/right rows at `calc(50% - var(--tjv-node) / 2)` rather than using negative margins on `.tjv-axis-dot`; this keeps the marker centered on the axis without creating export/QA overflow.
|
|
2863
|
+
- Give `.tjv-item` an explicit `min-width` large enough to include label + tip + stem + axis-dot, rather than relying on intrinsic content width.
|
|
2834
2864
|
- Every node must set `--tjv-item-color` inline (use any Monet accent: `--accent-earth`, `--accent-gold`, `--accent-olive`, `--accent-sage`).
|
|
2835
2865
|
- Alternate `--left` and `--right` across nodes for visual rhythm. Do not place consecutive same-side nodes unless intentional.
|
|
2836
2866
|
- The parent container must have a defined height. Use `height: 100%` when inside a layout slot, or set an explicit `px` height when used standalone.
|