Files
PiCloud/crates/shared/src/version.rs
MechaCat02 1dd28dda07 chore(v1.1.8): version bumps + SDK schema 1.8 -> 1.9
Workspace package version 1.1.7 -> 1.1.8.

shared::version::SDK_VERSION 1.8 -> 1.9 with the additive surface
note: users::* (CRUD, login/verify/logout, email verification,
password reset, invitations, string-tagged roles) added to the
Services bundle; topic auth_mode 'session' added server-side.

Dashboard package version 0.13.0 -> 0.14.0.

@picloud/client does NOT bump in v1.1.8 — the auth.login/logout
helpers it already ships call dev-defined endpoints; nothing to
change in the client.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 15:04:10 +02:00

93 lines
4.7 KiB
Rust

//! Version constants for PiCloud's compatibility surfaces.
//!
//! See [`docs/versioning.md`](../../../../docs/versioning.md) for the
//! full scheme. The product version is sourced from the workspace
//! package version; the four surface versions live in this module
//! and are bumped under the rules in that doc.
/// Product version (e.g. `"0.2.0"`). Sourced from this crate's
/// `Cargo.toml` so the workspace-inherited package version is the
/// single point of update.
pub const PRODUCT_VERSION: &str = env!("CARGO_PKG_VERSION");
/// Rhai SDK version, in `"major.minor"` form. Scripts read this from
/// `ctx.sdk_version` for feature detection. Bump rules:
/// * patch (`1.x.0`): doc-only, no script-observable change
/// * minor (`1.0 → 1.1`): added functions / fields; existing
/// scripts must still run unchanged
/// * major (`1 → 2`): removed, renamed, retyped, restricted
///
/// 1.1 additions: `ctx.request.params`, `ctx.request.query`,
/// `ctx.request.rest`.
///
/// 1.2 additions (v1.1.1): `kv::collection(name).{get,set,has,delete,list}`,
/// `dead_letters::{replay,resolve}`, `ctx.event` for triggered handlers.
///
/// 1.3 additions (v1.1.2):
/// `docs::collection(name).{create,get,find,find_one,update,delete,list}`
/// with the v1.1.2 query DSL subset; `ctx.event.docs` for docs-trigger
/// handlers (carries `prev_data` change-data-capture for update/delete).
///
/// 1.4 additions (v1.1.3): `import "<name>" as <alias>;` for scripts
/// whose corresponding module (`kind = 'module'`) lives in the same
/// app. Cross-app imports are unreachable (the `name` argument carries
/// no `app_id`). Modules expose `fn`/`const` declarations only;
/// top-level statements are rejected at create-time.
///
/// 1.5 additions (v1.1.4): `http::{get,post,put,patch,delete,head,
/// post_form,request}` for outbound HTTP from scripts (guarded by an
/// SSRF deny-list on the resolved IP); `ctx.event.cron` for cron-trigger
/// handlers (carries `schedule`, `timezone`, `scheduled_at`, `fired_at`).
/// The `Services` bundle gains `http: Arc<dyn HttpService>`.
///
/// 1.6 additions (v1.1.5):
/// `files::collection(name).{create,head,get,update,delete,list}` —
/// filesystem-backed blob storage (blobs in/out; metadata maps;
/// checksum-verified reads) with `ctx.event.files` for files-trigger
/// handlers (metadata only, never the bytes); and
/// `pubsub::publish_durable(topic, message)` — durable pub/sub with
/// publish-time fan-out and `ctx.event.pubsub` for pubsub-trigger
/// handlers. The `Services` bundle gains `files: Arc<dyn FilesService>`
/// and `pubsub: Arc<dyn PubsubService>`.
///
/// 1.7 additions (v1.1.6): `pubsub::subscriber_token(topics, ttl)` —
/// mints an HMAC-signed realtime subscriber token for externally-
/// subscribable topics (requires an authenticated principal). This is
/// the only new script-visible surface; the rest of the release is
/// server-side (the SSE `/realtime/topics/{topic}` endpoint; the
/// `RealtimeBroadcaster` / `RealtimeEvent` / `RealtimeAuthority` traits;
/// the `topics` registry + admin endpoints; the `@picloud/client`
/// TypeScript package).
///
/// 1.8 additions (v1.1.7): `secrets::{get,set,delete,list}(name)` —
/// encrypted per-app secrets (AES-256-GCM at rest under the process
/// master key); `email::{send,send_html}(#{...})` — outbound email via
/// an env-configured SMTP relay; and `ctx.event.email` for
/// `email:receive`-trigger handlers (inbound email POSTed to the webhook
/// receiver). The `Services` bundle gains `secrets: Arc<dyn
/// SecretsService>` and `email: Arc<dyn EmailService>`.
///
/// 1.9 additions (v1.1.8): `users::*` — data-plane user management
/// (CRUD, login/verify/logout, email verification, password reset,
/// invitations, string-tagged per-app roles). The `Services` bundle
/// gains `users: Arc<dyn UsersService>`. Realtime topics gain a third
/// auth mode `'session'` so SSE subscribers can authenticate against
/// users::login-minted session tokens (server-side; no new script
/// SDK affordance for the realtime auth itself — scripts already had
/// `pubsub::subscriber_token` for the v1.1.6 token path, and
/// `users::login` returns the bearer the client presents on the SSE
/// request).
pub const SDK_VERSION: &str = "1.9";
/// HTTP API major version. Appears in URL paths as `/api/v{N}/...`.
/// Bump (new integer + new URL prefix) when the request/response
/// shape, status-code semantics, or auth model changes. The previous
/// major is kept live for at least one product-minor deprecation
/// window.
pub const API_VERSION: u32 = 1;
/// Wire-protocol version between manager / orchestrator / executor
/// nodes in cluster mode. Negotiated via the `X-PiCloud-Wire` header
/// on inter-service requests. Reserved at `1`; cluster mode is v1.3+.
pub const WIRE_VERSION: u32 = 1;