@antaif3ng/tilcode 0.100.0 → 0.101.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.
Files changed (3) hide show
  1. package/README.md +7 -2
  2. package/dist/cli.js +51 -47
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -13,9 +13,14 @@ A clean, observable, and provider-agnostic CLI coding assistant based on Claude
13
13
 
14
14
  ## Install
15
15
 
16
+ Requires [Node.js](https://nodejs.org/) >= 18 and [Bun](https://bun.sh/) >= 1.3.
17
+
16
18
  ```bash
17
- # Requires Bun >= 1.3.11
18
- npm install -g tilcode
19
+ # Install Bun (if not already installed)
20
+ curl -fsSL https://bun.sh/install | bash
21
+
22
+ # Install Tilcode
23
+ npm install -g @antaif3ng/tilcode
19
24
  ```
20
25
 
21
26
  ## Quick Start
package/dist/cli.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env bun
1
2
  // @bun
2
3
  var __create = Object.create;
3
4
  var __getProtoOf = Object.getPrototypeOf;
@@ -542075,21 +542076,24 @@ function isInputModeCharacter(input) {
542075
542076
  }
542076
542077
 
542077
542078
  // src/projectOnboardingState.ts
542079
+ import { existsSync as existsSync13 } from "fs";
542080
+ import { homedir as homedir29 } from "os";
542078
542081
  import { join as join108 } from "path";
542079
542082
  function getSteps() {
542080
542083
  const hasClaudeMd = getFsImplementation().existsSync(join108(getCwd(), "CLAUDE.md"));
542081
542084
  const isWorkspaceDirEmpty = isDirEmpty(getCwd());
542085
+ const hasProviderConfig = existsSync13(join108(homedir29(), ".tilcode", "provider.json"));
542082
542086
  return [
542083
542087
  {
542084
- key: "workspace",
542085
- text: "Ask Claude to create a new app or clone a repository",
542086
- isComplete: false,
542088
+ key: "provider",
542089
+ text: "Create ~/.tilcode/provider.json to configure your model provider",
542090
+ isComplete: hasProviderConfig,
542087
542091
  isCompletable: true,
542088
- isEnabled: isWorkspaceDirEmpty
542092
+ isEnabled: true
542089
542093
  },
542090
542094
  {
542091
542095
  key: "claudemd",
542092
- text: "Run /init to create a CLAUDE.md file with instructions for Claude",
542096
+ text: "Run /init to create a CLAUDE.md file with project instructions",
542093
542097
  isComplete: hasClaudeMd,
542094
542098
  isCompletable: true,
542095
542099
  isEnabled: !isWorkspaceDirEmpty
@@ -542134,7 +542138,7 @@ var init_projectOnboardingState = __esm(() => {
542134
542138
 
542135
542139
  // src/utils/appleTerminalBackup.ts
542136
542140
  import { stat as stat36 } from "fs/promises";
542137
- import { homedir as homedir29 } from "os";
542141
+ import { homedir as homedir30 } from "os";
542138
542142
  import { join as join109 } from "path";
542139
542143
  function markTerminalSetupInProgress(backupPath) {
542140
542144
  saveGlobalConfig((current) => ({
@@ -542157,7 +542161,7 @@ function getTerminalRecoveryInfo() {
542157
542161
  };
542158
542162
  }
542159
542163
  function getTerminalPlistPath() {
542160
- return join109(homedir29(), "Library", "Preferences", "com.apple.Terminal.plist");
542164
+ return join109(homedir30(), "Library", "Preferences", "com.apple.Terminal.plist");
542161
542165
  }
542162
542166
  async function backupTerminalPreferences() {
542163
542167
  const terminalPlistPath = getTerminalPlistPath();
@@ -542228,11 +542232,11 @@ var init_appleTerminalBackup = __esm(() => {
542228
542232
  });
542229
542233
 
542230
542234
  // src/utils/completionCache.ts
542231
- import { homedir as homedir30 } from "os";
542235
+ import { homedir as homedir31 } from "os";
542232
542236
  import { dirname as dirname48, join as join110 } from "path";
542233
542237
  function detectShell() {
542234
542238
  const shell = process.env.SHELL || "";
542235
- const home = homedir30();
542239
+ const home = homedir31();
542236
542240
  const claudeDir = join110(home, ".claude");
542237
542241
  if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
542238
542242
  const cacheFile = join110(claudeDir, "completion.zsh");
@@ -542308,7 +542312,7 @@ __export(exports_terminalSetup, {
542308
542312
  });
542309
542313
  import { randomBytes as randomBytes15 } from "crypto";
542310
542314
  import { copyFile as copyFile9, mkdir as mkdir25, readFile as readFile39, writeFile as writeFile30 } from "fs/promises";
542311
- import { homedir as homedir31, platform as platform5 } from "os";
542315
+ import { homedir as homedir32, platform as platform5 } from "os";
542312
542316
  import { dirname as dirname49, join as join111 } from "path";
542313
542317
  import { pathToFileURL as pathToFileURL7 } from "url";
542314
542318
  function isVSCodeRemoteSSH() {
@@ -542444,7 +542448,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
542444
542448
  ]`)}${EOL7}`;
542445
542449
  }
542446
542450
  const editorDir = editor === "VSCode" ? "Code" : editor;
542447
- const userDirPath = join111(homedir31(), platform5() === "win32" ? join111("AppData", "Roaming", editorDir, "User") : platform5() === "darwin" ? join111("Library", "Application Support", editorDir, "User") : join111(".config", editorDir, "User"));
542451
+ const userDirPath = join111(homedir32(), platform5() === "win32" ? join111("AppData", "Roaming", editorDir, "User") : platform5() === "darwin" ? join111("Library", "Application Support", editorDir, "User") : join111(".config", editorDir, "User"));
542448
542452
  const keybindingsPath = join111(userDirPath, "keybindings.json");
542449
542453
  try {
542450
542454
  await mkdir25(userDirPath, {
@@ -542588,7 +542592,7 @@ chars = "\\u001B\\r"`;
542588
542592
  if (xdgConfigHome) {
542589
542593
  configPaths.push(join111(xdgConfigHome, "alacritty", "alacritty.toml"));
542590
542594
  } else {
542591
- configPaths.push(join111(homedir31(), ".config", "alacritty", "alacritty.toml"));
542595
+ configPaths.push(join111(homedir32(), ".config", "alacritty", "alacritty.toml"));
542592
542596
  }
542593
542597
  if (platform5() === "win32") {
542594
542598
  const appData = process.env.APPDATA;
@@ -542654,7 +542658,7 @@ chars = "\\u001B\\r"`;
542654
542658
  }
542655
542659
  }
542656
542660
  async function installBindingsForZed(theme) {
542657
- const zedDir = join111(homedir31(), ".config", "zed");
542661
+ const zedDir = join111(homedir32(), ".config", "zed");
542658
542662
  const keymapPath = join111(zedDir, "keymap.json");
542659
542663
  try {
542660
542664
  await mkdir25(zedDir, {
@@ -560944,10 +560948,10 @@ var init_MemoryFileSelector = __esm(() => {
560944
560948
  });
560945
560949
 
560946
560950
  // src/components/memory/MemoryUpdateNotification.tsx
560947
- import { homedir as homedir32 } from "os";
560951
+ import { homedir as homedir33 } from "os";
560948
560952
  import { relative as relative25 } from "path";
560949
560953
  function getRelativeMemoryPath(path23) {
560950
- const homeDir = homedir32();
560954
+ const homeDir = homedir33();
560951
560955
  const cwd2 = getCwd();
560952
560956
  const relativeToHome = path23.startsWith(homeDir) ? "~" + path23.slice(homeDir.length) : null;
560953
560957
  const relativeToCwd = path23.startsWith(cwd2) ? "./" + relative25(cwd2, path23) : null;
@@ -571382,7 +571386,7 @@ var init_pluginStartupCheck = __esm(() => {
571382
571386
  });
571383
571387
 
571384
571388
  // src/utils/plugins/parseMarketplaceInput.ts
571385
- import { homedir as homedir33 } from "os";
571389
+ import { homedir as homedir34 } from "os";
571386
571390
  import { resolve as resolve43 } from "path";
571387
571391
  async function parseMarketplaceInput(input) {
571388
571392
  const trimmed = input.trim();
@@ -571418,7 +571422,7 @@ async function parseMarketplaceInput(input) {
571418
571422
  const isWindows3 = process.platform === "win32";
571419
571423
  const isWindowsPath = isWindows3 && (trimmed.startsWith(".\\") || trimmed.startsWith("..\\") || /^[a-zA-Z]:[/\\]/.test(trimmed));
571420
571424
  if (trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("/") || trimmed.startsWith("~") || isWindowsPath) {
571421
- const resolvedPath = resolve43(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir33()) : trimmed);
571425
+ const resolvedPath = resolve43(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir34()) : trimmed);
571422
571426
  let stats;
571423
571427
  try {
571424
571428
  stats = await fs17.stat(resolvedPath);
@@ -587485,9 +587489,9 @@ function calculateOptimalLeftWidth(welcomeMessage, truncatedCwd, modelLine) {
587485
587489
  }
587486
587490
  function formatWelcomeMessage(username) {
587487
587491
  if (!username || username.length > MAX_USERNAME_LENGTH) {
587488
- return "Welcome back!";
587492
+ return "A lightweight clean edition";
587489
587493
  }
587490
- return `Welcome back ${username}!`;
587494
+ return "A lightweight clean edition";
587491
587495
  }
587492
587496
  function truncatePath(path26, maxLength) {
587493
587497
  if (stringWidth(path26) <= maxLength)
@@ -588032,7 +588036,7 @@ var init_referral = __esm(() => {
588032
588036
  });
588033
588037
 
588034
588038
  // src/components/LogoV2/feedConfigs.tsx
588035
- import { homedir as homedir34 } from "os";
588039
+ import { homedir as homedir35 } from "os";
588036
588040
  function createRecentActivityFeed(activities) {
588037
588041
  const lines2 = activities.map((log3) => {
588038
588042
  const time3 = formatRelativeTimeAgo(log3.modified);
@@ -588056,7 +588060,7 @@ function createWhatsNewFeed(releaseNotes2) {
588056
588060
  text: note
588057
588061
  };
588058
588062
  });
588059
- const emptyMessage = "Check the Claude Code changelog for updates";
588063
+ const emptyMessage = "No recent updates";
588060
588064
  return {
588061
588065
  title: "What's new",
588062
588066
  lines: lines2,
@@ -588077,14 +588081,14 @@ function createProjectOnboardingFeed(steps) {
588077
588081
  text: `${checkmark}${text2}`
588078
588082
  };
588079
588083
  });
588080
- const warningText = getCwd() === homedir34() ? "Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead." : undefined;
588084
+ const warningText = getCwd() === homedir35() ? "Note: You have launched tilcode in your home directory. For the best experience, launch it in a project directory instead." : undefined;
588081
588085
  if (warningText) {
588082
588086
  lines2.push({
588083
588087
  text: warningText
588084
588088
  });
588085
588089
  }
588086
588090
  return {
588087
- title: "Tips for getting started",
588091
+ title: "Quick Start",
588088
588092
  lines: lines2
588089
588093
  };
588090
588094
  }
@@ -588660,7 +588664,7 @@ function LogoV2() {
588660
588664
  } else {
588661
588665
  t0 = $3[0];
588662
588666
  }
588663
- const showOnboarding = t0;
588667
+ const showOnboarding = true;
588664
588668
  let t1;
588665
588669
  if ($3[1] === Symbol.for("react.memo_cache_sentinel")) {
588666
588670
  t1 = SandboxManager2.isSandboxingEnabled();
@@ -588912,7 +588916,7 @@ function LogoV2() {
588912
588916
  }
588913
588917
  const layoutMode = getLayoutMode(columns);
588914
588918
  const userTheme = resolveThemeSetting(getGlobalConfig().theme);
588915
- const borderTitle = ` ${color("claude", userTheme)("Tilcode")} ${color("inactive", userTheme)(`v${version6} | \u7EAF\u51C0\u7248 Claude Code`)} `;
588919
+ const borderTitle = ` ${color("claude", userTheme)("Tilcode")} ${color("inactive", userTheme)(`v${version6} | \u57FA\u4E8E Claude Code, \u66F4\u5B89\u5168\uFF0C\u65E0\u4E0A\u62A5\uFF0C\u53EF\u89C2\u6D4B\uFF0C\u53EF\u90E8\u7F72`)} `;
588916
588920
  const compactBorderTitle = color("claude", userTheme)(" Tilcode ");
588917
588921
  if (layoutMode === "compact") {
588918
588922
  let welcomeMessage = formatWelcomeMessage(username);
@@ -617604,7 +617608,7 @@ var init_setupPortable = __esm(() => {
617604
617608
 
617605
617609
  // src/utils/claudeInChrome/setup.ts
617606
617610
  import { chmod as chmod10, mkdir as mkdir34, readFile as readFile50, writeFile as writeFile41 } from "fs/promises";
617607
- import { homedir as homedir35 } from "os";
617611
+ import { homedir as homedir36 } from "os";
617608
617612
  import { join as join133 } from "path";
617609
617613
  import { fileURLToPath as fileURLToPath8 } from "url";
617610
617614
  function shouldEnableClaudeInChrome(chromeFlag) {
@@ -617684,7 +617688,7 @@ function setupClaudeInChrome() {
617684
617688
  function getNativeMessagingHostsDirs() {
617685
617689
  const platform6 = getPlatform();
617686
617690
  if (platform6 === "windows") {
617687
- const home = homedir35();
617691
+ const home = homedir36();
617688
617692
  const appData = process.env.APPDATA || join133(home, "AppData", "Local");
617689
617693
  return [join133(appData, "Claude Code", "ChromeNativeHost")];
617690
617694
  }
@@ -629685,7 +629689,7 @@ var init_agentMemory = __esm(() => {
629685
629689
 
629686
629690
  // src/utils/permissions/filesystem.ts
629687
629691
  import { randomBytes as randomBytes19 } from "crypto";
629688
- import { homedir as homedir36, tmpdir as tmpdir13 } from "os";
629692
+ import { homedir as homedir37, tmpdir as tmpdir13 } from "os";
629689
629693
  import { join as join143, normalize as normalize15, posix as posix8, sep as sep35 } from "path";
629690
629694
  function normalizeCaseForComparison2(path26) {
629691
629695
  return path26.toLowerCase();
@@ -629699,7 +629703,7 @@ function getClaudeSkillScope(filePath) {
629699
629703
  prefix: "/.claude/skills/"
629700
629704
  },
629701
629705
  {
629702
- dir: expandPath(join143(homedir36(), ".claude", "skills")),
629706
+ dir: expandPath(join143(homedir37(), ".claude", "skills")),
629703
629707
  prefix: "~/.claude/skills/"
629704
629708
  }
629705
629709
  ];
@@ -630013,7 +630017,7 @@ function patternWithRoot(pattern, source) {
630013
630017
  } else if (pattern.startsWith(`~${DIR_SEP}`)) {
630014
630018
  return {
630015
630019
  relativePattern: pattern.slice(1),
630016
- root: homedir36().normalize("NFC")
630020
+ root: homedir37().normalize("NFC")
630017
630021
  };
630018
630022
  } else if (pattern.startsWith(DIR_SEP)) {
630019
630023
  return {
@@ -636153,7 +636157,7 @@ import {
636153
636157
  unlink as unlink23
636154
636158
  } from "fs/promises";
636155
636159
  import { createServer as createServer7 } from "net";
636156
- import { homedir as homedir37, platform as platform6 } from "os";
636160
+ import { homedir as homedir38, platform as platform6 } from "os";
636157
636161
  import { join as join146 } from "path";
636158
636162
  function log3(message, ...args) {
636159
636163
  if (LOG_FILE) {
@@ -636492,7 +636496,7 @@ var init_chromeNativeHost = __esm(() => {
636492
636496
  init_slowOperations();
636493
636497
  init_common3();
636494
636498
  MAX_MESSAGE_SIZE = 1024 * 1024;
636495
- LOG_FILE = process.env.USER_TYPE === "ant" ? join146(homedir37(), ".claude", "debug", "chrome-native-host.txt") : undefined;
636499
+ LOG_FILE = process.env.USER_TYPE === "ant" ? join146(homedir38(), ".claude", "debug", "chrome-native-host.txt") : undefined;
636496
636500
  messageSchema = lazySchema(() => exports_external.object({
636497
636501
  type: exports_external.string()
636498
636502
  }).passthrough());
@@ -637542,7 +637546,7 @@ __export(exports_mcpServer2, {
637542
637546
  runComputerUseMcpServer: () => runComputerUseMcpServer,
637543
637547
  createComputerUseMcpServerForCli: () => createComputerUseMcpServerForCli
637544
637548
  });
637545
- import { homedir as homedir38 } from "os";
637549
+ import { homedir as homedir39 } from "os";
637546
637550
  async function tryGetInstalledAppNames() {
637547
637551
  const adapter2 = getComputerUseHostAdapter();
637548
637552
  const enumP = adapter2.executor.listInstalledApps();
@@ -637558,7 +637562,7 @@ async function tryGetInstalledAppNames() {
637558
637562
  logForDebugging(`[Computer Use MCP] app enumeration exceeded ${APP_ENUM_TIMEOUT_MS}ms or failed; tool description omits list`);
637559
637563
  return;
637560
637564
  }
637561
- return filterAppsForDescription(installed, homedir38());
637565
+ return filterAppsForDescription(installed, homedir39());
637562
637566
  }
637563
637567
  async function createComputerUseMcpServerForCli() {
637564
637568
  const adapter2 = getComputerUseHostAdapter();
@@ -643069,7 +643073,7 @@ __export(exports_upstreamproxy, {
643069
643073
  SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
643070
643074
  });
643071
643075
  import { mkdir as mkdir43, readFile as readFile55, unlink as unlink25, writeFile as writeFile46 } from "fs/promises";
643072
- import { homedir as homedir39 } from "os";
643076
+ import { homedir as homedir40 } from "os";
643073
643077
  import { join as join152 } from "path";
643074
643078
  async function initUpstreamProxy(opts) {
643075
643079
  if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
@@ -643091,7 +643095,7 @@ async function initUpstreamProxy(opts) {
643091
643095
  }
643092
643096
  setNonDumpable();
643093
643097
  const baseUrl = opts?.ccrBaseUrl ?? process.env.ANTHROPIC_BASE_URL ?? "https://api.anthropic.com";
643094
- const caBundlePath = opts?.caBundlePath ?? join152(homedir39(), ".ccr", "ca-bundle.crt");
643098
+ const caBundlePath = opts?.caBundlePath ?? join152(homedir40(), ".ccr", "ca-bundle.crt");
643095
643099
  const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
643096
643100
  if (!caOk)
643097
643101
  return state3;
@@ -651308,7 +651312,7 @@ var init_ShowInIDEPrompt = __esm(() => {
651308
651312
  });
651309
651313
 
651310
651314
  // src/components/permissions/FilePermissionDialog/permissionOptions.tsx
651311
- import { homedir as homedir40 } from "os";
651315
+ import { homedir as homedir41 } from "os";
651312
651316
  import { basename as basename49, join as join153, sep as sep36 } from "path";
651313
651317
  function isInClaudeFolder(filePath) {
651314
651318
  const absolutePath = expandPath(filePath);
@@ -651319,7 +651323,7 @@ function isInClaudeFolder(filePath) {
651319
651323
  }
651320
651324
  function isInGlobalClaudeFolder(filePath) {
651321
651325
  const absolutePath = expandPath(filePath);
651322
- const globalClaudeFolderPath = join153(homedir40(), ".claude");
651326
+ const globalClaudeFolderPath = join153(homedir41(), ".claude");
651323
651327
  const normalizedAbsolutePath = normalizeCaseForComparison2(absolutePath);
651324
651328
  const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison2(globalClaudeFolderPath);
651325
651329
  return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep36.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
@@ -681732,7 +681736,7 @@ var require_lib20 = __commonJS((exports, module) => {
681732
681736
 
681733
681737
  // src/utils/cleanup.ts
681734
681738
  import * as fs18 from "fs/promises";
681735
- import { homedir as homedir41 } from "os";
681739
+ import { homedir as homedir42 } from "os";
681736
681740
  import { join as join154 } from "path";
681737
681741
  function getCutoffDate() {
681738
681742
  const settings = getSettings_DEPRECATED() || {};
@@ -682033,7 +682037,7 @@ async function cleanupNpmCacheForAnthropicPackages() {
682033
682037
  return;
682034
682038
  }
682035
682039
  logForDebugging("npm cache cleanup: starting");
682036
- const npmCachePath = join154(homedir41(), ".npm", "_cacache");
682040
+ const npmCachePath = join154(homedir42(), ".npm", "_cacache");
682037
682041
  const NPM_CACHE_RETENTION_COUNT = 5;
682038
682042
  const startTime = Date.now();
682039
682043
  try {
@@ -705216,7 +705220,7 @@ var init_sessionMemory = __esm(() => {
705216
705220
 
705217
705221
  // src/utils/iTermBackup.ts
705218
705222
  import { copyFile as copyFile12, stat as stat50 } from "fs/promises";
705219
- import { homedir as homedir42 } from "os";
705223
+ import { homedir as homedir43 } from "os";
705220
705224
  import { join as join160 } from "path";
705221
705225
  function markITerm2SetupComplete() {
705222
705226
  saveGlobalConfig((current) => ({
@@ -705232,7 +705236,7 @@ function getIterm2RecoveryInfo() {
705232
705236
  };
705233
705237
  }
705234
705238
  function getITerm2PlistPath() {
705235
- return join160(homedir42(), "Library", "Preferences", "com.googlecode.iterm2.plist");
705239
+ return join160(homedir43(), "Library", "Preferences", "com.googlecode.iterm2.plist");
705236
705240
  }
705237
705241
  async function checkAndRestoreITerm2Backup() {
705238
705242
  const { inProgress, backupPath } = getIterm2RecoveryInfo();
@@ -714826,7 +714830,7 @@ __export(exports_claudeDesktop, {
714826
714830
  getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
714827
714831
  });
714828
714832
  import { readdir as readdir31, readFile as readFile59, stat as stat52 } from "fs/promises";
714829
- import { homedir as homedir43 } from "os";
714833
+ import { homedir as homedir44 } from "os";
714830
714834
  import { join as join163 } from "path";
714831
714835
  async function getClaudeDesktopConfigPath() {
714832
714836
  const platform7 = getPlatform();
@@ -714834,7 +714838,7 @@ async function getClaudeDesktopConfigPath() {
714834
714838
  throw new Error(`Unsupported platform: ${platform7} - Claude Desktop integration only works on macOS and WSL.`);
714835
714839
  }
714836
714840
  if (platform7 === "macos") {
714837
- return join163(homedir43(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
714841
+ return join163(homedir44(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
714838
714842
  }
714839
714843
  const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
714840
714844
  if (windowsHome) {
@@ -715761,11 +715765,11 @@ var exports_install = {};
715761
715765
  __export(exports_install, {
715762
715766
  install: () => install
715763
715767
  });
715764
- import { homedir as homedir44 } from "os";
715768
+ import { homedir as homedir45 } from "os";
715765
715769
  import { join as join164 } from "path";
715766
715770
  function getInstallationPath2() {
715767
715771
  const isWindows3 = env4.platform === "win32";
715768
- const homeDir = homedir44();
715772
+ const homeDir = homedir45();
715769
715773
  if (isWindows3) {
715770
715774
  const windowsPath = join164(homeDir, ".local", "bin", "claude.exe");
715771
715775
  return windowsPath.replace(/\//g, "\\");
@@ -719130,7 +719134,7 @@ var init_main6 = __esm(() => {
719130
719134
  var feature = (_name) => false;
719131
719135
  if (typeof globalThis.MACRO === "undefined") {
719132
719136
  globalThis.MACRO = {
719133
- VERSION: "0.100.0",
719137
+ VERSION: "0.101.0",
719134
719138
  BUILD_TIME: new Date().toISOString(),
719135
719139
  FEEDBACK_CHANNEL: "",
719136
719140
  ISSUES_EXPLAINER: "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antaif3ng/tilcode",
3
- "version": "0.100.0",
3
+ "version": "0.101.0",
4
4
  "description": "A clean, observable, and provider-agnostic CLI coding assistant based on Claude Code",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -19,7 +19,7 @@
19
19
  "dist"
20
20
  ],
21
21
  "scripts": {
22
- "build": "bun build src/entrypoints/cli.tsx --outdir dist --target bun",
22
+ "build": "bun build src/entrypoints/cli.tsx --outdir dist --target bun && printf '#!/usr/bin/env bun\\n' | cat - dist/cli.js > dist/cli.tmp && mv dist/cli.tmp dist/cli.js && chmod +x dist/cli.js",
23
23
  "dev": "bun run src/entrypoints/cli.tsx",
24
24
  "prepublishOnly": "bun run build",
25
25
  "lint": "biome lint src/",