- Svelte 76.3%
- CSS 14.5%
- TypeScript 6.4%
- HTML 1.1%
- Dockerfile 1%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Pages / pages (push) Successful in 58s
Same action, shorter spelling. A bare owner/repo in `uses:` resolves against the instance's [actions] DEFAULT_ACTIONS_URL, which is unset on git.hu-tao.dev and therefore takes Forgejo's own default of https://code.forgejo.org -- the exact URL the previous commit spelled out in full. Worth recording what that means, because the obvious reading of the last commit is wrong: a bare `actions/upload-artifact` was never going to github.com either. It resolves to code.forgejo.org/actions/upload-artifact, which is a plain MIRROR of GitHub's action -- cloned and checked, its isGhes() is still the real hostname test, not the fork's `return false`. The two live side by side on the same host under different owners, so switching owner is the entire fix, and no configuration could have made `actions/...` mean the fork: Forgejo has DEFAULT_ACTIONS_URL and no per-action alias. The full URL bought only independence from that setting. These workflows sit in .forgejo/ and run on one instance, so that is not worth the width. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| messages | ||
| project.inlang | ||
| src | ||
| static | ||
| .dockerignore | ||
| .gitignore | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| bun.lock | ||
| components.json | ||
| Dockerfile | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| svelte.config.js | ||
| tsconfig.json | ||
| vercel.json | ||
| vite.config.ts | ||
🎬 Compress.lol – WebAssembly-Powered Video Compression
Compress.lol – "Crushing file sizes, not dreams" ⚡ WebAssembly-powered video compression that runs entirely in your browser.
✨ Features
- 🎯 Target-size compression with intelligent quality adjustment
- 🧠 Motion detection for optimized encoding settings
- ⚡ Lightning-fast processing using WebAssembly FFmpeg
- 🔒 100% client-side – your videos never leave your device
- 📱 Responsive design – works on desktop and mobile
- 🌍 Multilingual interface with Paraglide JS
- 🎨 Modern UI with TailwindCSS, Shadcn/ui components, and Catppuccin themes
🚀 Quick Start
🛠️ Manual Installation
# Clone the repository
git clone https://github.com/anhostfr/compress.lol
cd compress.lol
# Install dependencies
npm install
# Start development server
npm run dev
🎯 How It Works
Smart Compression Algorithm
- Video Analysis: Automatically detects motion levels, resolution, and encoding characteristics
- Target-Based Encoding: Calculates optimal bitrates and settings for your target file size
- Motion-Aware Settings: Adjusts encoding parameters based on content complexity
- WebAssembly Processing: Uses FFmpeg compiled to WASM for native-speed compression
Compression Targets
- 8 MB – Ultra compression for sharing
- 25 MB – High compression for social media
- 50 MB – Medium compression for email
- 100 MB – Low compression for archival
🛠️ Development
npm run dev # Development server
npm run build # Production build
npm run preview # Preview production build
npm run check # TypeScript check
npm run format # Prettier formatting
FFmpeg Integration
The app uses FFmpeg.wasm for video processing:
- Core:
ffmpeg-core.js– Main FFmpeg engine - WASM:
ffmpeg-core.wasm– WebAssembly binary - Worker:
ffmpeg-core.worker.js– Background processing
Adding Languages
- Create new message files in
src/lib/paraglide/messages/ - Update language configuration
- Add language selector option
📱 Browser Support
- Chrome/Edge: 90+
- Firefox: 89+
- Safari: 15+
Requires WebAssembly and SharedArrayBuffer support.
File Size Limits
- Maximum file size: 2GB (browser limitation)
🤝 Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
npm run check - Format code:
npm run format - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
📄 License
Apache 2.0 License – see LICENSE for details.
🙏 Acknowledgements
- FFmpeg.wasm – FFmpeg compiled to WebAssembly
- SvelteKit – The fastest way to build svelte apps
- Paraglide JS – Type-safe i18n
- TailwindCSS – Utility-first CSS framework
- Shadcn/ui – Beautiful UI components
- Catppuccin – Lovely color palette and themes
"Making video compression accessible to everyone, one byte at a time"