@krodak/clickup-cli 1.27.0 → 1.27.1

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "clickup-cli",
3
3
  "description": "ClickUp CLI skills for managing tasks, sprints, comments, checklists, custom fields, tags, and time tracking via the cup command",
4
- "version": "1.27.0",
4
+ "version": "1.27.1",
5
5
  "author": {
6
6
  "name": "Krzysztof Rodak"
7
7
  },
package/dist/index.js CHANGED
@@ -1841,12 +1841,12 @@ async function groupedTaskPicker(groups) {
1841
1841
  }
1842
1842
  async function showDetailsAndOpen(tasks, fetchTask) {
1843
1843
  if (tasks.length === 0) return;
1844
- const separator = chalk2.dim("\u2500".repeat(60));
1844
+ const separator2 = chalk2.dim("\u2500".repeat(60));
1845
1845
  for (let i = 0; i < tasks.length; i++) {
1846
1846
  const task = tasks[i];
1847
1847
  if (i > 0) {
1848
1848
  console.log("");
1849
- console.log(separator);
1849
+ console.log(separator2);
1850
1850
  }
1851
1851
  console.log("");
1852
1852
  if (fetchTask) {
@@ -2876,10 +2876,10 @@ function printComments(comments, forceJson) {
2876
2876
  console.log("No comments found.");
2877
2877
  return;
2878
2878
  }
2879
- const separator = chalk4.dim("-".repeat(60));
2879
+ const separator2 = chalk4.dim("-".repeat(60));
2880
2880
  for (let i = 0; i < comments.length; i++) {
2881
2881
  const c = comments[i];
2882
- if (i > 0) console.log(separator);
2882
+ if (i > 0) console.log(separator2);
2883
2883
  console.log(`${chalk4.bold(c.user)} ${chalk4.dim(formatTimestamp(c.date))}`);
2884
2884
  console.log(c.text);
2885
2885
  if (i < comments.length - 1) console.log("");
@@ -7052,18 +7052,31 @@ function formatViewsMarkdown(views) {
7052
7052
 
7053
7053
  // src/commands/chat.ts
7054
7054
  import chalk22 from "chalk";
7055
+ function channelName(c) {
7056
+ return c.name || "DM";
7057
+ }
7058
+ function colorChannelType(type) {
7059
+ if (type === "CHANNEL") return chalk22.cyan(type);
7060
+ if (type === "DM") return chalk22.dim(type);
7061
+ if (type === "GROUP_DM") return chalk22.blue(type);
7062
+ return type;
7063
+ }
7064
+ function colorVisibility(v) {
7065
+ if (v === "PUBLIC") return chalk22.green(v);
7066
+ return chalk22.dim(v);
7067
+ }
7055
7068
  var CHANNEL_COLUMNS = [
7056
- { key: "id", label: "ID", maxWidth: 20 },
7057
- { key: "name", label: "Name", maxWidth: 40 },
7058
- { key: "type", label: "Type", maxWidth: 12 },
7059
- { key: "visibility", label: "Visibility", maxWidth: 10 },
7069
+ { key: "name", label: "Name", maxWidth: 40, format: (v) => chalk22.bold(v) },
7070
+ { key: "id", label: "ID", maxWidth: 20, format: (v) => chalk22.dim(v) },
7071
+ { key: "type", label: "Type", maxWidth: 12, format: (v) => colorChannelType(v) },
7072
+ { key: "visibility", label: "Visibility", maxWidth: 10, format: (v) => colorVisibility(v) },
7060
7073
  { key: "topic", label: "Topic", maxWidth: 40 }
7061
7074
  ];
7062
7075
  function formatChannelsTable(channels) {
7063
7076
  if (channels.length === 0) return "No channels found";
7064
7077
  const rows = channels.map((c) => ({
7065
7078
  id: c.id,
7066
- name: c.name || "(unnamed)",
7079
+ name: channelName(c),
7067
7080
  type: c.type,
7068
7081
  visibility: c.visibility,
7069
7082
  topic: c.topic ?? ""
@@ -7073,25 +7086,32 @@ function formatChannelsTable(channels) {
7073
7086
  function formatChannelsMarkdown(channels) {
7074
7087
  if (channels.length === 0) return "No channels found";
7075
7088
  return channels.map((c) => {
7076
- const name = c.name || "(unnamed)";
7089
+ const name = channelName(c);
7077
7090
  return `- **${name}** (${c.id}) \u2014 ${c.type}${c.topic ? `, ${c.topic}` : ""}`;
7078
7091
  }).join("\n");
7079
7092
  }
7080
7093
  function formatChannelDetail(channel) {
7081
7094
  const lines = [];
7082
- lines.push(chalk22.bold(channel.name || "(unnamed)"));
7083
- lines.push(chalk22.dim(`ID: ${channel.id}`));
7084
- lines.push(`Type: ${channel.type}`);
7085
- lines.push(`Visibility: ${channel.visibility}`);
7086
- if (channel.topic) lines.push(`Topic: ${channel.topic}`);
7087
- if (channel.description) lines.push(`Description: ${channel.description}`);
7088
- lines.push(`Archived: ${channel.archived}`);
7089
- lines.push(`Created: ${channel.created_at}`);
7095
+ lines.push(chalk22.bold.underline(channelName(channel)));
7096
+ lines.push("");
7097
+ const fields = [
7098
+ ["ID", chalk22.dim(channel.id)],
7099
+ ["Type", colorChannelType(channel.type)],
7100
+ ["Visibility", colorVisibility(channel.visibility)]
7101
+ ];
7102
+ if (channel.topic) fields.push(["Topic", channel.topic]);
7103
+ if (channel.description) fields.push(["Description", channel.description]);
7104
+ fields.push(["Archived", channel.archived ? chalk22.yellow("Yes") : "No"]);
7105
+ fields.push(["Created", formatDate(channel.created_at)]);
7106
+ const maxLabel = Math.max(...fields.map(([k]) => k.length));
7107
+ for (const [label, value] of fields) {
7108
+ lines.push(` ${chalk22.bold(label.padEnd(maxLabel + 1))} ${value}`);
7109
+ }
7090
7110
  return lines.join("\n");
7091
7111
  }
7092
7112
  var CHAT_MEMBER_COLUMNS = [
7093
- { key: "name", label: "Name", maxWidth: 30 },
7094
- { key: "id", label: "ID", maxWidth: 15 },
7113
+ { key: "name", label: "Name", maxWidth: 30, format: (v) => chalk22.bold(v) },
7114
+ { key: "id", label: "ID", maxWidth: 15, format: (v) => chalk22.dim(v) },
7095
7115
  { key: "email", label: "Email", maxWidth: 40 },
7096
7116
  { key: "type", label: "Type", maxWidth: 12 }
7097
7117
  ];
@@ -7115,23 +7135,25 @@ function formatChatMembersMarkdown(members) {
7115
7135
 
7116
7136
  // src/commands/chat-message.ts
7117
7137
  import chalk23 from "chalk";
7138
+ var separator = chalk23.dim("-".repeat(60));
7118
7139
  function formatMessages(messages) {
7119
7140
  if (messages.length === 0) return "No messages";
7120
7141
  const lines = [];
7121
- for (const msg of messages) {
7122
- const date = new Date(msg.date).toLocaleString();
7123
- const header = [chalk23.bold(`@${msg.user_id}`), chalk23.dim(date), chalk23.dim(`(${msg.id})`)];
7124
- if (msg.type === "post" && msg.post_data?.title) {
7125
- header.push(chalk23.cyan(`[${msg.post_data.title}]`));
7126
- }
7142
+ for (let i = 0; i < messages.length; i++) {
7143
+ const msg = messages[i];
7144
+ if (i > 0) lines.push(separator);
7145
+ const meta = [chalk23.bold(`@${msg.user_id}`), chalk23.dim(formatTimestamp(msg.date))];
7127
7146
  if (msg.replies_count) {
7128
- header.push(chalk23.dim(`${msg.replies_count} replies`));
7147
+ meta.push(chalk23.dim(`${msg.replies_count} replies`));
7129
7148
  }
7130
- lines.push(header.join(" "));
7131
- lines.push(` ${msg.content}`);
7132
- lines.push("");
7149
+ meta.push(chalk23.dim(`(${msg.id})`));
7150
+ lines.push(meta.join(" "));
7151
+ if (msg.type === "post" && msg.post_data?.title) {
7152
+ lines.push(chalk23.cyan.bold(msg.post_data.title));
7153
+ }
7154
+ lines.push(msg.content);
7133
7155
  }
7134
- return lines.join("\n").trimEnd();
7156
+ return lines.join("\n");
7135
7157
  }
7136
7158
  function formatMessagesMarkdown(messages) {
7137
7159
  if (messages.length === 0) return "No messages";
@@ -7147,6 +7169,29 @@ ${msg.content}`;
7147
7169
 
7148
7170
  // src/commands/chat-reaction.ts
7149
7171
  import chalk24 from "chalk";
7172
+ var EMOJI_MAP = {
7173
+ thumbsup: "\u{1F44D}",
7174
+ thumbsdown: "\u{1F44E}",
7175
+ heart: "\u2764\uFE0F",
7176
+ fire: "\u{1F525}",
7177
+ eyes: "\u{1F440}",
7178
+ rocket: "\u{1F680}",
7179
+ tada: "\u{1F389}",
7180
+ check: "\u2705",
7181
+ x: "\u274C",
7182
+ warning: "\u26A0\uFE0F",
7183
+ laugh: "\u{1F602}",
7184
+ smile: "\u{1F60A}",
7185
+ thinking: "\u{1F914}",
7186
+ clap: "\u{1F44F}",
7187
+ pray: "\u{1F64F}",
7188
+ 100: "\u{1F4AF}",
7189
+ star: "\u2B50",
7190
+ wave: "\u{1F44B}"
7191
+ };
7192
+ function emojiChar(name) {
7193
+ return EMOJI_MAP[name] ?? `:${name}:`;
7194
+ }
7150
7195
  function groupByEmoji(reactions) {
7151
7196
  const groups = /* @__PURE__ */ new Map();
7152
7197
  for (const r of reactions) {
@@ -7161,7 +7206,9 @@ function formatReactions(reactions) {
7161
7206
  const groups = groupByEmoji(reactions);
7162
7207
  const lines = [];
7163
7208
  for (const [emoji, users] of groups) {
7164
- lines.push(`${chalk24.bold(`:${emoji}:`)} ${users.join(", ")}`);
7209
+ const icon = emojiChar(emoji);
7210
+ const userList = users.map((u) => chalk24.bold(`@${u}`)).join(", ");
7211
+ lines.push(`${icon} ${chalk24.dim(emoji)} ${chalk24.dim(`(${users.length})`)} \u2014 ${userList}`);
7165
7212
  }
7166
7213
  return lines.join("\n");
7167
7214
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krodak/clickup-cli",
3
- "version": "1.27.0",
3
+ "version": "1.27.1",
4
4
  "description": "ClickUp CLI for AI agents and humans",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -3,11 +3,11 @@ name: clickup
3
3
  description: 'Use when managing ClickUp tasks, sprints, or comments via the `cup` CLI tool. Triggers: task queries, status updates, sprint tracking, creating subtasks, posting comments, threaded replies, standup summaries, searching tasks, checking overdue items, assigning tasks, listing spaces and lists, opening tasks in browser, checking auth or config, setting custom fields, deleting tasks, managing tags, managing checklists, editing comments, task links, time tracking, attachments, file uploads, listing members, listing fields, duplicating tasks, bulk operations, goals, key results, saved filters, favorites.'
4
4
  ---
5
5
 
6
- # ClickUp CLI (`cup`) - skill version 1.27.0
6
+ # ClickUp CLI (`cup`) - skill version 1.27.1
7
7
 
8
8
  Reference for AI agents using the `cup` CLI tool. Covers task management, sprint tracking, comments, time tracking, custom fields, goals, docs, and project workflows.
9
9
 
10
- > **Version check:** Run `cup --version`. If your installed version is older than 1.27.0, update with `npm install -g @krodak/clickup-cli` and refresh this skill with `cup skill`.
10
+ > **Version check:** Run `cup --version`. If your installed version is older than 1.27.1, update with `npm install -g @krodak/clickup-cli` and refresh this skill with `cup skill`.
11
11
 
12
12
  ## Install & Configure
13
13