{"id":24534467,"url":"https://github.com/inc44/coflu","last_synced_at":"2025-04-14T21:50:58.626Z","repository":{"id":260342185,"uuid":"864216693","full_name":"Inc44/CoFlu","owner":"Inc44","description":"CoFlu is a powerful text manipulation, generation, and comparison tool. It's designed for tasks like proofreading, editing, content creation, version control, and ensuring text consistency. CoFlu offers unique capabilities, including AI-powered text generation, audio transcription, and unprecedented layout-preserving .docx translation using LLMs.","archived":false,"fork":false,"pushed_at":"2025-04-05T20:11:46.000Z","size":306,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T21:20:30.428Z","etag":null,"topics":["anthropic","audio-transcription","chatgpt","claude","compare","correction","deepseek","difference","editing","gemini","generative-ai","google","grammar","groq","image-upload","llama","openai","proofreading","qwen","sambanova"],"latest_commit_sha":null,"homepage":"https://inc44.github.io/CoFlu/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Inc44.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"buy_me_a_coffee":"xamituchido","ko_fi":"inc44","patreon":"Inc44","custom":"https://boosty.to/mrt4"}},"created_at":"2024-09-27T17:59:19.000Z","updated_at":"2025-04-05T20:11:49.000Z","dependencies_parsed_at":"2024-11-28T00:25:52.478Z","dependency_job_id":"0b860b5a-0a89-421a-8f1f-9844aba61778","html_url":"https://github.com/Inc44/CoFlu","commit_stats":null,"previous_names":["inc44/coflu"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inc44%2FCoFlu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inc44%2FCoFlu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inc44%2FCoFlu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inc44%2FCoFlu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Inc44","download_url":"https://codeload.github.com/Inc44/CoFlu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248968741,"owners_count":21191158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","audio-transcription","chatgpt","claude","compare","correction","deepseek","difference","editing","gemini","generative-ai","google","grammar","groq","image-upload","llama","openai","proofreading","qwen","sambanova"],"created_at":"2025-01-22T11:17:20.178Z","updated_at":"2025-04-14T21:50:58.602Z","avatar_url":"https://github.com/Inc44.png","language":"JavaScript","readme":"# CoFlu\n\nCoFlu is a powerful text manipulation, generation, and comparison tool. It's designed for tasks like proofreading, editing, content creation, version control, and ensuring text consistency. CoFlu offers unique capabilities, including AI-powered text generation, audio transcription, and unprecedented layout-preserving .docx translation using LLMs.\n\n![CoFlu](CoFlu.png)\n\n**Key Differentiator:** As of February 2025, CoFlu is the *only* website offering Microsoft Word (.docx) translation that *fully preserves the original document's layout* (fonts, styles, tables, images, and other elements) while using LLMs for superior translation quality. This sets CoFlu apart, providing a powerful and unique capability for users working with formatted documents.\n\n## Features\n\n**1. Text Manipulation \u0026 Comparison:**\n\n- **File Upload:** Supports `.epub`, `.txt`, `.html`, `.htm`, `.css`, `.xml`, `.json`, and `.docx`.\n- **Text Comparison:**\n\t- Calculates Levenshtein distance and percentage differences.\n\t- Optional \"semantic cleanup\" for more meaningful comparisons.\n\t- **Diff Views:** Single-column (insertions/deletions highlighted) or double-column (side-by-side).\n- **Text Transformations:**\n\t- Convert case (uppercase/lowercase).\n\t- Deduplicate and sort lines (alphabetically, including space-separated words).\n\t- Remove bold formatting and extra spaces.\n\t- Format LaTeX (spacing around delimiters) and HTML (`\u0026nbsp;` to spaces).\n\t- Retab: Convert spaces to tabs for consistent indentation.\n- **Markdown Rendering:**\n\t- Converts Markdown to HTML, including math (KaTeX or MathJax).\n\t- Print/save as PDF with Ctrl+P.\n\n**2. AI-Powered Capabilities:**\n\n- **AI Text Generation:** Uses leading AI models:\n\t- **OpenAI:** `gpt-4o`, `o3-mini`, and others.\n\t- **Anthropic:** `claude-3-7-sonnet`, `claude-3-5-sonnet`, `claude-3-5-haiku`.\n\t- **DeepSeek:** R1 and V3.\n\t- **Google:** Gemini 2.0 models, including video input.\n\t- **Groq:** LPU high-speed inference, including vision models.\n\t- **Lambda:** LLaMA.\n\t- **xAI:** The most based Grok.\n\t- **OpenRouter:** Unsage Dolphin 3.0, Mistral, and `gpt-4o` extended output.\n\t- **Perplexity:** Sonar Deep Research.\n\t- **Alibaba:** `qwen-max`, `qwen-vl-max`, and others.\n\t- **SambaNova:** Fastest full-size DeepSeek and LLaMAs.\n\t- **Together.AI:** Qwens.\n- **Prompting:**\n\t- Predefined prompts (e.g., \"Proofread this text\").\n\t- Create and save custom prompts.\n\t- Optional streaming output (see text as it's generated).\n\t- Image/video input (for supported models).\n- **Audio Transcription:**\n\t- Transcribes `.flac`, `.mp3`, `.mp4`, `.mpeg`, `.mpga`, `.m4a`, `.ogg`, `.wav`, `.webm`.\n\t- Uses Whisper models.\n\t- Supports multiple languages.\n- **Text Translation:** Translates text using the selected AI model (also as part of the .docx feature).\n\n**3. Groundbreaking .DOCX Translation:**\n\n- **Upload \u0026 Translate .DOCX:** Handles Microsoft Word documents.\n- **Full Layout Preservation:** *Crucially*, CoFlu maintains the *exact* original formatting (fonts, styles, tables, images).\n- **LLM-Powered:** Uses the selected AI model for translation.\n- **Translation Settings:**\n\t- **Batch Size:** Number of text chunks sent to the AI at once (smaller = more stable).\n\t- **Batch RPM:** Delay between batches (same as API rate limits).\n\t- **Exponential Retry:** Number of retries for failed API requests.\n- **Download Translated .DOCX:** Automatically downloads the translated document.\n\n**4. User Experience:**\n\n- **Local Storage:** Saves text, chat, API keys, settings, and custom prompts in your browser. No data is sent to external servers (except for API calls to the chosen AI provider).\n- **Appearance:** Light/dark mode, wide mode.\n- **Settings Import/Export:** JSON format.\n\n## Usage\n\n1. **Load Text:** Upload files or paste/type text into the source/target areas.\n2. **Transform:** Use buttons above text areas for transformations (uppercase, lowercase, dedupe, etc.).\n3. **AI Generate:**\n\t- Select an API model and enter your API key in settings.\n\t- Choose a prompt (predefined or custom).\n\t- (Optional) Upload images/videos, enable streaming.\n\t- Click \"Generate.\"\n4. **Compare:** Click \"Compare\" to see differences (Levenshtein, percentage, visual diffs).\n5. **Switch:** Swap source and target text.\n6. **Transcribe:** Select language, upload audio, click \"Start Transcribe.\"\n7. **Render Markdown:** Choose math renderer (KaTeX/MathJax), click \"Render,\" use Ctrl+P to save.\n8. **Translate .DOCX:** Select language, upload .docx, click \"Start Translation.\"\n\n## Custom Prompts\n\n1. Enter your custom prompt in the \"Custom Prompt\" input.\n2. Click \"Save Prompt\" to store it for later use.\n3. Saved prompts will appear in the \"Select Prompt\" dropdown.\n\n## API Keys\n\n- **Required for AI features (generation, transcription, .docx translation).**\n- Enter keys in the \"Settings\" page.\n- CoFlu supports:\n\t- **OpenAI:** [OpenAI Platform](https://platform.openai.com/api-keys)\n\t- **Anthropic:** [Anthropic Console](https://console.anthropic.com/settings/keys)\n\t- **Google:** [Google AI Studio](https://aistudio.google.com/app/apikey)\n\t- **Grok:** [xAI Cloud Console](https://console.x.ai)\n\t- **Groq:** [GroqCloud](https://console.groq.com/keys)\n\t- **Lambda:** [Lambda](https://cloud.lambdalabs.com/api-keys)\n\t- **OpenRouter:** [OpenRouter](https://openrouter.ai/settings/keys)\n\t- **Perplexity:** [Perplexity](https://www.perplexity.ai/settings/api)\n\t- **Qwen:** [Alibaba Cloud](https://bailian.console.alibabacloud.com/?apiKey=1#/api-key)\n\t- **SambaNova:** [SambaNova Cloud](https://cloud.sambanova.ai/apis)\n\t- **Together:** [Together.AI](https://api.together.ai/settings/api-keys)\n\t\n## Dependencies\n\n- [Bootstrap](https://getbootstrap.com)\n- [JSZip](https://github.com/Stuk/jszip)\n- [KaTeX](https://katex.org)\n- [MathJax](https://www.mathjax.org)\n- [diff-match-patch](https://github.com/google/diff-match-patch)\n- [marked](https://marked.js.org)\n\n## Inspiration\n\n- [Count Words Free - Compare Texts](https://countwordsfree.com/comparetexts)\n- [EditGPT](https://editgpt.app)\n- [Notability](https://notability.com)\n\n## Bugs\n\n- 🔴 Adjust upload limits based on platform constraints, e.g., SambaNova (~20MB) and Google (\u003e100MB).\n- 🔴 Fix CORS for Groq's 40MB audio upload.\n- 🔴 Fix CORS for Lambda Labs.\n- 🔴 Fix chat reasoning not showing.\n- 🔴 Fix max_completion_tokens for O models and max_tokens for others.\n- 🔴 Fix reasoning in OpenRouter as `{\"max_tokens\": 100000}` is not used.\n- 🟡 Expand supported audio formats for Google and Gemini.\n- 🟡 Fix JSON file input causing `[object Object]` to be saved.\n- 🟡 Fix Qwen Vision failure.\n- 🟡 Fix SUS key validation.\n- 🟡 Fix error when OpenAI requires audio to be attached.\n- 🟡 Fix error when Qwen requires an image to be attached.\n- 🟡 Fix scroll jumping up and down in chat.\n- 🟡 Fix smartphone layout issues where uploaded audio and rendered LaTeX extend beyond the screen.\n- 🟡 Fix stop button not stopping in chat.\n- 🟡 Implement real-time update for import/export settings.\n- 🟢 Correct spacing between uploader containers when hidden.\n- 🟢 Fix HTML not sanitized.\n- 🟢 Fix edit message size in chat.\n- 🟢 Fix italic text appearing on render and in HTML elements.\n- 🟢 Other bugs have not been found yet.\n\n## TODOs\n\n- 🔴 Add support for local LLMs via Ollama.js for offline and independent use.\n- 🔴 Adjust transcription size limits: 40 MB for Groq.\n- 🔴 Allow custom models and save config to settings.\n- 🔴 Allow disabling of thinking tokens (`\u003cthink\u003e` for DeepSeek, Groq, and SambaNova; `\"thinking\"` for Claude).\n- 🔴 Allow saving of images and videos attached to chat.\n- 🔴 Create online storage for large videos (up to 2 GB) for Gemini.\n- 🔴 Create tests.\n- 🔴 Enable container-level selection to improve contextual translation at the cost of layout preservation.\n- 🔴 Enable editing of custom prompts:\n\t- 🔴 Include a delete button for custom prompts.\n\t- 🟡 When selecting a custom prompt, a text input field should reappear, similar to adding a new prompt.\n- 🔴 Enable image drag-and-drop or paste (Ctrl+V) into the image upload card.\n- 🔴 Extend document support to additional formats, including PDFs, for both input and translation.\n- 🔴 Generate pages from HTML templates.\n- 🔴 Implement history for index, chat, and translation.\n- 🔴 Integrate popular translation engines, such as Google, Bing, DeepL, Yandex, Baidu, and Papago.\n- 🔴 Modify the word counter.\n- 🔴 Possibly add TTS tools.\n- 🔴 Possibly add an OCR tool based on \"Extract the text elements described by the user from the picture and return the result formatted as a JSON in the following format: {name_of_element: [value]}\".\n- 🔴 Possibly add image diff.\n- 🔴 Provide an option to display tokens instead of words.\n- 🔴 Refactor and rewrite the entire codebase.\n- 🔴 Support YouTube video transcription.\n- 🔴 Support login via Google, Microsoft, and GitHub for syncing.\n- 🔴 Support multiple chat sessions.\n- 🟡 Add `transcription.html` and transcription proofreading options.\n- 🟡 Add copy prompt button.\n- 🟡 Add multiple prompt selections.\n- 🟡 Add search prompt library.\n- 🟡 Explore other models on www.minimax.io and lambdalabs.com.\n- 🟢 Add Grok-3.\n- 🟢 Consider adding new default prompts, such as:\n\t- *\"Markdown OCR the following scan. The first page example is already given; continue from the second image.\"*\n\t- *\"Adhere to ASD-STE100 Simplified Technical English.\"*\n\t- *\"Do not use try, except, raise, or print.\"*\n\t- *\"Reduce repetition and variable name length.\"*\n\t- *\"Remove all docstrings and comments.\"*\n\t- *\"Rewrite the code to enhance scalability, readability, and performance.\"*\n- 🟢 Improve LaTeX handling by replacing punctuation inside separate text macros.\n- 🟢 Remove max tokens.\n- 🟢 Test old models Gemini Exp 1121 and 1114.\n- 🟢 Verify supported upload formats.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.","funding_links":["https://buymeacoffee.com/xamituchido","https://ko-fi.com/inc44","https://patreon.com/Inc44","https://boosty.to/mrt4"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finc44%2Fcoflu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finc44%2Fcoflu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finc44%2Fcoflu/lists"}