systemlink-cli 1.13.7__tar.gz → 1.13.8__tar.gz
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.
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/PKG-INFO +1 -1
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/pyproject.toml +1 -1
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/_version.py +1 -1
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/SKILL.md +55 -2
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/references/deployment.md +22 -5
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/references/nimble-angular.md +26 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/references/troubleshooting.md +10 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/LICENSE +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/dff-editor/editor.js +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/dff-editor/index.html +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/__init__.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/__main__.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/asset_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/cli_formatters.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/cli_utils.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/comment_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/completion_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/config.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/config_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/dataframe_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/dff_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/dff_decorators.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/example_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/example_loader.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/example_provisioner.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/README.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/_schema/schema-v1.0.json +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/demo-complete-workflow/README.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/demo-complete-workflow/config.yaml +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/demo-test-plans/README.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/demo-test-plans/config.yaml +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/feed_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/file_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/function_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/function_templates.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/main.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/mcp_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/mcp_reachability.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/mcp_server.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/notebook_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/platform.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/policy_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/policy_utils.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/profiles.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/response_handlers.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/rich_output.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/routine_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skill_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/nipkg-file-package/SKILL.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/SKILL.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/commands.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/datasheet-workflow.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/filtering.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/troubleshooting.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-job-debugging/SKILL.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-notebook/SKILL.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-notebook/references/interfaces.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-notebook/references/notebook-patterns.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-python-test/SKILL.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/references/angular-ui-packages.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/references/layout-patterns.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-webapp/references/systemlink-services.md +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/spec_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/ssl_trust.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/state_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/system_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/system_query_utils.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/table_utils.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/tag_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/templates_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/testmonitor_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/universal_handlers.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/user_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/utils.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/web_editor.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/webapp_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/workflow_preview.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/workflows_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/workitem_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/workspace_click.py +0 -0
- {systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/workspace_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "systemlink-cli"
|
|
3
|
-
version = "1.13.
|
|
3
|
+
version = "1.13.8"
|
|
4
4
|
description = "SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates."
|
|
5
5
|
authors = ["Fred Visser <fred.visser@emerson.com>"]
|
|
6
6
|
packages = [{ include = "slcli" }]
|
|
@@ -38,7 +38,7 @@ Before generating code, clarify only the details that change the implementation:
|
|
|
38
38
|
4. Auth context: same-origin hosted app versus remote/dev API-key flow.
|
|
39
39
|
5. Deployment target: ordinary hosted webapp only, or Plugin Manager package as well.
|
|
40
40
|
|
|
41
|
-
Do not ask about Angular or Nimble versions unless the user is constrained by an existing project. Default to Angular 20 and the latest compatible `@ni/nimble-angular
|
|
41
|
+
Do not ask about Angular or Nimble versions unless the user is constrained by an existing project. Default to Angular 20 and the latest compatible `@ni/nimble-angular`, but verify the installed versions immediately after scaffold instead of assuming the generator produced the expected combination.
|
|
42
42
|
|
|
43
43
|
For new SystemLink apps, recommend installing the NI Angular UI packages together unless the user is intentionally minimizing dependencies. `@ni/nimble-angular` remains the default foundation, `@ni/spright-angular` adds Spright chat and icon components, and `@ni/ok-angular` adds OK-specific controls such as accordion items and search input.
|
|
44
44
|
|
|
@@ -56,11 +56,31 @@ Then generate Angular in that starter directory so the SystemLink scaffolding st
|
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
npx -y @angular/cli@20 new <app-name> --directory . --routing --style=scss --skip-git --no-standalone --defaults --force
|
|
59
|
-
npm install @ni/nimble-angular @ni/spright-angular @ni/ok-angular @ni/systemlink-clients-ts
|
|
59
|
+
npm install @ni/nimble-angular @ni/nimble-components @ni/unit-format @ni/spright-angular @ni/ok-angular @ni/systemlink-clients-ts @angular/localize
|
|
60
|
+
npm install --save-dev @angular-devkit/build-angular
|
|
60
61
|
```
|
|
61
62
|
|
|
62
63
|
Prefer NgModule-based apps for this workflow. The Nimble Angular wrapper modules fit naturally into a centralized `AppModule`, which reduces template surprises and keeps imports explicit.
|
|
63
64
|
|
|
65
|
+
Immediately after scaffold, inspect `package.json` and `angular.json` before building features. The generator or migrations may leave the workspace on the wrong Angular major or on a builder configuration that does not bundle `@ni/nimble-angular` cleanly.
|
|
66
|
+
|
|
67
|
+
For the currently supported path, standardize on:
|
|
68
|
+
|
|
69
|
+
- Angular 20.x
|
|
70
|
+
- `@ni/nimble-angular` 33.2.x
|
|
71
|
+
- `@ni/nimble-components` 35.8.x
|
|
72
|
+
- `@ni/unit-format` 1.0.4+
|
|
73
|
+
- `@angular/localize` installed and added to build and test polyfills
|
|
74
|
+
|
|
75
|
+
If the workspace ends up on `@angular/build:application` and Nimble fails to bundle with `Could not resolve '@ni/nimble-components/dist/esm/...'`, switch `angular.json` back to the legacy Angular builders:
|
|
76
|
+
|
|
77
|
+
- `@angular-devkit/build-angular:browser`
|
|
78
|
+
- `@angular-devkit/build-angular:dev-server`
|
|
79
|
+
- `@angular-devkit/build-angular:extract-i18n`
|
|
80
|
+
- `@angular-devkit/build-angular:karma`
|
|
81
|
+
|
|
82
|
+
This fallback is not optional when the Nimble packages fail under the application builder. Fix the builder mismatch before implementing more UI.
|
|
83
|
+
|
|
64
84
|
Recommend installing `@ni/spright-angular` and `@ni/ok-angular` early even if the first slice only uses Nimble. That avoids dependency churn later when the UI needs chat surfaces, product-specific icons, accordion items, or the OK search input.
|
|
65
85
|
|
|
66
86
|
If the user has not run `slcli webapp init` and explicitly wants a SystemLink-hosted webapp, recommend it first unless they want a manual setup.
|
|
@@ -76,6 +96,8 @@ These decisions prevent the most common hosted-webapp failures:
|
|
|
76
96
|
- Do not add `CUSTOM_ELEMENTS_SCHEMA` just to silence missing Nimble module imports.
|
|
77
97
|
- Put theme-aware color and shadow aliases on `nimble-theme-provider`, not on `:root`.
|
|
78
98
|
- Import `@angular/localize/init` in Angular polyfills for both build and test paths.
|
|
99
|
+
- Import Nimble fonts once in the root `src/styles.scss` with `@use '@ni/nimble-angular/styles/fonts' as *;`. Without this, Nimble components render with fallback system fonts instead of the required Source Sans Pro typeface.
|
|
100
|
+
- Run a production build immediately after setup changes. Do not postpone the first `npm run build` until after the UI is implemented.
|
|
79
101
|
|
|
80
102
|
If you need the exact module patterns or template wiring, load [references/nimble-angular.md](./references/nimble-angular.md).
|
|
81
103
|
If you need a concise package-level inventory before choosing components, load [references/angular-ui-packages.md](./references/angular-ui-packages.md).
|
|
@@ -90,6 +112,16 @@ Use SystemLink-appropriate layout defaults instead of inventing page structure f
|
|
|
90
112
|
- Use accordions for grouped fields and advanced configuration.
|
|
91
113
|
- Use cards sparingly for summaries, not as the default editing or data layout.
|
|
92
114
|
|
|
115
|
+
Treat Nimble alignment as a requirement, not a style preference:
|
|
116
|
+
|
|
117
|
+
- Use Nimble controls for primary actions, selection, inputs, status, and data display.
|
|
118
|
+
- Use raw HTML elements mostly for semantic grouping, layout wrappers, and text structure.
|
|
119
|
+
- Do not build custom-styled buttons, inputs, dropdowns, tabs, or pseudo-cards when Nimble already provides the interaction primitive.
|
|
120
|
+
- Prefer Nimble spacing, borders, focus states, and theme tokens over bespoke visual treatments.
|
|
121
|
+
- If a page starts to look like a generic marketing dashboard instead of a SystemLink tool, pull it back toward table/list-detail, drawers, banners, tabs, and structured metadata panels.
|
|
122
|
+
|
|
123
|
+
The goal is a webapp that feels native to the SystemLink shell, not an arbitrary Angular site hosted inside it.
|
|
124
|
+
|
|
93
125
|
Load [references/layout-patterns.md](./references/layout-patterns.md) when the task turns into page composition, spacing, or shell layout work.
|
|
94
126
|
|
|
95
127
|
### 4. Integrate SystemLink APIs the low-risk way
|
|
@@ -117,6 +149,14 @@ When the user asks for implementation, prefer one working slice over a full app
|
|
|
117
149
|
- one error banner
|
|
118
150
|
- one settings/control path only if required
|
|
119
151
|
|
|
152
|
+
For a new app, the first vertical slice should also prove the setup:
|
|
153
|
+
|
|
154
|
+
- scaffold completes
|
|
155
|
+
- Angular and NI package versions are compatible
|
|
156
|
+
- the app builds successfully
|
|
157
|
+
- one Nimble-based route renders
|
|
158
|
+
- one real SystemLink query works in the hosted shell
|
|
159
|
+
|
|
120
160
|
This keeps context narrow and usually reveals the real integration blockers faster than broad scaffolding.
|
|
121
161
|
|
|
122
162
|
### 6. Publish or package only after the hosted constraints are covered
|
|
@@ -137,6 +177,7 @@ Always verify:
|
|
|
137
177
|
- the browser console is clear of blocking errors
|
|
138
178
|
- the correct SystemLink data loads
|
|
139
179
|
- light/dark theme switching updates the app in real time
|
|
180
|
+
- the page still reads as a Nimble/SystemLink experience rather than a custom HTML dashboard
|
|
140
181
|
|
|
141
182
|
Load [references/troubleshooting.md](./references/troubleshooting.md) for the hosted validation flow and symptom-based fixes.
|
|
142
183
|
|
|
@@ -145,14 +186,20 @@ Load [references/troubleshooting.md](./references/troubleshooting.md) for the ho
|
|
|
145
186
|
Before you consider a SystemLink webapp slice correct, confirm all of the following:
|
|
146
187
|
|
|
147
188
|
- Angular 20 workspace created in the intended starter directory.
|
|
189
|
+
- Angular and NI package versions verified after scaffold, not assumed.
|
|
190
|
+
- `@ni/nimble-components`, `@ni/unit-format`, `@angular/localize`, and `@angular-devkit/build-angular` installed when using `@ni/nimble-angular`.
|
|
191
|
+
- `angular.json` uses builders that are known to bundle Nimble successfully.
|
|
148
192
|
- `AppModule` provides `APP_BASE_HREF`.
|
|
149
193
|
- `index.html` does not contain a `<base>` element.
|
|
150
194
|
- Router uses `useHash: true`.
|
|
151
195
|
- Production build disables `inlineCritical`.
|
|
196
|
+
- Root `src/styles.scss` imports `@use '@ni/nimble-angular/styles/fonts' as *;`.
|
|
152
197
|
- Nimble Angular modules are imported explicitly.
|
|
198
|
+
- Primary interaction controls use Nimble wrappers rather than custom HTML surrogates.
|
|
153
199
|
- No hardcoded colors in component SCSS.
|
|
154
200
|
- Theme-aware aliases live on `nimble-theme-provider`.
|
|
155
201
|
- API client uses the correct SystemLink service base URL.
|
|
202
|
+
- `npm run build` passes before publish.
|
|
156
203
|
- Hosted deployment is validated after publish.
|
|
157
204
|
|
|
158
205
|
## Default implementation stance
|
|
@@ -162,20 +209,26 @@ Use these defaults unless the user asks for a different tradeoff:
|
|
|
162
209
|
- Angular 20
|
|
163
210
|
- NgModule-based app
|
|
164
211
|
- `@ni/nimble-angular`
|
|
212
|
+
- `@ni/nimble-components`
|
|
213
|
+
- `@ni/unit-format`
|
|
165
214
|
- `@ni/spright-angular`
|
|
166
215
|
- `@ni/ok-angular`
|
|
167
216
|
- `@ni/systemlink-clients-ts`
|
|
168
217
|
- table-first data presentation
|
|
169
218
|
- same-origin cookie auth
|
|
170
219
|
- long-form CLI flags in examples and commands
|
|
220
|
+
- Nimble-first interaction design with minimal bespoke chrome
|
|
171
221
|
|
|
172
222
|
## Common mistakes to prevent up front
|
|
173
223
|
|
|
174
224
|
- Treating the app like a normal root-hosted Angular SPA instead of an iframe/sub-path app.
|
|
225
|
+
- Assuming the scaffolded Angular major or builder is already correct for Nimble.
|
|
226
|
+
- Waiting until the end of implementation to run the first production build.
|
|
175
227
|
- Checking only the `theme` attribute instead of verifying resolved Nimble tokens.
|
|
176
228
|
- Putting theme-aware aliases on `:root`.
|
|
177
229
|
- Overriding SDK base URLs with incomplete service prefixes.
|
|
178
230
|
- Using raw HTML controls where Nimble primitives should define the interaction model.
|
|
231
|
+
- Letting the page drift into a custom dashboard aesthetic that ignores Nimble interaction and spacing patterns.
|
|
179
232
|
- Loading too much reference material before the task requires it.
|
|
180
233
|
|
|
181
234
|
## When to escalate into the references
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
## Prerequisites
|
|
4
4
|
|
|
5
5
|
- `slcli` installed and authenticated (`slcli login` or config file present)
|
|
6
|
-
- Angular app built
|
|
6
|
+
- Angular app built successfully
|
|
7
|
+
- Publish path confirmed for the active builder:
|
|
8
|
+
- `dist/<app-name>/browser/` for the application builder
|
|
9
|
+
- `dist/<app-name>/` for the legacy browser builder
|
|
7
10
|
|
|
8
11
|
---
|
|
9
12
|
|
|
@@ -11,12 +14,19 @@
|
|
|
11
14
|
|
|
12
15
|
```bash
|
|
13
16
|
# Run from project root
|
|
14
|
-
node_modules/.bin/ng build --configuration production
|
|
17
|
+
node_modules/.bin/ng build --configuration production
|
|
15
18
|
```
|
|
16
19
|
|
|
17
20
|
**Do NOT pass `--base-href`.** This would reintroduce a `<base>` element that violates SystemLink's CSP.
|
|
18
21
|
|
|
19
|
-
Angular
|
|
22
|
+
Angular may emit different publish roots depending on the active builder.
|
|
23
|
+
|
|
24
|
+
- `@angular/build:application` emits browser assets under `dist/<app-name>/browser/`
|
|
25
|
+
- `@angular-devkit/build-angular:browser` emits browser assets directly under `dist/<app-name>/`
|
|
26
|
+
|
|
27
|
+
Always inspect the actual build output before publishing. Do not hardcode `/browser/` if the workspace is on the legacy builder.
|
|
28
|
+
|
|
29
|
+
If `npm run build` fails with `Could not resolve '@ni/nimble-components/dist/esm/...'` while using `@ni/nimble-angular`, switch the workspace to the legacy Angular browser builder before continuing. Do not publish from a half-fixed setup.
|
|
20
30
|
|
|
21
31
|
### Background build (if terminal has heredoc/interrupt issues)
|
|
22
32
|
|
|
@@ -33,7 +43,7 @@ tail -f /tmp/ng-build.log
|
|
|
33
43
|
## First deploy (no existing webapp)
|
|
34
44
|
|
|
35
45
|
```bash
|
|
36
|
-
slcli webapp publish
|
|
46
|
+
slcli webapp publish <ACTUAL_BUILD_OUTPUT_DIR> --workspace <workspace-name>
|
|
37
47
|
```
|
|
38
48
|
|
|
39
49
|
The command prints the new webapp ID. **Save it** — you need it for every future redeploy and for `slcli webapp open`.
|
|
@@ -49,7 +59,7 @@ Created webapp: 3727d9ac-86e1-4d6e-820e-d2630c1b28e9
|
|
|
49
59
|
## Redeploy (update existing webapp)
|
|
50
60
|
|
|
51
61
|
```bash
|
|
52
|
-
slcli webapp publish
|
|
62
|
+
slcli webapp publish <ACTUAL_BUILD_OUTPUT_DIR> --workspace <workspace-name> --id <webapp-id>
|
|
53
63
|
```
|
|
54
64
|
|
|
55
65
|
---
|
|
@@ -86,9 +96,11 @@ Before publishing, verify:
|
|
|
86
96
|
- [ ] `app.module.ts` provides `{ provide: APP_BASE_HREF, useValue: '/' }`
|
|
87
97
|
- [ ] `app-routing.module.ts` uses `useHash: true`
|
|
88
98
|
- [ ] `angular.json` has `inlineCritical: false` in production optimization
|
|
99
|
+
- [ ] `angular.json` uses a builder that bundles `@ni/nimble-angular` successfully
|
|
89
100
|
- [ ] `basePath` is `window.location.origin + '/<service-prefix>'` (not just origin)
|
|
90
101
|
- [ ] `credentials: 'include'` (or equivalent) set on API client
|
|
91
102
|
- [ ] Build succeeded with no errors (warnings about bundle size are OK if within 2MB error limit)
|
|
103
|
+
- [ ] Publish path matches the active builder output
|
|
92
104
|
|
|
93
105
|
---
|
|
94
106
|
|
|
@@ -114,6 +126,11 @@ Before publishing, verify:
|
|
|
114
126
|
- Beasties CSS inliner is injecting `onload` handlers
|
|
115
127
|
- Fix: set `inlineCritical: false` in angular.json
|
|
116
128
|
|
|
129
|
+
### Nimble packages fail to resolve during build
|
|
130
|
+
|
|
131
|
+
- You may be on `@angular/build:application` with a Nimble package layout that esbuild does not resolve cleanly
|
|
132
|
+
- Fix: install `@angular-devkit/build-angular` and switch to the legacy browser/dev-server builders in `angular.json`
|
|
133
|
+
|
|
117
134
|
### "Budget exceeded" build error
|
|
118
135
|
|
|
119
136
|
Increase error limits in `angular.json`:
|
|
@@ -10,6 +10,32 @@ When building Angular apps with Nimble, use `@ni/nimble-angular` wrapper modules
|
|
|
10
10
|
- Do not add `CUSTOM_ELEMENTS_SCHEMA` just to silence unknown Nimble elements in templates. That usually hides a missing module import and weakens Angular's template validation.
|
|
11
11
|
- If a Nimble icon or control is unknown, first look for the matching module in `@ni/nimble-angular` and import it.
|
|
12
12
|
|
|
13
|
+
## Fonts
|
|
14
|
+
|
|
15
|
+
Nimble requires the Source Sans Pro font family. Without this import, all Nimble components render with fallback system fonts (Arial) and the UI will not match the SystemLink design system.
|
|
16
|
+
|
|
17
|
+
Import the fonts **once** in the root `src/styles.scss`:
|
|
18
|
+
|
|
19
|
+
```scss
|
|
20
|
+
@use '@ni/nimble-angular/styles/fonts' as *;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This registers `@font-face` declarations for Source Sans Pro (Regular, Light, SemiBold) and Source Code Pro, loading `.woff2` files bundled in `@ni/nimble-tokens`.
|
|
24
|
+
|
|
25
|
+
To use Nimble design tokens (colors, font sizes, spacing) in component SCSS files, also import:
|
|
26
|
+
|
|
27
|
+
```scss
|
|
28
|
+
@use '@ni/nimble-angular/styles/tokens' as *;
|
|
29
|
+
|
|
30
|
+
.my-element {
|
|
31
|
+
font-family: $ni-nimble-body-font-family;
|
|
32
|
+
font-size: $ni-nimble-body-font-size;
|
|
33
|
+
color: $ni-nimble-body-font-color;
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Do not duplicate the fonts import in component SCSS — it belongs only in the global `styles.scss`.
|
|
38
|
+
|
|
13
39
|
## nimble-theme-provider
|
|
14
40
|
|
|
15
41
|
Wrap your entire app. Always place at the root component level.
|
|
@@ -46,6 +46,7 @@ If the `theme` attribute changes but the colors do not:
|
|
|
46
46
|
| Error or symptom | Likely cause | Fix |
|
|
47
47
|
| ----------------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
48
48
|
| `$localize is not defined` | Angular localize polyfill missing | Add `@angular/localize/init` to Angular polyfills |
|
|
49
|
+
| `Could not resolve '@ni/nimble-components/dist/esm/...'` during build | Nimble package layout not bundling under Angular application builder | Install `@angular-devkit/build-angular` and switch `angular.json` back to the legacy browser/dev-server builders |
|
|
49
50
|
| NG04002 or blank screen | Path routing under SystemLink sub-path | Use hash routing |
|
|
50
51
|
| CSP `base-uri` error | `<base>` tag present | Remove `<base>` and provide `APP_BASE_HREF` via DI |
|
|
51
52
|
| CSP `unsafe-inline` error from styles | Critical CSS inlining injected handlers | Set `inlineCritical: false` |
|
|
@@ -63,6 +64,7 @@ If the `theme` attribute changes but the colors do not:
|
|
|
63
64
|
- confirm `nimble-theme-provider` is present
|
|
64
65
|
- confirm the required Nimble Angular modules are imported
|
|
65
66
|
- confirm the app uses Nimble components instead of native HTML controls for primary interactions
|
|
67
|
+
- confirm the page is not relying on custom-styled HTML buttons, inputs, or cards where Nimble controls should own the interaction
|
|
66
68
|
|
|
67
69
|
### App follows the shell theme attribute but colors still look wrong
|
|
68
70
|
|
|
@@ -76,6 +78,13 @@ If the `theme` attribute changes but the colors do not:
|
|
|
76
78
|
- verify cookie auth versus API-key mode
|
|
77
79
|
- verify the generated request body shape matches the real API
|
|
78
80
|
|
|
81
|
+
### Build fails before the app ever runs
|
|
82
|
+
|
|
83
|
+
- verify the Angular major matches the installed `@ni/nimble-angular` peer dependency
|
|
84
|
+
- verify `@ni/nimble-components`, `@ni/unit-format`, and `@angular/localize` are installed
|
|
85
|
+
- if the workspace uses `@angular/build:application` and Nimble imports fail to resolve, move back to `@angular-devkit/build-angular:browser`
|
|
86
|
+
- rerun `npm run build` before changing more application code
|
|
87
|
+
|
|
79
88
|
### Dialogs or advanced overlays do not open
|
|
80
89
|
|
|
81
90
|
- do not gate `nimble-dialog` with `*ngIf`
|
|
@@ -87,6 +96,7 @@ Before publishing or redeploying, verify:
|
|
|
87
96
|
|
|
88
97
|
- no hardcoded colors remain in component styles
|
|
89
98
|
- Nimble primitives are used for the main controls and data views
|
|
99
|
+
- the page reads as a Nimble/SystemLink tool rather than a bespoke HTML dashboard
|
|
90
100
|
- `APP_BASE_HREF` is provided and no `<base>` tag exists
|
|
91
101
|
- routing uses `useHash: true`
|
|
92
102
|
- production build disables `inlineCritical`
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/demo-complete-workflow/README.md
RENAMED
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/demo-complete-workflow/config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/exercise-7-1-test-plans/README.md
RENAMED
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/exercise-7-1-test-plans/config.yaml
RENAMED
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/README.md
RENAMED
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/examples/spec-compliance-notebooks/config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/analysis-recipes.md
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/datasheet-workflow.md
RENAMED
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/slcli/references/troubleshooting.md
RENAMED
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-job-debugging/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.13.7 → systemlink_cli-1.13.8}/slcli/skills/systemlink-python-test/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|