Commit Graph

40 Commits

Author SHA1 Message Date
noah 04454b4a42 feat: redesign drop zone as full-bleed poster typography
Replace card/icon layout with a massive stacked serif headline that fills
the window. Words animate in individually and shift pink on drag. Browse
button is small and understated below the type.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 15:47:20 +02:00
noah 0403f14acf feat: improve drop zone with gradient icon, format pills, and card layout
Combines gradient icon (pink→purple with glow) and soft card wrapper with
format type pills so the empty state feels more alive and informative.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 15:41:29 +02:00
noah e76c808eee fix: prevent install.ps1 from crashing PowerShell on error
When run via `irm ... | iex`, `exit` terminates the entire PowerShell
session. Wrapped the installer in a function and replaced all `exit`
calls with `return` so errors are reported cleanly without killing
the terminal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:13:51 +02:00
noah 2c756d2d27 feat: add OS switcher and copy button to CLI install box
- Add InstallBox component with Linux/macOS and Windows tabs
- Windows tab shows PowerShell one-liner (irm ... | iex)
- Linux/macOS tab shows curl one-liner (curl ... | sh)
- Copy button with clipboard feedback animation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:10:01 +02:00
noah f60a7cbaea fix: add Windows installer and upload Windows CLI binaries to release
- Add install.ps1 PowerShell script for native Windows installation
- Update install.sh to redirect Windows users (MINGW/MSYS/CYGWIN) to install.ps1
- Ignore CLI build artifacts (*.exe, *.zip, *.tar.gz) in .gitignore
- Windows binaries (x86_64 + arm64) uploaded to v0.1.6 release

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:08:31 +02:00
noah 7ec06b256d Made DropZone and FileRow improvements 2026-03-17 10:52:58 +01:00
noah 31cfd03e42 feat: v0.1.6 - auto-refresh file list, separate reset key
- Auto-refresh: file list now checks directories every 2 seconds for new files
- r key: resets done/error/deleted file back to idle for reconversion
- f key: manually refresh the file list
- d key: removes file from list only (unchanged)
- Auto-refresh works for directories that files were loaded from
- Updated help menu and bottom bar with new keybindings
2026-03-11 10:46:31 +01:00
noah 82a4123f84 feat: v0.1.5 - no default selection, stay on file list after convert, improved help menu
- Files no longer selected by default (user must select manually)
- After conversion, stays on file list (no more stateResults/esc to reconvert)
- x key resets done file to idle (delete output + reconvert in one)
- p key opens output if done, otherwise input file
- Help menu now has cream background, title bar, and divider to blend in smoothly
- Removed stateResults entirely - simplified to single state
2026-03-11 10:32:23 +01:00
Noah Aufner 5f1743ddce Fix formatting of license section in README 2026-03-10 11:31:03 +01:00
noah 1c2048e648 Updated readme 2026-03-10 11:29:54 +01:00
noah 6dfff303dc Added github link and Readme 2026-03-10 11:28:42 +01:00
noah b35755467e add open source link to footer, rewrite README
- Added GitHub link in footer with 'Open source — star us on GitHub'
- Completely rewrote README with proper project documentation:
  - Features, format support tables, installation guides
  - CLI keybindings reference
  - Development setup and tech stack
  - Contributing guidelines and links
2026-03-10 11:19:54 +01:00
noah 3bf5033429 changed 2026-03-10 11:14:14 +01:00
noah c2988893db Added beta flag to tui 2026-03-10 11:11:19 +01:00
noah cf489c4f02 feat: add preview/delete-output to TUI, replace how-it-works with tutorial gif
CLI:
- p key opens file with system viewer (input in file list, output in results)
- x key deletes converted output file from disk in results state
- New 'deleted' status shown in red in the status column
- Updated help overlay and bottom bar keybindings

Web:
- Replace three-step timeline in 'How it works' with Tuturial.gif
- GIF shown in browser-style window frame matching site design
2026-03-10 10:35:41 +01:00
noah 062af2630f add beta badge to TUI section on landing page 2026-03-09 23:48:41 +01:00
noah 6254c0431e feat: inline conversion with status updates, cwebp support, v0.1.4
- Conversion now happens inline on the file list — status column updates
  from idle → converting... → done/error in place (no separate screen)
- Fixed value-receiver bug in convertNext() that prevented 'converting'
  status from being displayed
- Added cwebp fallback for PNG/JPEG → WebP (ffmpeg webp encoder often
  missing on macOS)
- Format selector arrows hidden during conversion/results states
- Simplified to 2 states: stateFileList + stateResults
- Added tests for conversion state machine and view rendering
2026-03-09 23:45:54 +01:00
noah ed25ffa533 fix: per-segment bg coloring for full-screen cream + warm cursor highlight
Previous approach using Place() for full-screen bg and WarmRowStyle wrapper
failed because inner ANSI resets (\x1b[m) kill outer Background() styles.

New approach: every styled segment carries its own Background() via theme.Bg()
and theme.WBg() helpers. Per-line Place() fills trailing whitespace. This
ensures cream bg (#fdf6ef) on every pixel of every line, and warm bg (#f8f0e6)
consistently across the cursor row.

Also fixes bottom bar overflow on narrow terminals with adaptive keybindings.
2026-03-09 23:34:52 +01:00
noah 4d5e73cfd1 fix: cream background on every style, warm highlight on cursor row
Every Lip Gloss style now has Background(ScreenBg) so ANSI sequences
carry the cream color inherently. Previously only PadLine added bg
to padding spaces, but inner escape codes reset the background.

All spacing between styled segments uses bg()/wbg() helpers.
Cursor row elements use Background(Warm) for highlight.
2026-03-09 23:18:27 +01:00
noah 0e125e7b1a bump: v0.1.1 for TUI background fix release 2026-03-09 23:15:12 +01:00
noah ddab9087d8 fix: cream background fills entire terminal, bottom bar pinned to bottom
- PadLine now wraps entire line content with Background(ScreenBg) so
  cream color shows behind all text, not just the right-edge padding
- Added PadLineWithBg for active row warm highlight (#f8f0e6)
- Restructured View() to pin bottom bar at terminal bottom with blank
  fill between file list and footer
- Removed 'd remove' from bottom bar keybindings to match web reference
2026-03-09 23:13:32 +01:00
noah c9f1242823 refactor: rework TUI layout to match web app terminal simulation
- Fixed column widths for cursor, selection, size, format selector, status
- Flexible name column that adapts to terminal width
- Active row highlighted with warm background color
- Column header aligned with file row columns
- Proper Unicode symbols (arrows, dots, check/cross marks)
- Consistent 2-char padding on dividers and title bar
2026-03-09 23:09:47 +01:00
noah b47399335a fix: install.sh falls back to ~/.local/bin with PATH hint, redesign terminal section as interactive TUI simulation 2026-03-09 23:01:59 +01:00
noah b57b843459 fix: remove compiled binary and stray PDF from repo, update .gitignore 2026-03-09 22:53:29 +01:00
noah 04a1f33cb1 feat: add CLI with TUI, self-update, install script, and terminal section on landing page
- Full-screen Bubble Tea TUI with cream background fill using PadLine/FillBlankLines
- Self-update command (--update) pulling from GitHub releases
- install.sh for curl one-liner installation
- Terminal Lovers section on web landing page with install command and CLI features
- All 7 format categories, glob/directory batch support, auto-download ffmpeg
2026-03-09 22:53:10 +01:00
noah b9aac61ab8 Can convert a file multiple times now 2026-03-09 22:11:55 +01:00
noah 18912547a8 Added mobile support 2026-03-09 22:06:58 +01:00
noah 76f02c3b1a Added local storage upgraded looks 2026-03-09 21:58:37 +01:00
noah 338cb07ba2 feat: replace features section with animated terminal simulation
Dark terminal window with macOS title bar auto-types conversion commands
with realistic keystroke delays. Shows colored output for each format
category. Cycles through 10 different conversions, clears after 6 to
stay clean. Category format counts shown below terminal. Dramatic visual
contrast against the pastel page.
2026-03-09 21:18:01 +01:00
noah 775a90a79b feat: replace format cloud with scrolling marquee rows in features section
Four animated marquee rows (Images, Documents, Audio/Video, Data/Fonts)
scroll continuously in alternating directions. Category labels pinned on
left with edge fade. Badges pause on hover. Each row has distinct color
and scroll speed.
2026-03-09 21:11:55 +01:00
noah a1e64225d5 feat: replace bento grid with format cloud / tag wall in features section
All 70+ formats displayed as color-coded badges in a flowing cloud layout.
Popular formats are larger, all badges animate in with staggered entrance.
Category legend at top with colored dots. Hover effects on each badge.
2026-03-09 21:08:11 +01:00
noah dee839964b feat: redesign landing page sections and file cards
Redesign 'How it works' as illustrated timeline with unique scene
per step (pink/purple/mint), connecting line, and staggered animations.
Redesign 'Features' as asymmetric bento grid and 'Privacy' as
side-by-side layout with animated shield. Redesign FileCard as paper
note style with random rotation, washi tape strip, ruled lines, and
typewriter typography.
2026-03-09 21:02:41 +01:00
noah 5b1182a818 fix: landing page Unicode rendering, orbit overlap, and add PDF OCR fallback
- Fix Unicode escapes (\u26A1, \u2192, \u{1F6E1}) rendered as literal text in JSX
  by wrapping them in JSX expressions
- Increase orbit radii (520/320px -> 720/480px) so items don't overlap hero text
- Add orbit animation keyframes (orbit-slow, orbit-med) to globals.css
- Add Tesseract.js OCR fallback for scanned/image-based PDFs that have no
  extractable text layer — renders pages to canvas then runs browser-based OCR
- Thread onProgress through all PDF conversion functions for OCR progress
2026-03-09 20:44:38 +01:00
noah f15fd9f060 feat: add pptx, font, psd, epub converters and context-aware previews
- Wire presentationConverter (pptx read/write via pptxgenjs+jszip)
- Add fontConverter (ttf/otf/woff/woff2 via opentype.js + woff2-encoder)
- Add PSD support via ag-psd in imageConverter
- Add spreadsheetConverter (xlsx/xls/ods via SheetJS)
- Add ebookConverter (epub via jszip)
- Expand data converter with ini/env/properties/ndjson/jsonl/sql formats
- Add context-aware previews for pptx, epub, fonts, and psd in PreviewModal
- Remove unsupported .doc extension from fileDetector
- Replace Node-only wawoff2 with browser-compatible woff2-encoder
2026-03-09 20:18:41 +01:00
noah ade7807754 feat: add file preview modal + harden PDF conversion
- Add PreviewModal component with support for images, PDFs, HTML, audio, video, and text-based formats
- FileCard now shows Preview + Download buttons side-by-side after conversion
- Preview opens in a modal overlay with Escape/backdrop-click to close
- Text files truncated at 100KB for preview performance
- Harden pdfjs-dist worker loading with try/catch fallback (runs on main thread if CDN fails)
- Add useSystemFonts option to PDF document loading for better text extraction
2026-03-09 19:10:41 +01:00
noah da49498835 feat: expand conversion matrix to everything-to-everything
- Documents: full cross-format (PDF, DOCX, HTML, MD, TXT, RTF) via pdfjs-dist, docx, mammoth, jsPDF, marked
- Images: add TIFF and ICO encoding (custom binary encoders for browser support)
- Data: add TOML support via smol-toml, all formats cross-convert
- Media: fix webm codec (VP8+Vorbis instead of libx264), expand video-to-audio extraction matrix
- Add missing MIME types (docx, rtf, toml, tiff, ico, opus, wma, flv, wmv, m4v)
- Remove unused pdf-lib dependency
- Fix pdfjs-dist TextItem type error with proper type guard
2026-03-09 19:03:16 +01:00
noah e505c29c6a add logo and favicons, use logo image in nav headers 2026-03-09 18:48:27 +01:00
noah 38f58327c4 redesign: playful pastel theme with solid colors, new landing page
- Rewrite all components to use Tailwind utility classes (Tailwind v4 broke custom CSS classes)
- New landing page at / with hero, features bento grid, how-it-works, privacy section
- Converter tool moved to /convert route
- Fonts: Fraunces (serif headlines) + Plus Jakarta Sans (body) + JetBrains Mono (labels)
- Warm cream palette with pastel category colors (pink, blue, purple, orange, mint)
- Remove all gradients — solid colors only throughout
- Remove floating badge bounce animation
- Responsive action bar and file grid for mobile
- Register design tokens via @theme inline for Tailwind v4 compatibility
2026-03-09 18:38:35 +01:00
noah 221a72b2bf fix: rewrite document converter to preserve formatting in PDF output
Replace jsPDF.text() (plain text dump) with jsPDF.html() + html2canvas-pro
which renders actual styled DOM elements into the PDF. DOCX headings, bold,
italic, tables, lists, links now render correctly. All HTML output also gets
a full styled document wrapper with embedded CSS. HTML-to-Markdown converter
rewritten with proper DOM-walking parser instead of fragile regex.
2026-03-09 18:12:42 +01:00
noah 7659136045 feat: initial Transmute app — universal client-side file converter
Full-stack client-side file converter with Next.js 15 static export.
Supports images (Canvas API), documents (mammoth/pdf-lib/jspdf),
audio/video (ffmpeg.wasm), and data formats (papaparse/yaml/xml).
Dark industrial UI with Space Grotesk + JetBrains Mono, animated
drop zone, glassmorphism file cards, progress rings, and ZIP downloads.
Zero server dependencies — files never leave the browser.
2026-03-09 18:07:47 +01:00