The pre-v2 justfile drove a 5-crate workspace and 15 AUR packages, with
machinery to bump-all crates, iterate over aur/*/ subdirs, manage meta-
package versions, and run a release-crate pipeline parameterised by
crate name. None of that applies anymore — there is one crate and one
PKGBUILD.
Replaced with:
- build / release / release-minimal — release defaults to --features
full so dev builds match the AUR binary's feature set.
- run / run-daemon / run-debug — run-debug uses dev-logging feature.
- test — runs both feature axes (no-default-features and --features full)
so contributors can't silently break either build.
- check — cargo check on both axes + clippy on --features full.
- install-local — installs the man page too now.
- version / bump — single-crate operations, no 'crate' parameter.
- tag / push-tags — tags owlry-v<version> directly.
- aur-stage / aur-update / aur-publish / aur-status / aur-commit — all
hardcoded to aur/owlry/, no pkg parameter.
- aur-update fetches the tagged tarball, recomputes b2sum, regenerates
.SRCINFO. Errors with a clear message if the tag isn't pushed yet.
- aur-publish errors with a clone hint if aur/owlry/.git is missing.
- release-owlry — full pipeline: bump -> push -> tag -> push-tags ->
aur-update -> aur-commit -> push -> aur-publish. Drop-in replacement
for the old release-crate recipe.
Removed:
- build-ui / build-daemon / release-daemon — no separate daemon crate.
- show-versions / crate-version / bump-crate / bump-all — single crate.
- tag-crate — there's no per-crate concept anymore.
- aur-update-pkg / aur-update-all / aur-publish-pkg / aur-publish-all /
aur-test-pkg-by-name / release-crate — collapsed since only aur/owlry
exists.
- bump-meta — meta-bundles dropped in the v2 collapse.
aur-local-test now defaults its args to 'owlry' so 'just aur-local-test'
without arguments does the right thing.
Stages everything needed for the AUR 2.0.0 republish, without pushing
or publishing. The next checkpoint is a local makepkg test (task #2.5);
push/publish actions wait for explicit go-ahead (task #2.6).
aur/owlry/PKGBUILD:
- pkgver 1.0.10 -> 2.0.0; pkgrel 1
- depends drops owlry-core (now folded into owlry)
- optdepends cleaned: just cliphist, wl-clipboard, fd, mlocate — the
external tools providers shell out to. No more 11 plugin packages.
- build uses --features full (AUR ships everything compiled in; cargo
install consumers still get the minimal default)
- check runs cargo test --features full
- package installs single binary + renamed systemd units + docs/themes
- replaces/conflicts/provides cover 18 dropped packages: owlry-core,
owlry-lua, owlry-rune, 11 owlry-plugin-* (including the deferred
widgets per D20), 4 owlry-meta-*
aur/owlry/owlry.install (new):
- post_install message: how to start the daemon
- post_upgrade from 1.x: announce the systemd unit rename and tell the
user to disable old owlryd.service / enable new owlry.service. Includes
a banner with the v2 breaking changes (widgets gone, plugins built in)
- post_remove note: config stays
systemd/:
- owlryd.service -> owlry.service (per D15)
- owlryd.socket -> owlry.socket
crates/owlry/src/client.rs:
- connect_or_start invokes 'systemctl --user start owlry.service'
justfile:
- install-local installs renamed units
aur/owlry-{core,lua,rune}/:
- Tracked files (PKGBUILD, .SRCINFO, .gitignore) removed from main repo
- .gitignore entries added so the leftover local checkouts (still on
disk with their AUR-remote .git dirs) don't keep showing as untracked
- AUR remotes themselves unaffected; orphaning on aur.archlinux.org is
a separate manual step
aur/owlry/.SRCINFO regenerated via makepkg --printsrcinfo.
Workspace shrinks from 2 members to 1. The daemon, IPC layer,
providers, config, frecency store, GTK4 UI, and CLI now live in a
single `crates/owlry` crate exposing both a library (so integration
tests can reach daemon types) and a binary.
Structural changes:
- crates/owlry-core/ deleted; all source moved into crates/owlry/src/
via git mv to preserve history
- crates/owlry/src/lib.rs added with module declarations
- crates/owlry/src/main.rs rewritten as thin entry that uses owlry::*
- crates/owlry/src/providers/mod.rs absorbs owlry-core's providers/mod.rs
and pulls dmenu into the same module tree
- All owlry_core:: refs in src/ rewritten to crate::
- All owlry_core:: refs in tests/ rewritten to owlry::
- systemd/owlryd.service: ExecStart=/usr/bin/owlry -d (single binary)
- justfile: drop owlry-core/owlry-lua/owlry-rune build steps; daemon
runs via 'cargo run -p owlry -- -d'
- owlry version: 1.0.10 -> 2.0.0-dev
Tests: 178 still pass (156 lib + 14 ipc + 8 server). No test changes
needed — moved files retained their inline test modules.
Task #2 complete.
reqwest 0.13 defaults to rustls -> aws-lc-rs which requires cmake/nasm
in minimal build environments (AUR chroot). Switch all direct reqwest
users to native-tls (system OpenSSL) to fix clean chroot build failures
reported by users.
Affected crates: owlry-core, owlry-lua, owlry-rune
PKGBUILD: add openssl to depends for all three runtime packages
Also add scripts/aur-local-test for clean chroot testing workflow
Key fixes:
- aur-update-pkg uses correct per-crate tag URLs ({crate}-v{version})
- tag-crate creates per-crate tags instead of generic v{version}
- aur-stage handles embedded .git dirs in AUR subdirectories
- aur-commit stages all AUR files with .git workaround
- release-crate does full pipeline: bump → push → tag → AUR update → publish
- Removed stale release-core recipe that used wrong tag format
Meta-packages now use static 1.0.0 version, only bumping pkgrel
when dependencies change.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add lazy loading for result lists (load more on scroll/selection)
- Add non-blocking bookmark loading with JSON cache
- Add Firefox favicon extraction and caching
- Fix dynamic provider filtering (files/calc/websearch in All mode)
- Fix clippy warnings across core and plugins
- Add apex-neon theme
- Add aur/ to gitignore
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Plugins use _srcver (core version) for source tarball, separate from
pkgver (plugin version). This allows independent plugin versioning
while still downloading from the core release tag.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add show-versions, crate-version for version inspection
- Add bump-crate, bump-plugins for individual/batch version bumps
- Add aur-update-pkg, aur-publish-pkg for per-package AUR management
- Add aur-update-plugins, aur-publish-plugins for batch operations
- Add aur-status to show all AUR packages with versions
Supports independent versioning: core at 0.3.x, plugins at 0.1.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make meval, reqwest optional (behind 'lua' feature)
- Remove unused zbus and tokio dependencies
- Change default features from ["lua"] to []
- Update justfile install-local to use --no-default-features
Core binary now has 18 dependencies instead of 27 when built
without the lua feature, reducing compile time and binary size.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>