Commit Graph

28 Commits

Author SHA1 Message Date
primal
3147b4e48a v56: standardize font sizes to match domain name 2026-01-30 17:06:24 -05:00
primal
406f9397c2 v54: fix d:feeds to load items 2026-01-30 17:02:18 -05:00
primal
a3d8f4ea8e v53: add feed info and items panels with click toggles 2026-01-30 16:59:38 -05:00
primal
442e010672 v52: simplify feed row: status, count, path, title inline 2026-01-30 16:49:38 -05:00
primal
6c9702eebc v51: remove debug logging 2026-01-30 16:43:23 -05:00
primal
2289d73288 v50: add debug logging for spacer click 2026-01-30 16:41:56 -05:00
primal
51d05e18a1 v49: fix spacer click using event delegation 2026-01-30 16:39:20 -05:00
primal
57801d0946 v48: domain name links to site, spacer toggles feeds 2026-01-30 16:36:14 -05:00
primal
5b3330ba07 v47: Fix d:feeds auto-expand for hidden container 2026-01-30 16:31:32 -05:00
primal
97051f3967 v46: Click domain name to toggle feeds div 2026-01-30 16:29:05 -05:00
primal
cf34db1e6c v45: Auto-expand feed details in d:feeds mode 2026-01-30 16:23:03 -05:00
primal
f59e7dcbc3 v44: Left-justify TLD footer 2026-01-30 16:19:08 -05:00
primal
018f47449f v43: Add TLD footer with collapse button 2026-01-30 16:17:59 -05:00
primal
388e846f18 v37: Add right margin to language column 2026-01-30 16:01:47 -05:00
primal
2504927022 v36: Widen language column to 32px 2026-01-30 16:00:27 -05:00
primal
a5fe2962c3 v35: Add git commit/push to deploy script 2026-01-30 15:58:49 -05:00
primal
655dbfdbac v26: Fix Safari button spacing with explicit min-width
Safari was collapsing the invisible spacer button. Added min-width
and box-sizing to force consistent width across browsers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 14:10:56 -05:00
primal
7bd9ee7c78 v21: Button spacing and deploy script
- 1px spacing between status buttons
- Rounded corners on all buttons
- Invisible spacer for consistent row alignment
- Added scripts/deploy.sh for auto-incrementing version on deploy

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:39:12 -05:00
primal
36de78bc49 v19: Add consistent row alignment with fail button spacer
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:30:54 -05:00
primal
516848e529 Revise domain status flow: skip uses takedown, add drop for permanent deletion
- Import default changed from 'hold' to 'pass' (auto-crawl)
- Skip now uses PDS takedown (hides posts but preserves data)
- Added 'drop' status for permanent deletion (requires skip first)
- Added TakedownAccount/RestoreAccount PDS functions
- Un-skip restores PDS accounts and reactivates feeds
- Dashboard shows 'drop' button only for skipped domains

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 23:18:17 -05:00
primal
1066f42189 Refactor large Go files into focused modules
Split dashboard.go (3,528 lines) into:
- routes.go: HTTP route registration
- api_domains.go: Domain API handlers
- api_feeds.go: Feed API handlers
- api_publish.go: Publishing API handlers
- api_search.go: Search API handlers
- templates.go: HTML templates
- dashboard.go: Stats functions only (235 lines)

Split publisher.go (1,502 lines) into:
- pds_auth.go: Authentication and account management
- pds_records.go: Record operations (upload, update, delete)
- handle.go: Handle derivation from feed URLs
- image.go: Image processing and favicon fetching
- publisher.go: Core types and PublishItem (439 lines)

Split feed.go (1,137 lines) into:
- item.go: Item struct and DB operations
- feed_check.go: Feed checking and processing
- feed.go: Feed struct and DB operations (565 lines)

Also includes domain import batch size increase (1k -> 100k).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 22:25:02 -05:00
primal
3999e96f26 Dashboard UI overhaul: inline feed details, TLD filtering, status improvements
- Feed details now expand inline instead of navigating to new page
- Add TLD section headers with domains sorted by TLD then name
- Add TLD filter button to show/hide domain sections by TLD
- Feed status behavior: pass creates account, hold crawls only, skip stops, drop cleans up
- Auto-follow new accounts from directory account (1440.news)
- Fix handle derivation (removed duplicate .1440.news suffix)
- Increase domain import batch size to 100k
- Various bug fixes for account creation and profile updates

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 20:51:05 -05:00
primal
f7535a277f Add sort toggle for domain list (A-Z vs feed count)
Added ability to toggle between alphabetical and feed count sorting when
viewing domains under a TLD. Includes UI toggle in breadcrumb area and
backend support for the sort parameter.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 13:09:31 -05:00
primal
a8c73bb540 Add TLD stats display when viewing a TLD
- Add /api/tldStats endpoint for domain/feed counts per TLD
- Show stats bar at top when browsing a TLD

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 13:04:06 -05:00
primal
254b751799 Add rich text links, language filter, and domain deny feature
- Use labeled links (Article · Audio) instead of raw URLs in posts
- Add language filter dropdown to dashboard with toggle selection
- Auto-deny feeds with no language on discovery
- Add deny/undeny buttons for domains to block crawling
- Denied domains set feeds to dead status, preventing future checks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 12:36:58 -05:00
primal
f4afb29980 Migrate from SQLite to PostgreSQL
- Replace modernc.org/sqlite with jackc/pgx/v5
- Update all SQL queries for PostgreSQL syntax ($1, $2 placeholders)
- Use snake_case column names throughout
- Replace SQLite FTS5 with PostgreSQL tsvector/tsquery full-text search
- Add connection pooling with pgxpool
- Support Docker secrets for database password
- Add trigger to normalize feed URLs (strip https://, http://, www.)
- Fix anchor feed detection regex to avoid false positives
- Connect app container to atproto network for PostgreSQL access
- Add version indicator to dashboard UI

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:38:13 -05:00
primal
75835d771d Add AT Protocol publishing, media support, and SQLite stability
Publishing:
- Add publisher.go for posting feed items to AT Protocol PDS
- Support deterministic rkeys from SHA256(guid + discoveredAt)
- Handle multiple URLs in posts with facets for each link
- Image embed support (app.bsky.embed.images) for up to 4 images
- External embed with thumbnail fallback
- Podcast/audio enclosure URLs included in post text

Media extraction:
- Parse RSS enclosures (audio, video, images)
- Extract Media RSS content and thumbnails
- Extract images from HTML content in descriptions
- Store enclosure and imageUrls in items table

SQLite stability improvements:
- Add synchronous=NORMAL and wal_autocheckpoint pragmas
- Connection pool tuning (idle conns, max lifetime)
- Periodic WAL checkpoint every 5 minutes
- Hourly integrity checks with PRAGMA quick_check
- Daily hot backup via VACUUM INTO
- Docker stop_grace_period: 30s for graceful shutdown

Dashboard:
- Feed publishing UI and API endpoints
- Account creation with invite codes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:30:02 -05:00
primal
143807378f Add Docker support and refactor data layer 2026-01-26 16:02:05 -05:00