Skip to content

feat: move Vaadin configuration to AppShell and document the Dev Loop - #327

Merged
peholmst merged 3 commits into
v25.4from
claude/vaadin-appshell-config-dea70c
Oct 23, 2026
Merged

peholmst merged 3 commits into
v25.4from
claude/vaadin-appshell-config-dea70c

Conversation

@peholmst

Copy link
Copy Markdown
Member

Makes it clearer that the generated application is an ordinary Spring Boot application with a Vaadin UI, and tells developers who work with an AI coding agent to enable the Dev Loop.

Changes

  • AppShell: implements AppShellConfigurator, @StyleSheet(Aura.STYLESHEET), @StyleSheet("styles.css") and @Push move from Application to a new AppShell class in the same package. Application is now a plain @SpringBootApplication class with the main() method. Because AppShell sits in the root application package, both assembly descriptors pick it up without changes (the empty skeleton only excludes base/ and examplefeature/).
  • Flow README: the project structure tree lists AppShell.java, and the paragraph about the entry point says that the Vaadin-specific configuration is there.
  • Agentic Development section in both README templates: if you use an AI coding agent, run ./mvnw vaadin:install-dev-cli, commit the generated .vaadin/, .agents/skills/ and .claude/skills/ files, rerun the goal after a Vaadin upgrade, and start the application with .vaadin/vaadin-dev start instead of ./mvnw or the IDE. The section says the Dev Loop is a preview feature and links to the Dev Loop tutorial.

The Dev Loop CLI was introduced in Vaadin 25.3, so this should be backported to v25.3 (labelled target/v25.3) and not to older branches, where the install-dev-cli goal doesn't exist. Both commits cherry-pick cleanly onto v25.3.

Verification

  • mvn spotless:check and mvn clean package pass on this branch, and on a local branch with both commits cherry-picked onto v25.3.
  • On both branches, walking-skeleton-empty.zip and walking-skeleton-flow.zip contain AppShell.java, and each unzipped project builds with mvn clean package, tests included.
  • In a project unzipped from walking-skeleton-flow.zip (25.4.0-alpha3), ./mvnw vaadin:install-dev-cli installed .vaadin/vaadin-dev (with .cmd, .ps1 and its own .gitignore for runtime state), .agents/skills/vaadin-devloop/ and .claude/skills/vaadin-devloop/, which are the paths the README names. .vaadin/vaadin-dev start then started the application, GET / returned HTTP 200, and the page loaded aura/aura.css and styles.css, so the annotations on AppShell take effect. .vaadin/vaadin-dev shutdown stopped it.
  • In a project unzipped from the v25.3 port's walking-skeleton-empty.zip (25.3.3), ./mvnw vaadin:install-dev-cli installed the same files.

🤖 Generated with Claude Code

peholmst and others added 2 commits October 22, 2026 15:07
Application is now a plain Spring Boot application class, and the
Vaadin-specific stylesheets and server push configuration live in a
separate AppShell class that implements AppShellConfigurator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The generated READMEs now explain how to install the Dev Loop CLI and
its agent skills with vaadin:install-dev-cli, and to start the
application through it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@peholmst
peholmst merged commit 443d967 into v25.4 Oct 23, 2026
3 checks passed
@peholmst
peholmst deleted the claude/vaadin-appshell-config-dea70c branch October 23, 2026 05:06
peholmst added a commit that referenced this pull request Oct 23, 2026
…#327) (#330)

* refactor: move Vaadin configuration from Application to AppShell

Application is now a plain Spring Boot application class, and the
Vaadin-specific stylesheets and server push configuration live in a
separate AppShell class that implements AppShellConfigurator.



* docs: instruct agentic developers to enable the Dev Loop

The generated READMEs now explain how to install the Dev Loop CLI and
its agent skills with vaadin:install-dev-cli, and to start the
application through it.



---------

Co-authored-by: Petter Holmström <petter@vaadin.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants