team-toon-tack 3.7.4 → 3.7.5

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.
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Task management tools for Claude Code - supports Linear and Trello, efficient workflow without MCP overhead",
9
- "version": "1.2.0"
9
+ "version": "1.2.1"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "team-toon-tack",
14
14
  "source": "./",
15
15
  "description": "Linear/Trello task sync & management CLI with commands and skills",
16
- "version": "2.8.0"
16
+ "version": "2.8.1"
17
17
  }
18
18
  ]
19
19
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "team-toon-tack",
3
3
  "description": "Linear/Trello task sync & management CLI for Claude Code - saves tokens vs MCP",
4
- "version": "2.8.0",
4
+ "version": "2.8.1",
5
5
  "author": {
6
6
  "name": "wayne930242",
7
7
  "email": "wayne930242@gmail.com"
@@ -134,6 +134,12 @@ export class TrelloAdapter {
134
134
  const card = await this.client.getCard(issueId);
135
135
  if (!card)
136
136
  return null;
137
+ if (!Array.isArray(card.labels)) {
138
+ card.labels = [];
139
+ }
140
+ if (!Array.isArray(card.idMembers)) {
141
+ card.idMembers = [];
142
+ }
137
143
  // Get lists for status name lookup
138
144
  if (!this.listsCache.has(card.idBoard)) {
139
145
  await this.getStatuses(card.idBoard);
@@ -185,7 +191,8 @@ export class TrelloAdapter {
185
191
  comments: sourceComments.length > 0 ? sourceComments : undefined,
186
192
  };
187
193
  }
188
- catch {
194
+ catch (error) {
195
+ console.warn(`[trello] getIssue(${issueId}) failed:`, error instanceof Error ? error.message : error);
189
196
  return null;
190
197
  }
191
198
  }
@@ -98,7 +98,7 @@ export class TrelloClient {
98
98
  * Get a specific card by ID
99
99
  */
100
100
  async getCard(cardId) {
101
- return this.request("GET", `/cards/${cardId}?fields=id,name,desc,url,shortUrl,shortLink,closed,pos,due,dueComplete,idBoard,idList,idMembers,idLabels,badges,dateLastActivity&attachments=false&members=false&labels=true`);
101
+ return this.request("GET", `/cards/${cardId}?fields=id,name,desc,url,shortUrl,shortLink,closed,pos,due,dueComplete,idBoard,idList,idMembers,idLabels,labels,badges,dateLastActivity&attachments=false&members=false`);
102
102
  }
103
103
  /**
104
104
  * Get card attachments
@@ -291,8 +291,9 @@ Examples:
291
291
  }
292
292
  // Check if this is a search (has filters) or single issue lookup
293
293
  const hasFilters = Object.keys(filters).length > 0;
294
- // Find issue ID (argument that doesn't start with -)
295
- const issueId = args.find((arg) => !arg.startsWith("-") && arg.match(/^[A-Z]+-\d+$/i));
294
+ // Find issue ID: Linear-style (MP-123) or Trello shortLink (8+ alphanumeric)
295
+ const issueId = args.find((arg) => !arg.startsWith("-") &&
296
+ (arg.match(/^[A-Z]+-\d+$/i) || arg.match(/^[A-Za-z0-9]{8,}$/)));
296
297
  // If no issue ID and no filters, show all local issues
297
298
  if (!issueId && !hasFilters) {
298
299
  const data = await loadCycleData();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-toon-tack",
3
- "version": "3.7.4",
3
+ "version": "3.7.5",
4
4
  "description": "Linear & Trello task sync & management CLI with TOON format",
5
5
  "type": "module",
6
6
  "bin": {