openjutsu
One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.
Add EXIF camera info to your photos and split them for social media. Free, open source, and 100% on your device.
MediaHTML · JavaScriptGitHub @LetsPlaySimiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗OpenSummary turns your photos into two things you can post: a clean summary image showing the EXIF data (aperture, shutter speed, ISO, focal length, date, camera, lens), and a set of equal slices of the same photo for carousel posts.
It runs entirely in your browser. There is no server, no account and no upload: your photos are read and processed on your own device.
Live at opensummary.app.
<original>_summary.jpg and <original>_<n>of<total>.jpg.There is no build step, no framework and no package manager. The whole app is static files.
index.html The app: markup, CSS and JavaScript in one file
onboarding.html One-time intro page, shown on first visit
exif.js EXIF reader (fork of exif-js, see Credits)
icons/ SVG icons used on the summary image
huey.jpg Example photos used on the onboarding page
b747.jpg
Inside index.html, the script is organised roughly in this order:
Image.getExif reads the file with exif.js, a fork of exif-js. buildInfo formats the values and splits them into a top group (exposure settings and date) and a bottom group (camera, lens, copyright). Values that are missing or invalid are skipped rather than printed as NaN.drawSummary paints the blurred photo onto a canvas, then the icons and text. drawPiece crops slice i of n out of the original. All sizes are relative to the image's shorter side, so a preview and a full-resolution render look the same.render runs when the files or options change. It produces a small preview for the screen and defers the full-quality render until the user downloads, using the same parameters. Output is capped at 16 megapixels to stay within mobile canvas limits. Rapid slider changes are debounced, and a run counter cancels stale renders.Three small pieces of state are kept in localStorage: whether the onboarding page has been seen, the theme choice, and the last copyright text you typed (so it is autofilled next time). Nothing else is stored. Crawlers skip the onboarding redirect.
The only external request the app makes is for context-filter-polyfill, loaded from jsDelivr. It makes the canvas filter property (used for the blur) work on iOS, where it is not supported natively. Fonts and styles for the app itself are local.
Any static file server works. For example:
git clone https://github.com/LetsPlaySimi/OpenSummary.git
cd OpenSummary
python3 -m http.server 8000
Then open http://localhost:8000. Opening index.html directly from disk mostly works too, but a local server is more reliable.
The site is deployed at opensummary.app as plain static files. To host your own copy, upload the contents of the repository to any static host. No configuration is needed.
Issues and pull requests are welcome. Keep changes small and focused where you can, and test with a few real photos, including ones with missing EXIF data.
Vibecoding is 100% allowed. Code written with an AI assistant is welcome here, and you do not need to disclose it. The only standard is that the change works and you have run it yourself.
By contributing, you agree that your contribution is released under the same license as the project (see below).
OpenSummary builds on two open source libraries:
exif.js.ctx.filter (the canvas blur) work on iOS.Thanks to their authors and contributors.
OpenSummary is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). In plain terms:
The full text is in LICENSE. The libraries listed under Credits are not covered by this license and keep their own.