@mevdragon/vidfarm-devcli 0.17.0 → 0.18.0
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/.agents/skills/vidfarm-media/SKILL.md +3 -3
- package/SKILL.director.md +20 -20
- package/SKILL.platform.md +4 -4
- package/dist/src/app.js +301 -45
- package/dist/src/cli.js +11 -10
- package/dist/src/devcli/clips.js +64 -64
- package/dist/src/reskin/agency-page.js +214 -170
- package/dist/src/reskin/calendar-page.js +502 -187
- package/dist/src/reskin/chat-page.js +470 -277
- package/dist/src/reskin/discover-page.js +988 -272
- package/dist/src/reskin/document.js +602 -13
- package/dist/src/reskin/help-page.js +138 -100
- package/dist/src/reskin/index-page.js +1 -1
- package/dist/src/reskin/inpaint-page.js +541 -0
- package/dist/src/reskin/job-runs-page.js +355 -127
- package/dist/src/reskin/library-page.js +435 -262
- package/dist/src/reskin/login-page.js +118 -81
- package/dist/src/reskin/pricing-page.js +195 -166
- package/dist/src/reskin/settings-page.js +520 -186
- package/dist/src/reskin/theme.js +106 -9
- package/package.json +1 -1
package/dist/src/reskin/theme.js
CHANGED
|
@@ -84,10 +84,10 @@ export const RESKIN_CSS = `
|
|
|
84
84
|
/* layout */
|
|
85
85
|
.rk-container{width:min(var(--rk-container),100%);margin:0 auto;padding:0 var(--rk-gutter)}
|
|
86
86
|
.rk-container-wide{width:min(85rem,100%);margin:0 auto;padding:0 var(--rk-gutter)}
|
|
87
|
-
.rk-page{padding:
|
|
88
|
-
.rk-page-head{display:grid;gap:
|
|
89
|
-
.rk-h1{font-size:var(--rk-text-
|
|
90
|
-
.rk-sub{font-size:var(--rk-text-
|
|
87
|
+
.rk-page{padding:24px 0 80px}
|
|
88
|
+
.rk-page-head{display:grid;gap:4px;margin-bottom:18px}
|
|
89
|
+
.rk-h1{font-size:var(--rk-text-3xl);letter-spacing:-.03em}
|
|
90
|
+
.rk-sub{font-size:var(--rk-text-base);color:var(--rk-text-muted)}
|
|
91
91
|
.rk-stack{display:grid;gap:16px}
|
|
92
92
|
.rk-row{display:flex;align-items:center;gap:12px}
|
|
93
93
|
.rk-spread{display:flex;align-items:center;justify-content:space-between;gap:16px}
|
|
@@ -115,10 +115,106 @@ export const RESKIN_CSS = `
|
|
|
115
115
|
transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
116
116
|
.rk-sidebar-item:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
117
117
|
.rk-sidebar-item.is-active{background:var(--rk-gold-tint);color:var(--rk-ink)}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
.rk-
|
|
121
|
-
.
|
|
118
|
+
/* AI chat dock — draggable FAB (defaults to the old sidebar-foot spot) + popup panel.
|
|
119
|
+
* The panel is 2x the sidebar width and, when it opens on the left, visually
|
|
120
|
+
* REPLACES the nav (sidebar goes visibility:hidden via body.rk-chat-left so the
|
|
121
|
+
* layout never jumps). If the FAB was dragged to the right half of the viewport
|
|
122
|
+
* the panel anchors right instead, so it is never cut off. */
|
|
123
|
+
.rk-fab{position:fixed;left:16px;bottom:16px;z-index:90;width:56px;height:56px;border-radius:var(--rk-r-full);
|
|
124
|
+
border:0;cursor:grab;background:var(--rk-gold-500);color:var(--rk-ink);display:grid;place-items:center;
|
|
125
|
+
box-shadow:var(--rk-shadow-lg);touch-action:none;user-select:none;-webkit-user-select:none;
|
|
126
|
+
transition:transform var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease),opacity var(--rk-dur) var(--rk-ease)}
|
|
127
|
+
.rk-fab:hover{transform:translateY(-2px);box-shadow:0 6px 18px -6px rgba(252,185,0,.6),var(--rk-shadow-lg)}
|
|
128
|
+
.rk-fab.is-dragging{cursor:grabbing;transition:none;transform:scale(1.08)}
|
|
129
|
+
.rk-fab.is-open{opacity:0;pointer-events:none;transform:scale(.6)}
|
|
130
|
+
.rk-fab svg{width:26px;height:26px}
|
|
131
|
+
.rk-aichat{position:fixed;z-index:95;top:12px;bottom:12px;left:12px;width:min(440px,calc(100vw - 24px));
|
|
132
|
+
display:flex;flex-direction:row;background:var(--rk-surface);border:1px solid var(--rk-border);
|
|
133
|
+
border-radius:var(--rk-r-3xl);box-shadow:var(--rk-shadow-xl);overflow:hidden;
|
|
134
|
+
animation:rk-aichat-in .22s var(--rk-ease)}
|
|
135
|
+
.rk-aichat.has-files{width:min(772px,calc(100vw - 24px))}
|
|
136
|
+
.rk-aichat.is-right{left:auto;right:12px}
|
|
137
|
+
.rk-aichat[hidden]{display:none}
|
|
138
|
+
@keyframes rk-aichat-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
|
|
139
|
+
.rk-chat-left .rk-sidebar{visibility:hidden}
|
|
140
|
+
|
|
141
|
+
/* left Files pane — baked into the panel; My Files + Temp as root folders of
|
|
142
|
+
one virtual root + directory nav. Also reused inline by /reskin/settings. */
|
|
143
|
+
.rk-aichat-files{flex:none;width:266px;display:none;flex-direction:column;min-height:0;
|
|
144
|
+
border-right:1px solid var(--rk-border);background:var(--rk-n-50)}
|
|
145
|
+
.rk-aichat.has-files .rk-aichat-files{display:flex}
|
|
146
|
+
.rk-aichat-files .rk-aichat-crumbs{padding-top:22px}
|
|
147
|
+
.rk-aichat-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:1px;padding:0 12px 8px;flex:none}
|
|
148
|
+
.rk-aichat-crumb{padding:2px 6px;border-radius:var(--rk-r-sm);cursor:pointer;background:transparent;border:0;
|
|
149
|
+
color:var(--rk-text-muted);font-size:12px;font-weight:600;font-family:inherit;max-width:120px;overflow:hidden;
|
|
150
|
+
text-overflow:ellipsis;white-space:nowrap}
|
|
151
|
+
.rk-aichat-crumb:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
152
|
+
.rk-aichat-crumb.is-current{color:var(--rk-ink)}
|
|
153
|
+
.rk-aichat-crumb-sep{color:var(--rk-n-300);font-size:12px}
|
|
154
|
+
.rk-aichat-files-body{flex:1;min-height:0;overflow-y:auto;padding:2px 8px 12px;display:grid;gap:2px;align-content:start}
|
|
155
|
+
.rk-aichat-frow{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border-radius:var(--rk-r-lg);
|
|
156
|
+
border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit;min-width:0;
|
|
157
|
+
transition:background var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
158
|
+
.rk-aichat-frow:hover{background:#fff;box-shadow:var(--rk-shadow-xs)}
|
|
159
|
+
.rk-aichat-fic{width:30px;height:30px;border-radius:var(--rk-r-md);flex:none;display:grid;place-items:center;
|
|
160
|
+
font-size:11px;font-weight:700;overflow:hidden}
|
|
161
|
+
.rk-aichat-fic-folder{background:var(--rk-gold-tint2);color:var(--rk-gold-700)}
|
|
162
|
+
.rk-aichat-fic-file{background:var(--rk-n-100);color:var(--rk-n-600)}
|
|
163
|
+
.rk-aichat-fic img,.rk-aichat-fic video{width:100%;height:100%;object-fit:cover}
|
|
164
|
+
.rk-aichat-fmain{flex:1;min-width:0;display:grid;gap:1px}
|
|
165
|
+
.rk-aichat-fname{font-size:12.5px;font-weight:600;color:var(--rk-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
166
|
+
.rk-aichat-fmeta{font-size:11px;color:var(--rk-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
167
|
+
.rk-aichat-fadd{flex:none;font-size:11px;font-weight:700;color:var(--rk-gold-700);opacity:0;transition:opacity var(--rk-dur) var(--rk-ease)}
|
|
168
|
+
.rk-aichat-frow:hover .rk-aichat-fadd{opacity:1}
|
|
169
|
+
.rk-aichat-fstate{padding:22px 14px;text-align:center;font-size:12.5px;color:var(--rk-text-muted);line-height:1.5;display:grid;gap:8px;justify-items:center}
|
|
170
|
+
.rk-aichat-fstate a{color:var(--rk-gold-700);font-weight:600}
|
|
171
|
+
.rk-aichat-fstate button{font-family:inherit;font-size:12px;font-weight:600;color:var(--rk-ink);cursor:pointer;
|
|
172
|
+
background:#fff;border:1px solid var(--rk-border);border-radius:var(--rk-r-full);padding:5px 12px}
|
|
173
|
+
.rk-aichat-fstate button:hover{background:var(--rk-n-100)}
|
|
174
|
+
/* upload dropzone footer (shown when inside My Files / Temp) */
|
|
175
|
+
.rk-aichat-drop{flex:none;margin:2px 10px 12px;padding:13px 12px;border:1.5px dashed var(--rk-border-strong);
|
|
176
|
+
border-radius:var(--rk-r-xl);background:#fff;display:grid;gap:9px;justify-items:center;text-align:center;
|
|
177
|
+
transition:border-color var(--rk-dur) var(--rk-ease),background var(--rk-dur) var(--rk-ease)}
|
|
178
|
+
.rk-aichat-drop[hidden]{display:none}
|
|
179
|
+
.rk-aichat-drop.is-drag{border-color:var(--rk-gold-600);background:var(--rk-gold-tint)}
|
|
180
|
+
.rk-aichat-drop-text{font-size:11.5px;color:var(--rk-text-muted);line-height:1.4;overflow-wrap:anywhere}
|
|
181
|
+
.rk-aichat-drop-btn{font-family:inherit;font-size:12px;font-weight:700;color:var(--rk-ink);cursor:pointer;
|
|
182
|
+
background:var(--rk-gold-tint);border:1px solid var(--rk-gold-600);border-radius:var(--rk-r-full);padding:6px 15px;
|
|
183
|
+
transition:background var(--rk-dur) var(--rk-ease)}
|
|
184
|
+
.rk-aichat-drop-btn:hover{background:var(--rk-gold-tint2)}
|
|
185
|
+
.rk-aichat-drop-btn:disabled{opacity:.6;cursor:default}
|
|
186
|
+
|
|
187
|
+
/* chat column */
|
|
188
|
+
.rk-aichat-main{flex:1;min-width:0;display:flex;flex-direction:column}
|
|
189
|
+
.rk-aichat-head{display:flex;align-items:center;gap:8px;padding:14px 14px;border-bottom:1px solid var(--rk-border);flex:none}
|
|
190
|
+
.rk-aichat-head-main{flex:1;min-width:0;display:grid;gap:1px}
|
|
191
|
+
.rk-aichat-title{font-family:var(--rk-font-display);font-weight:800;font-size:15px;color:var(--rk-ink);letter-spacing:-.01em}
|
|
192
|
+
.rk-aichat-sub{font-size:11.5px;color:var(--rk-text-muted)}
|
|
193
|
+
.rk-aichat-tool{width:30px;height:30px;border-radius:var(--rk-r-lg);border:1px solid var(--rk-border);background:#fff;
|
|
194
|
+
cursor:pointer;color:var(--rk-n-600);display:grid;place-items:center;font-size:13px;flex:none;
|
|
195
|
+
transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
196
|
+
.rk-aichat-tool:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
197
|
+
.rk-aichat-tool svg{width:15px;height:15px}
|
|
198
|
+
.rk-aichat-tool.is-on{background:var(--rk-gold-tint);border-color:var(--rk-gold-600);color:var(--rk-ink)}
|
|
199
|
+
.rk-aichat-log{flex:1;min-height:0;overflow-y:auto;padding:16px;display:grid;gap:10px;align-content:start;background:var(--rk-n-50)}
|
|
200
|
+
.rk-aichat-msg{max-width:85%;padding:10px 14px;border-radius:var(--rk-r-2xl);font-size:13.5px;line-height:1.5;overflow-wrap:break-word}
|
|
201
|
+
.rk-aichat-msg.is-ai{background:#fff;border:1px solid var(--rk-border);color:var(--rk-text);justify-self:start;
|
|
202
|
+
border-bottom-left-radius:var(--rk-r-sm);box-shadow:var(--rk-shadow-xs)}
|
|
203
|
+
.rk-aichat-msg.is-user{background:var(--rk-gold-tint2);color:var(--rk-ink);justify-self:end;border-bottom-right-radius:var(--rk-r-sm)}
|
|
204
|
+
.rk-aichat-chips{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px 0;flex:none}
|
|
205
|
+
.rk-aichat-chips:empty{display:none}
|
|
206
|
+
.rk-aichat-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 10px;border-radius:var(--rk-r-full);
|
|
207
|
+
background:var(--rk-gold-tint2);color:var(--rk-gold-700);font-size:11.5px;font-weight:600;max-width:190px}
|
|
208
|
+
.rk-aichat-chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
209
|
+
.rk-aichat-chip button{border:0;background:transparent;color:inherit;cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
|
|
210
|
+
.rk-aichat-composer{display:flex;gap:8px;padding:12px;border-top:1px solid var(--rk-border);flex:none;background:#fff}
|
|
211
|
+
.rk-aichat-composer .rk-input{flex:1;border-radius:var(--rk-r-full)}
|
|
212
|
+
|
|
213
|
+
/* narrow: stack the files drawer above the chat so neither pane is cut off */
|
|
214
|
+
@media(max-width:700px){
|
|
215
|
+
.rk-aichat.has-files{flex-direction:column}
|
|
216
|
+
.rk-aichat.has-files .rk-aichat-files{width:auto;max-height:44%;border-right:0;border-bottom:1px solid var(--rk-border)}
|
|
217
|
+
}
|
|
122
218
|
|
|
123
219
|
/* brand + glass helpers (kept — reused by the sidebar brand + the login page) */
|
|
124
220
|
.rk-glass{background:rgba(255,255,255,.72);backdrop-filter:blur(var(--rk-glass-blur));
|
|
@@ -139,8 +235,8 @@ export const RESKIN_CSS = `
|
|
|
139
235
|
.rk-sidebar-nav{flex-direction:row;gap:4px;flex:1}
|
|
140
236
|
.rk-sidebar-sep{display:none}
|
|
141
237
|
.rk-sidebar-item{padding:8px 12px}
|
|
142
|
-
.rk-sidebar-foot{display:none}
|
|
143
238
|
.rk-content{margin-left:0}
|
|
239
|
+
.rk-chat-left .rk-sidebar{visibility:visible}
|
|
144
240
|
}
|
|
145
241
|
|
|
146
242
|
/* buttons */
|
|
@@ -225,6 +321,7 @@ export const RESKIN_CSS = `
|
|
|
225
321
|
@media(max-width:860px){.rk-side{position:static;grid-auto-flow:column;overflow:auto}}
|
|
226
322
|
.rk-side-item{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--rk-r-xl);
|
|
227
323
|
font-size:14px;font-weight:600;color:var(--rk-n-600);cursor:pointer;border:0;background:transparent;
|
|
324
|
+
box-sizing:border-box;text-decoration:none;
|
|
228
325
|
width:100%;text-align:left;white-space:nowrap;transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
229
326
|
.rk-side-item:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
230
327
|
.rk-side-item.is-active{background:var(--rk-gold-tint);color:var(--rk-ink)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mevdragon/vidfarm-devcli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Local bridge for the Vidfarm Trackpad Editor. `vidfarm serve <template_id>` boots the FULL editor on localhost (disk-backed records/storage, free in-process render); edit composition.html on disk (Claude Code, Codex, etc.) and the browser live-morphs it.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|