@rotorsoft/gent 1.15.0 → 1.15.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.
package/dist/index.js CHANGED
@@ -2150,7 +2150,7 @@ import { homedir } from "os";
2150
2150
  // package.json
2151
2151
  var package_default = {
2152
2152
  name: "@rotorsoft/gent",
2153
- version: "1.15.0",
2153
+ version: "1.15.1",
2154
2154
  description: "AI-powered GitHub workflow CLI - leverage AI (Claude, Gemini, or Codex) to create tickets, implement features, and manage PRs",
2155
2155
  keywords: [
2156
2156
  "cli",
@@ -2879,58 +2879,38 @@ function buildDashboardLines(state, actions, hint, refreshing) {
2879
2879
  out(botRow(w));
2880
2880
  return lines;
2881
2881
  }
2882
- if (state.isOnMain) {
2883
- out(
2884
- row(
2885
- chalk3.magenta(state.branch) + chalk3.dim(" \xB7 ready to start new work"),
2886
- w
2887
- )
2888
- );
2889
- if (state.hasUncommittedChanges) {
2890
- out(row(chalk3.yellow("\u25CF uncommitted changes"), w));
2891
- }
2892
- if (hint) {
2893
- out(midRow("Hint", w));
2894
- out(row(chalk3.yellow(hint), w));
2895
- }
2896
- out(divRow(w));
2897
- if (refreshing) {
2898
- out(row(chalk3.yellow("Refreshing\u2026"), w));
2899
- } else {
2900
- for (const line of formatCommandBar(actions, w)) {
2901
- out(row(line, w));
2902
- }
2903
- }
2904
- out(botRow(w));
2905
- out("");
2906
- return lines;
2907
- }
2908
2882
  const section = (title) => {
2909
2883
  out(midRow(title, w));
2910
2884
  };
2911
- section("Ticket");
2912
- if (state.issue) {
2913
- out(
2914
- row(
2915
- chalk3.cyan(`#${state.issue.number}`) + " " + chalk3.bold(truncate(state.issue.title, descMax - 6)),
2916
- w
2917
- )
2918
- );
2919
- const desc = extractDescription(state.issue.body, descMax);
2920
- if (desc) out(row(chalk3.dim(desc), w));
2921
- const tags = [];
2922
- if (state.workflowStatus !== "none")
2923
- tags.push(workflowBadge(state.workflowStatus));
2924
- for (const prefix of ["type:", "priority:", "risk:", "area:"]) {
2925
- const l = state.issue.labels.find((x) => x.startsWith(prefix));
2926
- if (l) tags.push(chalk3.dim(l));
2927
- }
2928
- if (tags.length) out(row(tags.join(" "), w));
2929
- } else {
2930
- out(row(chalk3.dim("No linked issue"), w));
2885
+ if (state.issue || !state.isOnMain) {
2886
+ section("Ticket");
2887
+ if (state.issue) {
2888
+ out(
2889
+ row(
2890
+ chalk3.cyan(`#${state.issue.number}`) + " " + chalk3.bold(truncate(state.issue.title, descMax - 6)),
2891
+ w
2892
+ )
2893
+ );
2894
+ const desc = extractDescription(state.issue.body, descMax);
2895
+ if (desc) out(row(chalk3.dim(desc), w));
2896
+ const tags = [];
2897
+ if (state.workflowStatus !== "none")
2898
+ tags.push(workflowBadge(state.workflowStatus));
2899
+ for (const prefix of ["type:", "priority:", "risk:", "area:"]) {
2900
+ const l = state.issue.labels.find((x) => x.startsWith(prefix));
2901
+ if (l) tags.push(chalk3.dim(l));
2902
+ }
2903
+ if (tags.length) out(row(tags.join(" "), w));
2904
+ } else {
2905
+ out(row(chalk3.dim("No linked issue"), w));
2906
+ }
2931
2907
  }
2932
2908
  section("Branch");
2933
- out(row(chalk3.magenta(state.branch), w));
2909
+ let branchLine = chalk3.magenta(state.branch);
2910
+ if (state.isOnMain && !state.hasUncommittedChanges) {
2911
+ branchLine += chalk3.dim(" \xB7 ready to start new work");
2912
+ }
2913
+ out(row(branchLine, w));
2934
2914
  const bits = [];
2935
2915
  if (state.commits.length > 0)
2936
2916
  bits.push(chalk3.dim(`${state.commits.length} ahead`));
@@ -2940,48 +2920,52 @@ function buildDashboardLines(state, actions, hint, refreshing) {
2940
2920
  bits.push(chalk3.green("\u25CF synced"));
2941
2921
  }
2942
2922
  if (bits.length) out(row(bits.join(chalk3.dim(" \xB7 ")), w));
2943
- section("Pull Request");
2944
- if (state.pr) {
2945
- const titleText = state.pr.title ? " " + truncate(state.pr.title, descMax - 12) : "";
2946
- out(row(chalk3.cyan(`#${state.pr.number}`) + titleText, w));
2947
- out(
2948
- row(
2949
- prBadge(state.pr.state, state.pr.isDraft) + reviewBadge(state.pr.reviewDecision),
2950
- w
2951
- )
2952
- );
2953
- if (state.hasActionableFeedback) {
2954
- const n = state.reviewFeedback.length;
2955
- out(
2956
- row(
2957
- chalk3.yellow(`${n} actionable comment${n !== 1 ? "s" : ""} pending`),
2958
- w
2959
- )
2960
- );
2961
- }
2962
- if (state.hasUIChanges && state.isPlaywrightAvailable && state.config.video.enabled && state.pr.state === "open") {
2923
+ if (state.pr || !state.isOnMain) {
2924
+ section("Pull Request");
2925
+ if (state.pr) {
2926
+ const titleText = state.pr.title ? " " + truncate(state.pr.title, descMax - 12) : "";
2927
+ out(row(chalk3.cyan(`#${state.pr.number}`) + titleText, w));
2963
2928
  out(
2964
2929
  row(
2965
- chalk3.cyan("UI changes detected") + chalk3.dim(" \xB7 video capture available"),
2930
+ prBadge(state.pr.state, state.pr.isDraft) + reviewBadge(state.pr.reviewDecision),
2966
2931
  w
2967
2932
  )
2968
2933
  );
2934
+ if (state.hasActionableFeedback) {
2935
+ const n = state.reviewFeedback.length;
2936
+ out(
2937
+ row(
2938
+ chalk3.yellow(`${n} actionable comment${n !== 1 ? "s" : ""} pending`),
2939
+ w
2940
+ )
2941
+ );
2942
+ }
2943
+ if (state.hasUIChanges && state.isPlaywrightAvailable && state.config.video.enabled && state.pr.state === "open") {
2944
+ out(
2945
+ row(
2946
+ chalk3.cyan("UI changes detected") + chalk3.dim(" \xB7 video capture available"),
2947
+ w
2948
+ )
2949
+ );
2950
+ }
2951
+ out(row(chalk3.dim(state.pr.url), w));
2952
+ } else {
2953
+ out(row(chalk3.dim("No PR created"), w));
2969
2954
  }
2970
- out(row(chalk3.dim(state.pr.url), w));
2971
- } else {
2972
- out(row(chalk3.dim("No PR created"), w));
2973
2955
  }
2974
- section("Commits");
2975
- if (state.commits.length > 0) {
2976
- const max = 6;
2977
- for (const c of state.commits.slice(0, max)) {
2978
- out(row(c.substring(0, w - 5), w));
2979
- }
2980
- if (state.commits.length > max) {
2981
- out(row(chalk3.dim(`\u2026 and ${state.commits.length - max} more`), w));
2956
+ if (state.commits.length > 0 || !state.isOnMain) {
2957
+ section("Commits");
2958
+ if (state.commits.length > 0) {
2959
+ const max = 6;
2960
+ for (const c of state.commits.slice(0, max)) {
2961
+ out(row(c.substring(0, w - 5), w));
2962
+ }
2963
+ if (state.commits.length > max) {
2964
+ out(row(chalk3.dim(`\u2026 and ${state.commits.length - max} more`), w));
2965
+ }
2966
+ } else {
2967
+ out(row(chalk3.dim("No commits"), w));
2982
2968
  }
2983
- } else {
2984
- out(row(chalk3.dim("No commits"), w));
2985
2969
  }
2986
2970
  if (hint) {
2987
2971
  section("Hint");