Fix/fe bugs 3 (#2943)

* fix typeo in patch db seed

* show all registries in updates tab, fix required dependnecy display in marketplace, update browser tab title desc

* always show pointer for version select

* chore: fix comments

* support html in action desc and marketplace long desc, only show qr in action res if qr is true

* disable save if smtp creds not edited, show better smtp success message

* dont dismiss login spinner until patchDB returns

* feat: redesign of service dashboard and interface (#2946)

* feat: redesign of service dashboard and interface

* chore: comments

* re-add setup complete

* dibale launch UI when not running, re-style things, rename things

* back to 1000

* fix clearnet docs link and require password retype in setup wiz

* faster hint display

* display dependency ID if title not available

* fix migration

* better init progress view

* fix setup success page by providing VERSION and notifications page fixes

* force uninstall from service error page, soft or hard

* handle error state better

* chore: fixed for install and setup wizards

* chore: fix issues (#2949)

* enable and disable kiosk mode

* minor fixes

* fix dependency mounts

* dismissable tasks

* provide replayId

* default if health check success message is null

* look for wifi interface too

* dash for null user agent in sessions

* add disk repair to diagnostic api

---------

Co-authored-by: waterplea <alexander@inkin.ru>
Co-authored-by: Aiden McClelland <me@drbonez.dev>
This commit is contained in:
Matt Hill
2025-05-21 19:04:26 -06:00
committed by GitHub
parent 44560c8da8
commit b40849f672
123 changed files with 1662 additions and 964 deletions

View File

@@ -1,4 +1,3 @@
import { ExtendedVersion, VersionRange } from "./exver"
import {
ActionId,
ActionInput,
@@ -15,6 +14,7 @@ import {
ServiceInterface,
CreateTaskParams,
MainStatus,
MountParams,
} from "./osBindings"
import {
PackageId,
@@ -23,7 +23,6 @@ import {
SmtpValue,
ActionResult,
} from "./types"
import { UrlString } from "./util/getServiceInterface"
/** Used to reach out from the pure js runtime */
@@ -80,15 +79,7 @@ export type Effects = {
packageIds?: PackageId[]
}): Promise<CheckDependenciesResult[]>
/** mount a volume of a dependency */
mount(options: {
location: string
target: {
packageId: string
volumeId: string
subpath: string | null
readonly: boolean
}
}): Promise<string>
mount(options: MountParams): Promise<string>
/** Returns a list of the ids of all installed packages */
getInstalledPackages(): Promise<string[]>

View File

@@ -1,3 +1,3 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type FileType = "file" | "directory"
export type FileType = "file" | "directory" | "infer"

View File

@@ -8,5 +8,5 @@ export type MountTarget = {
volumeId: VolumeId
subpath: string | null
readonly: boolean
filetype?: FileType
filetype: FileType
}

View File

@@ -412,7 +412,7 @@ export class StartSdk<Manifest extends T.SDKManifest> {
id: string
/** The human readable description. */
description: string
/** Affects how the interface appears to the user. One of: 'ui', 'api', 'p2p'. If 'ui', the user will see a "Launch UI" button */
/** Affects how the interface appears to the user. One of: 'ui', 'api', 'p2p'. If 'ui', the user will see an option to open the UI in a new tab */
type: ServiceInterfaceType
/** (optional) prepends the provided username to all URLs. */
username: null | string

View File

@@ -187,10 +187,10 @@ export class FileHelper<A> {
/**
* Reads the file from disk and converts it to structured data.
*/
private async readOnce(): Promise<A | null> {
private async readOnce<B>(map: (value: A) => B): Promise<B | null> {
const data = await this.readFile()
if (!data) return null
return this.validate(data)
return map(this.validate(data))
}
private async readConst<B>(
@@ -224,8 +224,7 @@ export class FileHelper<A> {
persistent: false,
signal: ctrl.signal,
})
const newResFull = await this.readOnce()
const newRes = newResFull ? map(newResFull) : null
const newRes = await this.readOnce(map)
const listen = Promise.resolve()
.then(async () => {
for await (const _ of watch) {
@@ -284,7 +283,7 @@ export class FileHelper<A> {
map = map ?? ((a: A) => a)
eq = eq ?? ((left: any, right: any) => !partialDiff(left, right))
return {
once: () => this.readOnce(),
once: () => this.readOnce(map),
const: (effects: T.Effects) => this.readConst(effects, map, eq),
watch: (effects: T.Effects) => this.readWatch(effects, map, eq),
onChange: (

View File

@@ -1,12 +1,12 @@
{
"name": "@start9labs/start-sdk",
"version": "0.4.0-beta.23",
"version": "0.4.0-beta.24",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@start9labs/start-sdk",
"version": "0.4.0-beta.23",
"version": "0.4.0-beta.24",
"license": "MIT",
"dependencies": {
"@iarna/toml": "^3.0.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@start9labs/start-sdk",
"version": "0.4.0-beta.23",
"version": "0.4.0-beta.24",
"description": "Software development kit to facilitate packaging services for StartOS",
"main": "./package/lib/index.js",
"types": "./package/lib/index.d.ts",