## Summary
- Redesign the docs site (landing page, code block styling, syntax highlighting, line numbers)
- Upgrade `effect-lens` to `2.0.2-rc.115` and the associated `effect`/`@effect/platform-browser` to `4.0.0-rc.115`
- Bump package version
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #77
## Summary
- Add comprehensive AI-oriented documentation for effect-view components, state, async rendering, queries, mutations, forms, streams, and runtime setup.
- Fix `Mutation.mutate` so each invocation consistently uses its own key instead of reusing the previous mutation key.
- Improve Vite Fast Refresh instrumentation for:
- User-defined component wrappers.
- Data-first and pipeline-based `withContext`/`withRuntime` entrypoints.
- Nested function handling.
- Stable hook signatures that preserve state for non-hook-related edits.
- Add regression tests for mutation keys and refresh behavior.
- Bump `effect-view` to `0.1.5` and `@effect-view/vite-plugin` to `0.0.2`.
## Testing
- `bun run --cwd packages/effect-view test -- src/Mutation.test.ts`
- 4 tests passed
- `bun run --cwd packages/vite-plugin test -- src/plugin.test.ts`
- 11 tests passed
The full test suite was not run.
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #76
## Summary
Add mount-lifetime layer provisioning through `Component.provide` and improve mutation state handling.
## Changes
- Add dual-form `Component.provide` support for direct and pipeline usage.
- Build provided layers once per mounted component and release them on unmount.
- Refactor mutation state to retain mutation keys and finalized results.
- Add non-blocking `mutateView` behavior and failure-state handling.
- Update `MutationForm` to use the new mutation state shape.
- Add Component and Mutation tests.
- Update documentation and the lens form example.
- Bump `effect-view` to `0.1.4`.
## Testing
- `bun run --cwd packages/effect-view test`
- 7 test files passed, 32 tests passed.
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #73
## Summary
- Upgrade Effect and effect-lens from beta to RC versions.
- Replace `@effect/language-service` with `@effect/tsgo`.
- Update TypeScript, VS Code, and package configuration for tsgo.
- Adapt `MutationForm`, `PubSub`, and fiber interruption code to RC APIs.
- Bump `effect-view` to `0.1.3` and update its published file set.
- Update documentation and examples from Effect v4 beta to RC.
## Testing
- `bun run lint:tsc`
- `bun run test` — 59 tests passed
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #72
# Add debounced form status API and upgrade Effect beta dependencies
## Summary
- Add `Form.useStatus` for debounced form validation and commit status.
- Expose `isValidating`, `isCommitting`, and `canCommit` as a presentation-friendly status object.
- Support configurable status debounce intervals, defaulting to 250 ms.
- Update form documentation and examples to use `Form.useStatus`.
- Bump `effect-view` to `0.1.2`.
- Upgrade Effect, `@effect/platform-browser`, and `effect-lens` to beta.103.
- Align the example workspace with Effect beta.103.
- Regenerate `bun.lock`.
## Validation
- `bun run lint:tsc`
- `bun run lint:biome`
- `bun run --cwd packages/effect-view test`
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #71
## Summary
- Replace auto-running `service` constructors with explicit `make(...).pipe(thenRun)` lifecycle pipelines.
- Add scoped, schedule-driven Query refreshes with `Query.withScheduledRefresh`.
- Upgrade the Effect v4 stack to beta 102.
- Add `@effect-view/vite-plugin` to the publish workflow.
- Update examples and documentation for the new APIs.
## Breaking changes
The following constructors have been replaced:
- `Query.service(options)` → `Query.make(options).pipe(Query.thenRun)`
- `QueryClient.service(options)` → `QueryClient.make(options).pipe(QueryClient.thenRun)`
- `MutationForm.service(options)` → `MutationForm.make(options).pipe(MutationForm.thenRun)`
- `LensForm.service(options)` → `LensForm.make(options).pipe(LensForm.thenRun)`
This separates object construction from starting its scoped background behavior.
## Scheduled Query refreshes
Queries can now be refreshed with any Effect `Schedule`:
```ts
const query = yield* Query.make(options).pipe(
Query.thenRun,
Query.withScheduledRefresh(Schedule.spaced("5 minutes")),
)
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #68
## Summary
- Rename `effect-fc-next` to `effect-view` and update package metadata, internal symbols, imports, and repository references.
- Promote the Effect 4 example to `packages/example` and move the legacy Effect 3 example to `packages/effect-fc-example`.
- Add `effect-view` to the npm publishing workflow.
- Update the Vite Fast Refresh plugin for `effect-view` and rename `effectViewPlugin()` to `effectView()`.
- Upgrade Effect, React, TypeScript, build tooling, and related dependencies.
- Refresh the documentation and homepage.
## Documentation
- Add a dedicated Async guide covering:
- Suspense fallbacks
- Hook ordering
- Memoization
- Structural prop equality
- Clarify synchronous and asynchronous component behavior.
- Document runner scope and service requirements.
- Explain stable construction of Query, Mutation, and Form instances.
- Expand focused Lens and Form examples, including curried focus helpers.
- Document the optional `@effect/platform-browser` dependency for window-focus query refresh.
- Improve the Forms guide structure and examples.
- Fix responsive homepage headline wrapping and update homepage copy.
## Notable API changes
- Package rename:
```diff
- effect-fc-next
+ effect-view
---------
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: #59
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [JS-DevTools/npm-publish](https://github.com/JS-DevTools/npm-publish) | action | major | `v3` -> `v4` |
---
### Release Notes
<details>
<summary>JS-DevTools/npm-publish (JS-DevTools/npm-publish)</summary>
### [`v4`](https://github.com/JS-DevTools/npm-publish/compare/v3...v4)
[Compare Source](https://github.com/JS-DevTools/npm-publish/compare/v3...v4)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzIuNSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMi41IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Reviewed-on: Thilawyn/effect-fc#9
Co-authored-by: Renovate Bot <renovate-bot@valverde.cloud>
Co-committed-by: Renovate Bot <renovate-bot@valverde.cloud>
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [actions/setup-node](https://github.com/actions/setup-node) | action | major | `v4` -> `v5` |
---
### Release Notes
<details>
<summary>actions/setup-node (actions/setup-node)</summary>
### [`v5`](https://github.com/actions/setup-node/compare/v4...v5)
[Compare Source](https://github.com/actions/setup-node/compare/v4...v5)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzIuNSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMi41IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Reviewed-on: Thilawyn/effect-fc#7
Co-authored-by: Renovate Bot <renovate-bot@valverde.cloud>
Co-committed-by: Renovate Bot <renovate-bot@valverde.cloud>
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://github.com/actions/checkout) | action | major | `v4` -> `v5` |
---
### Release Notes
<details>
<summary>actions/checkout (actions/checkout)</summary>
### [`v5`](https://github.com/actions/checkout/compare/v4...v5)
[Compare Source](https://github.com/actions/checkout/compare/v4...v5)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzIuNSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMi41IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Reviewed-on: Thilawyn/effect-fc#6
Co-authored-by: Renovate Bot <renovate-bot@valverde.cloud>
Co-committed-by: Renovate Bot <renovate-bot@valverde.cloud>