fix: align build system with skills and add three-tier local CI #61

Open
mik-tf wants to merge 0 commits from development_mik into development
Owner

Align build system with makefile_helper and forge_ci skills, add three-tier local CI, and fix pre-existing clippy/fmt issues.

Changes

  • test-all.sh calls make targets instead of raw cargo commands
  • Add separate fmt-check and lint Makefile targets
  • CI test.yaml simplified to make test-all (test job: SKIP_SMOKE=1, integration job: full suite)
  • Add ci-local, ci-docker, ci-patch-deps.sh scripts
  • Fix clippy: collapsible_if, sort_by_key, duplicated cfg(test) attrs
  • cargo fmt on pre-existing formatting issues
  • buildenv.sh version 0.1.4 -> 0.1.5
  • Admin settings API (admin.settings.get/set RPC for AI key config)

Testing

  • 120 unit tests pass
  • fmt-check, clippy, check all clean
  • Release build succeeds

Closes #59
Closes #56


Consolidated from #60 into development_mik branch (includes latest development merged in).

Closes #63

Align build system with makefile_helper and forge_ci skills, add three-tier local CI, and fix pre-existing clippy/fmt issues. ## Changes - test-all.sh calls make targets instead of raw cargo commands - Add separate fmt-check and lint Makefile targets - CI test.yaml simplified to `make test-all` (test job: SKIP_SMOKE=1, integration job: full suite) - Add ci-local, ci-docker, ci-patch-deps.sh scripts - Fix clippy: collapsible_if, sort_by_key, duplicated cfg(test) attrs - cargo fmt on pre-existing formatting issues - buildenv.sh version 0.1.4 -> 0.1.5 - Admin settings API (admin.settings.get/set RPC for AI key config) ## Testing - 120 unit tests pass - fmt-check, clippy, check all clean - Release build succeeds Closes #59 Closes #56 --- Consolidated from #60 into `development_mik` branch (includes latest `development` merged in). Closes #63
feat: add admin.settings.get/set RPC for AI key configuration
Some checks failed
Test / test (pull_request) Failing after 1m44s
Test / integration (pull_request) Has been skipped
a23e321c5e
Adds persistent AI settings store at ~/hero/var/hero_books/settings.toml
with two new admin RPC endpoints:
- admin.settings.get: returns masked key status per provider (Groq, OpenRouter, SambaNova) + embedder URL
- admin.settings.set: updates keys, persists to disk, applies to process env

Settings are loaded and applied to env on startup (before AiClient::from_env),
with env vars as fallback when no saved setting exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: update CI deps.txt for hero_rpc_osis migration
Some checks failed
Test / test (pull_request) Failing after 1m49s
Test / integration (pull_request) Has been skipped
0f929f4a76
After the herolib_osis → hero_rpc_osis migration (development),
deps.txt was not updated. CI failed because the patching system
could not resolve hero_rpc_osis without hero_rpc.git listed.

- Add hero_rpc.git with hero_rpc_osis=packages/osis
- Remove stale herolib_osis entry from hero_lib.git line

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: complete herolib_osis → hero_rpc_osis migration in generated code
All checks were successful
Test / test (pull_request) Successful in 3m33s
Test / integration (pull_request) Successful in 8m40s
64d7417bde
The migration commit left 13 herolib_osis references in generated files:
- types_generated.rs: 2 import statements
- osis_server_generated.rs: 11 references (imports, trait impls, types)

Also fix 4 clippy collapsible_if warnings in settings.rs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: align build system with skills, add three-tier CI, fix clippy/fmt
Some checks failed
Test / test (pull_request) Successful in 7m29s
Test / integration (pull_request) Failing after 8m15s
67b7d0e870
Build system alignment (per makefile_helper skill):
- test-all.sh uses make targets (fmt-check, lint, check, test, build)
  instead of raw cargo commands
- Add separate fmt-check and lint targets (was combined in fmt)
- Add ci-local, ci-docker targets with scripts
- CI test.yaml simplified: test job runs SKIP_SMOKE=1 make test-all,
  integration job runs full make test-all
- ci-patch-deps.sh replaces inline deps patching in CI workflow

Three-tier local CI:
- make test-all: quick offline checks (~80% fidelity)
- make ci-local: no workspace config overrides (~95% fidelity)
- make ci-docker: same Docker image as CI (~100% fidelity)

Code fixes:
- Fix clippy: collapsible_if, sort_by_key, duplicated cfg(test) attrs
- Run cargo fmt on all pre-existing formatting issues
- Fix buildenv.sh version mismatch (0.1.4 -> 0.1.5)

Tested: fmt-check, clippy, check, 120 tests, release build — all pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: install Playwright browsers before make test-all in CI
All checks were successful
Test / test (pull_request) Successful in 12m30s
Test / integration (pull_request) Successful in 8m58s
b25708fb52
The integration job installed npm but not Playwright browsers. test-all.sh
detects npx is available and tries to run E2E tests, but the browser binary
is missing. Split into separate steps: install Playwright first, then run
make test-all.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
chore: remove unused cross-repo dep patching
Some checks failed
Test / test (pull_request) Failing after 3s
Test / integration (pull_request) Has been skipped
8b876b0487
The deps.txt + ci-patch-deps.sh system was never wired into the actual
CI workflow (build.yaml). Cross-repo deps are handled by workspace
.cargo/config.toml paths locally, and by git deps in CI directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update all embedder_url defaults to use Unix socket at /Users/despiegk/hero/var/sockets/hero_embedder.sock
- Remove environment variable dependencies for embedder_url configuration
- Update documentation and comments to reflect Unix socket path
- Remove unused imports and constants
- Update test assertions to match new socket path
- Simplify EmbedderConfig, VectorStoreConfig, and EmbeddingConfig defaults

This enables hero_books to communicate with hero_embedder via local Unix socket for better performance and security.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Verify hero_embedder socket exists before starting books service
- Fail fast with clear error messages if embedder is unavailable
- Add unix_socket utility module for socket URL handling
- Health check validates socket file existence and embedder responsiveness

This ensures hero_books won't start in a degraded state without embedder.

Note: The HeroEmbedderClient SDK from hero_embedder doesn't natively support
Unix socket URLs (unix://). A proper Unix socket client implementation is needed
to complete the socket-based communication.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Add hyperlocal and hyper dependencies for Unix socket HTTP communication
- Implement unix_socket module with utilities:
  - Client type for Unix socket HTTP requests
  - Socket URL detection and parsing
  - Socket file existence verification
  - URI conversion for hyperlocal format

This provides the foundation for making HeroEmbedderClient work over Unix sockets.
The next step is to create a wrapper that intercepts HeroEmbedderClient calls
and routes unix:// URLs through the Unix socket HTTP client.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Change hero_books socket from /tmp/hero_books.sock to /Users/despiegk/hero/var/sockets/hero_books.sock
- Ensures consistency with hero_embedder socket location
- Update startup banner to show correct socket path
- All sockets now centralized in hero/var/sockets directory

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
fix: update hero_embedder dep to include Unix socket SDK support
Some checks failed
Test / test (pull_request) Failing after 2s
Test / integration (pull_request) Has been skipped
792d06836e
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
merge: integrate development branch
Some checks failed
Test / test (pull_request) Failing after 4s
Test / integration (pull_request) Has been skipped
5daafb0bff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: update generated code and tests after development merge
Some checks failed
Test / test (pull_request) Failing after 4s
Test / integration (pull_request) Has been skipped
41d71ee98d
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SDK: replace reqwest HTTP with Unix socket transport (tokio UnixStream)
- UI: convert from Dioxus WASM to Axum+HTML admin panel using SDK
- UI: dark theme by default with tabbed navigation (Libraries, Collections, Import, Health)
- Server: fix Unix socket handler to properly serve HTTP via hyper 1.x
- CLI + Rhai: update to use SDK Unix socket client
- Makefile: unified `make run` starts server then UI, proper stop/cleanup
- buildenv.sh: add hero_books_ui binary and port 8884
- README: update architecture, ports, sockets, dependency graph
- build.rs: add template rebuild detection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update Rust toolchain to 1.93 and bump dependency versions
Some checks failed
Test / test (pull_request) Failing after 2s
Test / integration (pull_request) Has been skipped
9d6ad6d520
Upgrade rust-toolchain from 1.92.0 to 1.93 and update Cargo.lock
with latest crate versions (syn 2.0.117, clap 4.5.60, wasm-bindgen
0.2.111, security-framework 3.7.0, and others).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat: implement UI RPC proxy pattern — JS calls /rpc directly for all operations
Some checks failed
Test / test (pull_request) Failing after 3s
Test / integration (pull_request) Has been skipped
Test / test (push) Failing after 2s
Test / integration (push) Has been skipped
Build Linux / build-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Failing after 5m45s
37c440850b
Templates now load data client-side via rpc() JS helper instead of server-side Rust handlers.
SDK gains a public call() method for raw JSON-RPC forwarding.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Some checks failed
Test / test (pull_request) Failing after 3s
Test / integration (pull_request) Has been skipped
Test / test (push) Failing after 2s
Test / integration (push) Has been skipped
Build Linux / build-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Failing after 5m45s
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin development_mik:development_mik
git switch development_mik

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch development
git merge --no-ff development_mik
git switch development_mik
git rebase development
git switch development
git merge --ff-only development_mik
git switch development_mik
git rebase development
git switch development
git merge --no-ff development_mik
git switch development
git merge --squash development_mik
git switch development
git merge --ff-only development_mik
git switch development
git merge development_mik
git push origin development
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_books!61
No description provided.