diff --git a/.github/workflows/docker-build-push-dev.yml b/.github/workflows/docker-build-push-dev.yml index f88dc65..ea1c22f 100644 --- a/.github/workflows/docker-build-push-dev.yml +++ b/.github/workflows/docker-build-push-dev.yml @@ -5,7 +5,8 @@ on: push: branches: [dev] paths: - - demo/** + - demo-leptos/** + - demo-tauri/** - docker/** - crates/** - tests/fixtures/** diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 855db0e..5443b51 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,14 +37,14 @@ jobs: fi VERSION="${TAG#v}" ROOT_VERSION="$(awk '/^\[workspace.package\]/{p=1;next} p&&/^version = /{gsub(/"/,"",$3); print $3; exit}' Cargo.toml)" - DESKTOP_VERSION="$(awk '/^version = /{gsub(/"/,"",$3); print $3; exit}' demo-desktop/src-tauri/Cargo.toml)" - TAURI_VERSION="$(python3 -c "import json; print(json.load(open('demo-desktop/src-tauri/tauri.conf.json'))['version'])")" + DESKTOP_VERSION="$(awk '/^version = /{gsub(/"/,"",$3); print $3; exit}' demo-tauri/src/Cargo.toml)" + TAURI_VERSION="$(python3 -c "import json; print(json.load(open('demo-tauri/src/tauri.conf.json'))['version'])")" if [ "$VERSION" != "$ROOT_VERSION" ]; then echo "Tag $VERSION != workspace Cargo.toml $ROOT_VERSION" exit 1 fi if [ "$VERSION" != "$DESKTOP_VERSION" ]; then - echo "Tag $VERSION != demo-desktop Cargo.toml $DESKTOP_VERSION" + echo "Tag $VERSION != demo-tauri Cargo.toml $DESKTOP_VERSION" exit 1 fi if [ "$VERSION" != "$TAURI_VERSION" ]; then @@ -159,8 +159,8 @@ jobs: uses: Swatinem/rust-cache@v2 with: workspaces: | - demo-desktop/src-tauri -> target - demo -> target + demo-tauri/src -> target + demo-leptos -> target - name: Install trunk run: cargo install --locked trunk --version 0.21.14 @@ -173,7 +173,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - projectPath: demo-desktop/src-tauri + projectPath: demo-tauri/src tauriScript: cargo tauri releaseId: ${{ github.event.release.id }} uploadUpdaterJson: false diff --git a/.gitignore b/.gitignore index 3fa6407..ece7a5b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ /target/ -/demo/dist/ -/demo/target/ -/demo-desktop/src-tauri/target/ +/demo-leptos/dist/ +/demo-leptos/target/ +/demo-tauri/src/target/ **/*.rs.bk *.pdb .DS_Store @@ -9,4 +9,3 @@ .vscode/ .github_credentials - diff --git a/Cargo.lock b/Cargo.lock index 959969b..6fe27a7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -366,7 +366,7 @@ dependencies = [ [[package]] name = "rangular" -version = "0.1.0" +version = "1.0.0" dependencies = [ "rangular-aot", "rangular-css", @@ -379,7 +379,7 @@ dependencies = [ [[package]] name = "rangular-aot" -version = "0.1.0" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -392,28 +392,28 @@ dependencies = [ [[package]] name = "rangular-css" -version = "0.1.0" +version = "1.0.0" dependencies = [ "grass", ] [[package]] name = "rangular-expr" -version = "0.1.0" +version = "1.0.0" dependencies = [ "rangular-host", ] [[package]] name = "rangular-host" -version = "0.1.0" +version = "1.0.0" dependencies = [ "rangular-expr", ] [[package]] name = "rangular-macros" -version = "0.1.0" +version = "1.0.0" dependencies = [ "proc-macro2", "quote", @@ -422,14 +422,14 @@ dependencies = [ [[package]] name = "rangular-parser" -version = "0.1.0" +version = "1.0.0" dependencies = [ "rangular-expr", ] [[package]] name = "rangular-runtime" -version = "0.1.0" +version = "1.0.0" dependencies = [ "rangular-aot", "rangular-expr", diff --git a/Cargo.toml b/Cargo.toml index ded2aa5..58d2072 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,22 +9,22 @@ members = [ "crates/rangular-parser", "crates/rangular-runtime", ] -exclude = ["demo", "demo-desktop/src-tauri"] +exclude = ["demo-leptos", "demo-tauri/src"] resolver = "2" [workspace.package] edition = "2021" license = "Apache-2.0" -version = "0.1.0" +version = "1.0.0" authors = ["Interchouette"] repository = "https://github.com/Interchouette-ITC/rangular" rust-version = "1.75" [workspace.dependencies] -rangular-aot = { path = "crates/rangular-aot", version = "0.1.0" } -rangular-css = { path = "crates/rangular-css", version = "0.1.0" } -rangular-expr = { path = "crates/rangular-expr", version = "0.1.0" } -rangular-host = { path = "crates/rangular-host", version = "0.1.0" } -rangular-macros = { path = "crates/rangular-macros", version = "0.1.0" } -rangular-parser = { path = "crates/rangular-parser", version = "0.1.0" } -rangular-runtime = { path = "crates/rangular-runtime", version = "0.1.0" } +rangular-aot = { path = "crates/rangular-aot", version = "1.0.0" } +rangular-css = { path = "crates/rangular-css", version = "1.0.0" } +rangular-expr = { path = "crates/rangular-expr", version = "1.0.0" } +rangular-host = { path = "crates/rangular-host", version = "1.0.0" } +rangular-macros = { path = "crates/rangular-macros", version = "1.0.0" } +rangular-parser = { path = "crates/rangular-parser", version = "1.0.0" } +rangular-runtime = { path = "crates/rangular-runtime", version = "1.0.0" } diff --git a/Makefile b/Makefile index 8b6c0a1..e561d21 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ SHELL := /bin/bash ROOT := $(abspath .) -DEMO := $(ROOT)/demo -DESKTOP := $(ROOT)/demo-desktop/src-tauri +DEMO_LEPTOS := $(ROOT)/demo-leptos +DEMO_TAURI := $(ROOT)/demo-tauri/src CARGO ?= cargo TRUNK := env -u NO_COLOR $(HOME)/.cargo/bin/trunk CLIPPY_FLAGS := -D warnings -D clippy::all -D clippy::pedantic -D clippy::nursery @@ -11,7 +11,7 @@ DEMO_PORT ?= 4180 DEMO_ADDR ?= 127.0.0.1 DOCKER_PORT ?= 8080 DOCKER_BUILDKIT ?= 1 -APP_VERSION := $(shell grep '^version' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/') +APP_VERSION := $(shell awk '/^\[workspace.package\]/{p=1;next} p&&/^version = /{gsub(/"/,"",$$3); print $$3; exit}' Cargo.toml) HUB_IMAGE := interchouette/rangular-demo GHCR_PERSONAL_IMAGE := ghcr.io/groussac/rangular-demo GHCR_WORKER_IMAGE := ghcr.io/interchouette/rangular-demo @@ -22,11 +22,12 @@ TAG ?= dev .DEFAULT_GOAL := help .PHONY: help check test lint format format-check clean ci no-panic \ - demo demo-build demo-check \ - demo-desktop demo-desktop-build \ + demo demo-leptos demo-build demo-leptos-build demo-check demo-leptos-check \ + demo-desktop demo-tauri demo-desktop-build demo-tauri-build \ docker-build docker-build-dev docker-run \ docker-push-dev-hub docker-push-dev-ghcr-personal docker-push-dev-ghcr-itc \ - docker-push-release-hub docker-push-release-ghcr-personal docker-push-release-ghcr-itc + docker-push-release-hub docker-push-release-ghcr-personal docker-push-release-ghcr-itc \ + version-show version-bump-patch version-bump-minor version-bump-major version-set help: @echo "rangular targets" @@ -39,18 +40,25 @@ help: @echo " make format cargo fmt" @echo " make clean cargo clean" @echo "" - @echo "Demo (Leptos CSR / wasm):" - @echo " make demo Trunk serve → http://$(DEMO_ADDR):$(DEMO_PORT)/" - @echo " make demo-build Trunk release dist in demo/" - @echo " make demo-check fmt + clippy on demo wasm target" - @echo " make demo-desktop Tauri window (reuses :$(DEMO_PORT) if already up)" - @echo " make demo-desktop-build Tauri release bundles" + @echo "Demo Leptos (CSR / wasm):" + @echo " make demo / demo-leptos Trunk serve → http://$(DEMO_ADDR):$(DEMO_PORT)/" + @echo " make demo-build / demo-leptos-build" + @echo " make demo-check / demo-leptos-check" + @echo "" + @echo "Demo Tauri:" + @echo " make demo-tauri / demo-desktop Tauri window (reuses :$(DEMO_PORT) if up)" + @echo " make demo-tauri-build / demo-desktop-build" @echo "" @echo "Docker (browser SPA for Render):" @echo " make docker-build Build $(HUB_IMAGE):$(APP_VERSION) + :latest" @echo " make docker-build-dev Tag :dev + :latest (Hub + GHCR names)" @echo " make docker-run Run image on :$(DOCKER_PORT)" @echo "" + @echo "Version:" + @echo " make version-show" + @echo " make version-bump-patch|minor|major" + @echo " make version-set VERSION=x.y.z" + @echo "" @echo "Overrides: DEMO_PORT=$(DEMO_PORT) DEMO_ADDR=$(DEMO_ADDR) DOCKER_PORT=$(DOCKER_PORT)" check: @@ -78,33 +86,33 @@ ci: lint test no-panic clean: cd $(ROOT) && $(CARGO) clean -demo: +demo demo-leptos: @if ss -tlnp 2>/dev/null | grep -q ':$(DEMO_PORT) '; then \ echo "Port $(DEMO_PORT) already in use - reuse that server or set DEMO_PORT"; \ exit 1; \ fi - cd $(DEMO) && $(TRUNK) serve --release --port $(DEMO_PORT) --address $(DEMO_ADDR) + cd $(DEMO_LEPTOS) && $(TRUNK) serve --release --port $(DEMO_PORT) --address $(DEMO_ADDR) -demo-build: - cd $(DEMO) && $(TRUNK) build --release +demo-build demo-leptos-build: + cd $(DEMO_LEPTOS) && $(TRUNK) build --release -demo-check: format-check - cd $(DEMO) && $(CARGO) clippy --target wasm32-unknown-unknown --all-targets -- $(CLIPPY_FLAGS) +demo-check demo-leptos-check: format-check + cd $(DEMO_LEPTOS) && $(CARGO) clippy --target wasm32-unknown-unknown --all-targets -- $(CLIPPY_FLAGS) -demo-desktop: - @if pgrep -f 'rangular-demo-desktop' >/dev/null 2>&1; then \ - echo "rangular-demo-desktop already running - reuse that window"; \ +demo-desktop demo-tauri: + @if pgrep -f 'rangular-demo-tauri' >/dev/null 2>&1; then \ + echo "rangular-demo-tauri already running - reuse that window"; \ exit 0; \ fi @if ss -tlnp 2>/dev/null | grep -q ':$(DEMO_PORT) '; then \ echo "Port $(DEMO_PORT) in use - Tauri will attach without starting Trunk"; \ - cd $(DESKTOP) && $(CARGO) tauri dev --config '{"build":{"beforeDevCommand":""}}'; \ + cd $(DEMO_TAURI) && $(CARGO) tauri dev --config '{"build":{"beforeDevCommand":""}}'; \ else \ - cd $(DESKTOP) && $(CARGO) tauri dev; \ + cd $(DEMO_TAURI) && $(CARGO) tauri dev; \ fi -demo-desktop-build: - cd $(DESKTOP) && $(CARGO) tauri build +demo-desktop-build demo-tauri-build: + cd $(DEMO_TAURI) && $(CARGO) tauri build docker-build: DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker build --pull --network=host \ @@ -162,3 +170,45 @@ docker-push-release-ghcr-itc: docker push $(GHCR_WORKER_IMAGE):latest docker push $(GHCR_ORG_IMAGE):$(APP_VERSION) docker push $(GHCR_ORG_IMAGE):latest + +# Version helpers (workspace + demos + tauri.conf); release via GitHub Release tag v$$(APP_VERSION) +version-show: + @echo "Current version: $(APP_VERSION)"; \ + echo "demo-leptos: $$(awk '/^version = /{gsub(/"/,"",$$3); print $$3; exit}' demo-leptos/Cargo.toml)"; \ + echo "demo-tauri: $$(awk '/^version = /{gsub(/"/,"",$$3); print $$3; exit}' demo-tauri/src/Cargo.toml)"; \ + echo "tauri.conf.json: $$(python3 -c "import json; print(json.load(open('demo-tauri/src/tauri.conf.json'))['version'])")"; \ + echo ""; \ + echo "Suggested GitHub Release tag:"; \ + echo " v$(APP_VERSION)"; \ + echo ""; \ + echo "When creating a GitHub Release, use the Tag field (not only the title)." + +define version-apply + @current="$(APP_VERSION)"; \ + new="$(1)"; \ + if [ -z "$$new" ]; then echo "empty version"; exit 1; fi; \ + sed -i "s/version = \"$$current\"/version = \"$$new\"/g" Cargo.toml; \ + sed -i "s/^version = \"$$current\"/version = \"$$new\"/" demo-leptos/Cargo.toml; \ + sed -i "s/^version = \"$$current\"/version = \"$$new\"/" demo-tauri/src/Cargo.toml; \ + python3 -c "import json; p='demo-tauri/src/tauri.conf.json'; c=json.load(open(p)); c['version']='$$new'; json.dump(c, open(p,'w'), indent=2); open(p,'a').write('\n')"; \ + $(CARGO) metadata --format-version 1 --no-deps >/dev/null; \ + $(CARGO) metadata --manifest-path demo-leptos/Cargo.toml --format-version 1 --no-deps >/dev/null; \ + $(CARGO) metadata --manifest-path demo-tauri/src/Cargo.toml --format-version 1 --no-deps >/dev/null; \ + echo "Version $$current → $$new (workspace + demos + tauri.conf)" +endef + +version-bump-patch: + $(call version-apply,$(shell echo "$(APP_VERSION)" | awk -F. '{print $$1"."$$2"."($$3+1)}')) + +version-bump-minor: + $(call version-apply,$(shell echo "$(APP_VERSION)" | awk -F. '{print $$1"."($$2+1)".0"}')) + +version-bump-major: + $(call version-apply,$(shell echo "$(APP_VERSION)" | awk -F. '{print ($$1+1)".0.0"}')) + +version-set: + @if [ -z "$(VERSION)" ]; then \ + echo "Usage: make version-set VERSION=x.y.z"; \ + exit 1; \ + fi + $(call version-apply,$(VERSION)) diff --git a/README.md b/README.md index eed4d23..2ac749e 100644 --- a/README.md +++ b/README.md @@ -69,9 +69,9 @@ flowchart LR | SCSS | `rangular-css` (`compile_scss` or encapsulate; Bootstrap utilities stay global) | | Registry | Component tags + typed `provide` / `inject` | | Growth | Fixture corpus in [`tests/fixtures/`](tests/fixtures/) (tests; not the demo) | -| Demo | [`demo/`](demo/) dogfoods AOT with its own panels | +| Demo | [`demo-leptos/`](demo-leptos/) dogfoods AOT with its own panels | -Layers: `tests/fixtures/` is the language growth corpus for crate tests; `demo/` is an independent dogfood app with its own panels; other rangular apps live out of this tree. +Layers: `tests/fixtures/` is the language growth corpus for crate tests; `demo-leptos/` is an independent dogfood app with its own panels; other rangular apps live out of this tree. Honest subset, not full Angular. New syntax lands through fixtures and semver. Unsupported input yields `RANG*` diagnostics; templates must never panic the process. @@ -87,13 +87,13 @@ Same habit as Angular, with **`.rs` instead of `.ts`**: | `item_list.rs` | class / component.ts | Rust `Host` + Leptos `#[component]` | ```text -demo/src/components/item_list/ +demo-leptos/src/components/item_list/ item_list.html # familiar Angular-shaped template item_list.scss # familiar component SCSS item_list.rs # state + handlers ``` -Live Host example: [`demo/src/components/item_list/`](demo/src/components/item_list/). +Live Host example: [`demo-leptos/src/components/item_list/`](demo-leptos/src/components/item_list/). Growth corpus (tests only): [`tests/fixtures/components/`](tests/fixtures/components/). **Template** (`item_list.html`): @@ -255,11 +255,11 @@ macOS is not in v1. Local shell (same SPA as the browser demo): ```bash -make demo-desktop -make demo-desktop-build # Linux deb/AppImage, Windows NSIS +make demo-tauri +make demo-tauri-build # Linux deb/AppImage, Windows NSIS ``` -Details: [`demo-desktop/README.md`](demo-desktop/README.md). +Details: [`demo-tauri/README.md`](demo-tauri/README.md). ```mermaid flowchart TB @@ -288,7 +288,7 @@ docker run --rm -p 8080:8080 interchouette/rangular-demo:latest Live: [https://rangular.interchouette.net](https://rangular.interchouette.net) -Details: [`demo/README.md`](demo/README.md). +Details: [`demo-leptos/README.md`](demo-leptos/README.md). ## Working on this repo diff --git a/demo/Cargo.lock b/demo-leptos/Cargo.lock similarity index 100% rename from demo/Cargo.lock rename to demo-leptos/Cargo.lock diff --git a/demo/Cargo.toml b/demo-leptos/Cargo.toml similarity index 87% rename from demo/Cargo.toml rename to demo-leptos/Cargo.toml index a4fcbfc..3431db5 100644 --- a/demo/Cargo.toml +++ b/demo-leptos/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rangular-demo" -description = "Browser demo for rangular (Leptos CSR + fixture components)" -version = "0.1.0" +description = "Browser demo for rangular (Leptos CSR + colocated panels)" +version = "1.0.0" edition = "2021" license = "Apache-2.0" publish = false diff --git a/demo/README.md b/demo-leptos/README.md similarity index 91% rename from demo/README.md rename to demo-leptos/README.md index 8d3abff..1714ca3 100644 --- a/demo/README.md +++ b/demo-leptos/README.md @@ -1,8 +1,8 @@ -# Browser demo +# Browser demo (Leptos) Leptos CSR app that dogfoods rangular with colocated panels under -`demo/src/components//` (`html` + `scss` + `rs`). The demo does **not** -compile `tests/fixtures/`; that corpus is for crate tests only. +`demo-leptos/src/components//` (`html` + `scss` + `rs`). The demo does +**not** compile `tests/fixtures/`; that corpus is for crate tests only. ## Panels @@ -74,10 +74,10 @@ docker pull interchouette/rangular-demo:latest Same SPA in a native webview: ```bash -make demo-desktop +make demo-tauri ``` -Details: [`../demo-desktop/README.md`](../demo-desktop/README.md). +Details: [`../demo-tauri/README.md`](../demo-tauri/README.md). ## Lint diff --git a/demo/Trunk.toml b/demo-leptos/Trunk.toml similarity index 100% rename from demo/Trunk.toml rename to demo-leptos/Trunk.toml diff --git a/demo/build.rs b/demo-leptos/build.rs similarity index 100% rename from demo/build.rs rename to demo-leptos/build.rs diff --git a/demo/index.html b/demo-leptos/index.html similarity index 100% rename from demo/index.html rename to demo-leptos/index.html diff --git a/demo/src/app.rs b/demo-leptos/src/app.rs similarity index 100% rename from demo/src/app.rs rename to demo-leptos/src/app.rs diff --git a/demo/src/components/asset_icon/asset_icon.html b/demo-leptos/src/components/asset_icon/asset_icon.html similarity index 100% rename from demo/src/components/asset_icon/asset_icon.html rename to demo-leptos/src/components/asset_icon/asset_icon.html diff --git a/demo/src/components/asset_icon/asset_icon.rs b/demo-leptos/src/components/asset_icon/asset_icon.rs similarity index 100% rename from demo/src/components/asset_icon/asset_icon.rs rename to demo-leptos/src/components/asset_icon/asset_icon.rs diff --git a/demo/src/components/asset_icon/asset_icon.scss b/demo-leptos/src/components/asset_icon/asset_icon.scss similarity index 100% rename from demo/src/components/asset_icon/asset_icon.scss rename to demo-leptos/src/components/asset_icon/asset_icon.scss diff --git a/demo/src/components/asset_icon/mod.rs b/demo-leptos/src/components/asset_icon/mod.rs similarity index 100% rename from demo/src/components/asset_icon/mod.rs rename to demo-leptos/src/components/asset_icon/mod.rs diff --git a/demo/src/components/chrome_header/chrome_header.html b/demo-leptos/src/components/chrome_header/chrome_header.html similarity index 100% rename from demo/src/components/chrome_header/chrome_header.html rename to demo-leptos/src/components/chrome_header/chrome_header.html diff --git a/demo/src/components/chrome_header/chrome_header.rs b/demo-leptos/src/components/chrome_header/chrome_header.rs similarity index 100% rename from demo/src/components/chrome_header/chrome_header.rs rename to demo-leptos/src/components/chrome_header/chrome_header.rs diff --git a/demo/src/components/chrome_header/chrome_header.scss b/demo-leptos/src/components/chrome_header/chrome_header.scss similarity index 100% rename from demo/src/components/chrome_header/chrome_header.scss rename to demo-leptos/src/components/chrome_header/chrome_header.scss diff --git a/demo/src/components/chrome_header/mod.rs b/demo-leptos/src/components/chrome_header/mod.rs similarity index 100% rename from demo/src/components/chrome_header/mod.rs rename to demo-leptos/src/components/chrome_header/mod.rs diff --git a/demo/src/components/color_field/color_field.html b/demo-leptos/src/components/color_field/color_field.html similarity index 100% rename from demo/src/components/color_field/color_field.html rename to demo-leptos/src/components/color_field/color_field.html diff --git a/demo/src/components/color_field/color_field.rs b/demo-leptos/src/components/color_field/color_field.rs similarity index 100% rename from demo/src/components/color_field/color_field.rs rename to demo-leptos/src/components/color_field/color_field.rs diff --git a/demo/src/components/color_field/color_field.scss b/demo-leptos/src/components/color_field/color_field.scss similarity index 100% rename from demo/src/components/color_field/color_field.scss rename to demo-leptos/src/components/color_field/color_field.scss diff --git a/demo/src/components/color_field/mod.rs b/demo-leptos/src/components/color_field/mod.rs similarity index 100% rename from demo/src/components/color_field/mod.rs rename to demo-leptos/src/components/color_field/mod.rs diff --git a/demo/src/components/event_payload/event_payload.html b/demo-leptos/src/components/event_payload/event_payload.html similarity index 100% rename from demo/src/components/event_payload/event_payload.html rename to demo-leptos/src/components/event_payload/event_payload.html diff --git a/demo/src/components/event_payload/event_payload.rs b/demo-leptos/src/components/event_payload/event_payload.rs similarity index 100% rename from demo/src/components/event_payload/event_payload.rs rename to demo-leptos/src/components/event_payload/event_payload.rs diff --git a/demo/src/components/event_payload/event_payload.scss b/demo-leptos/src/components/event_payload/event_payload.scss similarity index 100% rename from demo/src/components/event_payload/event_payload.scss rename to demo-leptos/src/components/event_payload/event_payload.scss diff --git a/demo/src/components/event_payload/mod.rs b/demo-leptos/src/components/event_payload/mod.rs similarity index 100% rename from demo/src/components/event_payload/mod.rs rename to demo-leptos/src/components/event_payload/mod.rs diff --git a/demo/src/components/field_required/field_required.html b/demo-leptos/src/components/field_required/field_required.html similarity index 100% rename from demo/src/components/field_required/field_required.html rename to demo-leptos/src/components/field_required/field_required.html diff --git a/demo/src/components/field_required/field_required.rs b/demo-leptos/src/components/field_required/field_required.rs similarity index 100% rename from demo/src/components/field_required/field_required.rs rename to demo-leptos/src/components/field_required/field_required.rs diff --git a/demo/src/components/field_required/field_required.scss b/demo-leptos/src/components/field_required/field_required.scss similarity index 100% rename from demo/src/components/field_required/field_required.scss rename to demo-leptos/src/components/field_required/field_required.scss diff --git a/demo/src/components/field_required/mod.rs b/demo-leptos/src/components/field_required/mod.rs similarity index 100% rename from demo/src/components/field_required/mod.rs rename to demo-leptos/src/components/field_required/mod.rs diff --git a/demo/src/components/io_child/io_child.html b/demo-leptos/src/components/io_child/io_child.html similarity index 100% rename from demo/src/components/io_child/io_child.html rename to demo-leptos/src/components/io_child/io_child.html diff --git a/demo/src/components/io_child/io_child.rs b/demo-leptos/src/components/io_child/io_child.rs similarity index 100% rename from demo/src/components/io_child/io_child.rs rename to demo-leptos/src/components/io_child/io_child.rs diff --git a/demo/src/components/io_child/io_child.scss b/demo-leptos/src/components/io_child/io_child.scss similarity index 100% rename from demo/src/components/io_child/io_child.scss rename to demo-leptos/src/components/io_child/io_child.scss diff --git a/demo/src/components/io_child/mod.rs b/demo-leptos/src/components/io_child/mod.rs similarity index 100% rename from demo/src/components/io_child/mod.rs rename to demo-leptos/src/components/io_child/mod.rs diff --git a/demo/src/components/io_parent/io_parent.html b/demo-leptos/src/components/io_parent/io_parent.html similarity index 100% rename from demo/src/components/io_parent/io_parent.html rename to demo-leptos/src/components/io_parent/io_parent.html diff --git a/demo/src/components/io_parent/io_parent.rs b/demo-leptos/src/components/io_parent/io_parent.rs similarity index 100% rename from demo/src/components/io_parent/io_parent.rs rename to demo-leptos/src/components/io_parent/io_parent.rs diff --git a/demo/src/components/io_parent/io_parent.scss b/demo-leptos/src/components/io_parent/io_parent.scss similarity index 100% rename from demo/src/components/io_parent/io_parent.scss rename to demo-leptos/src/components/io_parent/io_parent.scss diff --git a/demo/src/components/io_parent/mod.rs b/demo-leptos/src/components/io_parent/mod.rs similarity index 100% rename from demo/src/components/io_parent/mod.rs rename to demo-leptos/src/components/io_parent/mod.rs diff --git a/demo/src/components/item_list/item_list.html b/demo-leptos/src/components/item_list/item_list.html similarity index 100% rename from demo/src/components/item_list/item_list.html rename to demo-leptos/src/components/item_list/item_list.html diff --git a/demo/src/components/item_list/item_list.rs b/demo-leptos/src/components/item_list/item_list.rs similarity index 100% rename from demo/src/components/item_list/item_list.rs rename to demo-leptos/src/components/item_list/item_list.rs diff --git a/demo/src/components/item_list/item_list.scss b/demo-leptos/src/components/item_list/item_list.scss similarity index 100% rename from demo/src/components/item_list/item_list.scss rename to demo-leptos/src/components/item_list/item_list.scss diff --git a/demo/src/components/item_list/mod.rs b/demo-leptos/src/components/item_list/mod.rs similarity index 100% rename from demo/src/components/item_list/mod.rs rename to demo-leptos/src/components/item_list/mod.rs diff --git a/demo/src/components/layout_shell/layout_shell.html b/demo-leptos/src/components/layout_shell/layout_shell.html similarity index 100% rename from demo/src/components/layout_shell/layout_shell.html rename to demo-leptos/src/components/layout_shell/layout_shell.html diff --git a/demo/src/components/layout_shell/layout_shell.rs b/demo-leptos/src/components/layout_shell/layout_shell.rs similarity index 100% rename from demo/src/components/layout_shell/layout_shell.rs rename to demo-leptos/src/components/layout_shell/layout_shell.rs diff --git a/demo/src/components/layout_shell/layout_shell.scss b/demo-leptos/src/components/layout_shell/layout_shell.scss similarity index 100% rename from demo/src/components/layout_shell/layout_shell.scss rename to demo-leptos/src/components/layout_shell/layout_shell.scss diff --git a/demo/src/components/layout_shell/mod.rs b/demo-leptos/src/components/layout_shell/mod.rs similarity index 100% rename from demo/src/components/layout_shell/mod.rs rename to demo-leptos/src/components/layout_shell/mod.rs diff --git a/demo/src/components/mod.rs b/demo-leptos/src/components/mod.rs similarity index 100% rename from demo/src/components/mod.rs rename to demo-leptos/src/components/mod.rs diff --git a/demo/src/components/named_slots/mod.rs b/demo-leptos/src/components/named_slots/mod.rs similarity index 100% rename from demo/src/components/named_slots/mod.rs rename to demo-leptos/src/components/named_slots/mod.rs diff --git a/demo/src/components/named_slots/named_slots.html b/demo-leptos/src/components/named_slots/named_slots.html similarity index 100% rename from demo/src/components/named_slots/named_slots.html rename to demo-leptos/src/components/named_slots/named_slots.html diff --git a/demo/src/components/named_slots/named_slots.rs b/demo-leptos/src/components/named_slots/named_slots.rs similarity index 100% rename from demo/src/components/named_slots/named_slots.rs rename to demo-leptos/src/components/named_slots/named_slots.rs diff --git a/demo/src/components/named_slots/named_slots.scss b/demo-leptos/src/components/named_slots/named_slots.scss similarity index 100% rename from demo/src/components/named_slots/named_slots.scss rename to demo-leptos/src/components/named_slots/named_slots.scss diff --git a/demo/src/components/pipes/mod.rs b/demo-leptos/src/components/pipes/mod.rs similarity index 100% rename from demo/src/components/pipes/mod.rs rename to demo-leptos/src/components/pipes/mod.rs diff --git a/demo/src/components/pipes/pipes.html b/demo-leptos/src/components/pipes/pipes.html similarity index 100% rename from demo/src/components/pipes/pipes.html rename to demo-leptos/src/components/pipes/pipes.html diff --git a/demo/src/components/pipes/pipes.rs b/demo-leptos/src/components/pipes/pipes.rs similarity index 100% rename from demo/src/components/pipes/pipes.rs rename to demo-leptos/src/components/pipes/pipes.rs diff --git a/demo/src/components/pipes/pipes.scss b/demo-leptos/src/components/pipes/pipes.scss similarity index 100% rename from demo/src/components/pipes/pipes.scss rename to demo-leptos/src/components/pipes/pipes.scss diff --git a/demo/src/components/seed_bar/mod.rs b/demo-leptos/src/components/seed_bar/mod.rs similarity index 100% rename from demo/src/components/seed_bar/mod.rs rename to demo-leptos/src/components/seed_bar/mod.rs diff --git a/demo/src/components/seed_bar/seed_bar.html b/demo-leptos/src/components/seed_bar/seed_bar.html similarity index 100% rename from demo/src/components/seed_bar/seed_bar.html rename to demo-leptos/src/components/seed_bar/seed_bar.html diff --git a/demo/src/components/seed_bar/seed_bar.rs b/demo-leptos/src/components/seed_bar/seed_bar.rs similarity index 100% rename from demo/src/components/seed_bar/seed_bar.rs rename to demo-leptos/src/components/seed_bar/seed_bar.rs diff --git a/demo/src/components/seed_bar/seed_bar.scss b/demo-leptos/src/components/seed_bar/seed_bar.scss similarity index 100% rename from demo/src/components/seed_bar/seed_bar.scss rename to demo-leptos/src/components/seed_bar/seed_bar.scss diff --git a/demo/src/components/template_outlet/mod.rs b/demo-leptos/src/components/template_outlet/mod.rs similarity index 100% rename from demo/src/components/template_outlet/mod.rs rename to demo-leptos/src/components/template_outlet/mod.rs diff --git a/demo/src/components/template_outlet/template_outlet.html b/demo-leptos/src/components/template_outlet/template_outlet.html similarity index 100% rename from demo/src/components/template_outlet/template_outlet.html rename to demo-leptos/src/components/template_outlet/template_outlet.html diff --git a/demo/src/components/template_outlet/template_outlet.rs b/demo-leptos/src/components/template_outlet/template_outlet.rs similarity index 100% rename from demo/src/components/template_outlet/template_outlet.rs rename to demo-leptos/src/components/template_outlet/template_outlet.rs diff --git a/demo/src/components/template_outlet/template_outlet.scss b/demo-leptos/src/components/template_outlet/template_outlet.scss similarity index 100% rename from demo/src/components/template_outlet/template_outlet.scss rename to demo-leptos/src/components/template_outlet/template_outlet.scss diff --git a/demo/src/components/two_way/mod.rs b/demo-leptos/src/components/two_way/mod.rs similarity index 100% rename from demo/src/components/two_way/mod.rs rename to demo-leptos/src/components/two_way/mod.rs diff --git a/demo/src/components/two_way/two_way.html b/demo-leptos/src/components/two_way/two_way.html similarity index 100% rename from demo/src/components/two_way/two_way.html rename to demo-leptos/src/components/two_way/two_way.html diff --git a/demo/src/components/two_way/two_way.rs b/demo-leptos/src/components/two_way/two_way.rs similarity index 100% rename from demo/src/components/two_way/two_way.rs rename to demo-leptos/src/components/two_way/two_way.rs diff --git a/demo/src/components/two_way/two_way.scss b/demo-leptos/src/components/two_way/two_way.scss similarity index 100% rename from demo/src/components/two_way/two_way.scss rename to demo-leptos/src/components/two_way/two_way.scss diff --git a/demo/src/decor.rs b/demo-leptos/src/decor.rs similarity index 100% rename from demo/src/decor.rs rename to demo-leptos/src/decor.rs diff --git a/demo/src/demo_pipes.rs b/demo-leptos/src/demo_pipes.rs similarity index 100% rename from demo/src/demo_pipes.rs rename to demo-leptos/src/demo_pipes.rs diff --git a/demo/src/demo_seed.rs b/demo-leptos/src/demo_seed.rs similarity index 100% rename from demo/src/demo_seed.rs rename to demo-leptos/src/demo_seed.rs diff --git a/demo/src/main.rs b/demo-leptos/src/main.rs similarity index 100% rename from demo/src/main.rs rename to demo-leptos/src/main.rs diff --git a/demo/style/components.generated.css b/demo-leptos/style/components.generated.css similarity index 100% rename from demo/style/components.generated.css rename to demo-leptos/style/components.generated.css diff --git a/demo/style/demo-swatches.css b/demo-leptos/style/demo-swatches.css similarity index 100% rename from demo/style/demo-swatches.css rename to demo-leptos/style/demo-swatches.css diff --git a/demo/style/main.css b/demo-leptos/style/main.css similarity index 100% rename from demo/style/main.css rename to demo-leptos/style/main.css diff --git a/demo-desktop/README.md b/demo-tauri/README.md similarity index 80% rename from demo-desktop/README.md rename to demo-tauri/README.md index cd4592e..7b3e6a2 100644 --- a/demo-desktop/README.md +++ b/demo-tauri/README.md @@ -1,8 +1,8 @@ # Desktop demo (Tauri) Thin [Tauri](https://v2.tauri.app/) 2 shell around the same Trunk / Leptos CSR SPA -in [`../demo/`](../demo/). No `invoke` commands: the webview loads the wasm -demo only. +in [`../demo-leptos/`](../demo-leptos/). No `invoke` commands: the webview loads +the wasm demo only. Stack: **Tauri → Leptos → rangular**. @@ -21,19 +21,19 @@ exe. The browser demo stays at ## Run locally ```bash -make demo-desktop +make demo-tauri ``` Opens a native window pointed at `http://127.0.0.1:4180/` (Trunk). If that port -is already serving the browser demo, the shell reuses it. +is already serving the Leptos demo, the shell reuses it. Local release build: ```bash -make demo-desktop-build +make demo-tauri-build ``` -Artifacts under `demo-desktop/src-tauri/target/release/bundle/`. +Artifacts under `demo-tauri/src/target/release/bundle/`. ## Linux dependencies diff --git a/demo-desktop/src-tauri/.gitignore b/demo-tauri/src/.gitignore similarity index 100% rename from demo-desktop/src-tauri/.gitignore rename to demo-tauri/src/.gitignore diff --git a/demo-desktop/src-tauri/Cargo.lock b/demo-tauri/src/Cargo.lock similarity index 99% rename from demo-desktop/src-tauri/Cargo.lock rename to demo-tauri/src/Cargo.lock index b69a8f0..170c360 100644 --- a/demo-desktop/src-tauri/Cargo.lock +++ b/demo-tauri/src/Cargo.lock @@ -2388,8 +2388,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] -name = "rangular-demo-desktop" -version = "0.1.0" +name = "rangular-demo-tauri" +version = "1.0.0" dependencies = [ "tauri", "tauri-build", diff --git a/demo-desktop/src-tauri/Cargo.toml b/demo-tauri/src/Cargo.toml similarity index 60% rename from demo-desktop/src-tauri/Cargo.toml rename to demo-tauri/src/Cargo.toml index fbd6731..0e535f1 100644 --- a/demo-desktop/src-tauri/Cargo.toml +++ b/demo-tauri/src/Cargo.toml @@ -1,18 +1,18 @@ [package] -name = "rangular-demo-desktop" -description = "Tauri shell for the rangular browser demo (Leptos CSR / wasm)" -version = "0.1.0" +name = "rangular-demo-tauri" +description = "Tauri shell for the rangular Leptos demo (CSR / wasm)" +version = "1.0.0" edition = "2021" license = "Apache-2.0" publish = false rust-version = "1.88" [lib] -name = "rangular_demo_desktop_lib" +name = "rangular_demo_tauri_lib" crate-type = ["staticlib", "cdylib", "rlib"] [[bin]] -name = "rangular-demo-desktop" +name = "rangular-demo-tauri" path = "src/main.rs" [build-dependencies] diff --git a/demo-desktop/src-tauri/build.rs b/demo-tauri/src/build.rs similarity index 100% rename from demo-desktop/src-tauri/build.rs rename to demo-tauri/src/build.rs diff --git a/demo-desktop/src-tauri/capabilities/default.json b/demo-tauri/src/capabilities/default.json similarity index 100% rename from demo-desktop/src-tauri/capabilities/default.json rename to demo-tauri/src/capabilities/default.json diff --git a/demo-desktop/src-tauri/icons/128x128.png b/demo-tauri/src/icons/128x128.png similarity index 100% rename from demo-desktop/src-tauri/icons/128x128.png rename to demo-tauri/src/icons/128x128.png diff --git a/demo-desktop/src-tauri/icons/128x128@2x.png b/demo-tauri/src/icons/128x128@2x.png similarity index 100% rename from demo-desktop/src-tauri/icons/128x128@2x.png rename to demo-tauri/src/icons/128x128@2x.png diff --git a/demo-desktop/src-tauri/icons/32x32.png b/demo-tauri/src/icons/32x32.png similarity index 100% rename from demo-desktop/src-tauri/icons/32x32.png rename to demo-tauri/src/icons/32x32.png diff --git a/demo-desktop/src-tauri/icons/64x64.png b/demo-tauri/src/icons/64x64.png similarity index 100% rename from demo-desktop/src-tauri/icons/64x64.png rename to demo-tauri/src/icons/64x64.png diff --git a/demo-desktop/src-tauri/icons/Square107x107Logo.png b/demo-tauri/src/icons/Square107x107Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square107x107Logo.png rename to demo-tauri/src/icons/Square107x107Logo.png diff --git a/demo-desktop/src-tauri/icons/Square142x142Logo.png b/demo-tauri/src/icons/Square142x142Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square142x142Logo.png rename to demo-tauri/src/icons/Square142x142Logo.png diff --git a/demo-desktop/src-tauri/icons/Square150x150Logo.png b/demo-tauri/src/icons/Square150x150Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square150x150Logo.png rename to demo-tauri/src/icons/Square150x150Logo.png diff --git a/demo-desktop/src-tauri/icons/Square284x284Logo.png b/demo-tauri/src/icons/Square284x284Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square284x284Logo.png rename to demo-tauri/src/icons/Square284x284Logo.png diff --git a/demo-desktop/src-tauri/icons/Square30x30Logo.png b/demo-tauri/src/icons/Square30x30Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square30x30Logo.png rename to demo-tauri/src/icons/Square30x30Logo.png diff --git a/demo-desktop/src-tauri/icons/Square310x310Logo.png b/demo-tauri/src/icons/Square310x310Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square310x310Logo.png rename to demo-tauri/src/icons/Square310x310Logo.png diff --git a/demo-desktop/src-tauri/icons/Square44x44Logo.png b/demo-tauri/src/icons/Square44x44Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square44x44Logo.png rename to demo-tauri/src/icons/Square44x44Logo.png diff --git a/demo-desktop/src-tauri/icons/Square71x71Logo.png b/demo-tauri/src/icons/Square71x71Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square71x71Logo.png rename to demo-tauri/src/icons/Square71x71Logo.png diff --git a/demo-desktop/src-tauri/icons/Square89x89Logo.png b/demo-tauri/src/icons/Square89x89Logo.png similarity index 100% rename from demo-desktop/src-tauri/icons/Square89x89Logo.png rename to demo-tauri/src/icons/Square89x89Logo.png diff --git a/demo-desktop/src-tauri/icons/StoreLogo.png b/demo-tauri/src/icons/StoreLogo.png similarity index 100% rename from demo-desktop/src-tauri/icons/StoreLogo.png rename to demo-tauri/src/icons/StoreLogo.png diff --git a/demo-desktop/src-tauri/icons/icon.icns b/demo-tauri/src/icons/icon.icns similarity index 100% rename from demo-desktop/src-tauri/icons/icon.icns rename to demo-tauri/src/icons/icon.icns diff --git a/demo-desktop/src-tauri/icons/icon.ico b/demo-tauri/src/icons/icon.ico similarity index 100% rename from demo-desktop/src-tauri/icons/icon.ico rename to demo-tauri/src/icons/icon.ico diff --git a/demo-desktop/src-tauri/icons/icon.png b/demo-tauri/src/icons/icon.png similarity index 100% rename from demo-desktop/src-tauri/icons/icon.png rename to demo-tauri/src/icons/icon.png diff --git a/demo-desktop/src-tauri/src/lib.rs b/demo-tauri/src/src/lib.rs similarity index 83% rename from demo-desktop/src-tauri/src/lib.rs rename to demo-tauri/src/src/lib.rs index a2c1b3b..5ffaf0e 100644 --- a/demo-desktop/src-tauri/src/lib.rs +++ b/demo-tauri/src/src/lib.rs @@ -1,4 +1,4 @@ -//! Thin Tauri 2 shell: loads the Trunk-built rangular demo SPA. No invoke commands. +//! Thin Tauri 2 shell: loads the Trunk-built rangular Leptos demo SPA. No invoke commands. use tauri::Manager; @@ -23,5 +23,5 @@ pub fn run() { Ok(()) }) .run(tauri::generate_context!()) - .expect("error while running rangular-demo-desktop"); + .expect("error while running rangular-demo-tauri"); } diff --git a/demo-desktop/src-tauri/src/main.rs b/demo-tauri/src/src/main.rs similarity index 68% rename from demo-desktop/src-tauri/src/main.rs rename to demo-tauri/src/src/main.rs index 27c6479..b270731 100644 --- a/demo-desktop/src-tauri/src/main.rs +++ b/demo-tauri/src/src/main.rs @@ -1,5 +1,5 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] fn main() { - rangular_demo_desktop_lib::run(); + rangular_demo_tauri_lib::run(); } diff --git a/demo-desktop/src-tauri/tauri.conf.json b/demo-tauri/src/tauri.conf.json similarity index 84% rename from demo-desktop/src-tauri/tauri.conf.json rename to demo-tauri/src/tauri.conf.json index 205e41c..4bfb13c 100644 --- a/demo-desktop/src-tauri/tauri.conf.json +++ b/demo-tauri/src/tauri.conf.json @@ -1,19 +1,19 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "rangular demo", - "version": "0.1.0", + "version": "1.0.0", "identifier": "net.interchouette.rangular-demo", "build": { "beforeDevCommand": { "script": "trunk serve --release --port 4180 --address 127.0.0.1", - "cwd": "../../demo" + "cwd": "../../demo-leptos" }, "devUrl": "http://127.0.0.1:4180", "beforeBuildCommand": { "script": "trunk build --release", - "cwd": "../../demo" + "cwd": "../../demo-leptos" }, - "frontendDist": "../../demo/dist" + "frontendDist": "../../demo-leptos/dist" }, "app": { "withGlobalTauri": false, @@ -33,7 +33,11 @@ }, "bundle": { "active": true, - "targets": ["deb", "appimage", "nsis"], + "targets": [ + "deb", + "appimage", + "nsis" + ], "icon": [ "icons/32x32.png", "icons/128x128.png", diff --git a/docker/Dockerfile b/docker/Dockerfile index eec43da..0ed0283 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -27,12 +27,12 @@ COPY Cargo.toml Cargo.lock ./ COPY crates ./crates COPY tests/fixtures ./tests/fixtures COPY docs/assets ./docs/assets -COPY demo ./demo +COPY demo-leptos ./demo-leptos ENV CARGO_TERM_COLOR=never \ CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse -RUN cd demo && trunk build --release +RUN cd demo-leptos && trunk build --release FROM ${NGINX_IMAGE} AS runtime @@ -41,7 +41,7 @@ USER root COPY docker/nginx.conf /etc/nginx/nginx.conf COPY --chmod=755 docker/entrypoint.sh /entrypoint.sh -COPY --from=builder /app/demo/dist /usr/share/nginx/html +COPY --from=builder /app/demo-leptos/dist /usr/share/nginx/html RUN chown -R nginx:nginx /usr/share/nginx/html USER nginx diff --git a/tests/fixtures/README.md b/tests/fixtures/README.md index 62fd84f..f70255f 100644 --- a/tests/fixtures/README.md +++ b/tests/fixtures/README.md @@ -8,17 +8,17 @@ This directory is the **corpus** that drives - Small **Angular-shaped** `.html` + component `.scss` files used by parser / SCSS / AOT / runtime tests. - They are **engine examples**, not the browser demo UI and not product UI. - Apps (and `demo/`) keep their own templates in their own trees. + Apps (and `demo-leptos/`) keep their own templates in their own trees. ## Layers | Layer | Role | | ----- | ---- | | `tests/fixtures/` | Template / SCSS examples for language growth and crate tests | -| `demo/` | Browser app that dogfoods rangular (independent panels) | +| `demo-leptos/` | Browser app that dogfoods rangular (independent panels) | | Product apps | Separate consumers; out of this tree | -No symlinks or path coupling between `demo/` and `tests/fixtures/`. +No symlinks or path coupling between `demo-leptos/` and `tests/fixtures/`. ## How to add a fixture