@goodandready/dsh-subscriptions 0.2.8 → 0.2.10

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.
Files changed (2) hide show
  1. package/lib/client.js +26 -6
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -14,10 +14,10 @@ window.__ModuleLoader__.load({
14
14
  '.dsub-header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}' +
15
15
  '.dsub-headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}' +
16
16
  '.dsub-name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}' +
17
- '.dsub-description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}' +
17
+ '.dsub-description{color:var(--dsw-alias-label-secondary);font-size:13px}' +
18
18
  '.dsub-chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}' +
19
19
  '.dsub-chevronOpen{transform:rotate(180deg)}' +
20
- '.dsub-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding:16px 0 8px}' +
20
+ '.dsub-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}' +
21
21
  // existing dsub classes kept for SubsSection internals
22
22
  '.dsub-wrap{display:flex;flex-direction:column;gap:22px;padding:4px 0;max-width:760px}' +
23
23
  '.dsub-block{display:flex;flex-direction:column;gap:10px}' +
@@ -26,9 +26,11 @@ window.__ModuleLoader__.load({
26
26
  '.dsub-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}' +
27
27
  '.dsub-row input,.dsub-field input,.dsub-row select{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);border-radius:6px;padding:6px 8px;font-size:13px}' +
28
28
  '.dsub-grow{flex:1;min-width:180px}' +
29
- '.dsub-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--dsw-alias-label-secondary)}' +
29
+ '.dsub-field{display:flex;flex-direction:column;gap:6px;padding:12px 0}' +
30
+ '.dsub-input{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}' +
30
31
  '.dsub-mini{border:1px solid var(--dsw-alias-border-l2);background:transparent;color:var(--dsw-alias-label-primary);border-radius:6px;height:28px;padding:0 8px;cursor:pointer}' +
31
- '.dsub-save{background:var(--dsw-alias-brand-primary);color:#fff;border:none;border-radius:6px;padding:7px 14px;font-size:13px;cursor:pointer}' +
32
+ '.dsub-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}' +
33
+ '.dsub-save{appearance:none;font:inherit;cursor:pointer;border:1px solid transparent;border-radius:8px;padding:5px 14px;font-size:13px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}' +
32
34
  '.dsub-ok{font-size:12px;color:var(--dsw-alias-state-success-primary)}' +
33
35
  '.dsub-bad{font-size:12px;color:var(--dsw-alias-state-error-primary)}' +
34
36
  '.dsub-badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap}' +
@@ -372,7 +374,7 @@ const cssId = 'dsh-subscriptions/settings.module.css'
372
374
  }, t('addAccount')),
373
375
  )
374
376
  }),
375
- React.createElement('div', { className: 'dsub-row' },
377
+ React.createElement('div', { className: 'dsub-foot' },
376
378
  React.createElement('button', {
377
379
  type: 'button', className: 'dsub-save',
378
380
  onClick: () => save().catch((e) => setErr(String(e.message || e))),
@@ -418,7 +420,25 @@ const cssId = 'dsh-subscriptions/settings.module.css'
418
420
  }
419
421
 
420
422
  function registerSettings(ctx) {
421
- ctx.effect(() => ctx.locale.register(NS, { en, ru }), 'dsh-subscriptions: словари')
423
+ // Язык может принести не только плагин: словарные пакеты объявляют
424
+ // русский для чужих пространств. Ядро на повторное объявление той же
425
+ // пары «пространство + язык» бросает исключение, и незащищённый вызов
426
+ // уносил с собой весь плагин — в интерфейсе это выглядело как «Failed to
427
+ // load plugins» с перечнем ни в чём не повинных соседей.
428
+ //
429
+ // Поэтому каждый язык объявляется отдельно и по-хорошему: заняли до нас —
430
+ // уступаем, свой английский при этом всё равно встаёт на место.
431
+ const addLocale = (locale, dictionary) => {
432
+ try {
433
+ return ctx.locale.register(NS, locale, dictionary)
434
+ } catch (alreadyTaken) {
435
+ return () => {}
436
+ }
437
+ }
438
+ ctx.effect(() => {
439
+ const undo = [addLocale('en', en), addLocale('ru', ru)]
440
+ return () => { for (const off of undo) off() }
441
+ }, 'dsh-subscriptions: словари')
422
442
  // Подписи вне компонента берут переводчик, привязанный к namespace.
423
443
  const t = ctx.locale.bind(NS)
424
444
  // Штатное место — вкладка «Плагины»: карточка со своим заголовком и
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-subscriptions",
3
- "version": "0.2.8",
3
+ "version": "0.2.10",
4
4
  "description": "Use ChatGPT Codex, Claude, Grok, and Antigravity subscriptions as DeepSeek Harness LLM providers via OAuth.",
5
5
  "license": "MIT",
6
6
  "type": "module",