@impractical-ai/motion 0.1.11 → 0.1.13

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.
@@ -5,6 +5,18 @@ description: Create and refine studio-quality motion-graphics launch videos with
5
5
 
6
6
  # Impractical Motion
7
7
 
8
+ <!-- ARRIVAL-DRIFT-STANDARD START -->
9
+ ## Default motion: arrival and residual drift
10
+
11
+ Foreground motion defaults to an energetic arrival, strong deceleration, and small continuing travel through the reading hold. Compose a deterministic residual trajectory with the native entrance; do not stop and restart with a disconnected tween. “Settled” and “hold” mean readable and visually stable, with subtle nonzero travel unless an explicit freeze, exact alignment or reduced-motion mode requires stillness.
12
+
13
+ Use the Rox `ambientOffset(seconds, amount, phase)` pattern: native 960×540 product groups start around amount 3.2–4, text around 0.8–1. Keep a signed velocity floor with gentle curvature, not a pure sine bob. Move attached labels, controls, connectors and shadows together, avoid double drift, preserve 3D hierarchy, and verify reverse/retimed seeks and late-hold displacement.
14
+
15
+ The host owns the background environment. Animate foreground objects only; never move or retime the background to simulate object motion. Reusable foregrounds should be transparent. Keep one primary focus and room around it; purposeful object camera moves remain welcome, and a generic card is not the default visual container.
16
+
17
+ For the complete trajectory and review checks, read `motion_context` → `guidance.director` before authoring.
18
+ <!-- ARRIVAL-DRIFT-STANDARD END -->
19
+
8
20
  You direct the video yourself. Impractical provides the engine, the preview
9
21
  build, the render, and the studio the user tweaks in — you provide the
10
22
  direction. Everything runs through the **Impractical MCP server**; the video's
@@ -13,8 +13,8 @@ import {
13
13
  waitForJobs,
14
14
  withAdmissionReceipt,
15
15
  withMeteredCall
16
- } from "./chunk-VTHAZQEV.js";
17
- import "./chunk-HGA2O3JM.js";
16
+ } from "./chunk-GAHKKLF3.js";
17
+ import "./chunk-PTYSKJ2Y.js";
18
18
  import "./chunk-77HVPD4G.js";
19
19
  export {
20
20
  ApiContractError,
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  PRODUCTION_APP_URL,
4
4
  PRODUCTION_SUPABASE_URL
5
- } from "./chunk-HGA2O3JM.js";
5
+ } from "./chunk-PTYSKJ2Y.js";
6
6
 
7
7
  // src/config.ts
8
8
  import {
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@impractical-ai/motion",
6
- version: "0.1.11",
6
+ version: "0.1.13",
7
7
  private: false,
8
8
  description: "Create and refine Impractical Motion videos from coding agents and the terminal.",
9
9
  homepage: "https://github.com/Openpod/impractical-motion#readme",
@@ -31,7 +31,8 @@ var package_default = {
31
31
  build: 'node ../scripts/verify-locked-cli-install.mjs && node ../scripts/build-engine-dts.mjs --cli-only && rm -rf dist && ./node_modules/esbuild/bin/esbuild src/index.ts --define:__BUILD_COMMIT__=\\"$(git rev-parse --short HEAD 2>/dev/null || echo dev)\\" --bundle --platform=node --format=esm --target=node22 --splitting --outdir=dist --external:playwright-core --banner:js="#!/usr/bin/env node" && chmod +x dist/index.js',
32
32
  typecheck: "tsc --noEmit",
33
33
  test: "npm run typecheck && npm run build && esbuild tests/onboarding.test.ts tests/mcp-tools.test.ts tests/mcp-frames.test.ts tests/mcp-browser-pool.test.ts tests/mcp-motion.test.ts tests/mcp-craft.test.ts tests/mcp-depthkit.test.ts tests/mcp-motion-score.test.ts tests/mcp-install-font.test.ts tests/mcp-metric-catalog.test.ts tests/mcp-text-census.test.ts tests/mcp-phased-flow.test.ts tests/mcp-preflight.test.ts tests/engine-dts.test.ts tests/mcp-connect.test.ts tests/mcp-longpoll.test.ts tests/mcp-agent-timeout.test.ts tests/api-hardening.test.ts --bundle --platform=node --format=esm --packages=external --outdir=dist --out-extension:.js=.mjs && node --test dist/onboarding.test.mjs dist/mcp-tools.test.mjs dist/mcp-frames.test.mjs dist/mcp-browser-pool.test.mjs dist/mcp-motion.test.mjs dist/mcp-craft.test.mjs dist/mcp-depthkit.test.mjs dist/mcp-motion-score.test.mjs dist/mcp-install-font.test.mjs dist/mcp-metric-catalog.test.mjs dist/mcp-text-census.test.mjs dist/mcp-phased-flow.test.mjs dist/mcp-preflight.test.mjs dist/engine-dts.test.mjs dist/mcp-connect.test.mjs dist/mcp-longpoll.test.mjs dist/mcp-agent-timeout.test.mjs dist/api-hardening.test.mjs",
34
- prepack: "npm run build"
34
+ prepack: "npm run build",
35
+ "test:rig": "npm run typecheck && esbuild tests/engine-dts.test.ts tests/mcp-agent-timeout.test.ts tests/mcp-browser-pool.test.ts tests/mcp-component-assertions.test.ts tests/mcp-components.test.ts tests/mcp-connect.test.ts tests/mcp-craft.test.ts tests/mcp-depthkit.test.ts tests/mcp-exposed-ground.test.ts tests/mcp-frames.test.ts tests/mcp-install-font.test.ts tests/mcp-legibility.test.ts tests/mcp-longpoll.test.ts tests/mcp-metric-catalog.test.ts tests/mcp-motion-score.test.ts tests/mcp-motion-slop.test.ts tests/mcp-motion.test.ts tests/mcp-phased-flow.test.ts tests/mcp-preflight.test.ts tests/mcp-ref-inject.test.ts tests/mcp-shot-list.test.ts tests/mcp-text-census.test.ts tests/mcp-tools.test.ts tests/review-modules.test.ts tests/rig-transplant.test.ts --bundle --platform=node --format=esm --packages=external --outdir=.rig-tests --out-extension:.js=.mjs && node --test .rig-tests/engine-dts.test.mjs .rig-tests/mcp-agent-timeout.test.mjs .rig-tests/mcp-browser-pool.test.mjs .rig-tests/mcp-component-assertions.test.mjs .rig-tests/mcp-components.test.mjs .rig-tests/mcp-connect.test.mjs .rig-tests/mcp-craft.test.mjs .rig-tests/mcp-depthkit.test.mjs .rig-tests/mcp-exposed-ground.test.mjs .rig-tests/mcp-frames.test.mjs .rig-tests/mcp-install-font.test.mjs .rig-tests/mcp-legibility.test.mjs .rig-tests/mcp-longpoll.test.mjs .rig-tests/mcp-metric-catalog.test.mjs .rig-tests/mcp-motion-score.test.mjs .rig-tests/mcp-motion-slop.test.mjs .rig-tests/mcp-motion.test.mjs .rig-tests/mcp-phased-flow.test.mjs .rig-tests/mcp-preflight.test.mjs .rig-tests/mcp-ref-inject.test.mjs .rig-tests/mcp-shot-list.test.mjs .rig-tests/mcp-text-census.test.mjs .rig-tests/mcp-tools.test.mjs .rig-tests/review-modules.test.mjs .rig-tests/rig-transplant.test.mjs"
35
36
  },
36
37
  publishConfig: {
37
38
  access: "public"
@@ -56,7 +57,7 @@ var PRODUCTION_APP_URL = "https://motion.impractical.ai";
56
57
  var PRODUCTION_SUPABASE_URL = "https://uaxjweednprtbhbceify.supabase.co";
57
58
  var PACKAGE_NAME = "@impractical-ai/motion";
58
59
  var PACKAGE_VERSION = package_default.version;
59
- var BUILD_COMMIT = "9f06a02" ? "9f06a02" : "dev";
60
+ var BUILD_COMMIT = "ffb78fc" ? "ffb78fc" : "dev";
60
61
  var BUILD_ID = `${PACKAGE_VERSION}+${BUILD_COMMIT}`;
61
62
  var PACKAGE_COMMAND = `npx --yes ${PACKAGE_NAME}`;
62
63
 
@@ -6,14 +6,14 @@ import {
6
6
  loadConfig,
7
7
  recoverCorruptConfig,
8
8
  saveConfig
9
- } from "./chunk-VTHAZQEV.js";
9
+ } from "./chunk-GAHKKLF3.js";
10
10
  import {
11
11
  PACKAGE_COMMAND,
12
12
  PACKAGE_NAME,
13
13
  PACKAGE_VERSION,
14
14
  PRODUCTION_APP_URL,
15
15
  PRODUCTION_SUPABASE_URL
16
- } from "./chunk-HGA2O3JM.js";
16
+ } from "./chunk-PTYSKJ2Y.js";
17
17
 
18
18
  // src/onboarding.ts
19
19
  import {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  setup
4
- } from "./chunk-SN6SLPIC.js";
4
+ } from "./chunk-ZCTJTQB7.js";
5
5
  import {
6
6
  invoke,
7
7
  invokeAt,
@@ -11,8 +11,8 @@ import {
11
11
  saveConfig,
12
12
  studioLink,
13
13
  waitForJobs
14
- } from "./chunk-VTHAZQEV.js";
15
- import "./chunk-HGA2O3JM.js";
14
+ } from "./chunk-GAHKKLF3.js";
15
+ import "./chunk-PTYSKJ2Y.js";
16
16
  import "./chunk-77HVPD4G.js";
17
17
 
18
18
  // src/commands.ts
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  PACKAGE_VERSION
4
- } from "./chunk-HGA2O3JM.js";
4
+ } from "./chunk-PTYSKJ2Y.js";
5
5
  import "./chunk-77HVPD4G.js";
6
6
 
7
7
  // src/cli-args.ts
@@ -76,7 +76,8 @@ Edit drafts
76
76
  clone <video-share-url> Add an editable copy to your connected workspace
77
77
 
78
78
  Share videos
79
- share <file.mp4> [--title "..."] [--references brand.json] [--project <id>]
79
+ share <file.mp4> [--title "..."] [--message "..."] [--expires-in 7] [--json]
80
+ [--references brand.json] [--project <id>]
80
81
  Omit --project for a view-only link (the default)
81
82
  share allow-editing <share-id> --project <id> Let recipients copy and edit
82
83
  share view-only <share-id> Hide editing and block future project copies
@@ -159,11 +160,11 @@ async function runCli(args, deps) {
159
160
  // src/index.ts
160
161
  runCli(process.argv.slice(2), {
161
162
  writeLine: (line) => console.log(line),
162
- loadCommands: () => import("./commands-EDRH2XMY.js"),
163
- loadApi: () => import("./api-FMMG3W6J.js"),
164
- loadMcp: () => import("./stdio-VBPVT2KS.js")
163
+ loadCommands: () => import("./commands-NWJK7ANI.js"),
164
+ loadApi: () => import("./api-4YQKINQI.js"),
165
+ loadMcp: () => import("./stdio-PLWZDKDA.js")
165
166
  }).catch(async (error) => {
166
- const { ApiError } = await import("./api-FMMG3W6J.js");
167
+ const { ApiError } = await import("./api-4YQKINQI.js");
167
168
  if (error instanceof ApiError) {
168
169
  console.error(`Error (${error.status} from ${error.fn}): ${error.message}`);
169
170
  if (error.status === 429) console.error("Weekly MCP allowance reached. Upgrade or wait for Monday UTC.");