Renames the app throughout: page titles, eyebrow/version labels,
Docker startup banner, main.py's header docstring, and the repo
links in the footer (now pointing at git.djeex.fr/Djeex/instameex
and github.com/Djeex/instameex, matching the renamed Gitea/GitHub
repos). Docker image and container are now named "instameex" too
(docker/compose.yaml), replacing the old instagram-hdr naming.
Adds the new logo: logo.svg is wired up as the favicon on both
pages, and logo-long.svg replaces the plain-text "Instameex" eyebrow
on the upload page as a properly sized wordmark.
The startup banner box width was recalculated by hand for the new
content (name plus Source:/Mirror: links instead of the old
license/upstream-credit lines), verified against a real container
rebuild so the border characters stay aligned.
kostis-kounadis/instagram-hdr-assembler references are left alone
throughout (README and banner): that's the separate upstream project
this app's gain-map logic is adapted from, not this app's own name.
New layout:
src/script/app/ Python package (was app/)
src/assets/img/ SVGs (was static/*.svg)
src/assets/css/ stylesheet (was static/style.css)
src/templates/ HTML templates (was templates/)
illustration/ README screenshot (was screenshots/), kept at
the repo root since it's a doc asset, not
something the app serves
main.py, jobs/, VERSION, docker/ unchanged locations
main.py stays at the repo root as the entry point (matches how
Docker and local runs already invoke it) and prepends src/script to
sys.path before importing app, rather than moving into src/script/
itself and needing every entry point updated to match.
config.py's path constants are recomputed for app/config.py's new
depth (src/script/app/), with SRC_DIR and REPO_ROOT resolved
explicitly rather than a single ambiguous BASE_DIR, since "templates
and assets live under src/" and "jobs and VERSION live at the repo
root" are no longer the same directory. Flask's static_folder now
points at src/assets, which serves img/ and css/ under it at
whatever URL prefix Flask derives from the folder name (/assets, not
/static); templates already reference assets via the "static"
endpoint name through url_for, so this needed the url_for() calls'
filename argument updated with the img/ or css/ prefix, not a
hardcoded URL change.
Docker copies src/ into the image preserving this same internal
structure, so the path arithmetic in config.py resolves identically
in both a local checkout and the container, no --chdir or other
container-specific path handling needed.
Verified end to end after the move: local Flask dev server, a full
Docker rebuild, and a real HTTP conversion request through the
running container (TIFF HDR pipeline, numpy/tifffile imports
included) all succeed.
Reworked static/style.css to follow the same visual language as
lumeex's back office (near-black background, cyan accent, gradient
pill buttons, translucent bordered panels) instead of the previous
generic dark-teal theme. Dropzones now use a dashed border while
empty, turning solid once a file is picked. Also fixes a stale CSS
selector (.dropzone label.tag) that never matched the actual markup
(a <span>), so the SDR/HDR tag labels were unstyled before.
Adds Gitea and GitHub repo links in the footer, using the same icons
and link pattern as lumeex.
Some users want the assembled HDR JPEG for somewhere other than
Instagram, where the exact 1080x1080/1080x1350/1080x566 match isn't
relevant. A checkbox on the form now lets the whole batch skip that
specific check. The SDR/HDR dimension-match check still always
applies, since that's a technical requirement for the gain map to
align, not an Instagram-specific rule.