@goodandready/dsh-image-gen 0.8.3 → 0.8.5
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/lib/client.js +41 -23
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -20,38 +20,38 @@ window.__ModuleLoader__.load({
|
|
|
20
20
|
|
|
21
21
|
// ---------------------------------------------------------------- css
|
|
22
22
|
const css =
|
|
23
|
-
'.fal_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:
|
|
23
|
+
'.fal_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none}' +
|
|
24
24
|
'.fal_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}' +
|
|
25
|
-
'.
|
|
26
|
-
'.
|
|
25
|
+
'.fal_head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;display:flex;align-items:center;gap:12px;padding:14px 16px}' +
|
|
26
|
+
'.fal_head:hover{background:var(--dsw-alias-interactive-bg-hover)}' +
|
|
27
27
|
'.fal_headText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}' +
|
|
28
|
-
'.
|
|
29
|
-
'.
|
|
30
|
-
'.fal_pending{color:var(--dsw-alias-state-warn-primary);font-size:
|
|
28
|
+
'.fal_title{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}' +
|
|
29
|
+
'.fal_sub{color:var(--dsw-alias-label-secondary);font-size:13px}' +
|
|
30
|
+
'.fal_pending{color:var(--dsw-alias-state-warn-primary);font-size:13px}' +
|
|
31
31
|
'.fal_chevron{color:var(--dsw-alias-label-tertiary);transition:transform .12s}' +
|
|
32
32
|
'.fal_chevronOpen{transform:rotate(180deg)}' +
|
|
33
|
-
'.fal_body{
|
|
34
|
-
'.fal_readOnly{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px}' +
|
|
35
|
-
'.
|
|
36
|
-
'.fal_failed{color:var(--dsw-alias-state-error-primary);margin:0 auto 0 0;font-size:
|
|
37
|
-
'.fal_discard,.fal_save{font:inherit;cursor:pointer;border-radius:
|
|
33
|
+
'.fal_body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}' +
|
|
34
|
+
'.fal_readOnly{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px;padding:12px 0}' +
|
|
35
|
+
'.fal_foot{border-top:1px solid var(--dsw-alias-border-l2);display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px}' +
|
|
36
|
+
'.fal_failed{color:var(--dsw-alias-state-error-primary);margin:0 auto 0 0;font-size:13px}' +
|
|
37
|
+
'.fal_discard,.fal_save{appearance:none;font:inherit;cursor:pointer;border-radius:8px;padding:5px 14px;font-size:13px}' +
|
|
38
38
|
'.fal_discard{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}' +
|
|
39
39
|
'.fal_discard:hover:not(:disabled){color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}' +
|
|
40
|
-
'.fal_save{border:1px solid
|
|
41
|
-
'.fal_save:hover:not(:disabled){
|
|
40
|
+
'.fal_save{border:1px solid transparent;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}' +
|
|
41
|
+
'.fal_save:hover:not(:disabled){opacity:.9}' +
|
|
42
42
|
'.fal_discard:active:not(:disabled),.fal_save:active:not(:disabled){transform:translateY(1px)}' +
|
|
43
43
|
'.fal_discard:focus-visible:not(:disabled),.fal_save:focus-visible:not(:disabled){outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}' +
|
|
44
44
|
'.fal_discard:disabled,.fal_save:disabled{opacity:.5;cursor:default}' +
|
|
45
|
-
'.fal_field{flex-direction:column;gap:
|
|
46
|
-
'.
|
|
45
|
+
'.fal_field{display:flex;flex-direction:column;gap:6px;padding:12px 0}' +
|
|
46
|
+
'.fal_fieldHead{align-items:center;gap:12px;display:flex}' +
|
|
47
47
|
'.fal_label{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500}' +
|
|
48
48
|
'.fal_badges{align-items:center;gap:6px;display:flex}' +
|
|
49
49
|
'.fal_badge{background:var(--dsw-alias-interactive-bg-hover-accent);color:var(--dsw-alias-state-business-primary);border-radius:999px;padding:1px 6px;font-size:11px}' +
|
|
50
50
|
'.fal_reset{color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px}' +
|
|
51
51
|
'.fal_reset:hover:not(:disabled){text-decoration:underline}' +
|
|
52
52
|
'.fal_reset:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}' +
|
|
53
|
-
'.fal_input,.fal_select{border:1px solid var(--dsw-alias-border-l2);
|
|
54
|
-
'.fal_inputInvalid{border:1px solid var(--dsw-alias-state-error-primary);font:inherit;color:var(--dsw-alias-label-primary);border-radius:
|
|
53
|
+
'.fal_input,.fal_select{height:34px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px}' +
|
|
54
|
+
'.fal_inputInvalid{border:1px solid var(--dsw-alias-state-error-primary);font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px}' +
|
|
55
55
|
'.fal_input:disabled,.fal_select:disabled{opacity:.6}' +
|
|
56
56
|
'.fal_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px}' +
|
|
57
57
|
'.fal_invalid{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}' +
|
|
@@ -72,20 +72,20 @@ window.__ModuleLoader__.load({
|
|
|
72
72
|
cardOpen: 'fal_cardOpen',
|
|
73
73
|
chevron: 'fal_chevron',
|
|
74
74
|
chevronOpen: 'fal_chevronOpen',
|
|
75
|
-
description: '
|
|
75
|
+
description: 'fal_sub',
|
|
76
76
|
discard: 'fal_discard',
|
|
77
77
|
failed: 'fal_failed',
|
|
78
78
|
field: 'fal_field',
|
|
79
|
-
footer: '
|
|
80
|
-
head: '
|
|
81
|
-
header: '
|
|
79
|
+
footer: 'fal_foot',
|
|
80
|
+
head: 'fal_fieldHead',
|
|
81
|
+
header: 'fal_head',
|
|
82
82
|
headText: 'fal_headText',
|
|
83
83
|
hint: 'fal_hint',
|
|
84
84
|
input: 'fal_input',
|
|
85
85
|
inputInvalid: 'fal_inputInvalid',
|
|
86
86
|
invalid: 'fal_invalid',
|
|
87
87
|
label: 'fal_label',
|
|
88
|
-
name: '
|
|
88
|
+
name: 'fal_title',
|
|
89
89
|
pending: 'fal_pending',
|
|
90
90
|
readOnly: 'fal_readOnly',
|
|
91
91
|
reset: 'fal_reset',
|
|
@@ -769,7 +769,25 @@ window.__ModuleLoader__.load({
|
|
|
769
769
|
}
|
|
770
770
|
|
|
771
771
|
function apply(ctx) {
|
|
772
|
-
|
|
772
|
+
// Язык может принести не только плагин: словарные пакеты объявляют
|
|
773
|
+
// русский для чужих пространств. Ядро на повторное объявление той же
|
|
774
|
+
// пары «пространство + язык» бросает исключение, и незащищённый вызов
|
|
775
|
+
// уносил с собой весь плагин — в интерфейсе это выглядело как «Failed to
|
|
776
|
+
// load plugins» с перечнем ни в чём не повинных соседей.
|
|
777
|
+
//
|
|
778
|
+
// Поэтому каждый язык объявляется отдельно и по-хорошему: заняли до нас —
|
|
779
|
+
// уступаем, свой английский при этом всё равно встаёт на место.
|
|
780
|
+
const addLocale = (locale, dictionary) => {
|
|
781
|
+
try {
|
|
782
|
+
return ctx.locale.register(NS, locale, dictionary)
|
|
783
|
+
} catch (alreadyTaken) {
|
|
784
|
+
return () => {}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
ctx.effect(() => {
|
|
788
|
+
const undo = [addLocale('en', en), addLocale('ru', ru)]
|
|
789
|
+
return () => { for (const off of undo) off() }
|
|
790
|
+
}, 'dsh-image-gen: dictionaries')
|
|
773
791
|
// Подпись раздела рисует не наш компонент, а боковой список, поэтому
|
|
774
792
|
// props.t сюда не доедет: берём переводчик, привязанный к namespace.
|
|
775
793
|
const t = ctx.locale.bind(NS)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-image-gen",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"description": "Image generation for DeepSeek Harness: a generate_image tool with pluggable providers — the FAL queue, any OpenAI-compatible images API, or a ChatGPT/Grok subscription with no API key at all. The picture is shown inline in the conversation; the model receives either a link (works with any chat model) or the image itself (needs dsh-vision-bridge or a vision-capable model).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|