arcane-os 0.73.0 → 0.75.0
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/CHANGELOG.md +23 -0
- package/README.md +1 -1
- package/docs/reference/README.md +3 -2
- package/docs/reference/core-repositories.md +38 -1
- package/docs/reference/inventory/package-api.json +3 -3
- package/docs/reference/local-image-editing.md +6 -3
- package/docs/reference/local-image-generation.md +2 -1
- package/docs/reference/local-image-sdxl.md +44 -7
- package/docs/reference/sdk-api.md +10 -1
- package/package.json +1 -1
- package/src/core/repositories.mjs +9 -1
- package/src/local-ai/image-models/sdxl.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.75.0
|
|
4
|
+
|
|
5
|
+
- Advertise whole-image `img2img` alongside `txt2img` for the built-in
|
|
6
|
+
`sdxl-base-1.0` selection. Use the existing public `images.edit()` operation
|
|
7
|
+
with the original PNG, complete prompt and explicit strength.
|
|
8
|
+
- Reuse the complete SDXL Base checkpoint, embedded VAE and existing retained
|
|
9
|
+
native context. Preserve 1024-by-1024 defaults, caller-selected canvas,
|
|
10
|
+
progress, cancellation and complete separate PNG results. No additional
|
|
11
|
+
model resource, runtime, adapter or dependency is introduced.
|
|
12
|
+
- Document the pinned engine's encoding/sampling path and whole-image editing
|
|
13
|
+
semantics. Masked/reference editing and pixel or output-quality guarantees
|
|
14
|
+
remain outside this selection; source review is not native execution proof.
|
|
15
|
+
|
|
16
|
+
## 0.74.0
|
|
17
|
+
|
|
18
|
+
- Add optional `longPaths` to `createRepositoryWorkspace()` for newly cloned
|
|
19
|
+
Windows repositories. Explicit true or false selects clone-local
|
|
20
|
+
`core.longpaths` before the first checkout and persists it in the new target.
|
|
21
|
+
- Preserve inherited and template configuration when the option is omitted,
|
|
22
|
+
existing repositories, non-Windows commands, and the ordinary single-clone
|
|
23
|
+
identity, progress, cancellation and hook lifecycle. No global setting,
|
|
24
|
+
repository migration, filename transformation or dependency change is added.
|
|
25
|
+
|
|
3
26
|
## 0.73.0
|
|
4
27
|
|
|
5
28
|
- Add public `resolvePwaRetirementResponse({workspaceRoot, appId})` for existing
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ selected SDK projection or an explicit live SDK source mount. Both profiles
|
|
|
20
20
|
share the theme, packaging, event, cancellation,
|
|
21
21
|
and browser run contracts while retaining their selected application layout.
|
|
22
22
|
|
|
23
|
-
This checkout defines the `0.
|
|
23
|
+
This checkout defines the `0.75.0` SDK contract. Development applications declare
|
|
24
24
|
`arcane-os` as `latest` and retain their lockfile. Exact SDK pins begin when Roshi
|
|
25
25
|
designates a production build. Follow [Consumer updates](docs/consumer-updates.md)
|
|
26
26
|
to refresh and compare the installed SDK and lockfile with the published channel;
|
package/docs/reference/README.md
CHANGED
|
@@ -44,6 +44,7 @@ alone does not make bare module names resolve in a browser.
|
|
|
44
44
|
| Install an app and cache selected resources offline | [Progressive web applications](pwa.md) |
|
|
45
45
|
| Disable source PWA generation or explicitly retire confirmed generated output | [Source PWA retirement](pwa.md#disable-source-pwa-generation-and-retire-generated-output) |
|
|
46
46
|
| Retire the prior worker after explicitly disabling standalone source PWA | [Disabled-worker browser lifecycle](pwa.md#disabled-worker-retirement-on-the-source-server) |
|
|
47
|
+
| Retire a disabled worker through an existing custom source host | [Public PWA retirement response](pwa.md#retirement-through-an-existing-custom-host) |
|
|
47
48
|
| Generate named browser imports or inspect the selected physical runtime | [`arcane import-map`](cli.md#arcane-import-map) and [browser runtime delivery](protocols.md#browser-runtime-delivery) |
|
|
48
49
|
| Connect an application through the shared WebSocket transport | [Shared WebSocket clients](websocket-client.md) |
|
|
49
50
|
| Choose browser, native, cloud, or cross-host behavior | [Availability and normalization](availability-and-normalization.md) |
|
|
@@ -71,7 +72,7 @@ alone does not make bare module names resolve in a browser.
|
|
|
71
72
|
| Run application-selected llama.cpp, Ollama or ONNX through Core | [Local AI through Core](local-ai.md) |
|
|
72
73
|
| Generate complete local PNG images with a retained native model | [Local image generation](local-image-generation.md) |
|
|
73
74
|
| Select FLUX.2 Klein 4B and its three complementary model resources | [FLUX.2 Klein 4B through Core](local-image-flux.md) |
|
|
74
|
-
| Select the complete SDXL Base 1.0 checkpoint for
|
|
75
|
+
| Select the complete SDXL Base 1.0 checkpoint for generation and whole-image editing | [SDXL Base 1.0 through Core](local-image-sdxl.md) |
|
|
75
76
|
| Compose independently loaded transcription and synthesis engines | [Native speech service](native-speech.md) |
|
|
76
77
|
| Keep a native Whisper model loaded across complete recordings | [Native Whisper transcription](local-whisper.md) |
|
|
77
78
|
| Select the optional Intel NPU encoder with independent CUDA or CPU decoding | [Intel NPU Whisper](../guides/native-whisper-openvino.md) |
|
|
@@ -81,7 +82,7 @@ alone does not make bare module names resolve in a browser.
|
|
|
81
82
|
| Retain a Nemotron model and diarize caller-fed audio streams | [Native speaker diarization](diarization.md) |
|
|
82
83
|
| Persist application-selected preferences through Core | [Core preferences service](core-preferences.md) |
|
|
83
84
|
| Read complete selected Git text without changing a checkout | [Git text snapshots](git-text-snapshot.md) |
|
|
84
|
-
| Own a native working checkout under per-user ArcaneData/Repos | [Native repository workspaces](core-repositories.md) |
|
|
85
|
+
| Own a native working checkout under per-user ArcaneData/Repos, with optional Windows long paths for new clones | [Native repository workspaces](core-repositories.md) and [Windows clone configuration](core-repositories.md#windows-long-paths-for-a-new-checkout) |
|
|
85
86
|
| Read Git identity defaults or select child-only author and credential hints | [Git identity configuration](core-repositories.md#git-identity-configuration) |
|
|
86
87
|
| Write, commit and push complete selected repository text | [Selected-text repository writing](core-repositories.md#write-commit-and-push-selected-text) |
|
|
87
88
|
| Observe existing checkout configuration and capture an explicit remote/ref | [Repository configuration and selected targets](core-repositories.md#existing-checkout-configuration-and-selected-targets) |
|
|
@@ -47,7 +47,7 @@ const status = await repository.status({signal});
|
|
|
47
47
|
await repository.close();
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
`createRepositoryWorkspace({name,directory,dataRoot,remote,branch,gitIdentity,onEvent,run}={})`
|
|
50
|
+
`createRepositoryWorkspace({name,directory,dataRoot,remote,branch,longPaths,gitIdentity,onEvent,run}={})`
|
|
51
51
|
returns `{directory,open,status,configuration,pull,push,write,close,drain,dispose}`. The `directory`
|
|
52
52
|
property is the absolute selected working path.
|
|
53
53
|
|
|
@@ -63,6 +63,11 @@ property is the absolute selected working path.
|
|
|
63
63
|
`branch`, when supplied, is passed unchanged to Git's `clone --branch` option;
|
|
64
64
|
otherwise Git selects the remote's default branch. Existing checkouts keep
|
|
65
65
|
their own branch, remote, tracked files, untracked files and local changes.
|
|
66
|
+
- Optional `longPaths` is a boolean for newly cloned Windows checkouts. Explicit
|
|
67
|
+
`true` or `false` supplies `clone --config core.longpaths=<value>`, so Git
|
|
68
|
+
writes that choice to the new repository before its first checkout. Omission
|
|
69
|
+
leaves Git's configuration unchanged. The option does not rewrite an existing
|
|
70
|
+
checkout, change a global setting, or alter non-Windows clone commands.
|
|
66
71
|
- `onEvent` and optional `run` use the existing SDK process owner. The default
|
|
67
72
|
adapter is `runProcess`; Git must be available on PATH. Credentials and
|
|
68
73
|
authentication remain with Git and the native host. The SDK adds no download,
|
|
@@ -90,6 +95,38 @@ A failed or cancelled clone reports the actual failure; any remaining directory
|
|
|
90
95
|
is retained for application-owned inspection. There is no automatic deletion or
|
|
91
96
|
destructive retry. Filesystem failures and complete Git diagnostics propagate.
|
|
92
97
|
|
|
98
|
+
### Windows long paths for a new checkout
|
|
99
|
+
|
|
100
|
+
Select the option in the application's native repository connection:
|
|
101
|
+
|
|
102
|
+
```javascript
|
|
103
|
+
const repository = createRepositoryWorkspace({
|
|
104
|
+
name: 'moon-cheese-dispatches',
|
|
105
|
+
remote: applicationConnection.remote,
|
|
106
|
+
longPaths: true
|
|
107
|
+
});
|
|
108
|
+
await repository.open({signal});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
This remains one ordinary Git clone, including its branch/tag selection,
|
|
112
|
+
progress, hooks, cancellation and empty-remote behavior. It does not clone
|
|
113
|
+
without checkout and run a second initialization sequence. The boolean is
|
|
114
|
+
captured when the owner is constructed; later edits to the options object
|
|
115
|
+
cannot change an accepted connection.
|
|
116
|
+
|
|
117
|
+
An explicit value intentionally selects the new repository's local
|
|
118
|
+
`core.longpaths` setting. Git's ordinary configuration precedence still applies,
|
|
119
|
+
including higher-priority command-scope settings supplied by the native host.
|
|
120
|
+
Omit the option to retain inherited or template configuration without an SDK
|
|
121
|
+
override. Existing repositories retain their settings even if this option is
|
|
122
|
+
supplied; there is no configuration migration or repair pass.
|
|
123
|
+
|
|
124
|
+
[Git documents clone-local configuration before the initial checkout](https://git-scm.com/docs/git-clone#OPTIONS).
|
|
125
|
+
[Git for Windows describes long-path support](https://gitforwindows.org/git-cannot-create-a-file-or-directory-with-a-long-path.html)
|
|
126
|
+
for its native commands; unrelated editors, scripts and host tools may have
|
|
127
|
+
their own path limitations. This option changes no filenames or payloads and
|
|
128
|
+
does not change the SDK's persistent directory selection.
|
|
129
|
+
|
|
93
130
|
## Existing checkout configuration and selected targets
|
|
94
131
|
|
|
95
132
|
`configuration({signal}={})` observes an existing checkout without invoking
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"sdkVersion": "0.
|
|
3
|
+
"sdkVersion": "0.74.0",
|
|
4
4
|
"environment": {
|
|
5
5
|
"runtime": "Node.js for Node entrypoints; browser for browser-only entrypoints",
|
|
6
6
|
"minimumVersion": "22.23.2 for Node entrypoints",
|
|
@@ -199,14 +199,14 @@
|
|
|
199
199
|
"name": "createRepositoryWorkspace",
|
|
200
200
|
"displayName": "createRepositoryWorkspace()",
|
|
201
201
|
"kind": "function",
|
|
202
|
-
"signature": "createRepositoryWorkspace({name,directory,dataRoot,remote,branch,gitIdentity,onEvent,run=runProcess}={})",
|
|
202
|
+
"signature": "createRepositoryWorkspace({name,directory,dataRoot,remote,branch,longPaths,gitIdentity,onEvent,run=runProcess}={})",
|
|
203
203
|
"entrypoints": ["arcane-os/core/repositories"],
|
|
204
204
|
"primaryImport": "arcane-os/core/repositories",
|
|
205
205
|
"group": "Native repository workspaces",
|
|
206
206
|
"summary": "Owns one selected native working checkout with ArcaneData/Repos defaults and existing Git/process lifecycle.",
|
|
207
207
|
"availability": "Node with Git on Windows, Linux and macOS; Android requires host process adaptation",
|
|
208
208
|
"protocol": "Git working repository and SDK process adapter",
|
|
209
|
-
"normalization": "Returns directory, open, status, configuration, pull, push, write and identical close/drain/dispose hooks. Only missing or empty destinations clone; existing roots are preserved. configuration observes the existing root, symbolic HEAD, origin URL/pushURL arrays and branch remote/merge/upstream URL arrays without clone/init/fetch, preserving unset, empty and repeated values. Explicit paths remain selected. Same-directory operations serialize within the process; cancellation and shutdown join accepted process work. pull/push/write accept a captured target {remote,ref} for current-branch fast-forward pull or non-force current-HEAD selected-ref push; omission retains ordinary configured behavior. write snapshots exact text and paths, stages/commits only literal owned paths and preserves unrelated staged files and Git filters. Complete outputs and causal failures retain confirmed local/committed/pushed and uncertain outcomes plus the supplied target. Optional gitIdentity captures name/email/username for child Git operations only; omitted fields remain inherited and no config file
|
|
209
|
+
"normalization": "Returns directory, open, status, configuration, pull, push, write and identical close/drain/dispose hooks. Only missing or empty destinations clone; existing roots are preserved. Optional longPaths captures a boolean: explicit Windows true/false supplies clone-local core.longpaths before the first checkout, persisting only in the new repository under ordinary Git configuration precedence. Omission preserves configuration; existing repositories and non-Windows clone commands remain unchanged. No global setting or migration. configuration observes the existing root, symbolic HEAD, origin URL/pushURL arrays and branch remote/merge/upstream URL arrays without clone/init/fetch, preserving unset, empty and repeated values. Explicit paths remain selected. Same-directory operations serialize within the process; cancellation and shutdown join accepted process work. pull/push/write accept a captured target {remote,ref} for current-branch fast-forward pull or non-force current-HEAD selected-ref push; omission retains ordinary configured behavior. write snapshots exact text and paths, stages/commits only literal owned paths and preserves unrelated staged files and Git filters. Complete outputs and causal failures retain confirmed local/committed/pushed and uncertain outcomes plus the supplied target. Optional gitIdentity captures name/email/username for child Git operations only; omitted fields remain inherited and identity selection writes no config file."
|
|
210
210
|
},
|
|
211
211
|
{
|
|
212
212
|
"id": "core-repositories:readGitIdentity",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Local image editing through Core
|
|
2
2
|
|
|
3
3
|
`createCoreImageRuntime()` exposes whole-image img2img through `edit()`, using
|
|
4
|
-
the same retained native context as generation. The
|
|
5
|
-
|
|
4
|
+
the same retained native context as generation. The built-in SD1.4 and
|
|
5
|
+
[SDXL Base 1.0](local-image-sdxl.md#edit-a-whole-image) models advertise
|
|
6
|
+
`txt2img` and `img2img`. Applications supply the original PNG, the
|
|
6
7
|
complete prompt and explicit strength, retain the original, and decide whether
|
|
7
8
|
to save the separate generated result.
|
|
8
9
|
|
|
@@ -149,6 +150,8 @@ own model-specific contracts and are outside this PNG img2img operation.
|
|
|
149
150
|
Ordinary img2img does not require LoRA training. The selected engine documents
|
|
150
151
|
this directly with its base SD1.4 model in the
|
|
151
152
|
[tagged img2img example](https://github.com/leejet/stable-diffusion.cpp/blob/master-929-3f8527a/docs/sd.md#img2img-example).
|
|
153
|
+
The complete SDXL Base checkpoint uses its embedded VAE through the same
|
|
154
|
+
image pipeline; see the [SDXL model and operation guide](local-image-sdxl.md).
|
|
152
155
|
|
|
153
156
|
Source dimensions are decoder output, not an implicit request to change the
|
|
154
157
|
generation dimensions. The engine center-crops and resizes temporary initial
|
|
@@ -157,7 +160,7 @@ Caller images remain unchanged;
|
|
|
157
160
|
even `mode=none` does not suppress all later model adaptation. See the
|
|
158
161
|
[native preprocessing contract](https://github.com/leejet/stable-diffusion.cpp/blob/master-929-3f8527a/docs/image_preprocessing.md).
|
|
159
162
|
|
|
160
|
-
An RGB-only model such as the selected SD1.4 consumes the stored RGB
|
|
163
|
+
An RGB-only model such as the selected SD1.4 or SDXL consumes the stored RGB
|
|
161
164
|
and does not preserve alpha. The SDK must not silently choose a compositing
|
|
162
165
|
background or claim that passing RGBA preserves its displayed appearance.
|
|
163
166
|
Strength zero is also not an exact-copy operation: native img2img still uses
|
|
@@ -50,7 +50,8 @@ editing or imply the same input path as SD1.4 img2img.
|
|
|
50
50
|
`sdxl-base-1.0` selects the complete SDXL Base checkpoint, including its text
|
|
51
51
|
encoders and original VAE. Its [family guide](local-image-sdxl.md) covers the
|
|
52
52
|
single model resource, 1024-by-1024 default canvas and native sampling defaults.
|
|
53
|
-
It advertises `txt2img
|
|
53
|
+
It advertises `txt2img` and whole-image `img2img` through the same public
|
|
54
|
+
`edit()` operation, using the checkpoint's embedded VAE and retained context.
|
|
54
55
|
|
|
55
56
|
The first published distribution path selects CPU on Windows and Linux.
|
|
56
57
|
On macOS, `auto` selects the same upstream universal runtime's built-in Metal
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# SDXL Base 1.0 through Core
|
|
2
2
|
|
|
3
3
|
The `sdxl-base-1.0` model definition selects Stability AI's complete SDXL Base
|
|
4
|
-
1.0 checkpoint for text-to-image generation through the
|
|
5
|
-
[local image runtime](local-image-generation.md). Applications supply their
|
|
4
|
+
1.0 checkpoint for text-to-image generation and whole-image img2img through the
|
|
5
|
+
shared [local image runtime](local-image-generation.md). Applications supply their
|
|
6
6
|
own complete prompts and own the resulting images and saved associations.
|
|
7
7
|
The model uses the shared retained native context, progress, cancellation
|
|
8
8
|
and complete PNG result contract.
|
|
@@ -40,8 +40,8 @@ selection alone does not establish actual execution on any device.
|
|
|
40
40
|
The single `model` resource is the official
|
|
41
41
|
[`sd_xl_base_1.0.safetensors` checkpoint](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/462165984030d82259a11f4367a4eed129e94a7b/sd_xl_base_1.0.safetensors)
|
|
42
42
|
at revision `462165984030d82259a11f4367a4eed129e94a7b`. It includes the text
|
|
43
|
-
encoders, denoiser and original VAE.
|
|
44
|
-
resource; a refiner, separate VAE, LoRA or Python converter is unnecessary for
|
|
43
|
+
encoders, denoiser and original VAE. Generation and whole-image editing use this
|
|
44
|
+
one resource; a refiner, separate VAE, LoRA or Python converter is unnecessary for
|
|
45
45
|
this selection. The upstream model carries the
|
|
46
46
|
[CreativeML Open RAIL++-M license](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/462165984030d82259a11f4367a4eed129e94a7b/LICENSE.md).
|
|
47
47
|
|
|
@@ -107,6 +107,39 @@ Repeated generation reuses the loaded context; unload it when the application
|
|
|
107
107
|
no longer needs it. Follow the shared lifecycle contract for request
|
|
108
108
|
cancellation, state subscriptions, unloading and accessor closure.
|
|
109
109
|
|
|
110
|
+
## Edit a whole image
|
|
111
|
+
|
|
112
|
+
After loading the same model, pass an original PNG and an explicit strength to
|
|
113
|
+
the existing public accessor. `originalPNG` is the application's PNG Blob or
|
|
114
|
+
File; the application retains it and decides whether to save the new result.
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
const edited = await images.edit({
|
|
118
|
+
model: 'sdxl-base-1.0',
|
|
119
|
+
image: originalPNG,
|
|
120
|
+
prompt: 'The octopus librarian now wears a purple knitted diving helmet.',
|
|
121
|
+
strength: 0.6,
|
|
122
|
+
signal
|
|
123
|
+
});
|
|
124
|
+
// Display edited.images using the same complete PNG Blob result contract.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
This is whole-image img2img, using the checkpoint's embedded VAE encoder,
|
|
128
|
+
denoiser and decoder. It needs no additional model resource, adapter or engine.
|
|
129
|
+
The operation reuses the same loaded context and progress/cancellation owners
|
|
130
|
+
as generation. The SDK forwards the complete prompt and original PNG; it does
|
|
131
|
+
not add style instructions or save either the request or result.
|
|
132
|
+
|
|
133
|
+
The model still defaults to a 1024-by-1024 canvas. Supply
|
|
134
|
+
`parameters: {width, height}` when choosing another output canvas; input
|
|
135
|
+
dimensions do not silently replace that selection. The native engine adapts
|
|
136
|
+
the initial raster to the selected canvas and denoises the whole image.
|
|
137
|
+
Framing, texture, identity and individual pixels are model results, not
|
|
138
|
+
preservation guarantees. Strength zero is not an exact-copy operation, and
|
|
139
|
+
the RGB model does not preserve alpha. See the shared
|
|
140
|
+
[editing contract](local-image-editing.md) for supported PNG encodings,
|
|
141
|
+
native preprocessing, full-result handling and cancellation.
|
|
142
|
+
|
|
110
143
|
## Defaults and operation scope
|
|
111
144
|
|
|
112
145
|
Only canvas dimensions are model-specific defaults here. Sampling parameters
|
|
@@ -127,9 +160,9 @@ applies its own text conditioning and prompt-weighting syntax; see the shared
|
|
|
127
160
|
guide for native string-boundary limitations. The SDK adds no avatar wording,
|
|
128
161
|
style instructions or application-specific content.
|
|
129
162
|
|
|
130
|
-
This definition advertises `txt2img
|
|
131
|
-
|
|
132
|
-
|
|
163
|
+
This definition advertises `txt2img` and `img2img`. Masked and reference-image
|
|
164
|
+
editing are separate operations with their own model and runtime requirements;
|
|
165
|
+
this base selection does not advertise them.
|
|
133
166
|
|
|
134
167
|
The model resource and standalone use follow the
|
|
135
168
|
[official model card](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/462165984030d82259a11f4367a4eed129e94a7b/README.md).
|
|
@@ -137,3 +170,7 @@ Native defaults and embedded-VAE behavior follow the selected engine's
|
|
|
137
170
|
[request implementation](https://github.com/leejet/stable-diffusion.cpp/blob/master-929-3f8527a/src/pipeline/request.cpp),
|
|
138
171
|
[parameter initialization](https://github.com/leejet/stable-diffusion.cpp/blob/master-929-3f8527a/src/stable-diffusion.cpp)
|
|
139
172
|
and [model construction](https://github.com/leejet/stable-diffusion.cpp/blob/master-929-3f8527a/src/pipeline/model_builders.cpp).
|
|
173
|
+
The pinned [image pipeline](https://github.com/leejet/stable-diffusion.cpp/blob/3f8527a/src/pipeline/image.cpp)
|
|
174
|
+
encodes the initial image, samples its latent and decodes the result. That
|
|
175
|
+
implementation establishes the operation path; source inspection alone does
|
|
176
|
+
not establish execution, output quality or device performance.
|
|
@@ -319,6 +319,7 @@ The remaining data-only subpaths are eight JSON Schemas and package metadata.
|
|
|
319
319
|
| `repositoryPush()` | function | `arcane-os` | Workspace, doctor, repository, and server | Node; network-assisted Git |
|
|
320
320
|
| `repositoryStatus()` | function | `arcane-os` | Workspace, doctor, repository, and server | Node |
|
|
321
321
|
| `resolveNativeBuildOutputRoot()` | function | `arcane-os` | Targets, native plans, and providers | Node; selected browser/native target or provider as documented |
|
|
322
|
+
| `resolvePwaRetirementResponse()` | function | `arcane-os` | Workspace, doctor, repository, and server | Node; browser service-worker lifecycle remains browser-owned |
|
|
322
323
|
| `resolveWorkspace()` | function | `arcane-os` | Workspace, doctor, repository, and server | Node |
|
|
323
324
|
| `ROOT_CONFIG_NAME` | constant | `arcane-os/packager` | Packaging and release bundles | Node |
|
|
324
325
|
| `discoverApps()` | function | `arcane-os` | Workspace, doctor, repository, and server | Node |
|
|
@@ -8095,7 +8096,7 @@ explicit existing path. The application owns the remote, branch and Core API.
|
|
|
8095
8096
|
### Signature and result
|
|
8096
8097
|
|
|
8097
8098
|
```text
|
|
8098
|
-
createRepositoryWorkspace({name,directory,dataRoot,remote,branch,gitIdentity,onEvent,run=runProcess}={})
|
|
8099
|
+
createRepositoryWorkspace({name,directory,dataRoot,remote,branch,longPaths,gitIdentity,onEvent,run=runProcess}={})
|
|
8099
8100
|
```
|
|
8100
8101
|
|
|
8101
8102
|
Returns `{directory,open,status,configuration,pull,push,write,close,drain,dispose}`. Construction does
|
|
@@ -8106,6 +8107,14 @@ work and preserves the checkout. No CLI cwd, launch state, preference, snapshot
|
|
|
8106
8107
|
cache or existing user-data location changes. See the [complete inputs, results,
|
|
8107
8108
|
errors and lifecycle](core-repositories.md#one-connected-working-checkout).
|
|
8108
8109
|
|
|
8110
|
+
Optional `longPaths` captures a boolean for new Windows clones. Explicit true
|
|
8111
|
+
or false supplies clone-local `core.longpaths` before the first checkout and
|
|
8112
|
+
persists it only in the new repository. Omission preserves inherited/template
|
|
8113
|
+
configuration. Existing repositories and non-Windows clone commands remain
|
|
8114
|
+
unchanged; no global setting or data migration is performed. Git's ordinary
|
|
8115
|
+
configuration precedence, hooks and single-clone lifecycle remain in effect.
|
|
8116
|
+
See [Windows long paths](core-repositories.md#windows-long-paths-for-a-new-checkout).
|
|
8117
|
+
|
|
8109
8118
|
Optional `gitIdentity:{name?,email?,username?}` captures explicit non-secret
|
|
8110
8119
|
settings for child Git operations without writing global/local configuration.
|
|
8111
8120
|
Selected author fields override inherited child author/committer fields;
|
package/package.json
CHANGED
|
@@ -45,7 +45,7 @@ export function resolveArcaneDataPaths({dataRoot} = {}) {
|
|
|
45
45
|
|
|
46
46
|
/** One connected checkout, composed into an application's own Core service. */
|
|
47
47
|
export function createRepositoryWorkspace(
|
|
48
|
-
{name, directory, dataRoot, remote, branch, gitIdentity, onEvent, run = runProcess} = {}
|
|
48
|
+
{name, directory, dataRoot, remote, branch, longPaths, gitIdentity, onEvent, run = runProcess} = {}
|
|
49
49
|
) {
|
|
50
50
|
let selected = directory;
|
|
51
51
|
if (selected === undefined) {
|
|
@@ -58,6 +58,9 @@ export function createRepositoryWorkspace(
|
|
|
58
58
|
requireString(selected, 'directory');
|
|
59
59
|
if (remote !== undefined) requireString(remote, 'remote');
|
|
60
60
|
if (branch !== undefined) requireString(branch, 'branch');
|
|
61
|
+
if (longPaths !== undefined && !is.boolean(longPaths)) {
|
|
62
|
+
throw new TypeError('longPaths must be a boolean when supplied.');
|
|
63
|
+
}
|
|
61
64
|
if (!is.function(run)) throw new TypeError('run must implement the SDK process adapter.');
|
|
62
65
|
const execute = createGitIdentityRunner(run, gitIdentity);
|
|
63
66
|
const repositoryDirectory = path.resolve(selected);
|
|
@@ -100,6 +103,11 @@ export function createRepositoryWorkspace(
|
|
|
100
103
|
await mkdir(path.dirname(repositoryDirectory), {recursive: true});
|
|
101
104
|
throwIfAborted(signal);
|
|
102
105
|
const arguments_ = ['clone', '--progress'];
|
|
106
|
+
// Clone-local configuration persists before the first checkout. Omission
|
|
107
|
+
// leaves inherited settings alone; existing repositories never reach here.
|
|
108
|
+
if (process.platform === 'win32' && longPaths !== undefined) {
|
|
109
|
+
arguments_.push('--config', `core.longpaths=${longPaths}`);
|
|
110
|
+
}
|
|
103
111
|
if (branch !== undefined) arguments_.push('--branch', branch);
|
|
104
112
|
arguments_.push('--', remote, repositoryDirectory);
|
|
105
113
|
const result = await prepareRun(
|