Releases: apoorvdarshan/crossposter
v1.1.5
Fix LinkedIn posts being silently truncated mid-text (e.g. at the first parenthesis).
LinkedIn's /rest/posts commentary uses the "little" text format, where \ | { } @ [ ] ( ) < > # * _ ~ are reserved and must be backslash-escaped — unescaped, LinkedIn cuts the post body at the first one (so a post could publish "successfully" yet only show its first sentence, with no "…more"). Commentary is now escaped before sending: URLs are left intact so they still auto-link, and #hashtags stay clickable.
v1.1.4
1.1.4
- Fix videos (and other media) being rejected by LinkedIn, Mastodon, X, etc. when uploaded without a MIME type. Uploads that arrive as
application/octet-stream(common fromcurl/agent clients) are now typed from the file extension —.mp4/.mov→video,.jpg/.png/.webp/.gif→image— instead of a genericfilethat providers reject. Applied on read as well, so already-uploaded media is corrected without re-uploading. AGENT_POSTING.md: document per-platform media formats, size limits, and text/title limits for every channel.
Install: npx @apoorvdarshan/crossposter@latest
v1.1.3
1.1.3
- Keep failed posts in the publish history. Previously a post where no channel published successfully was dropped and vanished from "Published" on refresh; now every attempt — manual or scheduled — is saved with its per-channel error results and persists across reloads.
Install: npx @apoorvdarshan/crossposter@latest
v1.1.2
1.1.2
- Fix a React hydration error on the Scheduler and Dashboard caused by locale-dependent date/time formatting (server rendered
31/5/2026, client5/31/2026); all date/time formatting is now pinned to a fixed locale so server and client match. - Show the project links (Star, Follow, Ko-fi, Vote) on every page masthead — Scheduler, Settings, Storage, and Socials — not just the Dashboard.
- Drop the redundant eyebrow label ("Posting queue" / "Configuration") above the title on the Scheduler and settings pages so they match the Dashboard masthead.
- Remove the filled circle behind the selected/today day number in the scheduler calendar; selection stays indicated by the day cell border and the per-day post-count badge is unchanged.
Full install: npx @apoorvdarshan/crossposter@latest
Crossposter v1.1.1
Highlights
- Agent HTTP API guide — added
AGENT_POSTING.md, a self-contained guide you can hand to any external agent so it can publish, schedule, or stage drafts (including media) through Crossposter's local API without reading the source. Now shipped in the npm package and linked from the README. - Draft media — the compose draft now persists an attached media reference, so a draft staged via the API (with an already-uploaded image/video) previews in Compose, ready to publish or schedule.
Install or update:
npx @apoorvdarshan/crossposter@latest
Crossposter v1.1.0
Highlights
- Instagram headless-browser publishing — a one-time per-account login in real Chrome (isolated profile, separate from your own Chrome), then invisible posting via the web app. Replaces the legacy instagrapi flow. Uses real Chrome so H.264 video uploads work, and matches the crop to the media orientation so vertical videos post as reels instead of being square-cropped.
- Redesigned UI — distinctive type system, gradient accents, layered depth, and subtle motion across the app and landing page.
- Socials settings — each provider profile in its own card, the redundant active-profile selector removed (pick accounts as publish targets on the dashboard), plus the Instagram login and headless toggle.
- Dashboard — sticky compose action bar (shown once instead of duplicated) and de-duplicated platform/profile labels in the publish history.
- Clearer X (bird) errors — daily limit (344), locked (326), duplicate (187), and rate limit (88) now map to actionable messages.
Install or update:
npx @apoorvdarshan/crossposter@latest
Crossposter v1.0.3
What's Changed
- Add a calendar view to /scheduled that opens on the current month.
- Mark dates with scheduled posts and filter the queue by the selected date.
- Keep scheduler queue actions for rescheduling and discarding posts below the calendar.
Verification
- npm run lint
- npm run typecheck
- npm run build
- npm pack --dry-run
Crossposter v1.0.2
Crossposter v1.0.2
Patch release for Mastodon publishing limits.
What Changed
- Added Mastodon's 500-character post text limit to Crossposter's shared preflight limit system.
- The dashboard now warns before publishing when a selected Mastodon draft exceeds 500 characters.
- The publish and scheduled-post paths now block over-limit Mastodon text before the provider call, instead of waiting for Mastodon to reject it with a 422 response.
- Updated README and the website limits table to document Mastodon's 500-character post limit.
Install / Run
npx @apoorvdarshan/crossposter@latestThe app opens on:
http://localhost:2004
Links
Crossposter v1.0.1
Crossposter v1.0.1
Welcome to the first public GitHub release of Crossposter. This release packages the full local-first Crossposter app and the small follow-up updates made for the public launch.
What Crossposter Is
Crossposter is a free, open-source, local-first social publishing dashboard for accounts you control. It runs from localhost or a self-hosted Node server, so config, uploads, drafts, schedule data, publish history, and credentials stay on your machine instead of inside a hosted SaaS dashboard.
Use it to compose once, attach media, check platform limits, publish immediately, or schedule posts locally.
Supported Channels
- X / Twitter
- Bluesky
- Mastodon
- YouTube
- Dev.to
- Peerlist
- Hacker News
- Nostr
- Dribbble
Some integrations use official APIs. Some are local or unofficial flows intended for personal accounts you own or are authorized to manage.
v1 Highlights
- Local dashboard for composing and publishing posts
- Local scheduling queue and publish history
- Media uploads stored locally
- Image and video compression helpers
- Platform-specific title, post, and media limit warnings
- Provider setup screens for connected accounts
- Light, dark, and system themes
- Tailscale helper for phone access to localhost
- macOS auto-start support for keeping localhost alive
- npm launcher support with
npx @apoorvdarshan/crossposter@latest - Version and update controls inside Settings
- Static documentation website at
crossposter.apoorvdarshan.com
What Changed In 1.0.1
- Added a Product Hunt Vote link in the Crossposter app header
- Added Product Hunt links to the website nav, contact cards, footer, and metadata
- Added Product Hunt to README contact/support details
Install / Run
npx @apoorvdarshan/crossposter@latestThe app opens on:
http://localhost:2004
For persistent local use, run it from the folder where you want Crossposter data to live.
Links
- Website: https://crossposter.apoorvdarshan.com
- npm: https://www.npmjs.com/package/@apoorvdarshan/crossposter
- Product Hunt: https://www.producthunt.com/products/crossposter-2
- Issues: https://github.com/apoorvdarshan/crossposter/issues
Note On Platform Integrations
Use Crossposter only with accounts, pages, boards, channels, and profiles you own or are authorized to manage. Unofficial integrations can break when platforms change and may trigger login challenges, rate limits, failed posts, or account restrictions.