generator-folklore 3.0.56 → 3.0.57

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.
@@ -7,6 +7,7 @@ Without a backend, the dev server serves the project directly on `localhost`.
7
7
 
8
8
  Notes:
9
9
 
10
+ - The `dev` configuration of `.claude/launch.json` runs these steps for Claude Code's browser preview.
10
11
  - Options reach `flklr` from `package.json` (`build` key), the environment (`FLKLR_*`) and the command line, the command line winning. Leave `package.json` as is and pass overrides on the command line.
11
12
  - HTTP avoids the dev server's self-signed certificate, which browsers reject. Use the default HTTPS only when a feature requires a secure context the browser won't grant to `localhost`.
12
13
  - Stop the dev server once testing is done.
@@ -8,6 +8,7 @@ Always test a Laravel project through its `.test` domain, never `localhost`: som
8
8
 
9
9
  Notes:
10
10
 
11
+ - The `dev` configuration of `.claude/launch.json` runs these steps for Claude Code's browser preview.
11
12
  - Options reach `flklr` from `package.json` (`build` key), the environment (`FLKLR_*`) and the command line, the command line winning. Leave `package.json` as is and pass overrides on the command line.
12
13
  - On a certificate error, see [Fixing Valet certificates](#fixing-valet-certificates) rather than switching to `localhost` or plain HTTP.
13
14
  - Stop the dev server once testing is done.
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _generator = _interopRequireDefault(require("../../lib/generator"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const launchArgs = {
11
+ laravel: ['run', 'server', '--', '--no-open'],
12
+ html: ['run', 'server', '--', '--server', 'http', '--no-open']
13
+ };
14
+ const defaultUrls = {
15
+ laravel: 'https://localhost:8080',
16
+ html: 'http://localhost:8080'
17
+ };
18
+ class ClaudeGenerator extends _generator.default {
19
+ constructor(...args) {
20
+ super(...args);
21
+ this.option('type', {
22
+ type: String,
23
+ desc: 'Project type: laravel (served through its .test domain) or html (served on localhost)',
24
+ defaults: 'html'
25
+ });
26
+ this.option('url', {
27
+ type: String,
28
+ desc: 'Url opened by the browser preview (defaults to the dev server url)'
29
+ });
30
+ }
31
+ prompting() {
32
+ if (this.options.quiet) {
33
+ return;
34
+ }
35
+ console.log(_chalk.default.yellow('\n----------------------'));
36
+ console.log('Claude Code Generator');
37
+ console.log(_chalk.default.yellow('----------------------\n'));
38
+ }
39
+ writing() {
40
+ const type = this.options.type === 'laravel' ? 'laravel' : 'html';
41
+ const url = (this.options.url || defaultUrls[type]).replace(/\/$/, '');
42
+ this.fs.writeJSON(this.destinationPath('.claude/launch.json'), {
43
+ version: '0.0.1',
44
+ configurations: [{
45
+ name: 'dev',
46
+ runtimeExecutable: 'npm',
47
+ runtimeArgs: launchArgs[type],
48
+ port: 8080,
49
+ url
50
+ }]
51
+ }, null, 4);
52
+ this.fs.copy(this.templatePath(`settings-${type}.json`), this.destinationPath('.claude/settings.json'));
53
+ }
54
+ }
55
+ exports.default = ClaudeGenerator;
@@ -0,0 +1,31 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run lint*)",
5
+ "Bash(npm run format*)",
6
+ "Bash(npm run typecheck)",
7
+ "Bash(npm run test*)",
8
+ "Bash(npm test*)",
9
+ "Bash(npm run server*)",
10
+ "Bash(npx prettier *)",
11
+ "Bash(npx eslint *)",
12
+ "Bash(npx stylelint *)",
13
+ "Bash(npx tsc --noEmit*)",
14
+ "Bash(gh issue view *)",
15
+ "Bash(gh issue list*)",
16
+ "Bash(gh issue create *)",
17
+ "Bash(gh issue edit *)",
18
+ "Bash(gh issue comment *)",
19
+ "Bash(gh pr view*)",
20
+ "Bash(gh pr list*)",
21
+ "Bash(gh pr diff*)",
22
+ "Bash(gh pr checks*)",
23
+ "Bash(gh pr create *)",
24
+ "Bash(gh pr edit *)",
25
+ "Bash(gh pr comment *)"
26
+ ],
27
+ "ask": [
28
+ "Bash(git push*)"
29
+ ]
30
+ }
31
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run lint*)",
5
+ "Bash(npm run format*)",
6
+ "Bash(npm run typecheck)",
7
+ "Bash(npm run test*)",
8
+ "Bash(npm test*)",
9
+ "Bash(npm run server*)",
10
+ "Bash(npx prettier *)",
11
+ "Bash(npx eslint *)",
12
+ "Bash(npx stylelint *)",
13
+ "Bash(npx tsc --noEmit*)",
14
+ "Bash(php artisan test*)",
15
+ "Bash(npx flklr certificates*)",
16
+ "Bash(npx flklr certs*)",
17
+ "Bash(gh issue view *)",
18
+ "Bash(gh issue list*)",
19
+ "Bash(gh issue create *)",
20
+ "Bash(gh issue edit *)",
21
+ "Bash(gh issue comment *)",
22
+ "Bash(gh pr view*)",
23
+ "Bash(gh pr list*)",
24
+ "Bash(gh pr diff*)",
25
+ "Bash(gh pr checks*)",
26
+ "Bash(gh pr create *)",
27
+ "Bash(gh pr edit *)",
28
+ "Bash(gh pr comment *)"
29
+ ],
30
+ "ask": [
31
+ "Bash(npx flklr certificates*--fix*)",
32
+ "Bash(npx flklr certs*--fix*)",
33
+ "Bash(git push*)"
34
+ ]
35
+ }
36
+ }
@@ -154,6 +154,10 @@ class HTMLProjectGenerator extends _generator.default {
154
154
  'src-path': srcPath,
155
155
  quiet: true
156
156
  });
157
+ this.composeWith('folklore:claude', {
158
+ type: 'html',
159
+ quiet: true
160
+ });
157
161
  this.log('merging with folklore build');
158
162
  this.composeWith('folklore:build', {
159
163
  'src-path': srcPath,
@@ -34,3 +34,7 @@ node_modules
34
34
  /.sass-cache
35
35
  /.tmp
36
36
  /dist
37
+
38
+ # Claude Code (shared settings and launch config are tracked)
39
+ /.claude/settings.local.json
40
+ /.claude/worktrees/
@@ -249,6 +249,14 @@ class LaravelProjectGenerator extends _generator.default {
249
249
  quiet: true,
250
250
  'skip-install': true
251
251
  });
252
+ this.composeWith('folklore:claude', {
253
+ type: 'laravel',
254
+ url: _lodashEs.default.template(_lodashEs.default.get(this.options, 'local-url'))({
255
+ project_host: this.options['project-host'],
256
+ project_name: this.options['project-name']
257
+ }),
258
+ quiet: true
259
+ });
252
260
  if (this.options.mediatheque) {
253
261
  this.composeWith('folklore:laravel-mediatheque', {
254
262
  'project-name': this.options['project-name'],
@@ -263,6 +271,11 @@ class LaravelProjectGenerator extends _generator.default {
263
271
  quiet: true
264
272
  });
265
273
  }
274
+
275
+ // Composed last so its writing runs once composer.json and package.json exist
276
+ this.composeWith('folklore:agents', {
277
+ quiet: true
278
+ });
266
279
  }
267
280
  get writing() {
268
281
  return {
@@ -22,7 +22,8 @@
22
22
  Homestead.json
23
23
  Homestead.yaml
24
24
  Thumbs.db
25
- /.claude
25
+ /.claude/settings.local.json
26
+ /.claude/worktrees/
26
27
 
27
28
  /public/static
28
29
  /public/asset-manifest.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generator-folklore",
3
- "version": "3.0.56",
3
+ "version": "3.0.57",
4
4
  "description": "Yeoman generator for projects at Folklore",
5
5
  "keywords": [
6
6
  "yeoman-generator"
@@ -40,5 +40,5 @@
40
40
  "yeoman-generator": "5.9.0",
41
41
  "yeoman-remote": "^1.0.1"
42
42
  },
43
- "gitHead": "588abc69c30c5a8954352431f3aed90375582714"
43
+ "gitHead": "33526a939c8f63b563cdfd0560bb7ef5434eaa00"
44
44
  }