tileflow 0.1.0-alpha.14 → 0.1.0-alpha.15

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.
@@ -9,6 +9,7 @@ Start with the [tileflow guide](https://github.com/tileflow/tileflow-sdk/blob/ma
9
9
  | Local evidence | `setup capture`, `capture`, `visual compare`, `visual analyze`, `visual diff`, `visual update` |
10
10
  | Data and assets | `tileset inspect`, `tileset publish/list/status/purge`, `inspect features`, `icons list/diff` |
11
11
  | Team Icon Sets | `icon-set publish/list/status/versions/uses/archive/unarchive/purge` |
12
+ | Team 3D models | `models publish/list/status/restore/purge` |
12
13
  | Repository locks | `icons install`, `icons update`, `icons pin` |
13
14
  | Account | `login`, `logout`, `whoami` |
14
15
  | Hosted delivery | `deploy`, `status` |
@@ -28,5 +29,8 @@ authority when resolving revisions and are the only commands that select revisio
28
29
  `tileflow.icons.lock.json`. See the
29
30
  [Team Icon Set workflow](https://github.com/tileflow/tileflow-sdk/blob/main/packages/cli/docs/team-icon-sets.md).
30
31
 
32
+ `models` publishes and manages the Team 3D models that maps place by name; see
33
+ [Team 3D models](https://github.com/tileflow/tileflow-sdk/blob/main/packages/cli/docs/team-3d-models.md).
34
+
31
35
  The hidden `projects` command family lists and manages the internal application destinations of an
32
36
  account for support. It is not part of the ordinary workflow or the product catalog.
@@ -184,15 +184,17 @@ Hosted deploy currently rejects local or package-owned web fonts before authenti
184
184
  writes. Use self-hosted delivery or an explicit public glyph provider. Enabling managed font bundles
185
185
  requires a separately deployed ownership, quota, retention, and immutable-delivery contract.
186
186
 
187
- A map's own 3D building models (the building models of its `models` directories) deploy as one
188
- model bundle per map. Deploy prepares them as `build` does, uploads the bundle with
189
- `PUT /v1/model-bundles/:contentHash` after authentication and before the first style write, compiles
190
- each placement's `url` at the bundle's hosted address and publishes the style with the bundle's
191
- content hash. Byte-identical bundles are reused by content hash. A bundle holds at most 64 models,
192
- 16 MiB a prepared file and 32 MiB together, and shares the organization's hosted-storage pool like
193
- icon packages. Upload success must confirm the submitted `contentHash`, model count and byte total,
194
- one opaque `mdb_<id>` and the query-free `/model-bundles/<id>` base URL. A deploy with
195
- `--with-native` rejects a map's own building models, because MapLibre Native draws no models.
187
+ A map's own 3D building models (the building models of its `models` directories) are its Team's
188
+ 3D models, which `tileflow models publish` publishes by name. Deploy uploads no model files: it
189
+ compiles each placement's `url` as the placeholder `tileflow://team-models/<name>`, leaves the
190
+ building models out of the build's assets and model source identities, so the map's revision binds
191
+ their names and not their bytes, and sends `teamModelSources`, the SHA-256 and size of each glTF
192
+ binary a model was prepared from. Hosted replaces each placeholder with the model's address in the
193
+ map's Team, which follows the model's current version, and fails the deploy for a model the Team has
194
+ not published. The response's `teamModels` names each placed model's current version and whether it
195
+ was prepared from the same files (`match`, `differ` or `unknown`); the CLI warns on `differ`. A
196
+ deploy with `--with-native` rejects a map's own building models, because MapLibre Native draws no
197
+ models.
196
198
 
197
199
  For every managed resource kind, `assetSetSha256` remains a separate per-map output identity. It
198
200
  hashes each generated file's exact portable name, media type, byte count, and SHA-256 using Core's
@@ -0,0 +1,36 @@
1
+ # Team 3D models
2
+
3
+ A Team publishes its own 3D building models, such as a store or a kiosk, once, under their names,
4
+ and every map of the Team places them by name. Hosted maps follow each model's current version, so
5
+ publishing an improvement changes every map that places the model on its next load, without
6
+ deploying the maps again. Locally, maps draw their own `.glb` files and need no account.
7
+
8
+ ```sh
9
+ npx tileflow models publish ./models/flagship-store.glb --team @acme --json
10
+ npx tileflow models list --team @acme
11
+ npx tileflow models status flagship-store --team @acme
12
+ npx tileflow models restore flagship-store --team @acme
13
+ ```
14
+
15
+ - `publish [paths...]` prepares each building model as `build` does (its levels of detail, its
16
+ footprint and meshoptimizer compression) and publishes it as the model's new current version.
17
+ Paths are `.glb` files or directories; with none, it publishes the building models of every map in
18
+ the config. Publishing the bytes of the current version again changes nothing.
19
+ - `list` and `status <name>` read the Team's models, their versions and the maps that place them.
20
+ - `restore <name>` makes the previous version current again. A model keeps its current and previous
21
+ versions.
22
+ - `purge <name> --confirm <name>` deletes a model and its versions, and is refused while a map
23
+ places it.
24
+
25
+ Each command needs Team authority: an account session with access to the Team, or a Team API key
26
+ with the 3D models permission (`--api-key`). Pass `--team @team` when the account has several Teams.
27
+
28
+ `tileflow deploy` uploads no model files. It writes each placement of a building model as the
29
+ placeholder `tileflow://team-models/<name>`, which Hosted replaces with the model's address in the
30
+ map's Team; a model the Team has not published fails the deploy, and the deploy warns when a placed
31
+ model's published version was prepared from other files than the map's. Models are served publicly
32
+ and may be cached, so they must not hold secrets or restricted personal data. MapLibre Native draws
33
+ no models, so a deploy with `--with-native` does not take them.
34
+
35
+ See [3D buildings](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/buildings-3d.md#building-models)
36
+ for how to prepare a model.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tileflow",
3
- "version": "0.1.0-alpha.14",
3
+ "version": "0.1.0-alpha.15",
4
4
  "license": "Apache-2.0",
5
5
  "description": "CLI-only tools for Tileflow config, capture, visual testing, and deploy.",
6
6
  "type": "module",
@@ -36,12 +36,12 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@hono/node-server": "2.1.3",
39
- "@tileflow/capture": ">=0.1.0-alpha.31 <0.1.0-beta.0",
39
+ "@tileflow/capture": ">=0.1.0-alpha.32 <0.1.0-beta.0",
40
40
  "@tileflow/coordinates": ">=0.1.0-alpha.2 <0.1.0-beta.0",
41
41
  "@tileflow/coordinates-runtime": ">=0.1.0-alpha.5 <0.1.0-beta.0",
42
- "@tileflow/core": ">=0.1.0-alpha.36 <0.1.0-beta.0",
43
- "@tileflow/dev": ">=0.1.0-alpha.33 <0.1.0-beta.0",
44
- "@tileflow/maps": ">=0.1.0-alpha.10 <0.1.0-beta.0",
42
+ "@tileflow/core": ">=0.1.0-alpha.37 <0.1.0-beta.0",
43
+ "@tileflow/dev": ">=0.1.0-alpha.34 <0.1.0-beta.0",
44
+ "@tileflow/maps": ">=0.1.0-alpha.11 <0.1.0-beta.0",
45
45
  "commander": "^15.0.0",
46
46
  "hono": "4.13.7",
47
47
  "picocolors": "^1.1.1",