-
Notifications
You must be signed in to change notification settings - Fork 13
Live recommendations #119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
nikomatsakis
merged 10 commits into
symposium-dev:main
from
nikomatsakis:live-recommendations
Jan 31, 2026
Merged
Live recommendations #119
nikomatsakis
merged 10 commits into
symposium-dev:main
from
nikomatsakis:live-recommendations
Jan 31, 2026
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Factor out recommendation types (ComponentSource, Recommendation, When, etc.) into a separate symposium-recommendations crate. This allows external tools like the recommendations-validator in the symposium-recommendations repository to parse and validate recommendation files without depending on the full symposium-acp-agent crate. The new crate contains: - ComponentSource enum with all distribution types - Recommendation and When types for recommendation definitions - Parsing utilities for single and multiple recommendation files Runtime behavior (workspace evaluation, process resolution) remains in symposium-acp-agent via extension traits. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Move config storage from `~/.symposium` to platform-appropriate locations: - Linux: `~/.config/symposium/` - macOS: `~/Library/Application Support/symposium/` - Windows: `%APPDATA%\symposium\` Also adds a cache directory for recommendations and other cached data. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add remote_recommendations module that fetches recommendations from http://recommendations.symposium.dev/recommendations.toml - Cache downloaded recommendations locally for offline use - Fall back to cache if remote fetch fails - Refuse to start if no recommendations available (no cache + fetch failure) - Support user local recommendations file that merges with remote - ConfigAgent::new() is now async to support remote fetching at startup - Fix TOML serialization to produce compact inline format - Skip serializing empty/default fields (args, env, version, binary) - Add 30 second timeout to HTTP requests Local recommendations can be added at: - Linux: ~/.config/symposium/config/recommendations.toml - macOS: ~/Library/Application Support/symposium/config/recommendations.toml - Windows: %APPDATA%\symposium\config\recommendations.toml Co-authored-by: Claude <[email protected]>
…ations.toml Projects can now include a .symposium/recommendations.toml file to declare workspace-specific mods. These are merged with global and user recommendations, with the same `when` condition filtering. Co-Authored-By: Claude Opus 4.5 <[email protected]>
…dations - Add new Configuration page explaining /symposium:config usage and platform-specific config directories - Reorganize Recommending Mods page with TL;DR section showing quick examples for common use cases - Document all recommendation sources: local, workspace, crate metadata, and central registry - Add reference section explaining recommendation structure, source types, and conditions - Expand Publishing Mods with cargo binstall details and installation flow - Add "Adding Your Own Recommendations" section to Using Symposium page Co-Authored-By: Claude Opus 4.5 <[email protected]>
Adding eprintln statements to understand why test_load_recommendations_merges_local fails in CI but passes locally. The debug output will show: - The path being checked - Whether the file exists - The file content - Number of bytes read and mods parsed
In async Rust, the compiler may drop unused variables before await points. This caused test_load_recommendations_merges_local to fail in CI because the TempDir was dropped during the HTTP request, deleting the test files before load_local_recommendations could read them. Fix by explicitly using temp_dir after the await via drop(), which forces the compiler to keep it alive across the await point. Also apply the same fix to test_load_recommendations_caches_result.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a live recommendations system that fetches mod recommendations from a central server while also supporting local and workspace-specific recommendations.
Changes
Recommendation Sources
Symposium now loads recommendations from three sources, merged in order:
recommendations.symposium.devand cached locally for offline use.symposium/recommendations.tomlin the project rootPlatform-Specific Config
Configuration moved from
~/.symposiumto platform-appropriate locations:~/.config/symposium/~/Library/Application Support/symposium/%APPDATA%\symposium\Workspace Recommendations
Projects can now include a
.symposium/recommendations.tomlfile to declare workspace-specific mods for team members. These support the samewhenconditions as other recommendations:Documentation
Expanded user-facing docs with:
/symposium:configand config directoriesOther
symposium-recommendationscrate for external tooling (e.g., recommendations-validator)