BREAKING: Restructure from monolithic binary to modular plugin ecosystem Architecture changes: - Convert to Cargo workspace with crates/ directory - Create owlry-plugin-api crate with ABI-stable interface (abi_stable) - Move core binary to crates/owlry/ - Extract providers to native plugin crates (13 plugins) - Add owlry-lua crate for Lua plugin runtime Plugin system: - Plugins loaded from /usr/lib/owlry/plugins/*.so - Widget providers refresh automatically (universal, not hardcoded) - Per-plugin config via [plugins.<name>] sections in config.toml - Backwards compatible with [providers] config format New features: - just install-local: build and install core + all plugins - Plugin config: weather and pomodoro read from [plugins.*] - HostAPI for plugins: notifications, logging Documentation: - Update README with new package structure - Add docs/PLUGINS.md with all plugin documentation - Add docs/PLUGIN_DEVELOPMENT.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
47 lines
1023 B
TOML
47 lines
1023 B
TOML
[package]
|
|
name = "owlry-lua"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
description = "Lua runtime for owlry plugins - enables loading user-created Lua plugins"
|
|
keywords = ["owlry", "plugin", "lua", "runtime"]
|
|
categories = ["development-tools"]
|
|
|
|
[lib]
|
|
crate-type = ["cdylib"] # Compile as dynamic library (.so)
|
|
|
|
[dependencies]
|
|
# Plugin API for owlry (shared types)
|
|
owlry-plugin-api = { path = "../owlry-plugin-api" }
|
|
|
|
# ABI-stable types
|
|
abi_stable = "0.11"
|
|
|
|
# Lua runtime
|
|
mlua = { version = "0.10", features = ["lua54", "vendored", "send", "serialize"] }
|
|
|
|
# Plugin manifest parsing
|
|
toml = "0.8"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# Version compatibility
|
|
semver = "1"
|
|
|
|
# HTTP client for plugins
|
|
reqwest = { version = "0.12", features = ["blocking", "json"] }
|
|
|
|
# Math expression evaluation
|
|
meval = "0.2"
|
|
|
|
# Date/time for os.date
|
|
chrono = "0.4"
|
|
|
|
# XDG paths
|
|
dirs = "5.0"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|