playcademy 0.14.27 → 0.14.28

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/db.js CHANGED
@@ -2049,6 +2049,7 @@ import {
2049
2049
  green,
2050
2050
  greenBright,
2051
2051
  red,
2052
+ underline,
2052
2053
  yellow,
2053
2054
  yellowBright
2054
2055
  } from "colorette";
@@ -2750,6 +2751,7 @@ function formatError(error, indent = 0) {
2750
2751
  function customTransform(text) {
2751
2752
  let result = text;
2752
2753
  result = result.replace(/`([^`]+)`/g, (_, code) => greenBright(code));
2754
+ result = result.replace(/<<([^>]+)>>/g, (_, url) => underline(url));
2753
2755
  result = result.replace(/<([^>]+)>/g, (_, path) => blueBright(path));
2754
2756
  return result;
2755
2757
  }
package/dist/index.js CHANGED
@@ -2436,6 +2436,7 @@ import {
2436
2436
  green,
2437
2437
  greenBright,
2438
2438
  red,
2439
+ underline,
2439
2440
  yellow,
2440
2441
  yellowBright
2441
2442
  } from "colorette";
@@ -3168,6 +3169,7 @@ function setupGlobalErrorHandlers() {
3168
3169
  function customTransform(text5) {
3169
3170
  let result = text5;
3170
3171
  result = result.replace(/`([^`]+)`/g, (_, code) => greenBright(code));
3172
+ result = result.replace(/<<([^>]+)>>/g, (_, url) => underline(url));
3171
3173
  result = result.replace(/<([^>]+)>/g, (_, path4) => blueBright(path4));
3172
3174
  return result;
3173
3175
  }
@@ -3851,7 +3853,9 @@ async function requireConfigFile() {
3851
3853
  logger.error("No <playcademy.config.{js,json}> file found");
3852
3854
  logger.newLine();
3853
3855
  logger.admonition("note", "Getting Started", [
3854
- "Run `playcademy init` to create a config file first"
3856
+ "Run `playcademy init` to create a config file first",
3857
+ "",
3858
+ "Learn more: <<https://docs.playcademy.net/platform/quickstart>>"
3855
3859
  ]);
3856
3860
  logger.newLine();
3857
3861
  process.exit(1);
@@ -5519,7 +5523,7 @@ import { join as join12 } from "path";
5519
5523
  // package.json with { type: 'json' }
5520
5524
  var package_default2 = {
5521
5525
  name: "playcademy",
5522
- version: "0.14.26",
5526
+ version: "0.14.27",
5523
5527
  type: "module",
5524
5528
  exports: {
5525
5529
  ".": {
@@ -5984,7 +5988,9 @@ function displayConfigSuccess(timebackConfig) {
5984
5988
  logger.admonition("tip", "Next Steps", [
5985
5989
  "1. Review and customize your config file",
5986
5990
  "2. Build your project",
5987
- "3. Run `playcademy deploy` to deploy"
5991
+ "3. Run `playcademy deploy` to deploy",
5992
+ "",
5993
+ "Learn more: <<https://docs.playcademy.net/platform/quickstart>>"
5988
5994
  ]);
5989
5995
  logger.newLine();
5990
5996
  if (timebackConfig) {
@@ -5995,7 +6001,7 @@ function displayConfigSuccess(timebackConfig) {
5995
6001
  " \u2192 Run `playcademy timeback setup`",
5996
6002
  " \u2192 Then verify with `playcademy timeback verify`",
5997
6003
  "",
5998
- "This will create the necessary TimeBack resources."
6004
+ "Learn more: <<https://docs.playcademy.net/timeback>>"
5999
6005
  ]);
6000
6006
  logger.newLine();
6001
6007
  }
@@ -6028,6 +6034,8 @@ function displaySuccessMessage(context2) {
6028
6034
  }
6029
6035
  const deployStep = nextSteps.length + 1;
6030
6036
  nextSteps.push(`${deployStep}. Deploy: \`playcademy deploy\``);
6037
+ nextSteps.push("");
6038
+ nextSteps.push("Learn more: <<https://docs.playcademy.net/platform/quickstart>>");
6031
6039
  logger.admonition("tip", "Next Steps", nextSteps);
6032
6040
  logger.newLine();
6033
6041
  }
@@ -8339,7 +8347,7 @@ async function confirmDeploymentPlan(plan, context2) {
8339
8347
  }
8340
8348
 
8341
8349
  // src/lib/deploy/output.ts
8342
- import { underline } from "colorette";
8350
+ import { underline as underline2 } from "colorette";
8343
8351
  function displayCurrentConfiguration(context2) {
8344
8352
  const { config } = context2;
8345
8353
  logger.newLine();
@@ -8387,12 +8395,12 @@ function reportDeploymentSuccess(result, context2) {
8387
8395
  logger.success(`${game.displayName} ${action} successfully!`);
8388
8396
  logger.newLine();
8389
8397
  const baseUrl = getWebBaseUrl(client.getBaseUrl());
8390
- logger.data("Project URL", underline(`${baseUrl}/play/${game.slug}`), 1);
8398
+ logger.data("Project URL", underline2(`${baseUrl}/play/${game.slug}`), 1);
8391
8399
  if (backendMetadata || context2.previousBackendBundleHash) {
8392
8400
  const env = getEnvironment();
8393
8401
  const subdomain = env === "staging" ? `${game.slug}-staging` : game.slug;
8394
8402
  const backendUrl = `https://${subdomain}.${GAME_WORKER_DOMAINS.production}/api`;
8395
- logger.data("Backend API", underline(`${backendUrl}`), 1);
8403
+ logger.data("Backend API", underline2(`${backendUrl}`), 1);
8396
8404
  }
8397
8405
  logger.newLine();
8398
8406
  }
@@ -10756,7 +10764,9 @@ var loginCommand = new Command3("login").description("Authenticate with Playcade
10756
10764
  `Email: ${authProfile.email}`,
10757
10765
  `Environment: ${environment}`,
10758
10766
  ...profileName !== "default" ? [`Profile: ${profileName}`] : [],
10759
- ...profileName !== "default" ? [`Use \`--profile ${profileName}\` with commands to use this profile`] : []
10767
+ ...profileName !== "default" ? [`Use \`--profile ${profileName}\` with commands to use this profile`] : [],
10768
+ "",
10769
+ "Learn more: <<https://docs.playcademy.net/platform/cli/authentication>>"
10760
10770
  ]);
10761
10771
  logger.newLine();
10762
10772
  } catch (error) {
@@ -11267,7 +11277,7 @@ var getStatusCommand = new Command12("status").description("Check your developer
11267
11277
  });
11268
11278
 
11269
11279
  // package.json
11270
- var version2 = "0.14.26";
11280
+ var version2 = "0.14.27";
11271
11281
 
11272
11282
  // src/commands/dev/server.ts
11273
11283
  function setupCleanupHandlers(workspace, getServer) {
@@ -11319,7 +11329,9 @@ async function runDevServer(options) {
11319
11329
  logger.warn("No backend integrations or custom routes configured");
11320
11330
  logger.newLine();
11321
11331
  logger.admonition("tip", "How to Add Backend", [
11322
- `Add integrations to <playcademy.config.js> or run \`playcademy api init\``
11332
+ "Add integrations to <playcademy.config.js> or run `playcademy api init`",
11333
+ "",
11334
+ "Learn more: <<https://docs.playcademy.net/platform/integrations>>"
11323
11335
  ]);
11324
11336
  logger.newLine();
11325
11337
  logger.remark("Nothing to do");
@@ -11433,7 +11445,9 @@ async function runApiInit() {
11433
11445
  logger.admonition("tip", "Next Steps", [
11434
11446
  `1. Review sample routes in <${apiDir}/sample/>`,
11435
11447
  "2. Run `playcademy dev` to test locally",
11436
- "3. Run `playcademy deploy` to deploy your project"
11448
+ "3. Run `playcademy deploy` to deploy your project",
11449
+ "",
11450
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/custom-routes>>"
11437
11451
  ]);
11438
11452
  logger.newLine();
11439
11453
  } catch (error) {
@@ -11624,7 +11638,9 @@ var initAuthCommand = new Command16("init").description("Add authentication to y
11624
11638
  "1. Install dependencies: `bun install`",
11625
11639
  "2. Review auth config: <server/lib/auth.ts>",
11626
11640
  "3. Push schema: `bun db:push`",
11627
- "4. Start dev server: `playcademy dev`"
11641
+ "4. Start dev server: `playcademy dev`",
11642
+ "",
11643
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/authentication>>"
11628
11644
  ]);
11629
11645
  logger.newLine();
11630
11646
  if (additionalStrategies.length > 0) {
@@ -11757,7 +11773,9 @@ async function runDbInit() {
11757
11773
  "1. Install dependencies: `bun install`",
11758
11774
  "2. Review schema in <./server/db/schema/example.ts>",
11759
11775
  "3. Push schema: `bun db:push`",
11760
- "4. Start dev server: `playcademy dev`"
11776
+ "4. Start dev server: `playcademy dev`",
11777
+ "",
11778
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/database>>"
11761
11779
  ]);
11762
11780
  logger.newLine();
11763
11781
  } catch (error) {
@@ -11770,7 +11788,7 @@ async function runDbInit() {
11770
11788
  import { existsSync as existsSync23 } from "fs";
11771
11789
  import { join as join34 } from "path";
11772
11790
  import { confirm as confirm8, input as input7 } from "@inquirer/prompts";
11773
- import { bold as bold12, redBright as redBright4, underline as underline2 } from "colorette";
11791
+ import { bold as bold12, redBright as redBright4, underline as underline3 } from "colorette";
11774
11792
  import { Miniflare as Miniflare2 } from "miniflare";
11775
11793
  async function runDbResetRemote(options) {
11776
11794
  const environment = ensureEnvironment(options.env);
@@ -11788,9 +11806,9 @@ async function runDbResetRemote(options) {
11788
11806
  const game = await client.games.fetch(deployedGame.gameId);
11789
11807
  logger.newLine();
11790
11808
  logger.admonition("warning", "DESTRUCTIVE OPERATION", [
11791
- `Are you sure you want to ${redBright4(underline2(bold12("DELETE ALL DATA")))} in your ${environment} database?`,
11809
+ `Are you sure you want to ${redBright4(underline3(bold12("DELETE ALL DATA")))} in your ${environment} database?`,
11792
11810
  `All tables will be dropped and recreated from schema.`,
11793
- `This action is irreversible and ${underline2(bold12("cannot be undone"))}.`
11811
+ `This action is irreversible and ${underline3(bold12("cannot be undone"))}.`
11794
11812
  ]);
11795
11813
  logger.newLine();
11796
11814
  const confirmed = await confirm8({
@@ -11911,7 +11929,7 @@ async function runDbReset(options = {}) {
11911
11929
  import { existsSync as existsSync24 } from "fs";
11912
11930
  import { join as join35 } from "path";
11913
11931
  import { confirm as confirm9, input as input8 } from "@inquirer/prompts";
11914
- import { bold as bold13, redBright as redBright5, underline as underline3 } from "colorette";
11932
+ import { bold as bold13, redBright as redBright5, underline as underline4 } from "colorette";
11915
11933
  import { Miniflare as Miniflare3 } from "miniflare";
11916
11934
  async function runDbResetRemote2(gameSlug, environment) {
11917
11935
  const client = await requireAuthenticatedClient();
@@ -11955,8 +11973,8 @@ async function runDbSeedRemote(seedFile, options) {
11955
11973
  logger.newLine();
11956
11974
  if (willReset) {
11957
11975
  logger.admonition("warning", "Remote Database Seeding", [
11958
- `Are you sure you want to ${redBright5(underline3(bold13("DELETE ALL DATA")))} in your ${environment} database?`,
11959
- `This action is irreversible and ${underline3(bold13("cannot be undone"))}.`,
11976
+ `Are you sure you want to ${redBright5(underline4(bold13("DELETE ALL DATA")))} in your ${environment} database?`,
11977
+ `This action is irreversible and ${underline4(bold13("cannot be undone"))}.`,
11960
11978
  `Run this command with \`--no-reset\` if you want to seed without resetting.`
11961
11979
  ]);
11962
11980
  } else {
@@ -12156,7 +12174,9 @@ async function runKVClear(options = {}) {
12156
12174
  logger.error("KV storage is not configured");
12157
12175
  logger.newLine();
12158
12176
  logger.admonition("tip", "Getting Started", [
12159
- "Run `playcademy kv init` to enable KV storage"
12177
+ "Run `playcademy kv init` to enable KV storage",
12178
+ "",
12179
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12160
12180
  ]);
12161
12181
  logger.newLine();
12162
12182
  }
@@ -12268,7 +12288,9 @@ async function runKVDelete(key, options = {}) {
12268
12288
  logger.error("KV storage is not configured");
12269
12289
  logger.newLine();
12270
12290
  logger.admonition("tip", "Getting Started", [
12271
- "Run `playcademy kv init` to enable KV storage"
12291
+ "Run `playcademy kv init` to enable KV storage",
12292
+ "",
12293
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12272
12294
  ]);
12273
12295
  logger.newLine();
12274
12296
  }
@@ -12345,7 +12367,9 @@ async function runKVGet(key, options = {}) {
12345
12367
  logger.error("KV storage is not configured");
12346
12368
  logger.newLine();
12347
12369
  logger.admonition("tip", "Getting Started", [
12348
- "Run `playcademy kv init` to enable KV storage"
12370
+ "Run `playcademy kv init` to enable KV storage",
12371
+ "",
12372
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12349
12373
  ]);
12350
12374
  logger.newLine();
12351
12375
  }
@@ -12467,7 +12491,9 @@ async function runKVInit() {
12467
12491
  logger.admonition("tip", "Next Steps", [
12468
12492
  "1. Use `c.env.KV` in your API routes",
12469
12493
  "2. Run `playcademy dev` to test locally",
12470
- "3. Run `playcademy deploy`"
12494
+ "3. Run `playcademy deploy`",
12495
+ "",
12496
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12471
12497
  ]);
12472
12498
  logger.newLine();
12473
12499
  } catch (error) {
@@ -12515,7 +12541,9 @@ async function runKVInspect(key, options = {}) {
12515
12541
  logger.error("KV storage is not configured");
12516
12542
  logger.newLine();
12517
12543
  logger.admonition("tip", "Getting Started", [
12518
- "Run `playcademy kv init` to enable KV storage"
12544
+ "Run `playcademy kv init` to enable KV storage",
12545
+ "",
12546
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12519
12547
  ]);
12520
12548
  logger.newLine();
12521
12549
  }
@@ -12633,7 +12661,9 @@ async function runKVList(options = {}) {
12633
12661
  logger.error("KV storage is not configured");
12634
12662
  logger.newLine();
12635
12663
  logger.admonition("tip", "Getting Started", [
12636
- "Run `playcademy kv init` to enable KV storage"
12664
+ "Run `playcademy kv init` to enable KV storage",
12665
+ "",
12666
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12637
12667
  ]);
12638
12668
  logger.newLine();
12639
12669
  }
@@ -12727,7 +12757,9 @@ async function runKVSeed(seedFile, options = {}) {
12727
12757
  logger.error("KV storage is not configured");
12728
12758
  logger.newLine();
12729
12759
  logger.admonition("tip", "Getting Started", [
12730
- "Run `playcademy kv init` to enable KV storage"
12760
+ "Run `playcademy kv init` to enable KV storage",
12761
+ "",
12762
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12731
12763
  ]);
12732
12764
  logger.newLine();
12733
12765
  }
@@ -12870,7 +12902,9 @@ async function runKVSet(key, value, options = {}) {
12870
12902
  logger.error("KV storage is not configured");
12871
12903
  logger.newLine();
12872
12904
  logger.admonition("tip", "Getting Started", [
12873
- "Run `playcademy kv init` to enable KV storage"
12905
+ "Run `playcademy kv init` to enable KV storage",
12906
+ "",
12907
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12874
12908
  ]);
12875
12909
  logger.newLine();
12876
12910
  }
@@ -12964,7 +12998,9 @@ async function runKVStats(options = {}) {
12964
12998
  logger.error("KV storage is not configured");
12965
12999
  logger.newLine();
12966
13000
  logger.admonition("tip", "Getting Started", [
12967
- "Run `playcademy kv init` to enable KV storage"
13001
+ "Run `playcademy kv init` to enable KV storage",
13002
+ "",
13003
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/kv>>"
12968
13004
  ]);
12969
13005
  logger.newLine();
12970
13006
  }
@@ -13582,7 +13618,9 @@ async function runBucketInit() {
13582
13618
  logger.admonition("tip", "Next Steps", [
13583
13619
  "1. Use `c.env.BUCKET` in your API routes to upload/download files",
13584
13620
  "2. Run `playcademy dev` to test locally",
13585
- "3. Run `playcademy deploy`"
13621
+ "3. Run `playcademy deploy`",
13622
+ "",
13623
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/bucket>>"
13586
13624
  ]);
13587
13625
  logger.newLine();
13588
13626
  } catch (error) {
@@ -13656,7 +13694,9 @@ async function runBucketListLocal(options) {
13656
13694
  logger.error("Bucket storage is not configured");
13657
13695
  logger.newLine();
13658
13696
  logger.admonition("tip", "Getting Started", [
13659
- "Run `playcademy bucket init` to enable bucket storage"
13697
+ "Run `playcademy bucket init` to enable bucket storage",
13698
+ "",
13699
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/bucket>>"
13660
13700
  ]);
13661
13701
  logger.newLine();
13662
13702
  }
@@ -13813,7 +13853,9 @@ async function runBucketPutLocal(key, filePath, options) {
13813
13853
  logger.error("Bucket storage is not configured");
13814
13854
  logger.newLine();
13815
13855
  logger.admonition("tip", "Getting Started", [
13816
- "Run `playcademy bucket init` to enable bucket storage"
13856
+ "Run `playcademy bucket init` to enable bucket storage",
13857
+ "",
13858
+ "Learn more: <<https://docs.playcademy.net/platform/integrations/bucket>>"
13817
13859
  ]);
13818
13860
  logger.newLine();
13819
13861
  }
@@ -13926,7 +13968,7 @@ bucketCommand.command("bulk <directory>").description(
13926
13968
  import { Command as Command21 } from "commander";
13927
13969
 
13928
13970
  // src/commands/domain/add.ts
13929
- import { underline as underline4 } from "colorette";
13971
+ import { underline as underline5 } from "colorette";
13930
13972
  async function runDomainAdd(hostname, options) {
13931
13973
  try {
13932
13974
  logger.newLine();
@@ -13952,7 +13994,7 @@ async function runDomainAdd(hostname, options) {
13952
13994
  async () => {
13953
13995
  return client.dev.games.domains.add(slug, normalizedHostname);
13954
13996
  },
13955
- (domain2) => `Custom domain added: ${underline4(`<https://${domain2.hostname}>`)}`
13997
+ (domain2) => `Custom domain added: ${underline5(`<https://${domain2.hostname}>`)}`
13956
13998
  );
13957
13999
  logger.newLine();
13958
14000
  displayDomainValidationRecords(domain, normalizedHostname);
@@ -13962,7 +14004,9 @@ async function runDomainAdd(hostname, options) {
13962
14004
  `2. Run \`playcademy domain verify ${normalizedHostname}\` to check validation status`,
13963
14005
  "",
13964
14006
  "Note: SSL certificate validation may take a few minutes to initialize.",
13965
- `Run verify command to see all required DNS records once SSL provisioning begins.`
14007
+ "Run verify command to see all required DNS records once SSL provisioning begins.",
14008
+ "",
14009
+ "Learn more: <<https://docs.playcademy.net/platform/cli/deployment#custom-domains>>"
13966
14010
  ]);
13967
14011
  logger.newLine();
13968
14012
  } catch (error) {
@@ -14067,7 +14111,7 @@ async function runDomainList(options) {
14067
14111
  }
14068
14112
 
14069
14113
  // src/commands/domain/verify.ts
14070
- import { underline as underline5 } from "colorette";
14114
+ import { underline as underline6 } from "colorette";
14071
14115
  async function runDomainVerify(hostname, options) {
14072
14116
  try {
14073
14117
  if (!options.json) {
@@ -14094,7 +14138,7 @@ async function runDomainVerify(hostname, options) {
14094
14138
  displayDomainStatus(hostname, domain);
14095
14139
  if (domain.status === "active" && domain.sslStatus === "active") {
14096
14140
  logger.admonition("info", "Domain Active", [
14097
- `Your game is now accessible at: ${underline5(`<https://${hostname}>`)}`
14141
+ `Your game is now accessible at: ${underline6(`<https://${hostname}>`)}`
14098
14142
  ]);
14099
14143
  logger.newLine();
14100
14144
  } else if (domain.status === "pending" || domain.status === "pending_validation" || domain.sslStatus === "pending_validation") {
@@ -14555,13 +14599,15 @@ var initCommand2 = new Command32("init").description("Add TimeBack integration t
14555
14599
  logger.success("TimeBack integration added!");
14556
14600
  logger.newLine();
14557
14601
  logger.admonition("tip", "Next Steps", [
14558
- `1. Set up TimeBack resources: \`playcademy timeback setup\``,
14559
- `2. Deploy your project: \`playcademy deploy\``
14602
+ "1. Set up TimeBack resources: `playcademy timeback setup`",
14603
+ "2. Deploy your project: `playcademy deploy`",
14604
+ "",
14605
+ "Learn more: <<https://docs.playcademy.net/timeback>>"
14560
14606
  ]);
14561
14607
  logger.newLine();
14562
14608
  } catch (error) {
14563
14609
  logger.newLine();
14564
- throw error;
14610
+ formatErrorAndExit(error);
14565
14611
  }
14566
14612
  });
14567
14613
 
@@ -14640,7 +14686,9 @@ var setupCommand = new Command33("setup").description("Set up TimeBack integrati
14640
14686
  }
14641
14687
  logger.admonition("tip", "Next Steps", [
14642
14688
  "1. Run `playcademy timeback verify` to verify the setup",
14643
- "2. Deploy your project with `playcademy deploy`"
14689
+ "2. Deploy your project with `playcademy deploy`",
14690
+ "",
14691
+ "Learn more: <<https://docs.playcademy.net/timeback>>"
14644
14692
  ]);
14645
14693
  logger.newLine();
14646
14694
  } catch (error) {
@@ -14745,7 +14793,7 @@ var verifyCommand = new Command35("verify").description("Verify TimeBack integra
14745
14793
  "",
14746
14794
  ` \`playcademy timeback setup --env ${environment}\``,
14747
14795
  "",
14748
- "This will create the necessary TimeBack resources."
14796
+ "Learn more: <<https://docs.playcademy.net/timeback>>"
14749
14797
  ]);
14750
14798
  } else {
14751
14799
  logger.error(`Verification failed: ${getErrorMessage(error)}`);
@@ -14846,11 +14894,11 @@ var debugCommand = new Command38("debug").description("Debug and inspect project
14846
14894
  // src/commands/vite/index.ts
14847
14895
  import { Command as Command39 } from "commander";
14848
14896
 
14849
- // src/commands/vite/init.ts
14897
+ // src/commands/vite/config.ts
14850
14898
  import path3 from "node:path";
14851
14899
  import { confirm as confirm17 } from "@inquirer/prompts";
14852
- import { dim as dim9, underline as underline6 } from "colorette";
14853
- async function runViteInit() {
14900
+ import { dim as dim9 } from "colorette";
14901
+ async function runViteConfig() {
14854
14902
  try {
14855
14903
  logger.newLine();
14856
14904
  await requireConfigFile();
@@ -14895,7 +14943,7 @@ async function runViteInit() {
14895
14943
  `2. Run \`${devCommand2}\` to start development`,
14896
14944
  `3. Run \`${buildCommand}\` to build your project`,
14897
14945
  "",
14898
- `Learn more: ${underline6("<https://docs.playcademy.gg/vite-plugin>")}`
14946
+ "Learn more: <<https://docs.playcademy.net/platform/vite-plugin>>"
14899
14947
  ]);
14900
14948
  logger.newLine();
14901
14949
  } catch (error) {
@@ -14909,7 +14957,7 @@ async function runViteInit() {
14909
14957
 
14910
14958
  // src/commands/vite/index.ts
14911
14959
  var viteCommand = new Command39("vite").description("Vite plugin management");
14912
- viteCommand.command("init").description("Add Vite plugin to your project").action(runViteInit);
14960
+ viteCommand.command("config").description("Add Vite plugin to your project").action(runViteConfig);
14913
14961
 
14914
14962
  // src/index.ts
14915
14963
  setupGlobalErrorHandlers();
@@ -1,5 +1,5 @@
1
1
  // TimeBack integration configuration
2
- // See https://docs.playcademy.com/timeback for more details
2
+ // See https://docs.playcademy.net/timeback for more details
3
3
  timeback: {
4
4
  course: {
5
5
  subjects: {{SUBJECTS}},{{DEFAULT_SUBJECT}}
package/dist/utils.js CHANGED
@@ -2031,6 +2031,7 @@ import {
2031
2031
  green,
2032
2032
  greenBright,
2033
2033
  red,
2034
+ underline,
2034
2035
  yellow,
2035
2036
  yellowBright
2036
2037
  } from "colorette";
@@ -2732,6 +2733,7 @@ function formatError(error, indent = 0) {
2732
2733
  function customTransform(text) {
2733
2734
  let result = text;
2734
2735
  result = result.replace(/`([^`]+)`/g, (_, code) => greenBright(code));
2736
+ result = result.replace(/<<([^>]+)>>/g, (_, url) => underline(url));
2735
2737
  result = result.replace(/<([^>]+)>/g, (_, path2) => blueBright(path2));
2736
2738
  return result;
2737
2739
  }
@@ -3992,7 +3994,7 @@ import { join as join12 } from "path";
3992
3994
  // package.json with { type: 'json' }
3993
3995
  var package_default2 = {
3994
3996
  name: "playcademy",
3995
- version: "0.14.26",
3997
+ version: "0.14.27",
3996
3998
  type: "module",
3997
3999
  exports: {
3998
4000
  ".": {
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // package.json with { type: 'json' }
2
2
  var package_default = {
3
3
  name: "playcademy",
4
- version: "0.14.26",
4
+ version: "0.14.27",
5
5
  type: "module",
6
6
  exports: {
7
7
  ".": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "playcademy",
3
- "version": "0.14.27",
3
+ "version": "0.14.28",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {