tsoft-cli 3.7.3 → 3.7.4
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/CHANGELOG.md +13 -0
- package/locales/en.json +1 -0
- package/locales/tr.json +5 -4
- package/package.json +1 -1
- package/src/commands/theme-push.js +17 -6
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ All notable changes to T-Soft CLI will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.7.4] - 2026-04-20
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- `tsoft theme push` no longer prints a malformed partner panel link on servers or themes where the organization scope cannot be resolved. Previously the CLI would render `https://partners.tsoft360.com/themes/<theme-folder>` — a URL that looks valid but does not exist in the partner panel. The CLI now accepts the backend-provided `partner_panel_url` only when it contains a proper `/organization/<id>/themes/<folder>` segment; otherwise it falls back to the themes index page (`https://partners.tsoft360.com/themes`) and adjusts the hint text accordingly.
|
|
12
|
+
- Restored Turkish diacritics in `push.connecting`, `push.no_changes`, `push.admin_approval`, `push.use_tip` (e.g. `baglaniliyor` → `bağlanılıyor`, `onayindan` → `onayından`).
|
|
13
|
+
- Leading indentation is no longer part of the `chalk.cyan.underline` span, so the partner panel URL no longer shows phantom underscores before `https` on terminals that render whitespace underlines.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- New locale key `push.partner_hint_theme` ("View this theme in the partner panel." / "Temanı partner panelinde görüntüle.") used when a theme-scoped URL is available, keeping the generic `push.partner_hint` for index-page fallbacks.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- JSON-mode output (`--json`) emits the same sanitized `partner_panel_url` as the human-readable output, so machine consumers never receive the malformed link either.
|
|
20
|
+
|
|
8
21
|
## [3.7.3] - 2026-04-20
|
|
9
22
|
|
|
10
23
|
### Added
|
package/locales/en.json
CHANGED
|
@@ -143,6 +143,7 @@
|
|
|
143
143
|
"push.draft_created": "New draft created",
|
|
144
144
|
"push.draft_updated": "Existing draft updated",
|
|
145
145
|
"push.partner_hint": "Visit the partner panel for the theme list.",
|
|
146
|
+
"push.partner_hint_theme": "View this theme in the partner panel.",
|
|
146
147
|
"push.changes_added": "+{{count}} new",
|
|
147
148
|
"push.changes_removed": "~{{count}} removed",
|
|
148
149
|
"dev.starting": "🚀 Starting development environment...",
|
package/locales/tr.json
CHANGED
|
@@ -132,17 +132,18 @@
|
|
|
132
132
|
"theme.use.folder": "Klasör: {{folder}}",
|
|
133
133
|
"push.no_active_theme": "Aktif tema bulunamadı.",
|
|
134
134
|
"push.usage": "Kullanim: tsoft theme push <theme-name>",
|
|
135
|
-
"push.use_tip": "veya \"tsoft theme use <theme-name>\" ile aktif tema
|
|
136
|
-
"push.connecting": "Sunucuya
|
|
135
|
+
"push.use_tip": "veya \"tsoft theme use <theme-name>\" ile aktif tema ayarlayın.",
|
|
136
|
+
"push.connecting": "Sunucuya bağlanılıyor...",
|
|
137
137
|
"push.checking_status": "Mevcut durum kontrol ediliyor...",
|
|
138
138
|
"push.pushing": "Tema push ediliyor...",
|
|
139
|
-
"push.no_changes": "
|
|
139
|
+
"push.no_changes": "Değişiklik yok — mevcut draft güncel.",
|
|
140
140
|
"push.success": "Push tamamlandı",
|
|
141
141
|
"push.first_push_note": "(ilk push)",
|
|
142
|
-
"push.admin_approval": "Admin
|
|
142
|
+
"push.admin_approval": "Admin onayından sonra 1.0.0 olarak yayınlanacak",
|
|
143
143
|
"push.draft_created": "Yeni draft oluşturuldu",
|
|
144
144
|
"push.draft_updated": "Mevcut draft güncellendi",
|
|
145
145
|
"push.partner_hint": "Tema listesi için partner paneli ziyaret edin.",
|
|
146
|
+
"push.partner_hint_theme": "Temanı partner panelinde görüntüle.",
|
|
146
147
|
"push.changes_added": "+{{count}} yeni",
|
|
147
148
|
"push.changes_removed": "~{{count}} kaldırıldı",
|
|
148
149
|
"dev.starting": "🚀 Geliştirme ortamı başlatılıyor...",
|
package/package.json
CHANGED
|
@@ -15,6 +15,16 @@ const CHANGE_CATEGORIES = {
|
|
|
15
15
|
'Meta': ['meta_object_added', 'meta_object_removed', 'meta_field_added', 'meta_field_removed'],
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
const PARTNERS_BASE = 'https://partners.tsoft360.com';
|
|
19
|
+
const PARTNERS_THEMES_INDEX = `${PARTNERS_BASE}/themes`;
|
|
20
|
+
|
|
21
|
+
function resolvePanelLink(partnerUrl) {
|
|
22
|
+
if (typeof partnerUrl === 'string' && partnerUrl.includes('/organization/')) {
|
|
23
|
+
return { url: partnerUrl, hintKey: 'push.partner_hint_theme' };
|
|
24
|
+
}
|
|
25
|
+
return { url: PARTNERS_THEMES_INDEX, hintKey: 'push.partner_hint' };
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Diff ozeti goster (gruplu)
|
|
20
30
|
* @param {Object} data - Push response data
|
|
@@ -61,11 +71,10 @@ function displayDiffSummary(data, previousVersion) {
|
|
|
61
71
|
}
|
|
62
72
|
}
|
|
63
73
|
|
|
64
|
-
// Partner panel yonlendirme
|
|
65
74
|
console.log('');
|
|
66
|
-
const panelUrl = partnerUrl
|
|
67
|
-
console.log(chalk.cyan.underline(
|
|
68
|
-
console.log(chalk.gray(' ' + t(
|
|
75
|
+
const { url: panelUrl, hintKey } = resolvePanelLink(partnerUrl);
|
|
76
|
+
console.log(` ${chalk.cyan.underline(panelUrl)}`);
|
|
77
|
+
console.log(chalk.gray(' ' + t(hintKey)));
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
/**
|
|
@@ -115,6 +124,8 @@ export async function themePushCommand(themeName, options = {}) {
|
|
|
115
124
|
spinner.text = t('push.pushing');
|
|
116
125
|
const result = await apiClient.pushTheme(themeUuid);
|
|
117
126
|
|
|
127
|
+
const { url: resolvedPanelUrl } = resolvePanelLink(result.data?.partner_panel_url);
|
|
128
|
+
|
|
118
129
|
// 3. No-op kontrolu
|
|
119
130
|
if (result.data?.no_changes === true) {
|
|
120
131
|
// JSON mode
|
|
@@ -125,7 +136,7 @@ export async function themePushCommand(themeName, options = {}) {
|
|
|
125
136
|
command: 'theme push',
|
|
126
137
|
data: {
|
|
127
138
|
reason: 'no_changes',
|
|
128
|
-
partner_panel_url:
|
|
139
|
+
partner_panel_url: resolvedPanelUrl,
|
|
129
140
|
}
|
|
130
141
|
});
|
|
131
142
|
return;
|
|
@@ -148,7 +159,7 @@ export async function themePushCommand(themeName, options = {}) {
|
|
|
148
159
|
bump_type: result.data.bump_type,
|
|
149
160
|
action: result.data.action,
|
|
150
161
|
changes: result.data.changes || [],
|
|
151
|
-
partner_panel_url:
|
|
162
|
+
partner_panel_url: resolvedPanelUrl,
|
|
152
163
|
}
|
|
153
164
|
});
|
|
154
165
|
return;
|