Tangram is a GNOME desktop application written in GJS (JavaScript) that functions as a specialized browser for managing and running web applications as persistent, independent tabs. It uses GTK4 and Libadwaita for the user interface, WebKitGTK for rendering web content, and GSettings for per-instance configuration storage. The application is packaged as a Flatpak and integrates with the GNOME desktop environment through notifications, D-Bus activation, and desktop file registration. Architecture: The application follows a single-window, multi-view pattern. The main window contains a stack of views: a 'tabs' view (Adw.TabOverview with Adw.TabView) for managing open web app tabs, and a 'new' view for adding new web apps. Each web app instance is represented by an Instance object that stores its name, URL, user agent, and notification priority in GSettings. The WebView module constructs a sandboxed WebKit WebView per instance with isolated data and cache directories, cookie management, and notification handling. The tabs module manages the lifecycle of tabs within the TabView. The state module provides a simple observable state mechanism for cross-component communication. Key entry points: src/bin.js is the executable entry point, which initializes the package and calls main() from src/main.js. src/main.js sets up the environment and creates the Adw.Application from src/application.js. The application's activate signal creates the main window (src/window.js), which loads saved instances, sets up the views, and registers actions and shortcuts. Data flows: Instance configurations are stored in GSettings under /re/sonny/Tangram/instances/<id>/. On startup, the list of instance IDs is read from the instances key, and each instance is loaded with its settings. When a tab is added, a new instance is created with a UUID, a WebView is built with isolated data/cache directories, and the instance is attached to the settings list. Web app metadata (title, URL, manifest) is extracted by injecting JavaScript (ephy.js) into the loaded page and fetching the manifest if available. Notifications from web pages are forwarded as GNOME desktop notifications with configurable priority. External dependencies: GNOME Platform runtime (GTK4, Libadwaita, GLib, GIO), WebKitGTK 6.0, Soup (HTTP client), GdkPixbuf (image format detection), and the troll submodule for utility functions.