tsoft-cli 3.5.0 → 3.6.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/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ 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.5.1] - 2026-04-09
9
+
10
+ ### Fixed
11
+ - Reduced terminal noise — lock, keep-alive, and shutdown messages are now silent
12
+ - Fixed misleading "cd" tip after theme create — now shows `tsoft theme dev`
13
+
8
14
  ## [3.5.0] - 2026-04-09
9
15
 
10
16
  ### Changed
package/locales/en.json CHANGED
@@ -152,6 +152,7 @@
152
152
  "push.admin_approval": "Will be published as 1.0.0 after admin approval",
153
153
  "push.draft_created": "New draft created",
154
154
  "push.draft_updated": "Existing draft updated",
155
+ "push.partner_hint": "Visit the partner panel for the theme list.",
155
156
  "push.changes_added": "+{{count}} new",
156
157
  "push.changes_removed": "~{{count}} removed",
157
158
 
package/locales/tr.json CHANGED
@@ -152,6 +152,7 @@
152
152
  "push.admin_approval": "Admin onayindan sonra 1.0.0 olarak yayinlanacak",
153
153
  "push.draft_created": "Yeni draft olusturuldu",
154
154
  "push.draft_updated": "Mevcut draft guncellendi",
155
+ "push.partner_hint": "Tema listesi icin partner paneli ziyaret edin.",
155
156
  "push.changes_added": "+{{count}} yeni",
156
157
  "push.changes_removed": "~{{count}} kaldirildi",
157
158
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tsoft-cli",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "tsoft360 tema geliştirme ve yönetim aracı",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,7 +40,7 @@ export async function loginCommand() {
40
40
  authUrl.searchParams.set('state', state);
41
41
  authUrl.searchParams.set('code_challenge', codeChallenge);
42
42
  authUrl.searchParams.set('code_challenge_method', 'S256');
43
- authUrl.searchParams.set('prompt', 'select_store');
43
+ authUrl.searchParams.set('prompt', 'select_org_store');
44
44
 
45
45
  // 3. Callback server'ı başlat
46
46
  const serverPromise = startCallbackServer(config.CALLBACK_PORT);
@@ -194,28 +194,16 @@ function startKeepAlive(themeUuid) {
194
194
  try {
195
195
  const apiClient = await createApiClient();
196
196
  await apiClient.post(`/theme/${themeUuid}/mark-synced`, {});
197
- console.log(chalk.gray(`[${new Date().toLocaleTimeString()}] 🔄 Keep-alive (mark-synced)`));
198
197
  } catch (error) {
199
- console.log(chalk.gray(`[${new Date().toLocaleTimeString()}] ` + t('dev.keepalive_error')));
198
+ // sessiz keep-alive hatası kullanıcıyı ilgilendirmez
200
199
  }
201
200
  }, 30000);
202
201
  }
203
202
 
204
203
  function setupGracefulShutdown(watcher, keepAliveInterval) {
205
204
  process.on('SIGINT', async () => {
206
- console.log(chalk.yellow('\n\n' + t('dev.stopping') + '\n'));
207
-
208
- if (watcher) {
209
- await watcher.close();
210
- console.log(chalk.green(t('dev.watch_stopped')));
211
- }
212
-
213
- if (keepAliveInterval) {
214
- clearInterval(keepAliveInterval);
215
- console.log(chalk.green(t('dev.keepalive_stopped')));
216
- }
217
-
218
- console.log(chalk.gray(' ' + t('dev.lock_kept')));
205
+ if (watcher) await watcher.close();
206
+ if (keepAliveInterval) clearInterval(keepAliveInterval);
219
207
 
220
208
  console.log(chalk.green('\n' + t('dev.exit_success') + '\n'));
221
209
  process.exit(0);
@@ -372,23 +360,14 @@ export async function themeDevCommand(themeName) {
372
360
  return;
373
361
  }
374
362
 
375
- console.log(chalk.yellow(t('dev.checking_lock')));
376
363
  const lockStatus = await checkLockStatus(themeInfo.uuid);
377
364
 
378
365
  if (!lockStatus.locked) {
379
- console.log(chalk.green(t('dev.not_locked') + '\n'));
380
- console.log(chalk.yellow(t('dev.acquiring_lock')));
381
366
  await acquireLock(themeInfo.uuid);
382
- console.log(chalk.green(t('dev.lock_acquired') + '\n'));
383
-
384
367
  await pullAndSync(themeInfo.uuid, themePath);
385
368
 
386
369
  } else if (lockStatus.isCurrentDeveloper) {
387
- if (lockStatus.developerSynced) {
388
- console.log(chalk.green(t('dev.already_locked')));
389
- console.log(chalk.green(t('dev.already_synced') + '\n'));
390
- } else {
391
- console.log(chalk.yellow(t('dev.not_synced') + '\n'));
370
+ if (!lockStatus.developerSynced) {
392
371
  await pullAndSync(themeInfo.uuid, themePath);
393
372
  }
394
373
  } else {
@@ -406,10 +385,7 @@ export async function themeDevCommand(themeName) {
406
385
  return;
407
386
  }
408
387
 
409
- console.log(chalk.yellow('\n' + t('dev.lock_override')));
410
388
  await acquireLock(themeInfo.uuid);
411
- console.log(chalk.green(t('dev.lock_acquired') + '\n'));
412
-
413
389
  await pullAndSync(themeInfo.uuid, themePath);
414
390
  }
415
391
 
@@ -61,11 +61,10 @@ function displayDiffSummary(data, previousVersion) {
61
61
  }
62
62
  }
63
63
 
64
- // Partner panel URL
65
- if (partnerUrl) {
66
- console.log('');
67
- console.log(chalk.cyan(` ${partnerUrl}`));
68
- }
64
+ // Partner panel yonlendirme
65
+ console.log('');
66
+ console.log(chalk.cyan(' https://partners.tsoft360.com'));
67
+ console.log(chalk.gray(' ' + t('push.partner_hint')));
69
68
  }
70
69
 
71
70
  /**
@@ -132,9 +131,6 @@ export async function themePushCommand(themeName, options = {}) {
132
131
  }
133
132
  // Insan-okunabilir
134
133
  spinner.info(t('push.no_changes'));
135
- if (result.data?.partner_panel_url) {
136
- console.log(chalk.gray(` ${result.data.partner_panel_url}`));
137
- }
138
134
  return;
139
135
  }
140
136
 
@@ -96,7 +96,7 @@ export async function themeCreateCommand() {
96
96
 
97
97
 
98
98
  const minimal = await brandedConfirm({
99
- message: t('theme.minimal_prompt'), default: false,
99
+ message: t('theme.minimal_prompt'),
100
100
  }, t('theme.minimal_title'));
101
101
 
102
102
  const themeSlug = slugify(name);
@@ -306,7 +306,7 @@ export async function themeCreateCommand() {
306
306
  console.log(chalk.bold.green(t('theme.create_success')));
307
307
  console.log(chalk.gray(' ' + t('theme.create_location', { path: `${storeSlug}/${themeSlug}/` }) + '\n'));
308
308
  console.log(chalk.cyan(t('theme.dev_start_tip')));
309
- console.log(chalk.white(` cd ${storeSlug}/${themeSlug}\n`));
309
+ console.log(chalk.white(' tsoft theme dev\n'));
310
310
  });
311
311
 
312
312
  writer.on('error', (error) => {