Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
dea7d9a
fix: correctly get project name for remote builds (#2681)
bepri May 7, 2026
a54f9ac
docs: add common remote build pages (#2702)
jahn-junior Jun 2, 2026
b5334d9
docs: refer to inline charmcraft.yaml metadata in pack help (#2705)
tonyandrewmeyer Jun 5, 2026
83b6cc7
chore: Merge remote-tracking branch 'origin/main' into hotfix-merge/4…
lengau Jun 22, 2026
4506aa4
build(deps): update dependency django to v6 (#2737)
renovate[bot] Jun 22, 2026
564f17b
build(deps): update dependency fastapi to v0.138.0 (#2738)
renovate[bot] Jun 23, 2026
675c1a9
chore: merge 4.2.2 to main (#2739)
lengau Jun 23, 2026
b5c4d6c
ci: Fix CI filter job and linting issues (#2740)
lengau Jun 23, 2026
3fcdf8a
docs: add 4.3 release notes (#2728)
lengau Jun 23, 2026
b93737a
feat(charmlibs): warn of deprecation on all charmlibs commands (#2691)
lengau Jun 23, 2026
8a42aac
docs: update intersphinx links (#2741)
lengau Jun 24, 2026
ef5d829
docs: add Canonical K8s instructions to web app charm how-tos (#2743)
florentianayuwono Jun 26, 2026
ad3588c
fix(docs): auto-sync framework versions to 12-factor tutorials (#2721)
erinecon Jun 27, 2026
6aca190
Feat: extension dispatch for 12-factor extensions. (#2722)
alithethird Jun 29, 2026
fb6f09d
build(deps): update bugfixes (#2746)
renovate[bot] Jun 29, 2026
c559e7f
build(deps): update actions/checkout action to v7 (#2747)
renovate[bot] Jun 29, 2026
8ef2697
test: add regression test for issue #2361 (#2735)
lengau Jun 30, 2026
f1df851
feat: paas-config.yaml validation (#2596)
javierdelapuente Jun 30, 2026
40c765d
docs: configure latest docs for canonical.com proxy (#2717)
jahn-junior Jul 1, 2026
9ce2783
docs: configure 4.3 docs for canonical.com proxy (#2745)
jahn-junior Jul 1, 2026
1428418
docs: Update 12-factor Spread tests (#2732)
erinecon Jul 2, 2026
99d7be3
docs: clarify config-option path is for user secrets, add use-case ma…
tonyandrewmeyer Jul 3, 2026
a520d61
build(deps): update dependency fastapi to v0.139.0 (#2757)
renovate[bot] Jul 6, 2026
0389aeb
docs: improve charm naming docs, with links to detailed guidance (#2748)
dwilding Jul 7, 2026
b8f89fe
ci: replace self-hosted runner with ubuntu-24.04 (#2750)
lengau Jul 8, 2026
eeca3f7
build: update craft-providers to >=3.7.1 for 25.10 spread tests (#2764)
lengau Jul 9, 2026
3a73f06
feat: add support for Ubuntu 24.04 in supported bases (#2766)
alithethird Jul 9, 2026
cededd4
chore: fix bug and release 4.3.1 (#2767)
lengau Jul 9, 2026
743f0b5
chore: merge branch 'main' into hotfix-merge/4.3.1
lengau Jul 9, 2026
e156d35
test: fix test for flask framework factory
lengau Jul 9, 2026
4423023
fix: remove conf.py dupes
lengau Jul 9, 2026
1d4807f
chore: add base support for Flask and Django extensions (#2756)
erinecon Jul 9, 2026
d54a52b
chore: merge 4.3.1 to main (#2768)
lengau Jul 10, 2026
3eaf69b
build(deps): lock file maintenance (#2758)
renovate[bot] Jul 10, 2026
6e775f4
fix(tests/spread): fix reactive spread tests (#2763)
lengau Jul 14, 2026
a8d23ad
build(deps): update dorny/paths-filter action to v4.0.2 (#2781)
renovate[bot] Jul 14, 2026
eb2bb97
docs: use microk8s 1.34-strict instead of 1.31-strict (#2784)
javierdelapuente Jul 14, 2026
f435daa
feat: in the profiles, run tests treating warnings as errors (#2718)
tonyandrewmeyer Jul 14, 2026
ca4a995
ci: ignore unfixable OSVs (#2773)
lengau Jul 14, 2026
389d7dc
docs: update urls and doc string in kubernetes and machine profiles (…
tromai Jul 14, 2026
e4d619c
build(deps): lock file maintenance (#2782)
renovate[bot] Jul 14, 2026
b29ab2d
Configure Renovate to ignore docs directory (#2778)
lengau Jul 14, 2026
ff99aac
ci: always discard spread workers in snap-store-tests (#2771)
lengau Jul 14, 2026
bf48891
update pytest logging options in k8s and machine profiles (#2769)
tromai Jul 14, 2026
bf3b647
docs: fix versioning logic (#2787)
jahn-junior Jul 15, 2026
9f3567e
ci: give copilot collections job the right perms (#2796)
lengau Jul 16, 2026
9279665
feat!: migrate from candid to Ubuntu One auth (#2760)
mr-cal Jul 17, 2026
86ed7bc
docs: fix typo in plugin migration guide (#2798)
jahn-junior Jul 17, 2026
3f42ca1
docs: update pip-compile reference link (#2802)
lengau Jul 20, 2026
ed45fab
build(deps): update bugfixes (#2799)
renovate[bot] Jul 20, 2026
0c23fc5
fix: update Weekly Spread badge to reference spread-manual.yaml (#2786)
Copilot Jul 20, 2026
705bb0b
docs: update Juju LXD reference link (#2797)
Semak12345 Jul 20, 2026
91f9fc0
docs: 12 factor v2 (#2742)
alithethird Jul 21, 2026
e7bfc43
ci: use openstack for spread (#2783)
smethnani Jul 21, 2026
c1720ba
docs: fix caption paths in the Django tutorial (#2805)
minulo Jul 21, 2026
c79e747
build(deps): update craft dependencies for 4.4.0 (#2803)
lengau Jul 21, 2026
82e9de8
docs: add Charmcraft 4.4 release notes (#2801)
lengau Jul 21, 2026
a2503a3
chore: update Copilot collections to v0.15.0 (#2807)
github-actions[bot] Jul 22, 2026
dad40b2
feat(profile): k8s — wire Prometheus metrics, Loki logs, Grafana dash…
tonyandrewmeyer Jun 20, 2026
202c735
feat(profile): k8s — add starter Grafana dashboard template
tonyandrewmeyer Jun 20, 2026
f85a19c
feat(profile): k8s — observability unit and integration tests
tonyandrewmeyer Jun 20, 2026
4554b5b
feat(profile): machine — wire COS observability via COSAgentProvider
tonyandrewmeyer Jun 20, 2026
fabaed9
feat(profile): machine — add starter Grafana dashboard template
tonyandrewmeyer Jun 20, 2026
753ebfe
feat(profile): machine — observability unit and integration tests
tonyandrewmeyer Jun 20, 2026
abeb07a
test(init): expect the observability dashboard files in init output
tonyandrewmeyer Jul 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/.copilot-collections.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# https://github.com/canonical/copilot-collections

copilot:
version: v0.13.0
version: v0.15.0
collections:
- starcraft-core
- starcraft-docs
73 changes: 73 additions & 0 deletions .github/instructions/cloud-agent.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
applyTo: '**'
excludeAgent: 'code-review'
description: 'Guidelines for GitHub Copilot cloud agent when working in Starcraft.'
---

# GitHub Cloud Agent Instructions for Starcraft

These instructions guide GitHub Copilot cloud agent when it works in Starcraft projects. These don't apply to the initial review provided by GitHub Copilot code review.

## Code changes in pull request comments

These instructions apply to interactions between users and the cloud agent, when they mention it with `@copilot`.

### Draft changes when explicitly requested

When a user mentions `@copilot` in a comment asking to draft or propose a code change, reply in a comment using GitHub's code suggestion syntax. Do not commit directly to the branch.

Examples of requests that should trigger this behavior include:

- "propose a change"
- "show me what this would look like"
- "what would this look like?"
- "can you draft that?"
- "show me an example"
- "write that out"
- "what do you suggest?"
- "show a fix for this"
- "give me a suggestion"
- "how would you write this?"

Reply using GitHub's code suggestion syntax:

````markdown
```suggestion
<proposed code>
```
````

This allows the user to review and apply the suggestion themselves with a single click.

### Only commit changes when explicitly requested

When a user mentions `@copilot` in a comment asking to finalize a code change, commit the change as requested.

If no prior suggestion exists in the current PR conversation, propose the change first using the suggestion syntax above before committing.

Examples of requests that should trigger this behavior include:

- "commit what is proposed"
- "push this code"
- "apply these changes"
- "go ahead and commit"
- "push the changes"
- "commit the suggestion"
- "apply the fix"
- "push what you suggested"
- "land these changes"


### Combined implement and commit requests

If a user asks for a change **and** explicitly requests it be committed in the same message, treat it as an explicit commit request. Implement the change and commit it directly without posting a suggestion first.

Examples of requests that should trigger this behavior include:

- "implement X and push it"
- "fix this and commit"
- "make this change and push"
- "do X and land it"
- "apply X and commit"
- "patch this and commit"
- "commit a fix for this"
60 changes: 20 additions & 40 deletions .github/instructions/starcraft-docs-meta.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,58 +23,38 @@ The meta description must be one line, because Sphinx options don't support line

## Write a meta description

**Do** write the meta description *after* the page is written. The meta description is a reflection of what's actually on the page.
Write the meta description after the page is written. The meta description is a reflection of what's actually on the page, not what the page aspires to be.

**Do** reuse text from the page itself when it's convenient.
Start with the Diátaxis category or action, such as *How to* or *Reference for*. Next, describe what the user will find on the page. Reuse text from the page itself where it's appropriate.

**Do** share descriptions between documents with the same formats. For example, use the same meta description for every page of release notes, but replace the version number.
Include a focus term or phrase, the key string that users are likely to search for. It can be a single word like *security*, or a short phrase such as *create an Ubuntu Core image*. Prefer widely recognized terminology. If your product isn't yet well known, then it's safer to use terms familiar to a global technical audience over product-specific ones.

**Do** frame sentences in terms of *actions* and *facts*.
Make every word count. There is no hard minimum length, but it should be longer and more descriptive than the title, and it should not merely repeat the wording of the title. The maximum length is 160 characters, because search engines truncate the snippet after 160 characters. This includes spaces.

<table>
<thead>
<tr class="header">
<th>Type</th>
<th>Starts with phrases like...</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Action</p></td>
<td><p>Get started with</p>
<p>Learn about</p>
<p>Find information about</p></td>
</tr>
<tr class="even">
<td><p>Fact</p></td>
<td><p>The encabulator is a circuit that</p>
<p>The Chef init profile sets up a basic project file for</p>
<p>Starcraft is compatible with</p></td>
</tr>
</tbody>
</table>
For pages with the same format, share descriptions between them. For example, use the same meta description for every page of release notes, but change the version number.

**Do** put key terms near the start.
### Avoid these mistakes

**Do** aim for an average of 140 characters. Cut any detail about the topic that isn't essential to helping the user make a decision.
Avoid calls to action like *find*, *discover*, *explore*, or *read*. These are so overused that they have become noise words. The user's needs and actions in the moment are out of your control; the snippet should be a glimpse of the information on the page. Tutorials are the exception, where *learn* is appropriate.

**Don't** exceed 160 characters. Search engines will cut the snippet short.
Avoid qualities or claims about the product and its features, like *simple*, *easy*, or *best-in-class*. Marketing rhetoric, sales pitches, and business clichés like the following aren't appropriate for documentation:

**Don't** write to market, motivate, or compel. Marketing prose with rhetoric like the following isn't appropriate for documentation.
*Don't just write code; deliver a product. Start your journey today and turn your project into a production-ready, evergreen, blazing-fast, full-stack app.*

> Don't just write code; deliver a product. Start your journey today and turn your project into a production-ready snap.
### Examples

**Don't** include qualities or claims like *simple*, *easy*, or *best-in-class*.
For _Tutorial_ > _Craft a snap_ in Snapcraft:

**Don't** include key terms that aren't on the page.
> Learn the essentials of Snapcraft. In this tutorial, we package a small Python app into a snap.

**Don't** use pronouns such as *you*, *your*, *we*, or *our*. These waste space and don't match the tone of a description.
For _How to_ > _Change from core24 to core26_ in Snapcraft:

## Example
> How to migrate a snap from core24 to core26.

This is an example of a good meta description for *Set up Starcraft*.
For the _Reference_ > _GNOME extension_ in Snapcraft:

``` rst
.. meta::
:description: Learn how to install Starcraft on a local system. Starcraft is available as a snap on all GNU/Linux systems that support systemd.
```
> Reference documentation for the GNOME extension, which adds the components for desktop apps that require GTK 3, GNOME 42 and higher, and GLib.

For _Explanation_ > _Parts lifecycle_ in Snapcraft:

> Explanation of the build process of a part in Snapcraft, with a breakdown of the individual steps and the effect each has on the snap filesystem.
1 change: 1 addition & 0 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{
extends: ["github>canonical/starflow:renovate.json5"],
ignorePaths: ["docs/**"],
}
2 changes: 1 addition & 1 deletion .github/workflows/check-renovate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Install node
uses: actions/setup-node@v6
with:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/copilot-collections-update.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on:
- cron: "0 9 * * 1" # Run every Monday at 09:00 UTC
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
check-update:
# Pinned to @main to get the latest logic, but the content version is controlled by .github/.copilot-collections.yaml
Expand Down
16 changes: 12 additions & 4 deletions .github/workflows/policy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ jobs:
outputs:
source-files: ${{ steps.filter.outputs.source-files }}
steps:
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
- name: Checkout code
uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
id: filter
with:
# Combine multiple negation checks into a union (¬A ∧ ¬B ∧ ¬C), because individual entries are checked independently (A ∨ B ∨ C).
Expand All @@ -36,6 +40,10 @@ jobs:
# 2. Ignore requirements files in spread tests, as some of these intentionally
# contain vulnerable versions.
# 3. Docs contain requirements.txt files that don't specify versions.
requirements-find-args: '! -name requirements-noble.txt ! -path "./tests/spread/*" ! -path "./docs/**"'
# osv-extra-args: "--config=source/osv-scanner.toml"
uv-export: false
osv-extra-args: "--config=osv-scanner.toml"
osv-exclude-paths: |
docs
tests/spread
uv-export-no-groups: |
docs
docs-starter-pack
4 changes: 2 additions & 2 deletions .github/workflows/qa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ jobs:
source-files: ${{ steps.filter.outputs.source-files }}
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
- uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
id: filter
with:
# Combine multiple negation checks into a union (¬A ∧ ¬B ∧ ¬C), because individual entries are checked independently (A ∨ B ∨ C).
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: [self-hosted, jammy]
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Fetch tag annotations
run: |
# Note: we fetch the tags here instead of using actions/checkout's "fetch-tags"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0

Expand All @@ -34,7 +34,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0

Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/spread-docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Spread tests for docs
on:
pull_request:
paths:
- .github/workflow/spread-docs.yaml
- .github/workflows/spread-docs.yaml
- spread.yaml
- .readthedocs.yaml
- docs/**/code/**
Expand All @@ -21,7 +21,7 @@ jobs:
runs-on: [self-hosted, linux, amd64, noble, medium]
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Build snap
Expand All @@ -39,7 +39,7 @@ jobs:
systems: ${{ steps.select.outputs.systems }}
steps:
- name: Checkout charmcraft
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
submodules: true
Expand All @@ -64,7 +64,7 @@ jobs:
sudo ip6tables -P FORWARD ACCEPT

- name: Checkout charmcraft
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
submodules: true
Expand All @@ -75,7 +75,7 @@ jobs:
mkdir "${{ github.workspace }}"

- name: Checkout charmcraft
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
submodules: true
Expand All @@ -92,7 +92,7 @@ jobs:

- name: Install spread
run: |
go install github.com/snapcore/spread/cmd/spread@latest
go install github.com/canonical/spread/cmd/spread@latest

- name: Run spread
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/spread-manual.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
# speed up build times by using wheels, when available
Expand Down Expand Up @@ -84,7 +84,7 @@ jobs:
rm -rf "${{ github.workspace }}"
mkdir "${{ github.workspace }}"
- name: Checkout charmcraft
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
submodules: true
Expand Down
Loading