Commit Graph
27 Commits
Author SHA1 Message Date
anthony 04b792c454 feat(seo): add remaining document conversion pages 2026-08-02 10:36:59 +02:00
anthony 0e19f92cda feat(seo): add remaining image, HEIC, and ICO conversion pages 2026-08-02 10:35:11 +02:00
anthony e6ab78de29 feat(seo): add conversion-page scaffolding with 2 seed pairs (jpg-to-png, pdf-to-docx) 2026-08-02 10:32:53 +02:00
anthony 3b53d82b3d feat(seo): migrate to build-time prerendering with vite-react-ssg
Fixes SeoHead (title/canonical/hreflang/JSON-LD) to render during SSR via
vite-react-ssg's Head component instead of a client-only useEffect, so
crawlers see real tags without executing JS. Also fixes an SSR crash in
useTheme (localStorage access with no window during server render) and
removes now-duplicated static meta tags from index.html.
2026-08-02 10:30:26 +02:00
anthonyandClaude Sonnet 5 afb0fed650 feat(video): add video format family, resolution control, and marquee pair
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 09:07:23 +02:00
anthony 3775d34a22 feat(audio): add bitrate chip control, default bitrates, and marquee pair 2026-08-01 14:22:40 +02:00
anthony 3d62d2983b feat(audio): recognize the audio family in the frontend formats grid 2026-08-01 14:19:39 +02:00
anthonyandClaude Sonnet 5 74db0ecfcc feat(frontend): add archive pair to the homepage format marquee
Every other family (images, documents, fonts, ebooks) had a showcase
pair in the marquee; archives was missing one after the archive
conversion feature landed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 13:09:38 +02:00
anthonyandClaude Sonnet 5 48c70254c1 feat(frontend): add archive format family, compression control, and fixed double-extension parsing
Also adds a --color-family-archives CSS variable (light + dark) that
the plan didn't call out explicitly but is needed for the new family
tile/icon to render with a color instead of falling back silently.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 13:03:30 +02:00
anthonyandClaude Sonnet 5 a7a91a7a2e feat(frontend): add remove button to pending and submitted file cards
Lets users drop an uploaded file from the UI list before or after
conversion, without cancelling anything server-side.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:47:18 +02:00
anthonyandClaude Sonnet 5 987af80286 feat(frontend): redesign homepage and file config form with aurora palette
Rebuild the visual identity from the actual Ombrora mark (violet/cyan aurora
blobs) instead of the generic blue/amber scheme, add Bricolage Grotesque and
IBM Plex Mono for display and code-like text, and give the hero an animated
aurora backdrop, gradient headline, and a format-pair marquee driven by the
real registered converters.

Rework the file config form: target format and icon size are both chip
groups now instead of a native select, and quality/compression sliders get a
gradient-filled track, custom thumb, and a mono value pill to match. File
type icons are color-coded by family (images/documents/fonts/ebooks) and
reused across FileConfigCard, FileCard, and FormatsGrid.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:34:13 +02:00
anthonyandClaude Sonnet 5 023a96e5d8 feat(frontend): show destination format badge, fix download size to reflect converted output
The download button was showing the input file's size (carried over
client-side from upload) instead of the actual converted file's size.
It now reads outputSizeBytes from the polled job status once done.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:14:44 +02:00
anthonyandClaude Sonnet 5 89749d8c20 fix(frontend): show file size in the download button label
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:10:29 +02:00
anthonyandClaude Sonnet 5 a647bee507 feat(frontend): thread file size from upload through to the download card
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:04:01 +02:00
anthonyandClaude Sonnet 5 f1f7a0162d feat(frontend): add icon/size header, spinner, and styled download button to FileCard
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:02:06 +02:00
anthonyandClaude Sonnet 5 994d70aa62 feat(frontend): restyle format picker and add file size to the config card
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 16:01:37 +02:00
anthonyandClaude Sonnet 5 7c58e50c11 feat(frontend): use flag icons in the language switcher
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 15:59:39 +02:00
anthonyandClaude Sonnet 5 f5958586b7 feat(frontend): add formatBytes util for human-readable file sizes
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 15:53:03 +02:00
anthonyandClaude Sonnet 5 3cff496a85 feat(frontend): add flag-icons dependency
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 15:52:37 +02:00
anthony 965b2ecc53 style(frontend): responsive polish pass for narrow viewports
Part of the Ombrora Convert redesign (Task 5/5).
2026-07-31 15:00:18 +02:00
anthony 8e405bd3b0 feat(frontend): add per-language SEO metadata, JSON-LD, robots.txt, and sitemap
Part of the Ombrora Convert redesign (Task 4/5).
2026-07-31 14:59:06 +02:00
anthony 2aa8e51b80 feat(frontend): add reassurance strip and supported-formats section
Part of the Ombrora Convert redesign (Task 3/5).
2026-07-31 14:57:46 +02:00
anthony bc7a3b0691 feat(frontend): add routing, layout, i18n wiring, and restyle the conversion tool
Migrates the existing upload/format-select/quality/convert logic from
the old single-file App.jsx into a router shell (/ -> /fr//en/) with a
shared Layout (header, language switcher, dark-mode toggle, footer).
Tool logic itself is unchanged, only restyled into cards.

Part of the Ombrora Convert redesign (Task 2/5).
2026-07-31 14:55:16 +02:00
anthony ee18cc2d90 feat(frontend): add design tokens, dark mode hook, and i18n scaffold
Part of the Ombrora Convert redesign (Task 1/5).
2026-07-31 14:49:19 +02:00
anthonyandClaude Sonnet 5 25a95f1ea3 feat: add ICO size picker to the upload UI
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 10:18:07 +02:00
anthonyandClaude Sonnet 5 44563edfcf feat: add per-format compression controls to the frontend
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 23:30:53 +02:00
anthonyandClaude Sonnet 5 21cca36595 feat: add React frontend and serve it from Express
Also fixes a Windows-specific bug in worker.js and cleanup.js: the
"run only if executed directly" guard compared import.meta.url against
`file://${process.argv[1]}`, which never matches on Windows (backslash
path separators, missing extra slash before the drive letter). main()
silently never ran, so the worker process started and exited
immediately without ever polling. Caught during this task's manual
verification of the full upload-convert-download flow. Fixed with
node:url's pathToFileURL, which builds a correct file:// URL cross-platform.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 09:54:27 +02:00