diff --git a/fastapps/cli/commands/init.py b/fastapps/cli/commands/init.py index cb3bbf9..42254a6 100644 --- a/fastapps/cli/commands/init.py +++ b/fastapps/cli/commands/init.py @@ -320,7 +320,7 @@ def init_project(project_name: str, python_version: str = None): console.print(f"Using Python version: {python_version}") # Use uv init --bare to create a project with pyproject.toml - run_uv_command(uv_init_args, cwd=project_path.parent) + run_uv_command(uv_init_args, cwd=Path.cwd()) # Add FastApps dependency using uv add with version pinning console.print("Adding FastApps dependency...") @@ -339,13 +339,13 @@ def init_project(project_name: str, python_version: str = None): # Create empty __init__.py files console.print("Creating Python modules...") - (project_path / "server" / "__init__.py").write_text("") - (project_path / "server" / "tools" / "__init__.py").write_text("") - (project_path / "server" / "api" / "__init__.py").write_text("") + (project_path / "server" / "__init__.py").write_text("", encoding="utf-8") + (project_path / "server" / "tools" / "__init__.py").write_text("", encoding="utf-8") + (project_path / "server" / "api" / "__init__.py").write_text("", encoding="utf-8") # Create server/main.py console.print("Creating server...") - (project_path / "server" / "main.py").write_text(SERVER_MAIN_TEMPLATE) + (project_path / "server" / "main.py").write_text(SERVER_MAIN_TEMPLATE, encoding="utf-8") except FileNotFoundError as exc: console.print(f"[red][ERROR] {exc}[/red]") @@ -358,16 +358,16 @@ def init_project(project_name: str, python_version: str = None): # Create package.json console.print("Creating package.json...") - (project_path / "package.json").write_text(get_package_json(project_name)) + (project_path / "package.json").write_text(get_package_json(project_name), encoding="utf-8") # Create README.md console.print("Creating README.md...") readme_content = PROJECT_README.format(project_name=project_name) - (project_path / "README.md").write_text(readme_content) + (project_path / "README.md").write_text(readme_content, encoding="utf-8") # Create .gitignore console.print("Creating .gitignore...") - (project_path / ".gitignore").write_text(GITIGNORE) + (project_path / ".gitignore").write_text(GITIGNORE, encoding="utf-8") # Create fastapps.json with default CSP console.print("Creating fastapps.json...") @@ -381,7 +381,7 @@ def init_project(project_name: str, python_version: str = None): } } (project_path / "fastapps.json").write_text( - json.dumps(fastapps_config, indent=2) + json.dumps(fastapps_config, indent=2), encoding="utf-8" ) console.print( diff --git a/fastapps/templates/albums/widget/index.jsx b/fastapps/templates/albums/widget/index.jsx index 0f1ac5e..2bbb017 100644 --- a/fastapps/templates/albums/widget/index.jsx +++ b/fastapps/templates/albums/widget/index.jsx @@ -9,8 +9,8 @@ import AlbumCard from "./AlbumCard"; import "./index.css"; function AlbumsCarousel({ onSelect }) { - const widgetProps = useWidgetProps(); - const albums = widgetProps?.albums || []; + const { structuredContent } = useWidgetProps(); + const albums = structuredContent?.albums || []; const [emblaRef, emblaApi] = useEmblaCarousel({ align: "center", loop: false, @@ -117,16 +117,16 @@ function AlbumsCarousel({ onSelect }) { } function {ClassName}() { - const widgetProps = useWidgetProps(); + const { structuredContent, isError } = useWidgetProps(); const displayMode = useOpenAiGlobal("displayMode"); const [selectedAlbum, setSelectedAlbum] = React.useState(null); const maxHeight = useMaxHeight() ?? undefined; useEffect(() => { - if (widgetProps) { - console.log('Albums widget props:', widgetProps); + if (structuredContent) { + console.log('Albums widget props:', structuredContent); } - }, [widgetProps]); + }, [structuredContent]); const handleSelectAlbum = (album) => { setSelectedAlbum(album); diff --git a/fastapps/templates/carousel/widget/index.jsx b/fastapps/templates/carousel/widget/index.jsx index 09c5ff8..008ca1b 100644 --- a/fastapps/templates/carousel/widget/index.jsx +++ b/fastapps/templates/carousel/widget/index.jsx @@ -6,14 +6,14 @@ import Card from "./Card"; import "./index.css"; function {ClassName}() { - const widgetProps = useWidgetProps(); - const cards = widgetProps?.cards || []; + const { structuredContent, isError } = useWidgetProps(); + const cards = structuredContent?.cards || []; useEffect(() => { - if (widgetProps) { - console.log('Carousel widget props:', widgetProps); + if (structuredContent) { + console.log('Carousel widget props:', structuredContent); } - }, [widgetProps]); + }, [structuredContent]); const [emblaRef, emblaApi] = useEmblaCarousel({ align: "center", diff --git a/fastapps/templates/default/widget/index.jsx b/fastapps/templates/default/widget/index.jsx index 8de1186..d093a88 100644 --- a/fastapps/templates/default/widget/index.jsx +++ b/fastapps/templates/default/widget/index.jsx @@ -2,7 +2,7 @@ import React from 'react'; import { useWidgetProps } from 'fastapps'; export default function {ClassName}() { - const props = useWidgetProps(); + const { structuredContent, isError } = useWidgetProps(); return (
-

{props?.message || 'Welcome to FastApps'}

+

{structuredContent?.message || 'Welcome to FastApps'}

); } diff --git a/fastapps/templates/list/widget/index.jsx b/fastapps/templates/list/widget/index.jsx index 1a077ed..a85d983 100644 --- a/fastapps/templates/list/widget/index.jsx +++ b/fastapps/templates/list/widget/index.jsx @@ -4,14 +4,14 @@ import { PlusCircle, Star } from "lucide-react"; import "./index.css"; function {ClassName}() { - const widgetProps = useWidgetProps(); - const items = widgetProps?.items || []; + const { structuredContent, isError } = useWidgetProps(); + const items = structuredContent?.items || []; useEffect(() => { - if (widgetProps) { - console.log('List widget props:', widgetProps); + if (structuredContent) { + console.log('List widget props:', structuredContent); } - }, [widgetProps]); + }, [structuredContent]); return (
@@ -26,10 +26,10 @@ function {ClassName}() { >
- {widgetProps?.title || "List Title"} + {structuredContent?.title || "List Title"}
- {widgetProps?.description || "A list of items"} + {structuredContent?.description || "A list of items"}
diff --git a/pyproject.toml b/pyproject.toml index 6f525ab..800dc20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "fastapps" -version = "1.4.0" +version = "1.4.1" description = "A zero-boilerplate framework for building interactive ChatGPT widgets" readme = "README.md" requires-python = ">=3.11" diff --git a/uv.lock b/uv.lock index 6295a41..bb06d2a 100644 --- a/uv.lock +++ b/uv.lock @@ -631,7 +631,7 @@ wheels = [ [[package]] name = "fastapps" -version = "1.1.2" +version = "1.4.1" source = { editable = "." } dependencies = [ { name = "aiohttp" },