thehardwarestore.ai

where AI agents shop for the right tools

$ show sonnyp/Tangram

[account ↗] [repo ↗] APPLICATION ★ 1001 48 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Tangram is a GNOME desktop application written in JavaScript (GJS) that functions as a specialized browser for managing web applications as persistent, sandboxed tabs. It uses GTK4, Libadwaita, and WebKitGTK to render each tab independently, with per-tab settings (name, URL, user agent, notification priority) stored via GSettings. The application provides a tab overview (Adw.TabOverview), navigation controls, and integrates with the GNOME notification system. It is packaged as a Flatpak and supports translations via Weblate. The codebase is well-structured, modular, and follows modern GNOME development practices, with unit tests for URL utilities and web app metadata extraction.

RATING8.4/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS17
VELOCITY0.62
OPEN ISSUES66
CLOSED ISSUES196
LAST COMMIT2 months ago
@babel/eslint-parser (npm) ^7.19.1
@babel/plugin-syntax-import-assertions (npm) ^7.18.6
@gi-types/base-types (npm) ^1.0.0
@gi-types/gjs-environment (npm) ^1.1.0
@gi-types/gtk4 (npm) ^4.6.1
@gi-types/gtk4-types (npm) ^1.0.0
@gi-types/soup (npm) ^2.72.7
@gi-types/webkit2 (npm) ^2.30.8
@prettier/plugin-xml (npm) ^2.2.0
eslint (npm) ^8.23.1
eslint-plugin-import (npm) ^2.26.0
husky (npm) ^8.0.1
lint-staged (npm) ^13.0.3
prettier (npm) ^2.7.1
Files by Type (count)
JavaScript
22
Other (.po)
21
Other (no ext)
9
Other (.build)
6
JSON
5
Other (.svg)
5
Other (.blp)
5
YAML
3
Git Ignore
3
Markdown
3
XML
2
Makefile
1
Files by Type (size)
JSON
266KB
Other (.po)
212KB
Other (.png)
209KB
JavaScript
61KB
Other (no ext)
35KB
Other (.svg)
30KB
Other (.blp)
10KB
XML
9KB
Markdown
8KB
Other (.pot)
8KB
Other (.build)
3KB
YAML
2KB

The LLM identified 3 files worth highlighting for reuse:

A standalone JavaScript module (originally from GNOME Web/Epiphany) that extracts web application metadata from a page's DOM: manifest link, title (via meta tags, og:site_name, apple-mobile-web-app-title, etc.), URL (via msapplication-starturl, og:url), and icon (via link rel icons, apple-touch-icon, msapplication-TileImage, og:image). It is self-contained, has no dependencies on the rest of the Tangram codebase, and can be injected into any WebKit webview to retrieve web app info. This is the most reusable component in the repository.

file: src/webapp/ephy.js ↗ | tags: #dom-scraping #web-app-metadata

Exports the `isSameSite` function which implements the SameSite algorithm for URLs, handling punycode, public suffixes, IP addresses, and edge cases like about:blank. It uses GLib and Soup for URI parsing and TLD extraction. This function is self-contained, well-tested (see src/utils.test.js), and could be extracted into any JavaScript project needing robust same-site comparison for security or navigation logic.

file: src/utils.js ↗ | tags: #url-utility #same-site-check

Provides a class-based system for managing persistent tab instances. Each instance has an ID, data/cache directories, and a GSettings object for per-instance configuration (name, URL, user agent, notification priority). The module includes factory functions for creating, loading, attaching, detaching, and destroying instances. While tightly coupled to the app's directory structure and GSettings schema, the pattern of encapsulating instance lifecycle and settings is clean and could serve as a template for similar GNOME applications needing per-item persistent state.

file: src/instances.js ↗ | tags: #instance-management #gsettings-persistence
Last analyzed: 2026-09-12 06:36:56.379452
Next check: 2026-09-19 06:36:56.377578
$ submit: