mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Introduces a device-local "favorite apps" system that unifies nsites, napplets, and arbitrary web clients behind one model and three presentation shells, while removing the editable address bar from any running app (it now lives only in the browser launcher). Core spine: - FavoriteApp (commons): a sealed model with two cases — NostrApp (nsite/napplet, keyed by addressable coordinate so it survives code updates) and WebUrl. napplet-vs-nsite is recomputed from the live event at launch, never stored. - FavoriteAppsRegistry (amethyst): device-local, DataStore-backed, StateFlow source of truth; main process only, hydrated at app start. - FavoriteAppLauncher: dispatches a favorite to its one launch path — full-screen BrowserHostActivity for a URL, sandboxed NappletLauncher (re-resolved from LocalCache) for an nsite/napplet. Presentation: - BrowserHostActivity: full-screen, single-app host in the main process that embeds the keyless :napplet browser surface. Its own task/recents entry (documentLaunchMode=intoExisting), no editable URL — locked to the app it opened with, keeping one NIP-07 trust context per instance. - BrowserScreen is now a launcher: an omnibox that opens each URL in its own host activity, plus the shared favorites grid. The address bar is gone from the content surface. - FavoriteAppsScreen + FAVORITE_APPS bottom-bar item: a grid of big launch buttons, reused inside the browser launcher. - StaticWebsiteCard gains a header-actions slot; a star toggle on each nsite/napplet card pins it (strings/store stay in the app layer). EmbeddedBrowserSurface extracts the chrome-free surface + controller helper so the tab, the launcher, and the host activity share one piece of cross-process glue. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MgMpRcWj6y82LxLiwcuzmN