···332 }
333 return dict, nil
334 },
335- "queryParams": func(params ...any) (url.Values, error) {
336- if len(params)%2 != 0 {
337- return nil, errors.New("invalid queryParams call")
338- }
339- vals := make(url.Values, len(params)/2)
340- for i := 0; i < len(params); i += 2 {
341- key, ok := params[i].(string)
342- if !ok {
343- return nil, errors.New("queryParams keys must be strings")
344- }
345- v, ok := params[i+1].(string)
346- if !ok {
347- return nil, errors.New("queryParams values must be strings")
348- }
349- vals.Add(key, v)
350- }
351- return vals, nil
352- },
353 "deref": func(v any) any {
354 val := reflect.ValueOf(v)
355 if val.Kind() == reflect.Pointer && !val.IsNil() {
···332 }
333 return dict, nil
334 },
000000000000000000335 "deref": func(v any) any {
336 val := reflect.ValueOf(v)
337 if val.Kind() == reflect.Pointer && !val.IsNil() {
+1-1
appview/pages/templates/banner.html
···30 <div class="mx-6">
31 These services may not be fully accessible until upgraded.
32 <a class="underline text-red-800 dark:text-red-200"
33- href="https://docs.tangled.org/migrating-knots-and-spindles.html">
34 Click to read the upgrade guide</a>.
35 </div>
36 </details>
···30 <div class="mx-6">
31 These services may not be fully accessible until upgraded.
32 <a class="underline text-red-800 dark:text-red-200"
33+ href="https://docs.tangled.org/migrating-knots-spindles.html#migrating-knots-spindles">
34 Click to read the upgrade guide</a>.
35 </div>
36 </details>
···375KNOT_SERVER_LISTEN_ADDR=127.0.0.1:5555
376```
377378-If you run a Linux distribution that uses systemd, you can
379-use the provided service file to run the server. Copy
380-[`knotserver.service`](https://tangled.org/tangled.org/core/blob/master/systemd/knotserver.service)
381to `/etc/systemd/system/`. Then, run:
382383```
···692 NODE_ENV: "production"
693 MY_ENV_VAR: "MY_ENV_VALUE"
694```
695-696-By default, the following environment variables set:
697-698-- `CI` - Always set to `true` to indicate a CI environment
699-- `TANGLED_PIPELINE_ID` - The AT URI of the current pipeline
700-- `TANGLED_REPO_KNOT` - The repository's knot hostname
701-- `TANGLED_REPO_DID` - The DID of the repository owner
702-- `TANGLED_REPO_NAME` - The name of the repository
703-- `TANGLED_REPO_DEFAULT_BRANCH` - The default branch of the
704- repository
705-- `TANGLED_REPO_URL` - The full URL to the repository
706-707-These variables are only available when the pipeline is
708-triggered by a push:
709-710-- `TANGLED_REF` - The full git reference (e.g.,
711- `refs/heads/main` or `refs/tags/v1.0.0`)
712-- `TANGLED_REF_NAME` - The short name of the reference
713- (e.g., `main` or `v1.0.0`)
714-- `TANGLED_REF_TYPE` - The type of reference, either
715- `branch` or `tag`
716-- `TANGLED_SHA` - The commit SHA that triggered the pipeline
717-- `TANGLED_COMMIT_SHA` - Alias for `TANGLED_SHA`
718-719-These variables are only available when the pipeline is
720-triggered by a pull request:
721-722-- `TANGLED_PR_SOURCE_BRANCH` - The source branch of the pull
723- request
724-- `TANGLED_PR_TARGET_BRANCH` - The target branch of the pull
725- request
726-- `TANGLED_PR_SOURCE_SHA` - The commit SHA of the source
727- branch
728729### Steps
730
···375KNOT_SERVER_LISTEN_ADDR=127.0.0.1:5555
376```
377378+If you run a Linux distribution that uses systemd, you can use the provided
379+service file to run the server. Copy
380+[`knotserver.service`](/systemd/knotserver.service)
381to `/etc/systemd/system/`. Then, run:
382383```
···692 NODE_ENV: "production"
693 MY_ENV_VAR: "MY_ENV_VALUE"
694```
000000000000000000000000000000000695696### Steps
697