Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
6ce9409
feat: bootstrap standalone app
bcho Dec 27, 2025
36c973f
feat: poc of spawning shell process
bcho Dec 27, 2025
ea8fa97
feat: setup tailwind css
bcho Dec 27, 2025
eac8b03
feat(ui): port UI
bcho Dec 27, 2025
4f77921
feat(ui): compact sticky header on scroll
bcho Dec 27, 2025
d063dc1
fix: address svelte warnings
bcho Dec 28, 2025
9de309d
feat: setup db handler
bcho Dec 28, 2025
2edd95d
feat: implement db provider
bcho Dec 28, 2025
8b483e9
feat: load extension
bcho Dec 28, 2025
2465a96
feat: implement migrations support
bcho Dec 28, 2025
f19f7d4
feat: apply migrations
bcho Dec 28, 2025
6d7c1c3
fix: fix warnings
bcho Dec 28, 2025
48bc6c3
fix: pass down queue name
bcho Dec 28, 2025
a3c3ca7
feat: copy database path
bcho Dec 28, 2025
fda64ca
feat: implement sample worker
bcho Dec 28, 2025
048cb3e
feat: implement dev api provider
bcho Dec 28, 2025
d78712b
fix: data display fix batch 1
bcho Dec 28, 2025
b30d8bd
fix: data display fix batch 2
bcho Dec 28, 2025
4015f0c
feat: load 500 task runs only
bcho Dec 29, 2025
05a7140
fix: task info details fix
bcho Dec 29, 2025
2eb5434
feat: persist dev api server status in config
bcho Dec 29, 2025
a542cea
fix: wrong parameter in get task details
bcho Dec 29, 2025
1c405c4
feat: setup standalone app logo
bcho Dec 29, 2025
f406abf
feat: minor clean up and css fixes
bcho Dec 30, 2025
c592fcf
doc: init AGENTS.md
bcho Dec 30, 2025
56c9932
fix: remove unused impl
bcho Dec 30, 2025
3a9a1d0
doc: update agent instruction
bcho Dec 30, 2025
28844ba
fix: address code lint / format issues
bcho Dec 30, 2025
a71a685
fix: code issue fixes
bcho Dec 30, 2025
2d6d48a
ci: setup ci steps for submodules
bcho Dec 30, 2025
d6c5a11
ci: add required deps
bcho Dec 30, 2025
acb399a
feat: bootstrap absurd-sqlite-deno-runtime
bcho Dec 30, 2025
7cf9c20
fix: update standalone build steps
bcho Dec 30, 2025
bb1c87d
fix: drop direct dependency on better-sqlite3
bcho Dec 30, 2025
9995b79
fix: require debug_assertions for dev tool
bcho Dec 31, 2025
596bdb8
fix: update function signature
bcho Dec 31, 2025
4d02417
lint: use debug_assertions only
bcho Dec 31, 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
31 changes: 31 additions & 0 deletions .github/workflows/ci-absurd-sqlite-extension.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Absurd SQLite Extension CI

on:
pull_request:
paths:
- absurd-sqlite-extension/**
- Cargo.toml
- Cargo.lock
- .github/workflows/ci-absurd-sqlite-extension.yml

jobs:
lint-format-test:
name: Lint, Format, Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- name: Format check
run: cargo fmt -p absurd_sqlite_extension -- --check

- name: Lint
run: cargo clippy -p absurd_sqlite_extension -- -D warnings

- name: Unit tests
run: cargo test -p absurd_sqlite_extension
57 changes: 57 additions & 0 deletions .github/workflows/ci-standalone.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Standalone App CI

on:
pull_request:
paths:
- standalone/**
- Cargo.toml
- Cargo.lock
- .github/workflows/ci-standalone.yml

jobs:
lint-format-test:
name: Lint, Format, Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Bun
uses: oven-sh/setup-bun@v1

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libwebkit2gtk-4.1-dev \
libglib2.0-dev \
pkg-config

- name: Build SQLite extension
run: cargo build -p absurd_sqlite_extension

- name: Frontend install
working-directory: standalone
run: bun install --frozen-lockfile

- name: Frontend check
working-directory: standalone
run: bun check

- name: Backend format check
run: cargo fmt -p AbsurdSQLite -- --check

- name: Backend lint
run: cargo clippy -p AbsurdSQLite -- -D warnings

- name: Backend tests
run: cargo test -p AbsurdSQLite
33 changes: 33 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Absurd-SQLite

Absurd-SQLite is a SQLite based durable execution engine designed for personal / homelab / edge computing environments.

This project is based on the PostgreSQL implementation from [absurd](https://github.com/earendil-works/absurd).

## Key Concepts

A task is subdivided into steps that act as checkpoints. Tasks can suspend (for sleep or events) and resume without data loss.
State data is stored in the SQLite tables below:

- Queues: `absurd_queues` scopes all durable execution by `queue_name`.
- Tasks: `absurd_tasks` stores task definitions, parameters, headers, retry/cancel info, idempotency keys, and task state.
- Runs: `absurd_runs` represents per-attempt execution for a task with claim/lease timing, availability, and results/failures.
- Checkpoints: `absurd_checkpoints` tracks named task checkpoints with optional state and run ownership.
- Events: `absurd_events` stores emitted events with JSON payloads scoped by queue and event name.
- Waits: `absurd_waits` records task steps waiting on events or timeouts.

To interact with the system, a SQLite extension is provided and exposed various SQL functions.

## Repository Structure

- `absurd-sqlite-extension`: Core Rust crate providing the SQLite extension, engine logic, and schema migrations.
- `standalone`: Tauri + SvelteKit desktop app.
- `sdks`: Client SDKs for different languages.
- `samples`: Example applications demonstrating usage.

## Development

General rule: please make sure to lint, format, and test code after making changes. No need to ask for human confirmation
before running linters / formatters / tests.

Please follow the sub-project README.md / AGENTS.md for detailed instructions.
Loading