stillmade-sdk 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +15 -0
- package/.cursor/hooks.json +11 -0
- package/.gitignore +2 -0
- package/.stillmade/sdk-baseline.json +65 -0
- package/AGENTS.md +29 -7
- package/AGENT_CONTROL.md +2 -1
- package/BROWSER_APPLICATIONS.md +128 -3
- package/GITHUB_APPLICATIONS.md +184 -1
- package/NATIVE_APPLICATION_ADAPTATION.md +565 -0
- package/PASTE_TO_LLM.md +29 -10
- package/PORTABLE.md +5 -4
- package/REMIX.md +16 -10
- package/SDK.md +511 -46
- package/UI_AESTHETIC.md +37 -6
- package/api-index.json +90 -0
- package/blocks/connected-app/versions/{1.2.0 → 1.5.0}/task-selection.js +5 -3
- package/blocks/connected-app/versions/{1.4.0 → 1.5.0}/view.js +4 -2
- package/blocks/native/sm.ai-decide/versions/1.0.0/package.js +149 -0
- package/blocks/native/sm.ai-write/versions/1.0.0/package.js +147 -0
- package/blocks/native/sm.connect-app/versions/1.0.0/package.js +55 -0
- package/blocks/native/sm.contact-fields/versions/1.0.0/package.js +197 -0
- package/blocks/native/sm.continue-if/versions/1.0.0/package.js +168 -0
- package/blocks/native/sm.generate-image/versions/2.1.0/package.js +101 -0
- package/blocks/native/sm.meta-creative/versions/1.0.0/package.js +206 -0
- package/blocks/native/sm.new-items/versions/1.0.0/package.js +191 -0
- package/blocks/native/sm.voiceover/versions/2.1.5/package.js +179 -0
- package/blocks/native/sm.voiceover/versions/2.1.6/package.js +179 -0
- package/blocks/native/sm.when/versions/1.0.0/package.js +129 -0
- package/blocks/native/sm.write-summary/versions/1.0.0/package.js +133 -0
- package/blocks/occasion-story/package.js +1 -1
- package/blocks/occasion-story/versions/1.0.2/package.js +1682 -0
- package/blocks/photo-reel-composer/versions/1.0.1/package.js +3026 -0
- package/blocks/release-visuals/package.js +1 -1
- package/blocks/release-visuals/versions/1.0.2/package.js +1500 -0
- package/blocks/short-form-finish/package.js +1 -1
- package/blocks/short-form-finish/versions/1.0.3/package.js +1026 -0
- package/package.json +1 -1
- package/packages/block-cli/cli.js +16 -1
- package/packages/block-cli/format.js +2 -0
- package/packages/block-cli/ready-gate.js +164 -0
- package/packages/block-platform/block-readiness.js +3 -2
- package/packages/block-platform/canvas.js +1 -1
- package/packages/block-platform/catalog.js +6 -4
- package/packages/block-platform/chat-requirements.js +8 -3
- package/packages/block-platform/collaboration.js +5 -5
- package/packages/block-platform/first-revenue-project-types.js +2 -2
- package/packages/block-platform/flow-inspection.js +2 -2
- package/packages/block-platform/native-application-validation-context.js +20 -0
- package/packages/block-platform/plain-descriptions.js +67 -0
- package/packages/block-platform/product-ad-variants-project-type.js +6 -3
- package/packages/block-platform/project-context.js +4 -4
- package/packages/block-platform/project-type-composer.js +21 -12
- package/packages/block-platform/project-type-draft.js +2 -2
- package/packages/block-platform/project-type-recommendations.js +1 -1
- package/packages/block-platform/project-types.js +9 -4
- package/packages/block-platform/revenue-review-project-types.js +6 -5
- package/packages/block-platform/segment-runner.js +35 -11
- package/packages/block-platform/step-groups.js +78 -0
- package/packages/block-platform/steps.js +12 -8
- package/packages/block-platform/type-workspace.js +4 -4
- package/packages/block-platform/workflow-loop.js +4 -0
- package/packages/block-platform/workspace-input-readset.js +18 -4
- package/packages/block-sdk/admission.js +5 -17
- package/packages/block-sdk/agent-inputs.js +2 -0
- package/packages/block-sdk/agent-inspection.js +4 -2
- package/packages/block-sdk/browser-application-artifacts.js +1 -1
- package/packages/block-sdk/browser-application-execution.d.ts +2 -2
- package/packages/block-sdk/browser-application-execution.js +30 -12
- package/packages/block-sdk/browser-application-guest.d.ts +2 -0
- package/packages/block-sdk/browser-application-guest.js +16 -9
- package/packages/block-sdk/browser-application.d.ts +12 -4
- package/packages/block-sdk/browser-application.js +27 -13
- package/packages/block-sdk/builder-contract.js +25 -17
- package/packages/block-sdk/capabilities.js +38 -19
- package/packages/block-sdk/connected-app.js +26 -6
- package/packages/block-sdk/connection-adapters.js +19 -2
- package/packages/block-sdk/contracts-core.js +8 -0
- package/packages/block-sdk/contracts.js +9 -5
- package/packages/block-sdk/document-drafts.js +7 -1
- package/packages/block-sdk/document-store-binding.js +2 -1
- package/packages/block-sdk/file-bundle.js +4 -1
- package/packages/block-sdk/first-party-packages.js +18 -2
- package/packages/block-sdk/generation-catalog.js +3 -2
- package/packages/block-sdk/index.d.ts +20 -1
- package/packages/block-sdk/index.js +1 -0
- package/packages/block-sdk/native-application-package.d.ts +22 -0
- package/packages/block-sdk/native-application-package.js +77 -0
- package/packages/block-sdk/native_adapter.py +76 -0
- package/packages/block-sdk/package.json +1 -0
- package/packages/block-sdk/pipeline-runtime-host.d.ts +2 -0
- package/packages/block-sdk/project-flow-contract.js +2 -0
- package/packages/block-sdk/remix-policy.js +3 -1
- package/packages/block-sdk/resolver-admission.js +17 -0
- package/packages/block-sdk/runtime.js +4 -1
- package/packages/block-sdk/schema-fields.js +34 -2
- package/packages/block-sdk/semantic-relationships.js +14 -0
- package/packages/block-sdk/shared-controls.js +3 -1
- package/packages/block-sdk/shared-view.js +6 -1
- package/packages/block-sdk/source-rights.js +6 -5
- package/packages/block-sdk/testing.js +3 -0
- package/packages/design-system/theme.css +12 -3
package/PASTE_TO_LLM.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- builder-contract:start (generated by npm run build:sdk; do not edit) -->
|
|
4
4
|
|
|
5
|
-
## Block builder contract (stillmade.block-builder@1.
|
|
5
|
+
## Block builder contract (stillmade.block-builder@1.3.0)
|
|
6
6
|
|
|
7
|
-
Contract `stillmade.block-builder@1.
|
|
7
|
+
Contract `stillmade.block-builder@1.3.0`. Humans, coding agents, imported source, GitHub repositories and generated code all adapt to the Block platform; anything that becomes a StillMade Block obeys this contract.
|
|
8
8
|
|
|
9
9
|
### Source of truth
|
|
10
10
|
|
|
@@ -14,13 +14,27 @@ Treat the current SDK (`stillmade.block.json` manifest, `packages/block-sdk` con
|
|
|
14
14
|
|
|
15
15
|
Before building, check what already exists (`find_existing_blocks` over MCP, or the Marketplace and your library) by the inputs, results and operations the goal needs. Use an installed or reviewed Block that already does it; remix a close one so its license, notices and creator credit stay attached; chain existing Blocks and build only the missing step. Never republish another creator's source without remix lineage: public copies are refused. Build a new Block when nothing fits or the person asks for their own version, and say which similar Blocks you considered.
|
|
16
16
|
|
|
17
|
+
### One job per Step
|
|
18
|
+
|
|
19
|
+
A Step is one job: the work between two moments where a person or the outside world must see the result. Start a new Step only at one of three points; everything else is a part of the neighboring Step.
|
|
20
|
+
|
|
21
|
+
1. **A person works with the result**: reads, edits, picks or approves it (a workspace Block such as a script, a Canvas or an Editor, or an approval). That is why Chat, Bible, Canvas and Editor are four Steps.
|
|
22
|
+
2. **Finding new things turns into handling each one**: the trigger (a schedule or an app event), the app read, its filter and "only new" are the first job; what is done with each item is the next job. A trigger is a setting of the first job, never a Step of its own.
|
|
23
|
+
3. **The result leaves StillMade**: it is sent, posted, published, paid or written into another app. Consecutive writes to the same app, with the glue that shapes data for them, are one job.
|
|
24
|
+
|
|
25
|
+
A part that only runs in the desktop app cannot share a Step with cloud parts. Before adding a Step, name which of the three reasons makes it separate; if none applies, make it a part of a neighbor. A Step nobody would ever open must not exist on its own. Prefer an app task's own filter (a Gmail query such as `has:attachment filename:png`) to an AI check, and use AI decide only for judgement.
|
|
26
|
+
|
|
27
|
+
Inside one job, each capability stays its own part: a capability Block performs exactly one hosted operation and a connector one app task, so every part keeps its own permission, approval and credit rules, and StillMade groups the parts of one job into one Step (`groups` in the Project Type). Never invent a combined runtime. When one Block can do the whole job with documented primitives (a JavaScript Block doing several local transforms, a workspace owning its whole document), build it as one Block.
|
|
28
|
+
|
|
29
|
+
Examples: "every new email with an image becomes a generated image" is two Steps, "Gmail · New emails with images" (When, fetch with an image filter, only new) and "Image from email" (AI write, Generate image); listing When, Fetch, Only new, AI decide, Continue only if, AI write and Generate image as seven Steps splits one job into its parts. "A new Meta lead goes to HubSpot" is three Steps: "Meta Ads · New leads", "Qualify lead" and "HubSpot · Add contact".
|
|
30
|
+
|
|
17
31
|
### Define the capability first
|
|
18
32
|
|
|
19
|
-
Translate the request into an explicit capability contract before implementation: what the Block does; each input with its type, meaning and whether it is required (prefer optional settings with safe defaults over extra required questions); each output with its type and meaning; persistent state; project context it reads; permissions; UI; long-running behavior; expected failures; cancellation; determinism; and whether it needs hosted models, media, desktop tools or shared editing. Keep the public interface as small and general as possible and keep implementation details out of it.
|
|
33
|
+
Translate the request into an explicit capability contract before implementation: what the Block does; each input with its type, meaning and whether it is required (prefer optional settings with safe defaults over extra required questions); each output with its type and meaning; persistent state; project context it reads; permissions; UI; long-running behavior; expected failures; cancellation; determinism; and whether it needs hosted models, media, desktop tools or shared editing. Keep the public interface as small and general as possible (few required inputs, one primary output) and keep implementation details out of it; small means a small interface, never a fragment of a job. A Block that generates images, video or speech declares only its prompt and output: every Step that runs it gets the host’s generation settings (model, quality, length and resolution, voice, speed, how many), saved with the Step, changed on its page or by Chat, and shown with their cost before each run.
|
|
20
34
|
|
|
21
35
|
### Blocks compose
|
|
22
36
|
|
|
23
|
-
A Block is not a mini-app. Its outputs become other Blocks' inputs and its inputs come from other Blocks, project context or the user. Use the typed port system: shared StillMade types (`image`, `video`, `audio`, `asset`, `script`, `shot[]`, ...), a `semantic` meaning on every port, `required` and a short `description`. Mark exactly one primary input and one primary output so Project Type Steps connect automatically, and use `kind: "task"`: a `workspace` Block owns a project document and is never connected automatically. Inputs marked `context` read the project and cannot receive a connection from another Step. Output reusable StillMade values: media references (`{kind,assetId,versionId,url}`) and structured production values with `schemaVersion: 1`, preserving provenance, versions and relationships downstream Blocks need. Never make ordinary users wire JSON, copy IDs, understand internal paths or translate one Block's output into another: `createUniversalResolver()` (the same engine as the Project Type composer) resolves inputs from compatible upstream outputs, permitted project context and, for optional non-context inputs, `StillMade.requestFromUser`.
|
|
37
|
+
A Block is one job: not a mini-app of many jobs and not a fragment of one. Its outputs become other Blocks' inputs and its inputs come from other Blocks, project context or the user. Use the typed port system: shared StillMade types (`image`, `video`, `audio`, `asset`, `script`, `shot[]`, ...), a `semantic` meaning on every port, `required` and a short `description`. Mark exactly one primary input and one primary output so Project Type Steps connect automatically, and use `kind: "task"`: a `workspace` Block owns a project document and is never connected automatically. Inputs marked `context` read the project and cannot receive a connection from another Step. Output reusable StillMade values: media references (`{kind,assetId,versionId,url}`) and structured production values with `schemaVersion: 1`, preserving provenance, versions and relationships downstream Blocks need. Never make ordinary users wire JSON, copy IDs, understand internal paths or translate one Block's output into another: `createUniversalResolver()` (the same engine as the Project Type composer) resolves inputs from compatible upstream outputs, permitted project context and, for optional non-context inputs, `StillMade.requestFromUser`.
|
|
24
38
|
|
|
25
39
|
### Use platform primitives
|
|
26
40
|
|
|
@@ -30,9 +44,13 @@ Prefer, in order: an SDK capability; a documented host capability (the hosted op
|
|
|
30
44
|
|
|
31
45
|
Never make a Block look functional through hard-coded local paths, developer-machine dependencies, undocumented environment variables, admin or database access, hidden core modifications, direct database writes, fake or mocked production results, hand-prepared test assets that hide incompatibilities, credentials in code, or assumptions about one user's machine. The finished Block must work through the same interfaces available to any installed Block; `permissions.network`, `permissions.filesystem` and `permissions.secrets` must be empty arrays.
|
|
32
46
|
|
|
47
|
+
### Name it briefly
|
|
48
|
+
|
|
49
|
+
Give the Block a short, plain name of 40 characters or fewer that says what it does ("Captioned Clip", not "Captioned Business Clip Generator With Review"). The name appears in step bars, Project Type cards and pickers, so put the detail in the description instead. New releases with a longer name do not pass readiness.
|
|
50
|
+
|
|
33
51
|
### Interface
|
|
34
52
|
|
|
35
|
-
If the capability needs UI, use the Block UI SDK: generated `manifest.ui` controls first; a sandboxed custom view (`view.html`/`view.css`/`view.js`) only when the core interaction genuinely needs one. Expose the capability, not the implementation: meaningful controls, sensible defaults, preview, direct manipulation, progress, clear errors and visible outputs. Do not show raw JSON, internal IDs, filesystem details, provider terminology or developer settings unless the Block is itself a developer tool. Follow the host appearance (Light, Dark and White) and the mobile layout contract: one interface for every screen size that fits a 320 CSS-pixel phone without horizontal scrolling.
|
|
53
|
+
If the capability needs UI, use the Block UI SDK: generated `manifest.ui` controls first; a sandboxed custom view (`view.html`/`view.css`/`view.js`) only when the core interaction genuinely needs one. Expose the capability, not the implementation: meaningful controls, sensible defaults, preview, direct manipulation, progress, clear errors and visible outputs. Do not show raw JSON, internal IDs, filesystem details, provider terminology or developer settings unless the Block is itself a developer tool. When a person chooses among options they need to hear or see (voices, music, sounds, fonts, looks, colors, templates or images), let them preview each option before choosing: a sample to play or a thumbnail, from the Block's own files or the host's free samples, never a paid generation. Leave previews out only when the builder states there is nothing to preview. Choices StillMade owns, such as voices and models in the run review, already show their samples. Follow the host appearance (Light, Dark and White) and the mobile layout contract: one interface for every screen size that fits a 320 CSS-pixel phone without horizontal scrolling.
|
|
36
54
|
|
|
37
55
|
### Shared editing
|
|
38
56
|
|
|
@@ -68,11 +86,11 @@ StillMade runs the readiness check on every Block it admits: manifest and contra
|
|
|
68
86
|
|
|
69
87
|
### Project Types
|
|
70
88
|
|
|
71
|
-
A Project Type is an ordered production workflow. Each Step's primary output must be a compatible input for the next Step, secondary values come from permitted project context, and every member Block obeys this contract. Install Blocks into a realistic Project Type: project chat must understand each Step, inputs must resolve intuitively, outputs and execution state must be visible, failures must be diagnosable, and the user must be able to continue through the workflow.
|
|
89
|
+
A Project Type is an ordered production workflow. Each Step's primary output must be a compatible input for the next Step, secondary values come from permitted project context, and every member Block obeys this contract. Install Blocks into a realistic Project Type: project chat must understand each Step, inputs must resolve intuitively, outputs and execution state must be visible, failures must be diagnosable, and the user must be able to continue through the workflow. Group the parts of one job into one Step instead of listing helper parts as Steps; most automations are two to four Steps.
|
|
72
90
|
|
|
73
91
|
### Readiness report
|
|
74
92
|
|
|
75
|
-
Finish with a Block Readiness Report: capability, contract (inputs, outputs, permissions, dependencies), platform APIs used, tests actually performed and their results, the composition test (upstream, Block, downstream), known limitations, unsupported requirements and any platform gap with its smallest general primitive.
|
|
93
|
+
Finish with a Block Readiness Report: capability, contract (inputs, outputs, permissions, dependencies), platform APIs used, tests actually performed and their results, the composition test (upstream, Block, downstream), known limitations, unsupported requirements and any platform gap with its smallest general primitive. Report exactly one status, the one StillMade's readiness check returned (`ready` in the SDK CLI, `check_block_readiness` over MCP), never one you chose: PRODUCTION READY (every applicable check passed), READY WITH DOCUMENTED LIMITATIONS (works reliably within stated boundaries), BLOCKED BY PLATFORM CAPABILITY (needs a missing generic primitive) or FAILED. Never label a Block production ready to satisfy a request, and never claim a check ran when it did not.
|
|
76
94
|
|
|
77
95
|
### Definition of done
|
|
78
96
|
|
|
@@ -348,9 +366,10 @@ of the SDK URL the user supplied, not a guessed production hostname or localhost
|
|
|
348
366
|
- Search `/api/public-listings/discover?kind=block&search=<encoded-query>` for
|
|
349
367
|
Blocks, or use `kind=type` for Project Types. Follow `nextCursor` with `after`
|
|
350
368
|
when more results are relevant; a single page is not the complete catalog.
|
|
351
|
-
- Use returned listing identities and versions to
|
|
352
|
-
`/api/public-listings/<kind>/<id>/<version>/
|
|
353
|
-
|
|
369
|
+
- Use returned listing identities and versions to read
|
|
370
|
+
`/api/public-listings/<kind>/<id>/<version>/metadata.json`: its name, description
|
|
371
|
+
and typed inputs and outputs. A Block's code is private to its creator, so build
|
|
372
|
+
on what it takes and makes, never on its source.
|
|
354
373
|
- In an offline SDK checkout, `packages/block-platform/catalog.js` provides bundled
|
|
355
374
|
first-party examples. It is a snapshot, not the complete live Marketplace.
|
|
356
375
|
|
package/PORTABLE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Every finished Block must support automatic remixing through the standard SDK contract. Include complete editable runtime source/configuration, typed inputs/outputs, UI controls, fixtures, and a supported permissive manifest.license with its complete real copyright/license notice in manifest.provenance.notice (or verified portable evidence). Do not disable remixing
|
|
1
|
+
Every finished Block must support automatic remixing through the standard SDK contract. Include complete editable runtime source/configuration, typed inputs/outputs, UI controls, fixtures, and a supported permissive manifest.license with its complete real copyright/license notice in manifest.provenance.notice (or verified portable evidence). Do not disable remixing. The code stays private to its creator; others remix only through StillMade’s AI builder. No custom remix endpoint or host callback is needed. Preserve inherited source, notices and lineage. Never invent ownership, copyright holders or permission, or apply a new license to unresolved third-party source; return unsupported with a clear licensing reason instead. The shared SDK admission validator enforces this requirement.
|
|
2
2
|
## Understand StillMade and its Block ecosystem
|
|
3
3
|
|
|
4
4
|
StillMade AI is an AI-assisted platform where people make things by using and
|
|
@@ -216,9 +216,10 @@ of the SDK URL the user supplied, not a guessed production hostname or localhost
|
|
|
216
216
|
- Search `/api/public-listings/discover?kind=block&search=<encoded-query>` for
|
|
217
217
|
Blocks, or use `kind=type` for Project Types. Follow `nextCursor` with `after`
|
|
218
218
|
when more results are relevant; a single page is not the complete catalog.
|
|
219
|
-
- Use returned listing identities and versions to
|
|
220
|
-
`/api/public-listings/<kind>/<id>/<version>/
|
|
221
|
-
|
|
219
|
+
- Use returned listing identities and versions to read
|
|
220
|
+
`/api/public-listings/<kind>/<id>/<version>/metadata.json`: its name, description
|
|
221
|
+
and typed inputs and outputs. A Block's code is private to its creator, so build
|
|
222
|
+
on what it takes and makes, never on its source.
|
|
222
223
|
- In an offline SDK checkout, `packages/block-platform/catalog.js` provides bundled
|
|
223
224
|
first-party examples. It is a snapshot, not the complete live Marketplace.
|
|
224
225
|
|
package/REMIX.md
CHANGED
|
@@ -34,7 +34,9 @@ copyright holders, repository commits or permission. Unresolved rights produce a
|
|
|
34
34
|
blocked result. Never silently license someone else's source.
|
|
35
35
|
|
|
36
36
|
Remixing is enabled by default. An explicit `remixPolicy` must permit remixing
|
|
37
|
-
and must not set `sourceInspection: "no"`.
|
|
37
|
+
and must not set `sourceInspection: "no"`. A Block's code is private to its creator: no one else views or downloads it,
|
|
38
|
+
and others change it only by describing changes to StillMade's AI builder.
|
|
39
|
+
Omit optional settings when defaults
|
|
38
40
|
are sufficient. The host creates the new identity, preserves the parent digest,
|
|
39
41
|
source and notices, and presents the ordinary builder. Creators need no extra
|
|
40
42
|
StillMade instructions. Project Edit retains compatible inputs and saved state;
|
|
@@ -56,8 +58,9 @@ remixable merely by adding metadata: they need an independent SDK implementation
|
|
|
56
58
|
## In StillMade
|
|
57
59
|
|
|
58
60
|
Choose **Remix Block** on an exact public Block version, or **Remix this version**
|
|
59
|
-
in Marketplace. Sign in, review its
|
|
60
|
-
|
|
61
|
+
in Marketplace. Sign in, review its license and declared permissions, then
|
|
62
|
+
confirm **Remix Block**. The code is never shown or downloadable; describe the
|
|
63
|
+
change you want and StillMade's AI builder makes it. StillMade saves an account draft and opens Create.
|
|
61
64
|
Nothing is installed, published, executed or charged by creating the draft.
|
|
62
65
|
AI refinement edits the implementation, controls and fixtures while the host
|
|
63
66
|
retains and restores immutable source evidence and ancestry. Evidence is not
|
|
@@ -65,7 +68,10 @@ charged against the editable-source prompt limit; the package size limit still
|
|
|
65
68
|
applies. The resulting local Block receives the same admission checks as a
|
|
66
69
|
portable artifact.
|
|
67
70
|
The Versions tab shows ancestry and retained notices. Publishing the edited
|
|
68
|
-
Block requires the normal validation
|
|
71
|
+
Block requires the normal validation and rights confirmation. A remix of someone
|
|
72
|
+
else's Block is released as a Block owned by the original creator, who keeps its
|
|
73
|
+
code and earns from it; the remixer is credited and can use it right away. A
|
|
74
|
+
remix is always available by link, never private.
|
|
69
75
|
Public Block pages link to paginated newest and top remixes of that exact version.
|
|
70
76
|
Top uses qualified production account counts for a 30-day window, hidden below
|
|
71
77
|
ten accounts and rounded down to tens. Both views fall back to newest when
|
|
@@ -184,13 +190,13 @@ host-coupled workspaces retain their existing restrictions.
|
|
|
184
190
|
- No payments, ancestor revenue allocation or provider dispatch during remix.
|
|
185
191
|
|
|
186
192
|
|
|
187
|
-
##
|
|
193
|
+
## Code stays private
|
|
188
194
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
and team visibility still determine who may
|
|
193
|
-
|
|
195
|
+
A Block's code is private to its creator. Nobody else can view or download it:
|
|
196
|
+
public pages, Marketplace and remixes never show it, and the source download
|
|
197
|
+
works only for its creator and StillMade admins. An older `sourceInspection: "no"`
|
|
198
|
+
still keeps that Block's releases private and its remix action off. Account and team visibility still determine who may use a
|
|
199
|
+
private package.
|
|
194
200
|
|
|
195
201
|
A source-access choice cannot replace legal evidence or revoke upstream rights.
|
|
196
202
|
Existing immutable releases keep their established pins and access. Newly finished
|