Added default type parameter 'any' to readJson<T> so users can call it without specifying a type when they don't need strict typing. This reduces boilerplate for quick JSON reads where type safety isn't required.
We receive a large number of AI-generated security reports and don't have the resources to review them all. This policy clarifies that such submissions will result in an automatic ban to protect our maintainers' time.
- Force process exit after TUI thread completes to prevent lingering processes
- Add 5-second timeout to worker shutdown to prevent indefinite hangs during cleanup
Earlier migrations moved data to new directories without updating JSON
fields. Now consistently derives all IDs from file paths:
- Projects: id from filename
- Sessions: id from filename, projectID from parent directory
- Messages: id from filename, sessionID from parent directory
- Parts: id from filename, messageID from parent directory
This ensures migrated data matches the actual file layout regardless of
stale values in JSON content.
Adds test cases for filtering sessions by directory, root sessions only,
start time, search terms, and result limits to ensure the listing
functionality works correctly for all filter combinations.
Previously sessions were only listed if they were created in the current
working directory or its subdirectories. Users can now view and switch
to any session in the project regardless of which directory they're in.
Refactored skill discovery to download skills in parallel instead of sequentially,
reducing load times when multiple skills need to be fetched from remote URLs.
Also updated AGENTS.md with guidance on using dev branch for diffs.
Implement the Agent Skills Discovery RFC to allow fetching skills from URLs:
- Add 'urls' field to config.skills for specifying skill registry URLs
- Create Discovery namespace in skill/discovery.ts with pull() function
- Download skills from /.well-known/skills/index.json endpoints
- Cache downloaded skills to ~/.cache/opencode/skills/
- Skip re-downloading existing files for efficiency
Users can now configure:
{
"skills": {
"urls": ["https://example.com/.well-known/skills/"]
}
}
Implements: https://github.com/cloudflare/agent-skills-discovery-rfc
Remove dynamic installation of built-in plugins. GitLab auth is now imported
directly as an internal plugin, eliminating network requests during startup
and simplifying the plugin loading logic.
Removes the need for test mocks since plugins are no longer
dynamically installed at runtime.
This ensures plugins install more reliably by writing dependencies directly
to package.json rather than relying on bun add commands which can fail
in certain environments. Also adds a small delay to ensure filesystem
operations complete before proceeding.
Simplifies the release process by publishing only the binary package to AUR,
eliminating the need to maintain separate source and binary build configurations.
Remove pull_request trigger and limit push trigger to dev branch to prevent
unnecessary workflow runs on feature branches and PRs. The workflow will now
only execute when dependency files change on the dev branch.
Allow users to authenticate when attaching to a remote OpenCode session by supporting basic auth via a password flag or OPENCODE_SERVER_PASSWORD environment variable
Users can now configure their own models configuration file by setting the OPENCODE_MODELS_PATH environment variable, providing more flexibility for testing and configuration.
- Add Skill.content() method to load skill template content from SKILL.md files
- Modify Command.list() to include skills as invokable commands
- Add 'skill' boolean property to Command.Info schema
- Update autocomplete to show skills with (Skill) label in slash commands
- Regenerate SDK to include skill property in Command type