This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Aug 13, 2026. It is now read-only.

Use a human-readable name in fastly.toml - #6

Merged
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name
Aug 7, 2026
Merged

Use a human-readable name in fastly.toml#6
kailan merged 1 commit into
mainfrom
cdtool-1707-starter-kit-display-name

Conversation

@kailan

@kailankailan commented Aug 7, 2026

Copy link
Copy Markdown
Member

Change summary

Related to CDTOOL-1707 / fastly/cli#1877.

The Fastly CLI builds its starter kit list at release build time by copying the name and description fields out of each kit's fastly.toml (scripts/config.sh), so name is what users see at the fastly compute init starter kit prompt.

Every other starter kit uses a human-readable label there — "Default starter for Go", "Default starter for Rust", "Default starter kit for C++" — but this kit used the Python distribution name, so once the CLI picks the kit up it would render as:

Starter kit:
[1] fastly-compute-python-app
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

After this change:

Starter kit:
[1] Default starter for Python
A basic starter kit that demonstrates routing and simple responses in Python.
https://github.com/fastly/compute-starter-kit-python-default

(verified locally against a CLI build with the field patched into its static config)

The [project] name in pyproject.toml is deliberately left alone — it has to remain a valid Python distribution name and is unrelated to what the CLI displays. fastly.toml's name is the Fastly package name, which compute init overwrites with the user's project name anyway.

This should merge before fastly/cli#1877 is released, since the CLI regenerates its config from main on each build.

🤖 Generated with Claude Code

The Fastly CLI builds its list of starter kits by copying the `name` and
`description` fields out of each kit's fastly.toml, so this field is what
users see at the `fastly compute init` starter kit prompt. Every other
starter kit uses a human-readable label there ("Default starter for Go",
"Default starter kit for C++"), whereas this kit used the Python
distribution name and rendered as:
[1] fastly-compute-python-app
The Python distribution name in pyproject.toml is unchanged; that field
has to stay a valid package name and is unrelated to what the CLI shows.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kailan

Copy link
Copy Markdown
MemberAuthor

CI here is red on a pre-existing ruff check failure in main.py (I001, un-sorted imports) that is unrelated to this one-line fastly.toml change — the Test workflow has failed on every run since this repo was created.

Split out into #7. Once that merges I'll rebase this branch, which should get both green.

@kailan
kailan requested review from anthony-gomez-fastly and removed request for harmony7August 7, 2026 14:27
@kailan
kailan merged commit e0084d6 into mainAug 7, 2026
1 check failed
kailan added a commit to fastly/cli that referenced this pull request Aug 7, 2026
### Change summary
Fixes [CDTOOL-1707](https://fastly.atlassian.net/browse/CDTOOL-1707).
`fastly compute init --language python` reports that no starter kits
exist:
```
$ fastly compute init --language python --non-interactive
ERROR: no default starter kits configured for this language; please specify a template using the --from flag.
```
Interactively it prints _"No default starter kits are currently
configured for this language"_ and falls back to prompting for a
template git URL.
The starter kits embedded into the CLI binary are injected into
`pkg/config/config.toml` at build time by
[`./scripts/config.sh`](https://github.com/fastly/cli/blob/main/scripts/config.sh),
which holds its own hardcoded list of starter kit repositories. Python
language support (#1811) added `[language.python]` to
`.fastly/config.toml` and wired Python into `NewLanguages()`, but never
added `compute-starter-kit-python-default` to that list — so
`kits.Python` is empty and `PromptForStarterKit` takes its "no kits"
branch. `[language.python]` is present, so `compute build` is
unaffected; the gap is only starter kits.
This adds the repository to the list, plus a test asserting that every
language offered at the `compute init` prompt has at least one starter
kit in the static config, so the same drift is caught for the next
language we add. CI generates the config with `make config` before
running tests, so the test runs against the real generated config.
**Depends on fastly/compute-starter-kit-python-default#6**, which gives
the kit a human-readable `name` in its `fastly.toml`. `config.sh` copies
that field verbatim into the config, so until it merges the prompt
renders `[1] fastly-compute-python-app` rather than `[1] Default starter
for Python`. Nothing needs re-landing here once it merges — the config
is regenerated on each build — but this PR should not be released before
that one.
All Submissions:
* [x] Have you followed the guidelines in our Contributing document?
* [x] Have you checked to ensure there aren't other open [Pull
Requests](https://github.com/fastly/cli/pulls) for the same
update/change?
### Changes to Core Features:
* [x] Have you written new tests for your core changes, as applicable?
* [x] Have you successfully run tests with your changes locally?
Verified end-to-end after `make config`:
```
$ fastly compute init --language python --non-interactive
...
SUCCESS: Initialized package proj
```
### User Impact
Python users can init a project from the default starter kit instead of
having to supply `--from` or paste a git URL.
### Are there any considerations that need to be addressed for release?
No breaking changes and no `config_version` bump needed —
`NeedsUpdating` already rewrites local configs when the CLI version
changes, so existing users pick the new kit up on their next upgrade.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
[CDTOOL-1707]:
https://fastly.atlassian.net/browse/CDTOOL-1707?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@kailan@anthony-gomez-fastly