-
-
Notifications
You must be signed in to change notification settings - Fork 2
breaking change policy
Applies to all four Plugin SDK languages: Go, TypeScript, Python, and Flutter/Dart.
All SDKs follow Semantic Versioning:
- MAJOR — breaking changes. Existing code may stop compiling or behave differently.
- MINOR — additive changes. New APIs, new options, backward-compatible.
- PATCH — bug fixes. No API changes.
A breaking change is anything that can break existing plugin code without any changes on the plugin author's side:
- Removing or renaming an exported symbol (function, type, class, method, constant)
- Changing a function or method signature (parameter types, order, return type)
- Changing data types in serialized formats (JSON field names, protobuf field numbers, wire format)
- Removing a previously documented behavior that plugins depend on
- Changing required vs. optional status of a parameter
Non-breaking changes (safe to ship as MINOR or PATCH):
- Adding new optional parameters with defaults
- Adding new exported symbols
- Adding new optional fields to serialized structs
- Fixing documented bugs
Breaking changes follow a minimum two-step process:
-
Deprecation notice — the symbol or behavior is marked deprecated in the current MINOR release. Documentation and language-native annotations (
@deprecated,//nolint, docstring warnings) are added. The old API still works. - Removal — the deprecated symbol is removed in the next MAJOR release, no sooner than one full MINOR version after deprecation.
Skipping the deprecation step is only allowed for critical security fixes. Any such skip must be called out explicitly in the release notes.
Every MAJOR version bump requires a MIGRATION.md file committed to the SDK repo before the release tag is created. The file must cover:
- Which symbols were removed or renamed, and what to use instead
- Which data types changed, with before/after examples
- A step-by-step upgrade checklist for plugin authors
- Any tooling or scripts that automate parts of the migration
All four SDKs (Go, TypeScript, Python, Flutter/Dart) maintain synchronized MAJOR versions. If one SDK ships a breaking change, all four SDKs bump to the same MAJOR version in the same release cycle.
MINOR and PATCH versions may diverge between SDKs based on individual language needs.
Before any MAJOR release, RC (release candidate) tags are required:
- Tag at least one RC:
sdk/go/v2.0.0-rc.1,sdk/ts/v2.0.0-rc.1, etc. - Allow a minimum of two weeks between first RC and final release.
- Publish RC docs and notify plugin authors via the changelog and release notes.
- Only promote to final after at least one plugin author has tested and confirmed compatibility.
Every SDK release, regardless of version bump type, requires a CHANGELOG entry in the SDK's CHANGELOG.md. Each entry must include:
- Version number and release date
- Summary of changes grouped by type: Breaking, Added, Changed, Fixed, Deprecated, Removed
- Links to relevant PRs or issues
CHANGELOG entries are mandatory. A release without one is incomplete.
- Exported identifiers follow Go naming conventions. Any rename is a breaking change.
- Module path changes (e.g.,
nself-org/cli/sdk/go/v2) are required for MAJOR bumps.
- Type exports are part of the public API. Narrowing a type is a breaking change.
- ESM/CJS format changes count as breaking.
- Public functions, classes, and module-level constants are part of the API.
- Dropping a supported Python version counts as a breaking change.
- Widget constructors and public method signatures are part of the API.
- Minimum Flutter SDK version bumps count as breaking if they drop a supported version.
| Rule | Requirement |
|---|---|
| Deprecation period | Min 1 MINOR version before removal |
| Migration guide | Required for every MAJOR bump |
| Cross-SDK MAJOR sync | All 4 SDKs bump together |
| RC tags | Required before any MAJOR release |
| RC window | Min 2 weeks before final |
| Changelog | Required for every release |
ɳSelf CLI v1.0.9. MIT licensed. Docs CC BY 4.0.
GitHub · Issues · Discussions · nself.org · docs.nself.org
Getting Started
Commands
- Commands, Overview
- Lifecycle: cmd-init · cmd-build · cmd-start · cmd-stop · cmd-restart · cmd-dev
- Monitoring: cmd-status · cmd-logs · cmd-health · cmd-urls · cmd-doctor · cmd-monitor · cmd-alerts · cmd-watchdog · cmd-dogfood
- Data: cmd-db · cmd-backup · cmd-dr · cmd-queue · cmd-webhooks
- Config: cmd-config · cmd-service · cmd-env · cmd-promote
- Networking: cmd-ssl · cmd-trust · cmd-dns-setup
- Security: cmd-security · cmd-secrets · cmd-waf
- Tenancy: cmd-tenant · cmd-billing
- Plugins: cmd-plugin · cmd-license
- AI: cmd-ai · cmd-claw · cmd-model
- Templates: cmd-template
- Utilities: cmd-exec · cmd-clean · cmd-reset · cmd-update · cmd-upgrade · cmd-version · cmd-admin · cmd-migrate · cmd-migrate-firebase · cmd-migrate-supabase · cmd-completion
Features
- Features, Overview
- Feature-Auth
- Feature-Storage
- Feature-Search
- Feature-Functions
- Feature-Email
- Feature-Monitoring
- Feature-Plugins
- Feature-ɳClaw, AI Assistant
- Feature-ɳChat, Messaging
- Feature-ɳTV, Media Player
- Feature-ɳFamily, Family Social
- Feature-ɳCloud, Managed Hosting
- Feature-Memory-Rooms, Knowledge Organization
- Feature-Agent-Dashboard, Agent Metrics
- Feature-Image-Generation, AI Image Generation
Configuration
- Configuration, Overview
- Config-Env-Vars
- Config-Postgres
- Config-Hasura
- Config-Auth
- Config-Nginx
- Config-Optional-Services
- Config-Custom-Services
- Config-System
Plugins (87 + 10 monitoring)
Free (25)
- plugin-backup
- plugin-content-acquisition
- plugin-content-progress
- plugin-cron
- plugin-donorbox
- plugin-feature-flags
- plugin-github
- plugin-github-runner
- plugin-invitations
- plugin-jobs
- plugin-link-preview
- plugin-mdns
- plugin-mlflow
- plugin-monitoring
- plugin-notifications
- plugin-notify
- plugin-paypal
- plugin-search
- plugin-shopify
- plugin-stripe
- plugin-subtitle-manager
- plugin-tokens
- plugin-torrent-manager
- plugin-vpn
- plugin-webhooks
Pro (62)
- plugin-access-controls
- plugin-activity-feed
- plugin-admin-api
- plugin-ai
- plugin-analytics
- plugin-auth
- plugin-backup-pro
- plugin-bots
- plugin-browser
- plugin-calendar
- plugin-cdn
- plugin-chat
- plugin-claw
- plugin-claw-budget
- plugin-claw-news
- plugin-claw-web
- plugin-cloudflare
- plugin-cms
- plugin-compliance
- plugin-cron-pro
- plugin-ddns
- plugin-devices
- plugin-documents
- plugin-donorbox-pro
- plugin-entitlements
- plugin-epg
- plugin-file-processing
- plugin-game-metadata
- plugin-geocoding
- plugin-geolocation
- plugin-google
- plugin-home
- plugin-idme
- plugin-knowledge-base
- plugin-linkedin
- plugin-livekit
- plugin-media-processing
- plugin-meetings
- plugin-moderation
- plugin-mux
- plugin-notify-pro
- plugin-object-storage
- plugin-observability
- plugin-paypal-pro
- plugin-photos
- plugin-podcast
- plugin-post
- plugin-realtime
- plugin-recording
- plugin-retro-gaming
- plugin-rom-discovery
- plugin-shopify-pro
- plugin-social
- plugin-sports
- plugin-stream-gateway
- plugin-streaming
- plugin-stripe-pro
- plugin-support
- plugin-tmdb
- plugin-voice
- plugin-web3
- plugin-workflows
Planned (26)
plugin-auditplugin-blogplugin-checkoutplugin-commerceplugin-drmplugin-exportplugin-flowplugin-importplugin-ldapplugin-mailgunplugin-mediaplugin-oauth-providersplugin-pagesplugin-postmarkplugin-rate-limitplugin-reportsplugin-samlplugin-schedulerplugin-sendgridplugin-ssoplugin-subscriptionplugin-thumbplugin-transcoderplugin-twilioplugin-wafplugin-watermark
Guides
- Guide-Production-Deployment
- Guide-SSL-Setup
- Guide-Multi-Tenancy
- Guide-Security-Hardening
- Guide-Monitoring-Setup
- Guide-Backup-Restore
- Guide-Custom-Services
- Guide-Migration-from-v1
Architecture
Reference
- API-Reference
- reference-error-codes, Error Codes
Licensing
Security
Brand
Operations
- operations/release-cascade, Release Cascade
- operations/self-healing, Self-Healing Schema
- operations/redis-tuning, Redis Pool Tuning
- operations/meilisearch-warmup, MeiliSearch Warm-Up
- operations/jwt-rotation, JWT Key Rotation
- operations/windows-wsl2-setup, Windows / WSL2 Setup
- operations/gemini-oauth-reauth, Gemini OAuth Reauth
Contributing
Admin
- USER-ACTION-QUEUE, Pending Admin Actions