Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
469d4d1
Update pnpm-lock.yaml
steida Nov 30, 2025
11af2dc
Raise minimum Node.js version to 24 in all packages
steida Nov 30, 2025
bba73d6
Leverage using with Node 24
steida Dec 1, 2025
87b32fe
Update pnpm-lock.yaml
steida Dec 1, 2025
76babe6
Add resource management polyfills and docs
steida Dec 2, 2025
6b2ef92
Refactor resource management test structure
steida Dec 2, 2025
ad353f0
Add generator-based composition tests for Result
steida Dec 2, 2025
2c4fe0a
Update Prettier config for embedded SQL tags
steida Dec 2, 2025
ffcffb4
Fix SQL createAppTable formatting
steida Dec 2, 2025
88dabe9
Improve resource management docs
steida Dec 2, 2025
f46f25c
Update dependencies in pnpm-lock.yaml
steida Dec 3, 2025
45dae12
Replace interface-based symmetric encryption with direct function-bas…
steida Dec 3, 2025
34669e4
Update pnpm-lock.yaml
steida Dec 3, 2025
23402c1
Remove TimeDep from EvoluDeps and related usage
steida Dec 3, 2025
f05f23b
Bump the npm_and_yarn group across 1 directory with 4 updates
dependabot[bot] Dec 4, 2025
5a4d172
Raise minimum Node.js version to 24 in all packages
steida Nov 30, 2025
7268cde
Leverage using with Node 24
steida Dec 1, 2025
b4858fa
Update pnpm-lock.yaml
steida Dec 1, 2025
d1f817f
Add resource management polyfills and docs
steida Dec 2, 2025
7ef3b51
Refactor resource management test structure
steida Dec 2, 2025
8f47597
Add generator-based composition tests for Result
steida Dec 2, 2025
e4d0d7b
Update Prettier config for embedded SQL tags
steida Dec 2, 2025
f48fbbf
Fix SQL createAppTable formatting
steida Dec 2, 2025
216a294
Improve resource management docs
steida Dec 2, 2025
f4f0bbc
Update dependencies in pnpm-lock.yaml
steida Dec 3, 2025
953c1fb
Replace interface-based symmetric encryption with direct function-bas…
steida Dec 3, 2025
6ff8bb0
Update pnpm-lock.yaml
steida Dec 3, 2025
e01010a
Remove TimeDep from EvoluDeps and related usage
steida Dec 3, 2025
7a8b588
Update pnpm-lock.yaml
steida Dec 4, 2025
b76322e
Merge branch 'common-v8' of https://github.com/evoluhq/evolu into com…
steida Dec 4, 2025
ebcaa53
Update README files
steida Dec 4, 2025
e29928f
Update @types/node to version 24.0.0
steida Dec 4, 2025
7557dc2
Enable @typescript-eslint/unbound-method rule
steida Dec 4, 2025
f0bbebb
Add createObjectURL helper for safe blob URL management
steida Dec 4, 2025
240ac18
Update Expo and related dependencies in pnpm-lock.yaml
steida Dec 4, 2025
08347f0
Add link to blog post in TypeScript library section
steida Dec 4, 2025
ac90851
Expand generator-based Result composition tests
steida Dec 4, 2025
010145a
Remove unused import from Result.test.ts
steida Dec 4, 2025
325e1d3
Add performance test for createRandomBytes
steida Dec 4, 2025
2564bb0
Skip generator vs imperative performance test
steida Dec 4, 2025
1f1819f
Update comments on generator-based Result
steida Dec 5, 2025
2aa786a
Update dependencies in pnpm-lock.yaml
steida Dec 5, 2025
0528425
Refactor platform abstractions and re-export web in react-web
steida Dec 5, 2025
c9ac795
Disable JavaScript formatter in biome.json
steida Dec 6, 2025
0df8692
Rename LazyValue<T> to Lazy<T>
steida Dec 7, 2025
ce37b58
Update coding conventions in Copilot instructions
steida Dec 7, 2025
df7bca1
Remove "abstraction" from SQLite and Console docs
steida Dec 7, 2025
0c886fb
Update pnpm-lock.yaml
steida Dec 7, 2025
4be336d
WIP: Migrate from Worker to SharedWorker
steida Dec 7, 2025
686bbfd
Update dependencies in pnpm-lock.yaml
steida Dec 8, 2025
438116d
Fix build
steida Dec 8, 2025
a8e0453
Add explicit MessageEvent typing to event handlers
steida Dec 8, 2025
95dfad4
Update pnpm-lock.yaml
steida Dec 8, 2025
3108133
Add multitenant SQLite WASM test
steida Dec 8, 2025
025632d
Improve Task cancellation documentation links
steida Dec 8, 2025
aebd8a5
Add SQLite WASM worker lifecycle playground
steida Dec 8, 2025
6aac338
Refactor multitenant playground to use Evolu example
steida Dec 8, 2025
f9a53b1
Improve link styling and container classes in Alerts
steida Dec 8, 2025
0a60eb0
Revise dependency injection docs for clarity and error handling
steida Dec 8, 2025
b7b4e07
Clarify DI usage in Ref and Store documentation
steida Dec 8, 2025
fd35b0a
Add Resources reference link to docs
steida Dec 8, 2025
771a286
Add draft blog post on alternatives to Comlink
steida Dec 9, 2025
8abad4c
Update copilot-instructions.md
steida Dec 9, 2025
e948269
Add equality checks and tests to Ref and Store
steida Dec 9, 2025
82893f0
Replace "business" with "domain"
steida Dec 9, 2025
2557e49
Improve Result docs
steida Dec 9, 2025
d8e9668
Update pnpm and various dependencies
steida Dec 9, 2025
e823948
Rename TransferableError to UnknownError
steida Dec 9, 2025
9ba5442
Create transferable-error-rename.md
steida Dec 10, 2025
3b290f4
Remove dev comments from Evolu example files
steida Dec 10, 2025
eefdea9
WIP: Refactor worker architecture with platform-agnostic interfaces
steida Dec 10, 2025
5194e24
Update dependencies across packages
steida Dec 11, 2025
ff7fc71
Add standalone Brand usage example and tests
steida Dec 11, 2025
7e95a04
Add DisposableDep and stack dependency interfaces
steida Dec 11, 2025
0df63a0
Add GlobalErrorScope for unified global error handling
steida Dec 11, 2025
e78550a
WIP: SharedWorker
steida Dec 11, 2025
74245dd
Update deps
steida Dec 11, 2025
e8c4584
Update dependencies for Expo, Svelte, and Vue projects
steida Dec 12, 2025
4ecc8a3
fix: examples/react-nextjs/package.json to reduce vulnerabilities
snyk-bot Dec 12, 2025
17b35c2
fix: apps/web/package.json to reduce vulnerabilities
snyk-bot Dec 14, 2025
b65ddfe
Update project guidelines with TDD and enum conventions
steida Dec 16, 2025
b2814b9
Add and test decodeRle for robust RLE decoding
steida Dec 17, 2025
f191332
Revise and expand coding conventions documentation
steida Dec 19, 2025
780b6f0
Remove unused sections export and update privacy docs
steida Dec 19, 2025
7fe328d
Improve Result type inference for ok and err functions
steida Dec 19, 2025
5340043
Update docs headings from '###' to '##'
steida Dec 19, 2025
f060169
Revamp search indexing and UI for docs
steida Dec 19, 2025
f4aa7c2
Update Prettier SQL plugin configuration
steida Dec 19, 2025
db275f3
Update typedoc config with router and external links
steida Dec 19, 2025
998bb39
Update docs headings from ### to ##
steida Dec 19, 2025
14869f5
Rename typedoc script to build:docs
steida Dec 19, 2025
d0c10ab
Update deps
steida Dec 19, 2025
a88e382
Update doc headings from '###' to '##' in Types.ts
steida Dec 19, 2025
9373afa
Add Typed interface and typed factory for discriminated unions
steida Dec 19, 2025
e794858
Merge remote-tracking branch 'upstream/common-v8' into dev
miccy Dec 20, 2025
cb5b351
Add guideline to avoid pipe characters in first sentence
steida Dec 20, 2025
7769158
Refactor and simplify MDX file fixing script
steida Dec 20, 2025
9337864
Update Feature icon prop type in Features.tsx
steida Dec 20, 2025
eaa08aa
Remove unnecessary ESLint disable comment
steida Dec 20, 2025
a9bd934
Update ESLint config for .mts files and exceptions
steida Dec 20, 2025
f3d2c2d
Remove local publish script and npm script entry
steida Dec 20, 2025
98a4b6c
Refactor Array module: new helpers, breaking changes
steida Dec 20, 2025
67ab589
Update library docs and navigation for Array section
steida Dec 20, 2025
685cd9d
Update intro text in local-first guide
steida Dec 20, 2025
89b8e3c
Add empty sections export to docs page
steida Dec 20, 2025
91b971c
Update readonly example for ES2025 iterator chains
steida Dec 20, 2025
46fd0ea
Refactor toggle-examples-deps script for clarity and linting
steida Dec 20, 2025
6c64e85
Update issue templates
miccy Dec 21, 2025
fe1b09b
Merge remote-tracking branch 'upstream/common-v8' into dev
miccy Dec 21, 2025
e4fafe6
Update .github/ISSUE_TEMPLATE/bug_report.md
miccy Dec 23, 2025
44d2fe5
Merge branch 'dev' into dependabot/npm_and_yarn/examples/react-electr…
miccy Dec 23, 2025
1009fd8
Merge pull request #3 from miccy/dependabot/npm_and_yarn/examples/rea…
miccy Dec 23, 2025
6704457
Merge branch 'dev' into snyk-fix-10792663aeceb7182e61f4a77919949d
miccy Dec 23, 2025
b0d6935
Merge pull request #4 from miccy/snyk-fix-10792663aeceb7182e61f4a7791…
miccy Dec 23, 2025
7a14faa
Merge branch 'dev' into snyk-fix-b658d13147eb97b3e73c0a339ef562f8
miccy Dec 23, 2025
bac5663
Merge pull request #5 from miccy/snyk-fix-b658d13147eb97b3e73c0a339ef…
miccy Dec 23, 2025
08b454b
Merge branch 'dev' into miccy-issues
miccy Dec 23, 2025
af67b9a
Merge pull request #6 from miccy/miccy-issues
miccy Dec 23, 2025
0936343
Potential fix for code scanning alert no. 4: Incomplete multi-charact…
miccy Dec 23, 2025
eaa5a43
update: patch dependencies update
miccy Dec 23, 2025
b80fd81
update: minor deps
miccy Dec 23, 2025
a90b889
Updates Node.js and refactors core utilities
miccy Dec 23, 2025
1811013
update: pnpm install
miccy Dec 23, 2025
0fd4a28
fix(common): remove obsolete snapshots for commented out tests
miccy Dec 23, 2025
835bee7
fix: correct Uint8Array type usage and VSCode/Biome conflict
miccy Dec 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .changeset/array-module-refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
"@evolu/common": major
---

Refactored the Array module with breaking changes, better naming, and new helpers.

### Breaking Changes

**Removed `isNonEmptyReadonlyArray`** — use `isNonEmptyArray` instead. The function now handles both mutable and readonly arrays via overloads:

```ts
// Before
if (isNonEmptyReadonlyArray(readonlyArr)) { ... }
if (isNonEmptyArray(mutableArr)) { ... }

// After — one function for both
if (isNonEmptyArray(readonlyArr)) { ... }
if (isNonEmptyArray(mutableArr)) { ... }
```

**Renamed mutation functions** for consistency with the `...Array` suffix pattern:

- `shiftArray` → `shiftFromArray`
- `popArray` → `popFromArray`

### New Functions

- **`flatMapArray`** — maps each element to an array and flattens the result, preserving non-empty type when applicable
- **`concatArrays`** — concatenates two arrays, returning non-empty when at least one input is non-empty
- **`sortArray`** — returns a new sorted array (wraps `toSorted`), preserving non-empty type
- **`reverseArray`** — returns a new reversed array (wraps `toReversed`), preserving non-empty type
- **`spliceArray`** — returns a new array with elements removed/replaced (wraps `toSpliced`)

### Migration

```ts
// isNonEmptyReadonlyArray → isNonEmptyArray
-import { isNonEmptyReadonlyArray } from "@evolu/common";
+import { isNonEmptyArray } from "@evolu/common";

// shiftArray → shiftFromArray
-import { shiftArray } from "@evolu/common";
+import { shiftFromArray } from "@evolu/common";

// popArray → popFromArray
-import { popArray } from "@evolu/common";
+import { popFromArray } from "@evolu/common";
```
14 changes: 14 additions & 0 deletions .changeset/gentle-pumas-eat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@evolu/react-native": major
"@evolu/react-web": major
"@evolu/common": major
"@evolu/nodejs": major
"@evolu/react": major
"@evolu/vue": major
"@evolu/web": major
"@evolu/relay": major
---

# Update Node.js requirement

Updated minimum Node.js version from 22 to 24 (current LTS)
Comment on lines +12 to +14
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Zvažte rozšíření popisu změn o kontext refaktoringu.

Aktuální popis se zaměřuje pouze na upgrade Node.js. Podle kontextu PR zahrnuje tato verze značné refaktoringové práce (sjednocení Array API, nové typy chyb, správa zdrojů, vývoj veřejného API). Zvažte, zda by se těmito položkami mělo zmínit v popisu changésetu pro jasnost v changeloge.

Alternativně, pokud se opírá příslušné detaily na commit messages, je aktuální minimalistický přístup přijatelný za předpokladu, že commit zprávy jsou vhodně detailní.

🤖 Prompt for AI Agents
In .changeset/gentle-pumas-eat.md around lines 12–14, the changeset only
mentions the Node.js version bump and should either be expanded to include the
PR's refactoring context (unification of the Array API, introduction of new
error types, resource management improvements, and public API development) for
clearer changelogs, or you should verify and document that those details are
captured in the related commit messages; update the changeset to briefly list
those refactor items (or add a note pointing to the detailed commits) so release
notes are informative.

12 changes: 12 additions & 0 deletions .changeset/global-error-scope.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@evolu/common": minor
"@evolu/web": minor
"@evolu/nodejs": minor
---

Added `GlobalErrorScope` interface for platform-agnostic global error handling

- Added `GlobalErrorScope` interface representing execution contexts that capture uncaught errors and unhandled promise rejections
- Added `handleGlobalError` helper to forward errors to scope callbacks
- Added `createGlobalErrorScope` for browser windows in `@evolu/web`
- Added `createGlobalErrorScope` for Node.js processes in `@evolu/nodejs`
5 changes: 5 additions & 0 deletions .changeset/lazy-rename.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@evolu/common": major
---

Renamed `LazyValue<T>` to `Lazy<T>` for brevity
22 changes: 22 additions & 0 deletions .changeset/lovely-aliens-camp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
"@evolu/common": minor
---

Added `createObjectURL` helper for safe, disposable `URL.createObjectURL` usage using JS Resource Management so the URL is disposed automatically when the scope ends.

Example:

```ts
const handleDownloadDatabaseClick = () => {
void evolu.exportDatabase().then((data) => {
using objectUrl = createObjectURL(
new Blob([data], { type: "application/x-sqlite3" }),
);

const link = document.createElement("a");
link.href = objectUrl.url;
link.download = `${evolu.name}.sqlite3`;
link.click();
});
};
```
9 changes: 9 additions & 0 deletions .changeset/red-wings-itch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@evolu/react-native": major
"@evolu/react-web": major
"@evolu/common": major
"@evolu/web": major
---

- Merged `@evolu/common/local-first/Platform.ts` into `@evolu/common/Platform.ts`
- Made `@evolu/react-web` re-export everything from `@evolu/web`, allowing React users to install only `@evolu/react-web`
5 changes: 5 additions & 0 deletions .changeset/result-never-inference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@evolu/common": major
---

Changed `ok()` to return `Result<T, never>` and `err()` to return `Result<never, E>` for correct type inference.
5 changes: 5 additions & 0 deletions .changeset/smart-refs-store.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@evolu/common": minor
---

Added optional equality function to `Ref` and `ReadonlyStore` interface. `Ref.set` and `Ref.modify` now return `boolean` indicating whether state was updated. `Store` now uses `Ref` internally for state management.
11 changes: 11 additions & 0 deletions .changeset/spotty-coats-sort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@evolu/common": minor
---

Added Resource Management polyfills

Provides `Symbol.dispose`, `Symbol.asyncDispose`, `DisposableStack`, and `AsyncDisposableStack` for environments without native support (e.g., Safari). This enables the `using` and `await using` declarations for automatic resource cleanup.

Polyfills are installed automatically when importing `@evolu/common`.

See `Result.test.ts` for usage patterns combining `Result` with `using`, `DisposableStack`, and `AsyncDisposableStack`.
68 changes: 68 additions & 0 deletions .changeset/tough-cats-fall.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
"@evolu/common": major
"@evolu/web": major
---

Replaced interface-based symmetric encryption with direct function-based API

### Breaking Changes

**Removed:**

- `SymmetricCrypto` interface
- `SymmetricCryptoDep` interface
- `createSymmetricCrypto()` factory function
- `SymmetricCryptoDecryptError` error type

**Added:**

- `encryptWithXChaCha20Poly1305()` - Direct encryption function with explicit algorithm name
- `decryptWithXChaCha20Poly1305()` - Direct decryption function
- `XChaCha20Poly1305Ciphertext` - Branded type for ciphertext
- `Entropy24` - Branded type for 24-byte nonces
- `DecryptWithXChaCha20Poly1305Error` - Algorithm-specific error type
- `xChaCha20Poly1305NonceLength` - Constant for nonce length (24)

### Migration Guide

**Before:**

```ts
const symmetricCrypto = createSymmetricCrypto({ randomBytes });
const { nonce, ciphertext } = symmetricCrypto.encrypt(plaintext, key);
const result = symmetricCrypto.decrypt(ciphertext, key, nonce);
```

**After:**

```ts
const [ciphertext, nonce] = encryptWithXChaCha20Poly1305({ randomBytes })(
plaintext,
key,
);
const result = decryptWithXChaCha20Poly1305(ciphertext, nonce, key);
```

**Error handling:**

```ts
// Before
if (!result.ok && result.error.type === "SymmetricCryptoDecryptError") { ... }

// After
if (!result.ok && result.error.type === "DecryptWithXChaCha20Poly1305Error") { ... }
```

**Dependency injection:**

```ts
// Before
interface Deps extends SymmetricCryptoDep { ... }

// After - only encrypt needs RandomBytesDep
interface Deps extends RandomBytesDep { ... }
```

### Rationale

This change improves API extensibility by using explicit function names instead of a generic interface. Adding new encryption algorithms (e.g., `encryptWithAES256GCM`) is now straightforward without breaking existing code.
Comment on lines +1 to +68
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Changeset jasně popisuje breaking změnu kryptografického API; lint MD041 je spíše kosmetika

Text dobře vystihuje odstranění SymmetricCrypto* a přechod na explicitní encryptWithXChaCha20Poly1305 / decryptWithXChaCha20Poly1305, včetně migrace chyb (SymmetricCryptoDecryptErrorDecryptWithXChaCha20Poly1305Error) a DI (RandomBytesDep místo SymmetricCryptoDep). To je pro uživatele velice užitečné.

Upozornění markdownlintu MD041 („First line in a file should be a top-level heading“) je v kontextu Changeset souborů spíš falešný poplach – frontmatter na první řádce je v tomto formátu standard. Pokud ale chcete lint úplně utišit, můžete za frontmatter přidat jednoduchý nadpis (např. # Crypto API refactor), nebo v konfiguraci markdownlintu vyloučit .changeset/* soubory z MD041.

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

5-5: First line in a file should be a top-level heading

(MD041, first-line-heading, first-line-h1)

🤖 Prompt for AI Agents
In .changeset/tough-cats-fall.md around lines 1 to 68, markdownlint MD041 flags
the file because the first line is frontmatter rather than a top-level heading;
either add a simple H1 line (for example "# Crypto API refactor") immediately
after the frontmatter to satisfy MD041, or update the markdownlint configuration
to exclude .changeset/* from rule MD041 so changeset files are not linted for
this rule.

5 changes: 5 additions & 0 deletions .changeset/transferable-error-rename.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@evolu/common": major
---

Renamed `TransferableError` to `UnknownError` to better reflect its purpose as a wrapper for unknown errors caught at runtime, not just errors that need to be transferred between contexts
22 changes: 22 additions & 0 deletions .changeset/typed-discriminant.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
"@evolu/common": minor
---

Added `Typed` interface and `typed` factory for discriminated unions

Discriminated unions model mutually exclusive states where each variant is a distinct type. This makes illegal states unrepresentable — invalid combinations cannot exist.

```ts
// Type-only usage for static discrimination
interface Pending extends Typed<"Pending"> {
readonly createdAt: DateIso;
}
interface Shipped extends Typed<"Shipped"> {
readonly trackingNumber: TrackingNumber;
}
type OrderState = Pending | Shipped;

// Runtime validation with typed() factory
const Pending = typed("Pending", { createdAt: DateIso });
const Shipped = typed("Shipped", { trackingNumber: TrackingNumber });
```
16 changes: 16 additions & 0 deletions .changeset/worker-abstraction-refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
"@evolu/common": major
"@evolu/web": major
"@evolu/react-native": major
"@evolu/react-web": major
---

Refactored worker abstraction to support all platforms uniformly:

- Added platform-agnostic worker interfaces: `Worker<Input, Output>`, `SharedWorker<Input, Output>`, `MessagePort<Input, Output>`, `MessageChannel<Input, Output>`
- Added worker-side interfaces: `WorkerScope<Input, Output>` and `SharedWorkerScope<Input, Output>` that extend `GlobalErrorScope` for unified error handling
- Changed `onMessage` from a method to a property for consistency with Web APIs
- Made all worker and message port interfaces `Disposable` for proper resource cleanup
- Added default generic parameters (`Output = never`) for simpler one-way communication patterns
- Added complete web platform implementations: `createWorker`, `createSharedWorker`, `createMessageChannel`, `createWorkerScope`, `createSharedWorkerScope`, `createMessagePort`
- Added React Native polyfills for Workers and MessageChannel
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---
Comment on lines +1 to +8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Zvažte přidání výchozích štítků a kontextu specifického pro @evolu.

Šablona je funkční, ale vzhledem k rozsáhlým změnám v tomto PR (přejmenování API, transformace šifrování, abstractions pro workery) by mohla být obohacena o:

  1. Výchozí štítky (např. bug, triage) pro lepší třídění problémů
  2. Otázku na konkrétní balíček @evolu, který je ovlivněn
  3. Informaci o verzi @evolu balíčků

Namíchť generické šablony bude lépe sloužit k rychlejšímu třídění a diagnostice problémů specifických pro ekosystém.

🔎 Navrhovaná vylepšení
 ---
 name: Bug report
 about: Create a report to help us improve
 title: ''
-labels: ''
-assignees: ''
+labels: 'bug'
+assignees: ''
 
 ---
 
 **Describe the bug**
 A clear and concise description of what the bug is.
 
+**Affected package**
+Which @evolu package(s) are affected? (e.g., @evolu/react, @evolu/sqlite, @evolu/common)
+
+**Package version**
+What version of @evolu are you using?
+
 **To Reproduce**

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
.github/ISSUE_TEMPLATE/bug_report.md lines 1-8: the bug report template lacks
default labels and project-specific context for the @evolu ecosystem; update the
template to include default labels such as "bug" and "triage", add a question
field asking which @evolu package is affected, and add a field for the @evolu
package version(s) (or a dropdown/free-text) so incoming reports include
immediate triage metadata and package/version context for faster diagnosis.


**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
Loading
Loading