@goodandready/dsh-subscriptions 0.5.24 → 0.5.26

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 CHANGED
@@ -1365,20 +1365,26 @@ const cssId = 'dsh-subscriptions/settings.module.css'
1365
1365
  ))
1366
1366
  } catch { moved = false }
1367
1367
  if (moved) return
1368
- // Запасной путь для сборок без settings.plugin.item: прежний раздел,
1369
- // чтобы настройки не пропали.
1370
- ctx.slots.inject('settings.section', () => ctx.slots.register(
1371
- {
1372
- name: 'settings.section',
1373
- id: '@goodandready/dsh-subscriptions',
1374
- order: 28,
1375
- // locale в записи слота — то, из-за чего компонент получает props.t.
1376
- locale: NS,
1377
- label: () => t('title'),
1378
- inject: () => ({ ctx: ctx }),
1379
- },
1380
- SubsSection,
1381
- ))
1368
+ // #244: Fallback for harness cores before settings.plugin.item slot was
1369
+ // introduced (< 0.1.2-rc.1). Once all production profiles run a core
1370
+ // that has settings.plugin.item, this block can be safely removed.
1371
+ // Tracked in Gitea #244 — do not remove without verifying minimum core.
1372
+ try {
1373
+ ctx.slots.inject('settings.section', () => ctx.slots.register(
1374
+ {
1375
+ name: 'settings.section',
1376
+ id: '@goodandready/dsh-subscriptions',
1377
+ order: 28,
1378
+ locale: NS,
1379
+ label: () => t('title'),
1380
+ inject: () => ({ ctx: ctx }),
1381
+ },
1382
+ SubsSection,
1383
+ ))
1384
+ } catch (e) {
1385
+ // Neither slot system available — settings panel will not render.
1386
+ // This is expected on headless / non-web profiles.
1387
+ }
1382
1388
  }
1383
1389
 
1384
1390
  // Горячий переключатель провайдера в строке композера: клик циклично
package/lib/index.js CHANGED
@@ -29,7 +29,7 @@ import {
29
29
  antigravityIdentityHeaders,
30
30
  } from './code-assist.js'
31
31
 
32
- export const name = 'dsh-subscriptions'
32
+ export const name = '@goodandready/dsh-subscriptions'
33
33
  export const inject = ['llm', 'credentials', 'webServer', 'settings']
34
34
 
35
35
  const NS = 'dsh-subscriptions'
@@ -110,6 +110,11 @@ export const Config = z.object({
110
110
 
111
111
  function publicConfig(cfg) {
112
112
  const clone = structuredClone(cfg)
113
+ // #242: redact all *ClientSecret fields before exposing config via GET /config.
114
+ // Secrets must never leave the server; the UI does not need them.
115
+ for (const key of Object.keys(clone)) {
116
+ if (key.endsWith('ClientSecret')) clone[key] = clone[key] ? '••••••' : ''
117
+ }
113
118
  return clone
114
119
  }
115
120
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-subscriptions",
3
- "version": "0.5.24",
3
+ "version": "0.5.26",
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",