Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
34f270d
[Migration] Core: Update Sycamore 0.8→0.9 API integration
afidegnum Nov 18, 2025
758d4b6
[Migration] Examples: Migrate all examples to Sycamore 0.9
afidegnum Nov 18, 2025
1bca1ba
[Migration] Website: Update website components to Sycamore 0.9
afidegnum Nov 18, 2025
ef2dc7f
[Migration] CLI & Macros: Update build tools to Sycamore 0.9
afidegnum Nov 18, 2025
35298ea
[Migration] Infrastructure: Add migration automation and reports
afidegnum Nov 18, 2025
3e18478
[Migration] Backup: Add remaining Cargo.toml backup files
afidegnum Nov 18, 2025
75d0d37
test: signed commit
afidegnum Nov 18, 2025
c614abc
[Migration] Macros: Update perseus-macro for Sycamore 0.9.2
afidegnum Nov 27, 2025
4a0636c
[Migration] Translator: Update t! and link! macros for Sycamore 0.9.2
afidegnum Nov 27, 2025
6250af4
[Migration] Complete Sycamore 0.9.2 upgrade
afidegnum Nov 28, 2025
42e4574
docs: Update CHANGELOG for Sycamore 0.9.2 migration
afidegnum Nov 28, 2025
60ca390
ci: Add workflow_dispatch trigger for manual CI runs
afidegnum Nov 28, 2025
61bdf57
ci: Add update-v5.0 branch to CI triggers
afidegnum Nov 28, 2025
ac32848
[Migration] Deps: Fix dependency upgrades and optimize build resources
afidegnum Nov 28, 2025
f80babb
chore: Remove .claude directory and add to gitignore
afidegnum Nov 28, 2025
b57da6c
chore: Remove all shell scripts and add to gitignore
afidegnum Nov 28, 2025
3c3d7a6
chore: Remove all backup files and add to gitignore
afidegnum Nov 28, 2025
661d4ce
fix: Update PanicInfo to PanicHookInfo for Rust 1.82+
afidegnum Nov 28, 2025
9b43b14
fix: Remove unsafe from RootHandle::dispose() calls
afidegnum Nov 28, 2025
4e7b7ca
chore: Remove rustfmt.toml configuration file
afidegnum Nov 28, 2025
06b12a6
fix: Remove Cargo.lock from gitignore and commit it
afidegnum Nov 28, 2025
299232d
chore: Clean up unused imports and update CI
afidegnum Nov 29, 2025
ad11600
fix: Add better error message for reactor context not found
afidegnum Nov 29, 2025
0bfa7d2
fix: Remove unused imports
afidegnum Nov 29, 2025
34529c4
fix: update provide_context call for Sycamore 0.9.2 compatibility
afidegnum Nov 29, 2025
2cd25c5
fix: ensure reactor context accessible in child scopes
afidegnum Nov 29, 2025
3d5ebc2
fix: update code examples for Sycamore 0.9.2 compatibility
afidegnum Nov 29, 2025
b19efe7
chore: update package versions from 0.4.3 to 0.5.0
afidegnum Nov 29, 2025
943611e
fix: update create_root to create_child_scope for Sycamore 0.9.2
afidegnum Nov 29, 2025
9bf8c3a
fix(cli): update ureq call in test utilities
afidegnum Nov 29, 2025
cb9f96b
fix(tests): update set_headers test and bump deps
afidegnum Nov 30, 2025
f40321f
fix: resolve hydration issues with Sycamore 0.9.2
afidegnum Dec 5, 2025
5321af4
test: trigger workflow for testing
afidegnum Dec 6, 2025
0c21b23
fix: enable axum feature for tiny example
afidegnum Dec 6, 2025
da1628e
fix: add missing server integration features to all examples
afidegnum Dec 6, 2025
4fb7683
fix: resolve view reactivity and widget rendering issues
afidegnum Dec 11, 2025
754af78
fix: resolve server integration feature conflicts
afidegnum Dec 11, 2025
2b54786
fix: temporarily ignore deploy test and fix doctest
afidegnum Dec 11, 2025
0cb209c
chore: format all code with cargo fmt
afidegnum Dec 12, 2025
b19a49e
fix: resolve Sycamore 0.9.2 compatibility issues in examples
afidegnum Dec 12, 2025
088ab56
fix: resolve remaining Sycamore 0.9.2 issues in idb_freezing and website
afidegnum Dec 12, 2025
ba7bd82
fix: remove dynamic integration feature switching in tests
afidegnum Dec 12, 2025
ac186f5
fix: add missing wait_for_checkpoint after thaw button clicks
afidegnum Dec 12, 2025
b87dea7
Revert "fix: add missing wait_for_checkpoint after thaw button clicks"
afidegnum Dec 12, 2025
b106a83
fix: wait for elements instead of checkpoints after thaw operation
afidegnum Dec 12, 2025
8ede7e1
fix: properly wait for URL change after thaw operation
afidegnum Dec 12, 2025
6f203f8
fix: create reactor context inside render_to_string for error views
afidegnum Dec 12, 2025
3bac8dc
fix(ci): add geckodriver installation and WASM target to E2E tests
afidegnum Dec 12, 2025
e1ae2f9
fix(cli): catch minify-js panics and fall back to unminified JS
afidegnum Dec 12, 2025
4e72040
style: apply cargo fmt to fix formatting issues
afidegnum Dec 12, 2025
2f26554
fix: create global state signals in root scope to survive navigation
afidegnum Dec 17, 2025
88fac78
ci: switch E2E tests from geckodriver to chromedriver
afidegnum Dec 17, 2025
59d9f91
fix(ci): use browser-actions/setup-chrome for reliable chromedriver i…
afidegnum Dec 17, 2025
a9a3ca2
fix(test): update Chrome headless options for modern Chrome
afidegnum Dec 17, 2025
0d7a567
fix(test): wait for server to be ready before running E2E tests
afidegnum Dec 18, 2025
c7b1a85
style: apply cargo fmt to test.rs
afidegnum Dec 18, 2025
a5ab490
fix(cli): handle GitHub API rate limiting for wasm-opt version
afidegnum Dec 18, 2025
16b6b69
fix(test): increase wait_for_checkpoint timeout to 120 seconds
afidegnum Dec 18, 2025
eb70dd5
fix(state): preserve reactive state across client-side navigation
afidegnum Dec 24, 2025
0ee5abd
feat(components): add Link component for client-side navigation
afidegnum Dec 24, 2025
9e7982c
fix(examples): update capsules and index_view to use Link component
afidegnum Dec 24, 2025
c6ca894
fix(examples): update remaining examples to use Link component
afidegnum Dec 24, 2025
1bc781e
fix(test): correct checkpoint expectations for cross-locale navigation
afidegnum Dec 24, 2025
5933969
fix(test): add checkpoint waits after client-side navigation in capsules
afidegnum Dec 24, 2025
fcc2230
fix(compat): fix WASM client crashes with Sycamore 0.9.2
afidegnum Dec 25, 2025
379d086
style: apply rustfmt formatting
afidegnum Dec 25, 2025
2695a36
fix(cli): fix relative path bug in serve_exported
afidegnum Dec 25, 2025
e0938b0
docs: add Perseus 0.5.x documentation with Sycamore 0.9.2 syntax
afidegnum Dec 26, 2025
cefbf23
docs: update README and CHANGELOG for v0.5.0 release
afidegnum Dec 26, 2025
790990b
update workflow
afidegnum Jan 22, 2026
3d9c66b
new update
afidegnum Jan 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 9 additions & 0 deletions .actrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Act configuration for Perseus project
# Use Rust image that has cargo pre-installed
-P ubuntu-latest=rust:latest

# Reuse containers to speed up repeated runs
--reuse

# Use bind mount for performance
--use-gitignore=false
4 changes: 2 additions & 2 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[build]
rustflags = [ "--cfg", "engine" ]
rustdocflags = [ "--cfg", "engine" ]
rustflags = ["--cfg", "engine"]
rustdocflags = ["--cfg", "engine"]
35 changes: 16 additions & 19 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- update-v5.0
pull_request:

jobs:
Expand Down Expand Up @@ -69,6 +70,8 @@ jobs:
- run: rustup target add wasm32-unknown-unknown
- name: Run CLI tests
run: bonnie test cli
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# We now have a separate job for each example's E2E testing because they all take a while, we may as well run them in parallel
# The job for each E2E test is exactly the same except for a minor difference, so we'll use a matrix based on listing the subdirectories
e2e-example-test:
Expand Down Expand Up @@ -145,26 +148,20 @@ jobs:
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}

# # Also cache the apt packages we need for testing
# - uses: awalsh128/cache-apt-pkgs-action@latest
# with:
# packages: firefox
# version: 1.0
# Setup Chrome and ChromeDriver for E2E tests
- name: Setup Chrome and ChromeDriver
uses: browser-actions/setup-chrome@v1
with:
chrome-version: stable
install-chromedriver: true

# # And finally cache Geckodriver itself
# - uses: actions/cache@v3
# id: geckocache
# with:
# path: |
# ~/.geckodriver
# # The cache should be OS-specific
# key: ${{ runner.os }}-geckodriver
# - name: Install Geckodriver
# if: steps.geckocache.outputs.cache-hit != 'true'
# run: wget -O ~/geckodriver-archive https://github.com/mozilla/geckodriver/releases/download/v0.32.0/geckodriver-v0.32.0-linux64.tar.gz && tar -xvzf ~/geckodriver-archive -C ~/ && mv ~/geckodriver ~/.geckodriver && chmod +x ~/.geckodriver
- run: sudo apt update && sudo apt install firefox
- run: rustup target add wasm32-unknown-unknown

- name: Run Firefox WebDriver
run: geckodriver &
- name: Run Chrome WebDriver
run: chromedriver --port=4444 &
- name: Wait for Chromedriver to start
run: sleep 3
- name: Run E2E tests for example ${{ matrix.name }} in category ${{ matrix.type }}
run: bonnie test example-all-integrations ${{ matrix.type }} ${{ matrix.name }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@
/target_engine
/target_engine_clientdoc
/target_wasm
Cargo.lock
pkg/
.tribble/
.idea/
target_engine/
target_wasm/
dist/
.claude/
AGENTS.md
doc/
*.sh
*.backup
89 changes: 89 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,95 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## [0.5.0](https://github.com/framesurge/perseus/compare/v0.4.3...v0.5.0) (2025-01-XX)

### ⚠ BREAKING CHANGES

This release upgrades Perseus from Sycamore 0.8.x to Sycamore 0.9.2, bringing significant API improvements but requiring migration of existing code.

#### View Function Signature Changes

```rust
// Before (0.4.x with Sycamore 0.8)
fn my_page<G: Html>(cx: Scope) -> View<G> {
view! { cx, p { "Hello" } }
}

// After (0.5.0 with Sycamore 0.9.2)
fn my_page() -> View {
view! { p { "Hello" } }
}
```

#### Signal API Changes

```rust
// Before
let count = cx.create_signal(0);
state.items.modify().push(item);

// After
let count = create_signal(0);
state.items.update(|items| items.push(item));
```

#### Reactor Access Changes

```rust
// Before
let reactor = Reactor::<G>::from_cx(cx);

// After
let reactor = Reactor::<BrowserNodeType>::from_cx();
```

### Features

* **components:** Add `Link` component for client-side navigation ([0ee5abd](https://github.com/framesurge/perseus/commit/0ee5abd8))
```rust
// New way to create internal links
Link(to = "/about") { "About Us" }
```
* **docs:** Add complete 0.5.x documentation with Sycamore 0.9.2 syntax ([e0938b0](https://github.com/framesurge/perseus/commit/e0938b06))
* **docs:** Add comprehensive migration guide from 0.4.x to 0.5.x

### Bug Fixes

* **compat:** Fix WASM client crashes with Sycamore 0.9.2 ([fcc2230](https://github.com/framesurge/perseus/commit/fcc2230f))
* **state:** Preserve reactive state across client-side navigation ([eb70dd5](https://github.com/framesurge/perseus/commit/eb70dd5e))
* **state:** Create global state signals in root scope to survive navigation ([2f26554](https://github.com/framesurge/perseus/commit/2f26554a))
* **cli:** Fix relative path bug in serve_exported ([2695a36](https://github.com/framesurge/perseus/commit/2695a368))
* **cli:** Handle GitHub API rate limiting for wasm-opt version checks ([a5ab490](https://github.com/framesurge/perseus/commit/a5ab4900))
* **cli:** Catch minify-js panics and fall back to unminified JS ([e1ae2f9](https://github.com/framesurge/perseus/commit/e1ae2f96))
* **hydration:** Fix hydration issues with new Sycamore API ([f40321f](https://github.com/framesurge/perseus/commit/f40321f3))
* **context:** Ensure reactor context accessible in child scopes ([2cd25c5](https://github.com/framesurge/perseus/commit/2cd25c54))
* **compat:** Update PanicInfo to PanicHookInfo for Rust 1.82+ ([661d4ce](https://github.com/framesurge/perseus/commit/661d4ce9))

### Code Refactoring

* Update all examples to use Sycamore 0.9.2 syntax
* Update website components for Sycamore 0.9.2 compatibility
* Remove deprecated `Scope` parameter from all view functions
* Replace `<G: Html>` generics with concrete `View` type

### Dependencies

* `sycamore` → 0.9.2
* `sycamore-router` → 0.9.2

### Migration Guide

For detailed migration information, see the [migration guide](https://framesurge.sh/perseus/en-US/docs/migrating) or the `docs/0.5.x/en-US/migrating.md` file.

Key changes:

1. **Remove Scope parameters** from all view functions
2. **Remove `<G: Html>` generics** - use `View` instead of `View<G>`
3. **Update view! macro** - remove `cx` as first argument
4. **Use Link component** for internal navigation instead of `a(href=...)`
5. **Update signal access** - use `create_signal(value)` as free function
6. **Update Reactor access** - use `Reactor::<BrowserNodeType>::from_cx()`

### [0.4.3](/home/arctic-hen7/me/.main-mirror.git/compare/v0.4.2...v0.4.3) (2024-07-19)


Expand Down
Loading