current branding

This commit is contained in:
Raven Scott
2026-05-30 21:01:31 -04:00
parent 841d814f13
commit 416c678471
101 changed files with 689 additions and 121 deletions
BIN
View File
Binary file not shown.
+70
View File
@@ -0,0 +1,70 @@
# P2NS Brand Identity Package v1.0
**Peer-to-Peer Name System** — Decentralized, secure, and open naming infrastructure.
This package contains a complete, production-ready branding system designed for dark-first technical audiences.
## What's Included
```
P2NS_Branding_Package_v1/
├── logos/
│ ├── png/
│ │ ├── p2ns-primary-horizontal.png # Main logo with icon + wordmark + tagline
│ │ ├── p2ns-icon.png # Icon-only mark (network hub + user)
│ │ ├── p2ns-vertical-stacked.png # Vertical layout version
│ │ ├── p2ns-mono-white.png # White monochrome (for dark overlays)
│ │ ├── p2ns-mono-black.png # Black monochrome
│ │ └── p2ns-mono-indigo.png # Solid Indigo version
│ └── favicon/
│ ├── p2ns-favicon-512.png
│ ├── p2ns-favicon-256.png
│ ├── p2ns-favicon-192.png
│ └── p2ns-favicon-32.png # Simplified but recognizable
├── palette/
│ └── p2ns-color-palette.png # Full swatches with hex/RGB/usage
├── mockups/
│ ├── p2ns-app-icon-1024.png # Rounded square app icon
│ ├── p2ns-twitter-header.png
│ ├── p2ns-linkedin-banner.png
│ ├── p2ns-discord-icon.png
│ ├── p2ns-discord-banner.png
│ ├── p2ns-business-card-front.png
│ ├── p2ns-business-card-back.png
│ ├── p2ns-hero-banner.png # Website/product hero
│ ├── p2ns-email-signature.png
│ ├── p2ns-presentation-title-slide.png
│ ├── p2ns-sticker-badge.png
│ └── p2ns-dos-donts.png # Usage rules visual guide
├── guidelines/
│ └── P2NS_Brand_Guidelines.pdf # 13-page comprehensive brand book
├── assets/ # Additional raw assets if needed
└── README.md
```
## Quick Usage
1. **Logos**: Always start with files in `logos/png/`. Use `p2ns-primary-horizontal.png` for most cases.
2. **Icon Mark**: Use `p2ns-icon.png` for app icons, favicons, and tight spaces.
3. **Colors**: Refer to `palette/p2ns-color-palette.png`. Primary Indigo `#6366F1` on dark backgrounds (`#0A0E1A` Midnight).
4. **Guidelines**: Read `P2NS_Brand_Guidelines.pdf` fully before any application. It contains usage rules, clear space, typography, and examples.
5. **Mockups**: Use `mockups/` as templates or inspiration for real implementations.
## Key Brand Rules (Summary)
- **Dark-first** — Primary communications on Midnight/Deep backgrounds.
- **No glow / effects** — Flat, sharp, crisp, technical. Zero decorative glow, neon, or soft shadows.
- **Clear space** — Minimum 1× icon height around logo.
- **Minimum size** — 120px digital / 30mm print for primary logo.
- **Contrast** — Maintain WCAG AA accessibility.
- **Monochrome** — Use provided white/black/indigo versions only when needed.
## Licensing
These assets are for official P2NS use, approved partners, and projects. Do not modify, redistribute, or use outside authorized contexts without permission.
For questions or additional assets (SVG masters, etc.), contact the P2NS brand team.
---
**P2NS** — Decentralized by Design.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

+13 -10
View File
@@ -32,7 +32,7 @@ async function serveFile(filePath, res) {
} }
async function serveAdminFrontendAsset(urlPath, res) { async function serveAdminFrontendAsset(urlPath, res) {
if (!/^\/(?:ui\/[\w.-]+\.js|[\w.-]+\.(?:css|js|svg|ico|png|json|webmanifest))$/.test(urlPath)) { if (!/^\/(?:ui\/[\w.-]+\.js|branding\/[\w.-]+\.png|[\w.-]+\.(?:css|js|svg|ico|png|json|webmanifest))$/.test(urlPath)) {
return false; return false;
} }
@@ -90,16 +90,12 @@ async function handleStaticRoutes(req, res) {
return true; return true;
} }
if (method === 'GET') { if (method === 'GET' && (urlPath === '/favicon.ico' || urlPath === '/apple-touch-icon.png')) {
const served = await serveAdminFrontendAsset(urlPath, res); const faviconFile = urlPath === '/favicon.ico'
if (served) { ? pathModule.join(ADMIN_FRONTEND_DIR, 'favicon.ico')
return true; : pathModule.join(ADMIN_FRONTEND_DIR, 'branding', 'p2ns-favicon-192.png');
}
}
if (method === 'GET' && urlPath === '/favicon.ico') {
try { try {
await serveFile(pathModule.join(ADMIN_FRONTEND_DIR, 'favicon.svg'), res); await serveFile(faviconFile, res);
} catch (err) { } catch (err) {
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' }); res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Not Found'); res.end('Not Found');
@@ -107,6 +103,13 @@ async function handleStaticRoutes(req, res) {
return true; return true;
} }
if (method === 'GET') {
const served = await serveAdminFrontendAsset(urlPath, res);
if (served) {
return true;
}
}
return false; return false;
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="P2NS">
<rect width="32" height="32" rx="6" fill="#0f1419"/>
<rect x="4" y="4" width="24" height="24" rx="4" fill="#6366f1"/>
<path fill="#f1f5f9" d="M9 21V11h3.2c2.4 0 3.9 1.2 3.9 3.1 0 1.3-.7 2.3-1.9 2.8L18 21h-2.6l-2.8-3.5H11.4V21H9zm2.4-5.6h.8c1.1 0 1.7-.5 1.7-1.4s-.6-1.3-1.7-1.3h-.8v2.7zM19.2 21V11h2.4v10h-2.4z"/>
</svg>

Before

Width:  |  Height:  |  Size: 416 B

+9 -2
View File
@@ -5,7 +5,11 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#0a0e1a"> <meta name="theme-color" content="#0a0e1a">
<title>P2NS Admin Panel</title> <title>P2NS Admin Panel</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"> <link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
@@ -36,7 +40,10 @@
<div class="admin-shell"> <div class="admin-shell">
<aside id="admin-sidebar" class="admin-sidebar" aria-label="Main navigation"> <aside id="admin-sidebar" class="admin-sidebar" aria-label="Main navigation">
<div class="admin-sidebar-brand"> <div class="admin-sidebar-brand">
<span class="admin-sidebar-brand-title">P2NS</span> <a href="/" class="admin-sidebar-brand-link" aria-label="P2NS Admin home">
<img src="/branding/p2ns-icon.png" alt="" class="admin-sidebar-brand-logo" width="28" height="28">
<span class="admin-sidebar-brand-title">P2NS</span>
</a>
</div> </div>
<nav class="admin-sidebar-nav"> <nav class="admin-sidebar-nav">
<div class="admin-nav-section"> <div class="admin-nav-section">
@@ -0,0 +1,25 @@
{
"name": "P2NS Admin",
"short_name": "P2NS",
"description": "P2NS network administration panel",
"icons": [
{
"src": "/favicon.ico",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#0a0e1a",
"background_color": "#0a0e1a",
"display": "standalone"
}
+20
View File
@@ -1484,6 +1484,26 @@ dialog > .dialog-notifications > * {
border-bottom: 1px solid var(--admin-sidebar-border); border-bottom: 1px solid var(--admin-sidebar-border);
} }
.admin-sidebar-brand-link {
display: flex;
align-items: center;
gap: 0.625rem;
min-width: 0;
text-decoration: none;
color: inherit;
}
.admin-sidebar-brand-link:hover .admin-sidebar-brand-title {
color: var(--admin-sidebar-fg);
}
.admin-sidebar-brand-logo {
width: 1.75rem;
height: 1.75rem;
flex-shrink: 0;
object-fit: contain;
}
.admin-sidebar-brand-title { .admin-sidebar-brand-title {
font-size: 0.9375rem; font-size: 0.9375rem;
font-weight: 600; font-weight: 600;
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
@@ -144,9 +144,36 @@ body {
} }
.header-content { .header-content {
display: flex; flex: 1;
flex-direction: column; min-width: 0;
align-items: flex-start; }
.header-brand {
display: grid;
grid-template-columns: 2rem minmax(0, 1fr);
column-gap: 0.75rem;
row-gap: 0.25rem;
}
.header-brand .brand-lockup-logo {
grid-column: 1;
grid-row: 1;
align-self: start;
margin-top: 0.15rem;
}
.header-brand h1 {
grid-column: 2;
grid-row: 1;
margin: 0;
min-width: 0;
line-height: 1.2;
}
.header-brand .subtitle {
grid-column: 2;
grid-row: 2;
margin: 0;
} }
.header h1 { .header h1 {
@@ -156,7 +183,7 @@ body {
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
margin-bottom: 0.25rem; margin-bottom: 0;
} }
.header-status { .header-status {
@@ -1011,6 +1038,27 @@ canvas {
/* Responsive */ /* Responsive */
@media (max-width: 768px) { @media (max-width: 768px) {
.header {
padding: var(--spacing-md) var(--spacing-lg);
flex-wrap: wrap;
}
.header h1 {
font-size: 1.5rem;
}
.header-content {
flex: 1 1 100%;
width: 100%;
}
.header-status {
flex: 1 1 100%;
margin-top: var(--spacing-sm);
width: 100%;
justify-content: flex-end;
}
.grid-cols-1 { .grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr)); grid-template-columns: repeat(1, minmax(0, 1fr));
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+8 -2
View File
@@ -3,9 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#0a0e1a">
<title>Domain Consensus - P2NS</title> <title>Domain Consensus - P2NS</title>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png">
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/css/branding.css">
<link rel="stylesheet" href="/css/tailwind.css"> <link rel="stylesheet" href="/css/tailwind.css">
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="https://global.profile/css/profile-modal.css"> <link rel="stylesheet" href="https://global.profile/css/profile-modal.css">
@@ -15,7 +20,8 @@
<div class="container"> <div class="container">
<!-- Header --> <!-- Header -->
<header class="header"> <header class="header">
<div class="header-content"> <div class="header-content header-brand">
<img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="32" height="32">
<h1>Domain Consensus</h1> <h1>Domain Consensus</h1>
</div> </div>
<div class="header-status"> <div class="header-status">
@@ -4,24 +4,23 @@
"description": "Advanced interface for viewing and analyzing consensus within the P2NS network", "description": "Advanced interface for viewing and analyzing consensus within the P2NS network",
"start_url": "/", "start_url": "/",
"display": "standalone", "display": "standalone",
"background_color": "#000000", "background_color": "#0a0e1a",
"theme_color": "#000000", "theme_color": "#0a0e1a",
"orientation": "any", "orientation": "any",
"icons": [ "icons": [
{ {
"src": "/icon.svg", "src": "/favicon.ico",
"sizes": "any", "sizes": "32x32",
"type": "image/svg+xml", "type": "image/png"
"purpose": "any"
}, },
{ {
"src": "/icon-192.png", "src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
}, },
{ {
"src": "/icon-512.png", "src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512", "sizes": "512x512",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
@@ -30,4 +29,3 @@
"categories": ["utilities", "developer"], "categories": ["utilities", "developer"],
"lang": "en" "lang": "en"
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+12 -4
View File
@@ -3,16 +3,24 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#0a0e1a">
<title>Example Plugin - P2NS</title> <title>Example Plugin - P2NS</title>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png">
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/css/branding.css">
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<header> <header class="brand-lockup brand-lockup--center">
<h1>Example Plugin</h1> <img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="40" height="40">
<p class="subtitle">A comprehensive template plugin demonstrating admin settings and actions</p> <div class="brand-lockup-text">
<h1>Example Plugin</h1>
<p class="subtitle">A comprehensive template plugin demonstrating admin settings and actions</p>
</div>
</header> </header>
<main> <main>
@@ -4,24 +4,23 @@
"description": "A bare bones template plugin for P2NS - use this as a starting point for new plugins", "description": "A bare bones template plugin for P2NS - use this as a starting point for new plugins",
"start_url": "/", "start_url": "/",
"display": "standalone", "display": "standalone",
"background_color": "#000000", "background_color": "#0a0e1a",
"theme_color": "#000000", "theme_color": "#0a0e1a",
"orientation": "any", "orientation": "any",
"icons": [ "icons": [
{ {
"src": "/icon.svg", "src": "/favicon.ico",
"sizes": "any", "sizes": "32x32",
"type": "image/svg+xml", "type": "image/png"
"purpose": "any"
}, },
{ {
"src": "/icon-192.png", "src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
}, },
{ {
"src": "/icon-512.png", "src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512", "sizes": "512x512",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
@@ -30,4 +29,3 @@
"categories": ["utilities", "developer"], "categories": ["utilities", "developer"],
"lang": "en" "lang": "en"
} }
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+14 -2
View File
@@ -3,14 +3,26 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#0a0e1a">
<title>File Drop - 24h Temporary File Sharing</title> <title>File Drop - 24h Temporary File Sharing</title>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png">
<link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/css/branding.css">
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<header> <header>
<h1>📦 File Drop</h1> <div class="brand-lockup brand-lockup--center">
<p class="tagline">Drop a file, get a link. Gone in 24 hours.</p> <img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="40" height="40">
<div class="brand-lockup-text">
<h1>File Drop</h1>
<p class="tagline">Drop a file, get a link. Gone in 24 hours.</p>
</div>
</div>
</header> </header>
<main> <main>
+31
View File
@@ -0,0 +1,31 @@
{
"name": "File Drop",
"short_name": "File Drop",
"description": "Drop a file, get a link. Gone in 24 hours.",
"start_url": "/",
"display": "standalone",
"background_color": "#0a0e1a",
"theme_color": "#0a0e1a",
"orientation": "any",
"icons": [
{
"src": "/favicon.ico",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
},
{
"src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
}
],
"categories": ["utilities", "productivity"],
"lang": "en"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
+34 -6
View File
@@ -129,9 +129,36 @@ body {
} }
.header-content { .header-content {
display: flex; flex: 1;
flex-direction: column; min-width: 0;
align-items: flex-start; }
.header-brand {
display: grid;
grid-template-columns: 2rem minmax(0, 1fr);
column-gap: 0.75rem;
row-gap: 0.25rem;
}
.header-brand .brand-lockup-logo {
grid-column: 1;
grid-row: 1;
align-self: start;
margin-top: 0.15rem;
}
.header-brand h1 {
grid-column: 2;
grid-row: 1;
margin: 0;
min-width: 0;
line-height: 1.2;
}
.header-brand .subtitle {
grid-column: 2;
grid-row: 2;
margin: 0;
} }
.header h1 { .header h1 {
@@ -141,7 +168,7 @@ body {
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
margin-bottom: 0.25rem; margin-bottom: 0;
} }
.subtitle { .subtitle {
@@ -933,11 +960,12 @@ body {
} }
.header-content { .header-content {
flex: 1; flex: 1 1 100%;
min-width: 0; width: 100%;
} }
.header-status { .header-status {
flex: 1 1 100%;
margin-top: var(--spacing-sm); margin-top: var(--spacing-sm);
width: 100%; width: 100%;
justify-content: flex-end; justify-content: flex-end;
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+8 -2
View File
@@ -3,16 +3,22 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#0a0e1a">
<title>Global Profile - P2NS</title> <title>Global Profile - P2NS</title>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png">
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/css/branding.css">
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
<script src="/auth-utils.js"></script> <script src="/auth-utils.js"></script>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<header class="header"> <header class="header">
<div class="header-content"> <div class="header-content header-brand">
<img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="32" height="32">
<h1>Global Profile</h1> <h1>Global Profile</h1>
<p class="subtitle">Manage your profile across the P2NS network</p> <p class="subtitle">Manage your profile across the P2NS network</p>
</div> </div>
@@ -4,24 +4,23 @@
"description": "Universal user identity system for all P2NS plugins with P2P profile replication", "description": "Universal user identity system for all P2NS plugins with P2P profile replication",
"start_url": "/", "start_url": "/",
"display": "standalone", "display": "standalone",
"background_color": "#000000", "background_color": "#0a0e1a",
"theme_color": "#000000", "theme_color": "#0a0e1a",
"orientation": "any", "orientation": "any",
"icons": [ "icons": [
{ {
"src": "/icon.svg", "src": "/favicon.ico",
"sizes": "any", "sizes": "32x32",
"type": "image/svg+xml", "type": "image/png"
"purpose": "any"
}, },
{ {
"src": "/icon-192.png", "src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
}, },
{ {
"src": "/icon-512.png", "src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512", "sizes": "512x512",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
@@ -30,4 +29,3 @@
"categories": ["social", "productivity"], "categories": ["social", "productivity"],
"lang": "en" "lang": "en"
} }
-7
View File
@@ -529,13 +529,6 @@ async function handler(req, res) {
} }
} }
// Handle favicon requests - browsers automatically request /favicon.ico
// We don't have a favicon, so return 404
if (path === 'favicon.ico') {
sdk.log.debug('peer.directory', 'Favicon requested, returning 404');
return sdk.router.notFound(res, 'Favicon Not Found');
}
// For all other paths, return false to allow static file serving // For all other paths, return false to allow static file serving
// This means requests for CSS, JS, images, etc. will be served from www/ directory // This means requests for CSS, JS, images, etc. will be served from www/ directory
return false; return false;
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
+32 -9
View File
@@ -103,8 +103,8 @@ body {
/* Header */ /* Header */
.header { .header {
display: flex; display: grid;
justify-content: space-between; grid-template-columns: 1fr auto 1fr;
align-items: center; align-items: center;
padding: var(--spacing-lg) 0; padding: var(--spacing-lg) 0;
flex-shrink: 0; flex-shrink: 0;
@@ -118,15 +118,18 @@ body {
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
text-align: center;
position: absolute;
left: 50%;
transform: translateX(-50%);
margin: 0; margin: 0;
line-height: 1.2;
} }
.header-content { .header-content {
flex: 1; grid-column: 2;
justify-self: center;
min-width: 0;
}
.header-content.brand-lockup h1 {
white-space: nowrap;
} }
.header-status { .header-status {
@@ -198,7 +201,8 @@ body {
} }
.header-actions { .header-actions {
flex: 1; grid-column: 3;
justify-self: end;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
@@ -696,12 +700,31 @@ tbody tr.highlight {
/* Responsive */ /* Responsive */
@media (max-width: 768px) { @media (max-width: 768px) {
.header { .header {
display: flex;
flex-direction: column; flex-direction: column;
gap: var(--spacing-md); gap: var(--spacing-md);
} }
.header h1 { .header-content {
grid-column: auto;
justify-self: auto;
width: 100%;
}
.header-content.brand-lockup {
justify-content: center;
}
.header-actions {
grid-column: auto;
justify-self: auto;
width: 100%;
justify-content: center;
}
.header-content.brand-lockup h1 {
font-size: 1.5rem; font-size: 1.5rem;
white-space: normal;
} }
.container { .container {
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+8 -2
View File
@@ -3,9 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#0a0e1a">
<title>Peer Directory</title> <title>Peer Directory</title>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png">
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/css/branding.css">
<link rel="stylesheet" href="/css/tailwind.css"> <link rel="stylesheet" href="/css/tailwind.css">
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
</head> </head>
@@ -13,7 +18,8 @@
<div class="container"> <div class="container">
<!-- Header --> <!-- Header -->
<header class="header"> <header class="header">
<div class="header-content"> <div class="header-content brand-lockup">
<img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="32" height="32">
<h1>P2NS Directory</h1> <h1>P2NS Directory</h1>
</div> </div>
<div class="header-actions"> <div class="header-actions">
@@ -4,24 +4,23 @@
"description": "P2NS peer directory browser - Browse and search P2NS domains", "description": "P2NS peer directory browser - Browse and search P2NS domains",
"start_url": "/", "start_url": "/",
"display": "standalone", "display": "standalone",
"background_color": "#000000", "background_color": "#0a0e1a",
"theme_color": "#000000", "theme_color": "#0a0e1a",
"orientation": "any", "orientation": "any",
"icons": [ "icons": [
{ {
"src": "/icon.svg", "src": "/favicon.ico",
"sizes": "any", "sizes": "32x32",
"type": "image/svg+xml", "type": "image/png"
"purpose": "any"
}, },
{ {
"src": "/icon-192.png", "src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
}, },
{ {
"src": "/icon-512.png", "src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512", "sizes": "512x512",
"type": "image/png", "type": "image/png",
"purpose": "any maskable" "purpose": "any maskable"
@@ -30,4 +29,3 @@
"categories": ["utilities", "productivity"], "categories": ["utilities", "productivity"],
"lang": "en" "lang": "en"
} }
+6
View File
@@ -110,7 +110,10 @@ function wrapPasteViewDocument({ pasteId, title, chips, toolbar, banner, bodyHtm
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" /> <meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="theme-color" content="#09090b" />
<title>${escapeHtmlAttr(title)}</title> <title>${escapeHtmlAttr(title)}</title>
<link rel="icon" href="/favicon.ico" sizes="32x32" />
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32" />
<link rel="stylesheet" href="/api/vendor/highlight-dark.css" /> <link rel="stylesheet" href="/api/vendor/highlight-dark.css" />
<style>${PASTE_VIEW_STYLES}</style> <style>${PASTE_VIEW_STYLES}</style>
${extraHead} ${extraHead}
@@ -1040,7 +1043,10 @@ function renderPasteErrorPage(reason = 'Paste not found') {
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" /> <meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="theme-color" content="#09090b" />
<title>Paste unavailable - peer.paste</title> <title>Paste unavailable - peer.paste</title>
<link rel="icon" href="/favicon.ico" sizes="32x32" />
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32" />
<style>${PASTE_VIEW_STYLES}</style> <style>${PASTE_VIEW_STYLES}</style>
</head> </head>
<body> <body>
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+9 -1
View File
@@ -3,14 +3,22 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#09090b" />
<title>peer.paste</title> <title>peer.paste</title>
<link rel="icon" href="/favicon.ico" sizes="32x32" />
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32" />
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192" />
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png" />
<link rel="manifest" href="/manifest.json" />
<link rel="stylesheet" href="/css/branding.css" />
<link rel="stylesheet" href="/styles.css" /> <link rel="stylesheet" href="/styles.css" />
<link rel="stylesheet" href="/api/vendor/highlight-dark.css" /> <link rel="stylesheet" href="/api/vendor/highlight-dark.css" />
</head> </head>
<body> <body>
<div class="app-shell"> <div class="app-shell">
<header class="app-header"> <header class="app-header">
<div class="brand"> <div class="brand header-brand">
<img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="24" height="24" />
<h1>peer.paste</h1> <h1>peer.paste</h1>
<p>Share temporary text with one clean link.</p> <p>Share temporary text with one clean link.</p>
</div> </div>
+31
View File
@@ -0,0 +1,31 @@
{
"name": "peer.paste",
"short_name": "peer.paste",
"description": "Share temporary text with one clean link",
"start_url": "/",
"display": "standalone",
"background_color": "#09090b",
"theme_color": "#09090b",
"orientation": "any",
"icons": [
{
"src": "/favicon.ico",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "/branding/p2ns-favicon-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any maskable"
},
{
"src": "/branding/p2ns-favicon-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any maskable"
}
],
"categories": ["utilities", "productivity"],
"lang": "en"
}
+25 -3
View File
@@ -88,15 +88,37 @@ body::before {
min-height: var(--header-h); min-height: var(--header-h);
} }
.brand h1 { .brand.header-brand {
display: grid;
grid-template-columns: 1.5rem minmax(0, 1fr);
column-gap: 0.5rem;
row-gap: 0.1rem;
min-width: 0;
}
.brand.header-brand .brand-lockup-logo {
grid-column: 1;
grid-row: 1;
align-self: start;
margin-top: 0.05rem;
width: 1.5rem;
height: 1.5rem;
}
.brand.header-brand h1 {
grid-column: 2;
grid-row: 1;
margin: 0; margin: 0;
font-size: 1.05rem; font-size: 1.05rem;
font-weight: 600; font-weight: 600;
letter-spacing: -0.03em; letter-spacing: -0.03em;
line-height: 1.2;
} }
.brand p { .brand.header-brand p {
margin: 0.1rem 0 0; grid-column: 2;
grid-row: 2;
margin: 0;
font-size: 0.75rem; font-size: 0.75rem;
color: var(--text-tertiary); color: var(--text-tertiary);
} }
-7
View File
@@ -276,13 +276,6 @@ async function handler(req, res) {
return false; return false;
} }
// Handle favicon - return 204 No Content
if (path === 'favicon.ico') {
res.writeHead(204);
res.end();
return true;
}
// GET /api/system - Get complete system state // GET /api/system - Get complete system state
if (path === 'api/system' && method === 'GET') { if (path === 'api/system' && method === 'GET') {
const systemState = await getSystemState(); const systemState = await getSystemState();
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1,29 @@
/* P2NS brand lockup — shared plugin branding */
.brand-lockup {
display: flex;
align-items: center;
gap: 0.75rem;
min-width: 0;
}
.brand-lockup--center {
flex-direction: column;
justify-content: center;
text-align: center;
}
.brand-lockup-logo {
width: 2rem;
height: 2rem;
object-fit: contain;
flex-shrink: 0;
}
.brand-lockup--center .brand-lockup-logo {
width: 2.5rem;
height: 2.5rem;
}
.brand-lockup-text {
min-width: 0;
}
+34 -6
View File
@@ -131,9 +131,36 @@ body {
} }
.header-content { .header-content {
display: flex; flex: 1;
flex-direction: column; min-width: 0;
align-items: flex-start; }
.header-brand {
display: grid;
grid-template-columns: 2rem minmax(0, 1fr);
column-gap: 0.75rem;
row-gap: 0.25rem;
}
.header-brand .brand-lockup-logo {
grid-column: 1;
grid-row: 1;
align-self: start;
margin-top: 0.15rem;
}
.header-brand h1 {
grid-column: 2;
grid-row: 1;
margin: 0;
min-width: 0;
line-height: 1.2;
}
.header-brand .subtitle {
grid-column: 2;
grid-row: 2;
margin: 0;
} }
.header h1 { .header h1 {
@@ -143,7 +170,7 @@ body {
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
margin-bottom: 0.25rem; margin-bottom: 0;
} }
.subtitle { .subtitle {
@@ -967,11 +994,12 @@ canvas {
} }
.header-content { .header-content {
flex: 1; flex: 1 1 100%;
min-width: 0; width: 100%;
} }
.header-status { .header-status {
flex: 1 1 100%;
margin-top: var(--spacing-sm); margin-top: var(--spacing-sm);
width: 100%; width: 100%;
justify-content: flex-end; justify-content: flex-end;
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+8 -2
View File
@@ -3,9 +3,14 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#000000"> <meta name="theme-color" content="#0a0e1a">
<title>P2NS Network Visualization</title> <title>P2NS Network Visualization</title>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/branding/p2ns-favicon-192.png" type="image/png" sizes="192x192">
<link rel="apple-touch-icon" href="/branding/p2ns-favicon-192.png">
<link rel="manifest" href="/manifest.json"> <link rel="manifest" href="/manifest.json">
<link rel="stylesheet" href="/css/branding.css">
<link rel="stylesheet" href="/css/tailwind.css"> <link rel="stylesheet" href="/css/tailwind.css">
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="https://global.profile/css/profile-modal.css"> <link rel="stylesheet" href="https://global.profile/css/profile-modal.css">
@@ -18,7 +23,8 @@
<div class="container"> <div class="container">
<!-- Header --> <!-- Header -->
<header class="header"> <header class="header">
<div class="header-content"> <div class="header-content header-brand">
<img src="/branding/p2ns-icon.png" alt="" class="brand-lockup-logo" width="32" height="32">
<h1>P2NS Network Visualization</h1> <h1>P2NS Network Visualization</h1>
<p class="subtitle">Visualize and explore the P2NS network</p> <p class="subtitle">Visualize and explore the P2NS network</p>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More