···11#!/usr/bin/env bash
22set -e
3344+echo "🏗️ Building landing page..."
55+pnpm build:landing
66+47echo "🏗️ Building Docker image with Nix..."
88+99+# Add build artifacts to git index so Nix can see them (if they are ignored)
1010+echo "➕ Adding landing assets to git index..."
1111+git add -f landing/dist landing/assets landing/favicon.ico landing/manifest.json landing/sw.js
1212+513nix build .#docker
1414+1515+echo "➖ Resetting git index..."
1616+git reset landing/dist landing/assets landing/favicon.ico landing/manifest.json landing/sw.js
617718echo "📦 Loading image into Docker..."
819docker load < result
+17-5
history/REFACTOR_PLAN.md
···6363 - Updated `scripts/inject-oauth-plugin.ts` for extension localhost config.
6464 - Added `PopupOAuthLauncher` for extension dev mode support.
65656666-## Phase 5: Optimization & Cleanup
6666+## Phase 5: Search proxy and PWA
6767+- [ ] Add favicon and logo to seams.so
6868+ - The logo is in assets/logo.png
6969+ - We should resize the logo to be appropriate for the background page
7070+ - We need to create the favicon
7171+ - Logo should be only on the landing page, half cut on the right side of the left sidebar, it should be in the background and cover half the text
7272+ - favicon should be available for the browser extension, via proxy, and landing page
7373+- [ ] **Add search from proxy HTML to landing.html**
7474+ - Place the search box above the recent annotations on the right side
7575+ - Cleanup unused static proxy HTML files. (`proxy/static/via-landing.html`)
7676+- [ ] Set redirect for sure.seams.so/ (without any proxy/ endpoint) to be seams.so
7777+- [ ] Ensure seams.so is a PWA that can handle share intent on mobile
7878+ - Any URL shared to this PWA should redirect to the sure.seams.so/proxy/<url> page such that it can be annotated
7979+8080+## Phase 6: Optimization & Cleanup
6781**Goal:** Performance improvements and dead code removal.
6882- [ ] **Optimize Sync Algorithm** (`packages/core/src/background/worker.ts`)
6983 - Use `Set.has()` for merging annotations.
7070-- [ ] **Add search from proxy HTML to landing.html
7171- - Place the search box above
7272- - Cleanup unused static proxy HTML files. (`proxy/static/via-landing.html`)
7384- [ ] Move logs to dev build only
7485 - Logging on default production instances should be minimized
7586- [ ] Document messages types, and define them in @seams/core
···7788- [ ] Clean up an existing, **COMPLETED** AMPDO: tasks
7889 - Report any incomplete AMPDO tasks
79908080-## Phase 6: Further Future Proofing
9191+## Phase 7: Further Future Proofing
8192- [ ] Report why the content script is constantly running and checking and spitting out logs, our event driven arcitecture should stop this? I only want an explanation
8293- [ ] Change domain for go pkg imports to be `pkg.sealight.xyz`
9494+- [ ] Update Agents.md
+2-1
landing/about.html
···1111 <aside class="sidebar">
1212 <div class="sidebar-content">
1313 <header class="hero">
1414- <div class="logo">Seams</div>
1414+ <div class="logo">Seams<sup>alpha</sup></div>
1515 <h1>About</h1>
1616 <div class="cta-buttons">
1717 <a href="/" class="cta-secondary">← Back to Home</a>
···5151 <ul>
5252 <li>An AT Protocol account (most likely a Bluesky account)</li>
5353 <li>The Seams browser extension (available for Chrome and Firefox)</li>
5454+ <li>Or, simply paste any URL into the search bar on the <a href="/">home page</a> to annotate without installing anything using our proxy.</li>
5455 </ul>
5556 <p>Once installed, simply highlight text on any webpage and add your annotation. Your insights become part of the collective knowledge layer.</p>
5657
landing/assets/logo.png
This is a binary file and will not be displayed.
landing/favicon.ico
This is a binary file and will not be displayed.
+28-1
landing/index.html
···44 <meta charset="UTF-8">
55 <meta name="viewport" content="width=device-width, initial-scale=1.0">
66 <title>Seams - Wisdom is made Together</title>
77+ <link rel="icon" href="/favicon.ico">
88+ <link rel="manifest" href="/manifest.json">
99+ <meta name="theme-color" content="#2d5016">
710 <link rel="stylesheet" href="landing.css">
811</head>
912<body>
1013 <div class="layout">
1114 <aside class="sidebar">
1515+ <img src="/assets/logo.png" class="sidebar-bg-logo" alt="" aria-hidden="true" />
1216 <div class="sidebar-content">
1317 <header class="hero">
1414- <div class="logo">Seams</div>
1818+ <div class="logo">Seams<sup>alpha</sup></div>
1519 <h1><span style="white-space: nowrap;">Wisdom is Made</span> <br>Together</h1>
1620 <p class="tagline">Annotations in the Atmosphere</p>
1721 <div class="cta-buttons">
···37413842 <main class="main-content">
3943 <div class="feed-section" id="feed">
4444+ <div class="search-container">
4545+ <form class="url-form" id="via-form">
4646+ <input
4747+ type="url"
4848+ id="url-input"
4949+ placeholder="Paste a link to annotate"
5050+ required
5151+ autocomplete="url"
5252+ />
5353+ <button type="submit">Annotate</button>
5454+ </form>
5555+ </div>
4056 <div id="annotations-feed" class="annotations-feed">
4157 <div class="loading">Tending the garden...</div>
4258 </div>
···6177 </div>
62786379 <script>
8080+ // Check if service worker is supported
8181+ if ('serviceWorker' in navigator) {
8282+ window.addEventListener('load', () => {
8383+ navigator.serviceWorker.register('/sw.js').then(registration => {
8484+ console.log('ServiceWorker registration successful with scope: ', registration.scope);
8585+ }, err => {
8686+ console.log('ServiceWorker registration failed: ', err);
8787+ });
8888+ });
8989+ }
9090+6491 // Backend URL defaults to same origin (production) or can be overridden for development
6592 // window.BACKEND_URL = 'http://localhost:8080';
6693