Checks column types before running ALTER TYPE migrations to avoid
slow table scans on every restart. Also guards column renames.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
- 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>
- idx_domains_to_check: status WHERE last_checked_at IS NULL
- idx_domains_to_crawl: status WHERE last_checked_at IS NOT NULL AND last_crawled_at IS NULL
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When no status filter is provided, the domains API now excludes
domains with 'skip' status (including bare TLDs) by default.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Domains without a dot (e.g., "com", "net", "org") are bare TLDs
from Common Crawl data and should not be processed as domains.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
When setting publish_status to deny, now performs complete cleanup:
- Deletes all posts from the feed account on PDS
- Deletes the PDS account itself
- Clears published_at timestamps on all items
- Clears the publish_account field on the feed
Added Publisher methods:
- DeleteAllPosts: lists and deletes all posts from an account
- DeleteRecord: deletes a single AT Protocol record
- DeleteAccount: deletes account via PDS admin API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replaced complex checks (digit-dash, all-digit hostname) with simple rule:
deny any domain starting with a digit, except 1440.news.
Database: denied 2,870,090 domains and 24,885 feeds.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Deny domains where hostname is all digits (e.g., 0000114.com)
- Never auto-deny 1440.news or subdomains
- Auto-pass feeds from 1440.news sources
- Updated 554,085 domains and 3,213 feeds in database
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
TTLMinutes, UpdateFreq, ErrorCount, ItemCount, and NoUpdate columns
can be NULL in the database. Use pointer types and handle them properly
to avoid scan errors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detect JSON Feed format (jsonfeed.org) via version field
- Parse JSON Feed metadata and items
- Support application/feed+json MIME type for feed discovery
- Include "json" as valid feed type (not auto-denied)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>