- Add URL plugin effects (register, export_url, clear_urls) in core
- Add PluginHostnameInfo, HostnameMetadata::Plugin, and plugin registration types
- Implement plugin URL table in web UI with tableAction button and rowAction overflow menus
- Thread urlPluginMetadata (packageId, hostId, interfaceId, internalPort) as prefill to actions
- Add prefill support to PackageActionData so metadata passes through form dialogs
- Add i18n translations for plugin error messages
- Clean up plugin URLs on package uninstall
- Add HostnameMetadata::Mdns variant to distinguish mDNS from private domains
- Mark mDNS addresses as private (public: false) since mDNS is local-only
- Fall back to null SNI entry when hostname not found in vhost mapping
- Simplify public detection in ProxyTarget filter
- Pass hostname to update_addresses for mDNS domain name generation
- NetService sync task now uses PatchDB DbWatch instead of being called
directly after DB mutations
- Read gateways from DB instead of network interface context when
updating host addresses
- gateway sync updates all host addresses in the DB
- Add Watch<u64> channel for callers to wait on sync completion
- Fix ts-rs codegen bug with #[ts(skip)] on flattened Plugin field
- Update SDK getServiceInterface.ts for new HostnameInfo shape
- Remove unnecessary HTTPS redirect in static_server.rs
- Fix tunnel/api.rs to filter for WAN IPv4 address
- Add AvailablePorts::try_alloc() with SSL tracking (BTreeMap<u16, bool>)
- Add DerivedAddressInfo on BindInfo with private_disabled/public_enabled/possible sets
- Add Bindings wrapper with Map impl for patchdb indexed access
- Flatten HostAddress from single-variant enum to struct
- Replace set-gateway-enabled RPC with set-address-enabled
- Remove hostname_info from Host; computed addresses now in BindInfo.addresses.possible
- Compute possible addresses inline in NetServiceData::update()
- Update DB migration, SDK types, frontend, and container-runtime
HostnameInfo only had one variant (Ip) after removing Tor. Flatten it
into a plain struct with fields gateway, public, hostname. Remove all
kind === 'ip' type guards and narrowing across SDK, frontend, and
container runtime. Update DB migration to strip the kind field.
Tor is being moved from a built-in OS feature to a service. This removes
the Arti-based Tor client, onion address management, hidden service
creation, and all related code from the core backend, frontend, and SDK.
- Delete core/src/net/tor/ module (~2060 lines)
- Remove OnionAddress, TorSecretKey, TorController from all consumers
- Remove HostnameInfo::Onion and HostAddress::Onion variants
- Remove onion CRUD RPC endpoints and tor subcommand
- Remove tor key handling from account and backup/restore
- Remove ~12 tor-related Cargo dependencies (arti-client, torut, etc.)
- Remove tor UI components, API methods, mock data, and routes
- Remove OnionHostname and tor patterns/regexes from SDK
- Add v0_4_0_alpha_20 database migration to strip onion data
- Bump version to 0.4.0-alpha.20
* add documentation for ai agents
* docs: consolidate CLAUDE.md and CONTRIBUTING.md, add style guidelines
- Refactor CLAUDE.md to reference CONTRIBUTING.md for build/test/format info
- Expand CONTRIBUTING.md with comprehensive build targets, env vars, and testing
- Add code style guidelines section with conventional commits
- Standardize SDK prettier config to use single quotes (matching web)
- Add project-level Claude Code settings to disable co-author attribution
* style(sdk): apply prettier with single quotes
Run prettier across sdk/base and sdk/package to apply the
standardized quote style (single quotes matching web).
* docs: add USER.md for per-developer TODO filtering
- Add agents/USER.md to .gitignore (contains user identifier)
- Document session startup flow in CLAUDE.md:
- Create USER.md if missing, prompting for identifier
- Filter TODOs by @username tags
- Offer relevant TODOs on session start
* docs: add i18n documentation task to agent TODOs
* docs: document i18n ID patterns in core/
Add agents/i18n-patterns.md covering rust-i18n setup, translation file
format, t!() macro usage, key naming conventions, and locale selection.
Remove completed TODO item and add reference in CLAUDE.md.
* chore: clarify that all builds work on any OS with Docker
* start consolidating
* add start-cli flash-os
* combine install and setup and refactor all
* use http
* undo mock
* fix translation
* translations
* use dialogservice wrapper
* better ST messaging on setup
* only warn on update if breakages (#3097)
* finish setup wizard and ui language-keyboard feature
* fix typo
* wip: localization
* remove start-tunnel readme
* switch to posix strings for language internal
* revert mock
* translate backend strings
* fix missing about text
* help text for args
* feat: add "Add new gateway" option (#3098)
* feat: add "Add new gateway" option
* Update web/projects/ui/src/app/routes/portal/components/form/controls/select.component.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add translation
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Matt Hill <mattnine@protonmail.com>
* fix dns selection
* keyboard keymap also
* ability to shutdown after install
* revert mock
* working setup flow + manifest localization
* (mostly) redundant localization on frontend
* version bump
* omit live medium from disk list and better space management
* ignore missing package archive on 035 migration
* fix device migration
* add i18n helper to sdk
* fix install over 0.3.5.1
* fix grub config
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>
Co-authored-by: Alex Inkin <alexander@inkin.ru>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* port misc fixes from feature/nvidia
* switch back to official tor proxy on 9050
* refactor OpenUI
* fix typo
* fixes, plus getServiceManifest
* fix EffectCreator, bump to beta.47
* fixes
* help ios downlaod .crt and add begin add masked for addresses
* only require and show CA for public domain if addSsl
* fix type and revert i18n const
* feat: add address masking and adjust design (#3088)
* feat: add address masking and adjust design
* update lockfile
* chore: move eye button to actions
* chore: refresh notifications and handle action error
* static width for health check name
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
* hide certificate authorities tab
* alpha.17
* add waiting health check status
* remove "on" from waiting message
* reject on abort in `.watch`
* id migration: nostr -> nostr-rs-relay
* health check waiting state
* use interface type for launch button
* better wording for masked
* cleaner
* sdk improvements
* fix type error
* fix notification badge issue
---------
Co-authored-by: Alex Inkin <alexander@inkin.ru>
Co-authored-by: Aiden McClelland <me@drbonez.dev>
* add support for idmapped mounts to start-sdk
* misc fixes
* misc fixes
* add default to textarea
* fix iptables masquerade rule
* fix textarea types
* more fixes
* better logging for rsync
* fix tty size
* fix wg conf generation for android
* disable file mounts on dependencies
* mostly there, some styling issues (#3069)
* mostly there, some styling issues
* fix: address comments (#3070)
* fix: address comments
* fix: fix
* show SSL for any address with secure protocol and ssl added
* better sorting and messaging
---------
Co-authored-by: Alex Inkin <alexander@inkin.ru>
* fixes for nextcloud
* allow sidebar navigation during service state traansitions
* wip: x-forwarded headers
* implement x-forwarded-for proxy
* lowercase domain names and fix warning popover bug
* fix http2 websockets
* fix websocket retry behavior
* add arch filters to s9pk pack
* use docker for start-cli install
* add version range to package signer on registry
* fix rcs < 0
* fix user information parsing
* refactor service interface getters
* disable idmaps
* build fixes
* update docker login action
* streamline build
* add start-cli workflow
* rename
* riscv64gc
* fix ui packing
* no default features on cli
* make cli depend on GIT_HASH
* more build fixes
* more build fixes
* interpolate arch within dockerfile
* fix tests
* add launch ui to service page plus other small improvements (#3075)
* add launch ui to service page plus other small improvements
* revert translation disable
* add spinner to service list if service is health and loading
* chore: some visual tune up
* chore: update Taiga UI
---------
Co-authored-by: waterplea <alexander@inkin.ru>
* fix backups
* feat: use arm hosted runners and don't fail when apt package does not exist (#3076)
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
Co-authored-by: Shadowy Super Coder <musashidisciple@proton.me>
Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>
Co-authored-by: Alex Inkin <alexander@inkin.ru>
Co-authored-by: Remco Ros <remcoros@live.nl>
* add support for inbound proxies
* backend changes
* fix file type
* proxy -> tunnel, implement backend apis
* wip start-tunneld
* add domains and gateways, remove routers, fix docs links
* dont show hidden actions
* show and test dns
* edit instead of chnage acme and change gateway
* refactor: domains page
* refactor: gateways page
* domains and acme refactor
* certificate authorities
* refactor public/private gateways
* fix fe types
* domains mostly finished
* refactor: add file control to form service
* add ip util to sdk
* domains api + migration
* start service interface page, WIP
* different options for clearnet domains
* refactor: styles for interfaces page
* minor
* better placeholder for no addresses
* start sorting addresses
* best address logic
* comments
* fix unnecessary export
* MVP of service interface page
* domains preferred
* fix: address comments
* only translations left
* wip: start-tunnel & fix build
* forms for adding domain, rework things based on new ideas
* fix: dns testing
* public domain, max width, descriptions for dns
* nix StartOS domains, implement public and private domains at interface scope
* restart tor instead of reset
* better icon for restart tor
* dns
* fix sort functions for public and private domains
* with todos
* update types
* clean up tech debt, bump dependencies
* revert to ts-rs v9
* fix all types
* fix dns form
* add missing translations
* it builds
* fix: comments (#3009)
* fix: comments
* undo default
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
* fix: refactor legacy components (#3010)
* fix: comments
* fix: refactor legacy components
* remove default again
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
* more translations
* wip
* fix deadlock
* coukd work
* simple renaming
* placeholder for empty service interfaces table
* honor hidden form values
* remove logs
* reason instead of description
* fix dns
* misc fixes
* implement toggling gateways for service interface
* fix showing dns records
* move status column in service list
* remove unnecessary truthy check
* refactor: refactor forms components and remove legacy Taiga UI package (#3012)
* handle wh file uploads
* wip: debugging tor
* socks5 proxy working
* refactor: fix multiple comments (#3013)
* refactor: fix multiple comments
* styling changes, add documentation to sidebar
* translations for dns page
* refactor: subtle colors
* rearrange service page
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
* fix file_stream and remove non-terminating test
* clean up logs
* support for sccache
* fix gha sccache
* more marketplace translations
* install wizard clarity
* stub hostnameInfo in migration
* fix address info after setup, fix styling on SI page, new 040 release notes
* remove tor logs from os
* misc fixes
* reset tor still not functioning...
* update ts
* minor styling and wording
* chore: some fixes (#3015)
* fix gateway renames
* different handling for public domains
* styling fixes
* whole navbar should not be clickable on service show page
* timeout getState request
* remove links from changelog
* misc fixes from pairing
* use custom name for gateway in more places
* fix dns parsing
* closes#3003
* closes#2999
* chore: some fixes (#3017)
* small copy change
* revert hardcoded error for testing
* dont require port forward if gateway is public
* use old wan ip when not available
* fix .const hanging on undefined
* fix test
* fix doc test
* fix renames
* update deps
* allow specifying dependency metadata directly
* temporarily make dependencies not cliackable in marketplace listings
* fix socks bind
* fix test
---------
Co-authored-by: Aiden McClelland <me@drbonez.dev>
Co-authored-by: waterplea <alexander@inkin.ru>
* import marketplac preview for sideload
* fix: improve state service (#2977)
* fix: fix sideload DI
* fix: update Angular
* fix: cleanup
* fix: fix version selection
* Bump node version to fix build for Angular
* misc fixes
- update node to v22
- fix chroot-and-upgrade access to prune-images
- don't self-migrate legacy packages
- #2985
- move dataVersion to volume folder
- remove "instructions.md" from s9pk
- add "docsUrl" to manifest
* version bump
* include flavor when clicking view listing from updates tab
* closes#2980
* fix: fix select button
* bring back ssh keys
* fix: drop 'portal' from all routes
* fix: implement longtap action to select table rows
* fix description for ssh page
* replace instructions with docsLink and refactor marketplace preview
* delete unused translations
* fix patchdb diffing algorithm
* continue refactor of marketplace lib show components
* Booting StartOS instead of Setting up your server on init
* misc fixes
- closes#2990
- closes#2987
* fix build
* docsUrl and clickable service headers
* don't cleanup after update until new service install succeeds
* update types
* misc fixes
* beta.35
* sdkversion, githash for sideload, correct logs for init, startos pubkey display
* bring back reboot button on install
* misc fixes
* beta.36
* better handling of setup and init for websocket errors
* reopen init and setup logs even on graceful closure
* better logging, misc fixes
* fix build
* dont let package stats hang
* dont show docsurl in marketplace if no docsurl
* re-add needs-config
* show error if init fails, shorten hover state on header icons
* fix operator precedemce
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
Co-authored-by: Alex Inkin <alexander@inkin.ru>
Co-authored-by: Mariusz Kogen <k0gen@pm.me>
* store, properties, manifest
* interfaces
* init and backups
* fix init and backups
* file models
* more versions
* dependencies
* config except dynamic types
* clean up config
* remove disabled from non-dynamic vaues
* actions
* standardize example code block formats
* wip: actions refactor
Co-authored-by: Jade <Blu-J@users.noreply.github.com>
* commit types
* fix types
* update types
* update action request type
* update apis
* add description to actionrequest
* clean up imports
* revert package json
* chore: Remove the recursive to the index
* chore: Remove the other thing I was testing
* flatten action requests
* update container runtime with new config paradigm
* new actions strategy
* seems to be working
* misc backend fixes
* fix fe bugs
* only show breakages if breakages
* only show success modal if result
* don't panic on failed removal
* hide config from actions page
* polyfill autoconfig
* use metadata strategy for actions instead of prev
* misc fixes
* chore: split the sdk into 2 libs (#2736)
* follow sideload progress (#2718)
* follow sideload progress
* small bugfix
* shareReplay with no refcount false
* don't wrap sideload progress in RPCResult
* dont present toast
---------
Co-authored-by: Aiden McClelland <me@drbonez.dev>
* chore: Add the initial of the creation of the two sdk
* chore: Add in the baseDist
* chore: Add in the baseDist
* chore: Get the web and the runtime-container running
* chore: Remove the empty file
* chore: Fix it so the container-runtime works
---------
Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>
Co-authored-by: Aiden McClelland <me@drbonez.dev>
* misc fixes
* update todos
* minor clean up
* fix link script
* update node version in CI test
* fix node version syntax in ci build
* wip: fixing callbacks
* fix sdk makefile dependencies
* add support for const outside of main
* update apis
* don't panic!
* Chore: Capture weird case on rpc, and log that
* fix procedure id issue
* pass input value for dep auto config
* handle disabled and warning for actions
* chore: Fix for link not having node_modules
* sdk fixes
* fix build
* fix build
* fix build
---------
Co-authored-by: Matt Hill <mattnine@protonmail.com>
Co-authored-by: Jade <Blu-J@users.noreply.github.com>
Co-authored-by: J H <dragondef@gmail.com>
Co-authored-by: Jade <2364004+Blu-J@users.noreply.github.com>
Co-authored-by: Matt Hill <MattDHill@users.noreply.github.com>