git-watchtower 1.11.9 → 1.11.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.
@@ -448,7 +448,11 @@ function applyConfig(config) {
448
448
  // Server log management
449
449
  function addServerLog(line, isError = false) {
450
450
  const entry = { timestamp: new Date().toLocaleTimeString(), line, isError };
451
- const serverLogBuffer = [...store.get('serverLogBuffer'), entry].slice(-MAX_SERVER_LOG_LINES);
451
+ const prev = store.get('serverLogBuffer');
452
+ // Drop the oldest entries to stay within MAX_SERVER_LOG_LINES after push
453
+ const startIdx = Math.max(0, prev.length + 1 - MAX_SERVER_LOG_LINES);
454
+ const serverLogBuffer = prev.slice(startIdx);
455
+ serverLogBuffer.push(entry);
452
456
  store.setState({ serverLogBuffer });
453
457
  }
454
458
 
@@ -976,7 +980,12 @@ function addLog(message, type = 'info') {
976
980
  icon: icons[type] || '○',
977
981
  color: colors[type] || 'white',
978
982
  };
979
- const activityLog = [entry, ...store.get('activityLog')].slice(0, MAX_LOG_ENTRIES);
983
+ const prev = store.get('activityLog');
984
+ // Drop the oldest entries to stay within MAX_LOG_ENTRIES after prepend
985
+ const keepCount = Math.min(prev.length, MAX_LOG_ENTRIES - 1);
986
+ const activityLog = new Array(keepCount + 1);
987
+ activityLog[0] = entry;
988
+ for (let i = 0; i < keepCount; i++) activityLog[i + 1] = prev[i];
980
989
  store.setState({ activityLog });
981
990
  }
982
991
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-watchtower",
3
- "version": "1.11.9",
3
+ "version": "1.11.10",
4
4
  "description": "Terminal-based Git branch monitor with activity sparklines and optional dev server with live reload",
5
5
  "main": "bin/git-watchtower.js",
6
6
  "bin": {
@@ -17,8 +17,7 @@ const SHORT_TIMEOUT = 5000;
17
17
 
18
18
  /**
19
19
  * Execute a git command safely using execFile (no shell).
20
- * @param {string | string[]} args - Git arguments as an array (e.g. ['log', '--oneline'])
21
- * or a legacy command string (e.g. 'git --version') for backwards compatibility
20
+ * @param {string[]} args - Git arguments as an array (e.g. ['log', '--oneline'])
22
21
  * @param {Object} [options] - Execution options
23
22
  * @param {number} [options.timeout] - Command timeout in ms
24
23
  * @param {string} [options.cwd] - Working directory
@@ -28,16 +27,8 @@ const SHORT_TIMEOUT = 5000;
28
27
  async function execGit(args, options = {}) {
29
28
  const { timeout = DEFAULT_TIMEOUT, cwd = process.cwd() } = options;
30
29
 
31
- // Backwards compatibility: accept a full command string for
32
- // simple constant commands (no user-controlled data).
33
- if (typeof args === 'string') {
34
- const parts = /** @type {string} */ (args).split(/\s+/);
35
- // Strip leading 'git' if present so callers can pass 'git --version'
36
- if (parts[0] === 'git') {
37
- args = parts.slice(1);
38
- } else {
39
- args = parts;
40
- }
30
+ if (!Array.isArray(args)) {
31
+ throw new TypeError('execGit: args must be an array of strings');
41
32
  }
42
33
 
43
34
  const command = `git ${args.join(' ')}`;
@@ -72,7 +63,7 @@ async function execGit(args, options = {}) {
72
63
 
73
64
  /**
74
65
  * Execute git command silently (suppress errors)
75
- * @param {string | string[]} command - Git arguments (array or legacy string)
66
+ * @param {string[]} command - Git arguments
76
67
  * @param {Object} [options] - Execution options
77
68
  * @returns {Promise<{stdout: string, stderr: string}|null>}
78
69
  */