Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • E emalm-main
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • group-emalm
  • emalm-main
  • Merge requests
  • !8

Modernize Emalm UI, Danbooru parity, media workflows, and DMail routes

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Onne Ronda requested to merge features/UI-theme into master May 04, 2026
  • Overview 0
  • Commits 1
  • Pipelines 0
  • Changes 214+

Summary

This MR is a broad modernization branch for emalm. It moves the app closer to Danbooru-style routing, resources, UI conventions, admin tooling, media handling, and account workflows while preserving legacy emalm compatibility where possible.

The branch includes major updates across the public UI, admin dashboard, upload/media stack, resource APIs, migrations, i18n, settings/profile flows, and DMail.

Highlights

  • Modernizes the main UI/theme layer, menu, footer, sidebar, mobile shell, media listing, media viewer, profile/settings screens, and admin dashboard.
  • Adds or extends Danbooru-style routes and controllers for posts, users, pools, artists, wiki pages, forums, comments, notes, reports, tags, tag relationships, user records, favorites, DMail, and static policy pages.
  • Adds Danbooru-compatible resource JSON plumbing and route handling for more site resources.
  • Expands upload/media support for documents, MIDI, SWF, native video handling, media conversion, post replacements, media assets, expiry, and richer viewer/editor workflows.
  • Adds admin-facing systems for configuration, theme editing, front-page editing, static pages, jobs, moderation, contact inboxes, Discord embeds, albums, tags, and SQL/admin tooling.
  • Adds account/profile/settings upgrades, including Danbooru-style user preferences, API keys, custom style handling, password reset routes, numeric user IDs, and profile-page polish.
  • Adds moderation and activity infrastructure, including reports, moderator dashboard, moderation queue support, user events, bans/IP bans, user feedback, reactions, saved searches, and contact submission workflows.
  • Adds DText rendering/preview support and broader Danbooru-flavored text/content features.
  • Adds migrations and backfills for the new platform features.

DMail lift

This MR upgrades DMail from the old query-route thread UI toward Danbooru-compatible behavior.

Implemented:

  • Canonical /dmails, /dmails/:id, and /dmails/new.
  • Legacy redirects from /?dmails and /?dmails=123.
  • /dmails.json and /dmails/:id.json.
  • Danbooru-style JSON fields:
    • id
    • owner_id
    • from_id
    • to_id
    • title
    • body
    • is_read
    • is_deleted
    • created_at
    • updated_at
    • is_spam
    • key
  • Danbooru-style DMail index table:
    • Date
    • From
    • To
    • Subject
  • Search fields:
    • Title
    • Message
    • To
    • From
  • Folder links:
    • All
    • Received
    • Unread
    • Sent
    • Deleted
  • DMail show page with sender, recipient, date, rendered DText body, respond, forward, and share links.
  • POST /dmails create flow.
  • read/unread and delete/undelete updates through /dmails/:id.
  • POST /dmails/mark_all_as_read.
  • HMAC-backed share keys for dmail links.
  • Migration-backed Danbooru-style owner-copy DMail storage.
  • Backfill from existing legacy thread DMail data.
  • Legacy thread storage is preserved.

Known DMail limitations are marked on-page:

  • Danbooru remote moderation-report dialog is not implemented.
  • Spam classifier UI is not implemented.
  • Email notification preference behavior is not implemented.
  • Legacy multi-recipient thread semantics are flattened into Danbooru-style owner-copy messages.

Routing and API

  • Extends canonical path handling and resource dispatch.
  • Adds or updates Danbooru-style read routes for many resources.
  • Adds JSON endpoint support across more resources.
  • Adds API-key infrastructure and route-aware API-key authentication.
  • Moves old query-style routes toward canonical path-style URLs where applicable.
  • Keeps compatibility redirects/shims for older legacy URLs.

Admin and configuration

  • Expands the admin dashboard and admin modules.
  • Adds configuration-store/editor infrastructure.
  • Adds admin tools for:
    • site theme
    • front page
    • static pages
    • Discord embed settings
    • jobs
    • moderation
    • contact inbox
    • albums
    • tags
  • Adds database migration/status tooling.
  • Adds admin SQL/interface polish.

Media and uploads

  • Expands upload handlers and controllers for:
    • images
    • video
    • audio
    • documents
    • MIDI
    • SWF
    • Blender files
  • Adds media lifecycle/expiry infrastructure.
  • Adds native video upload and conversion improvements.
  • Adds post replacement and media asset schema support.
  • Adds richer media viewer, editor, gallery, mobile listing, and player behavior.
  • Adds album/pool handling and post relationship/version infrastructure.

User, profile, and settings

  • Adds Danbooru-style account settings/preferences.
  • Adds API-key management.
  • Adds custom style handling.
  • Adds numeric user ID support while preserving legacy string UIDs.
  • Updates profile rendering and profile-page behavior.
  • Updates registration, login, activation, and password reset flows.

Content, moderation, and community features

  • Adds or expands:
    • comments
    • comment versions
    • votes
    • notes and note versions
    • wiki pages and wiki versions
    • artists and artist versions
    • tag aliases/implications/relationships
    • forums and bulk update requests
    • reports
    • moderation dashboard/queue
    • user feedback
    • bans/IP bans
    • user events
    • reactions
    • saved searches
    • library workflows
    • contact submissions/admin notifications

Static pages, docs, and SEO

  • Adds static-page routing/admin support for policy/help pages.
  • Updates sitemap generation.
  • Adds/updates docs upload and docs editor support.
  • Adds site status/statistics pages.
  • Adds DText preview/editor assets.

Migrations and data changes

This branch includes many migrations for new Danbooru/platform features, including but not limited to:

  • stats tracking
  • config store
  • docs
  • media expiry
  • albums/pools
  • post votes/comment versions
  • media assets
  • post search jobs/autocomplete
  • moderation/forum/BUR infrastructure
  • DText/reactions/upload/profile polish
  • IQDB
  • artists/tags/wiki/search parity
  • comments/notes/API keys
  • static pages
  • contact submission workflow
  • numeric post/user IDs
  • favorites/pool locks/relationship versions
  • upload/commentary backfills
  • IP bans/user events
  • Danbooru user settings
  • Danbooru-compatible DMails

Config and secrets

  • config.local.php is intentionally included.
  • conn.php and config.dev.php should not be submitted.
  • Real credentials/API keys should not be committed.

Testing

The branch includes test and tooling updates, including JS tests, admin smoke runner updates, Playwright/e2e scaffolding, and package updates.

Risk / review notes

  • This is a large, cross-cutting branch touching routing, auth, APIs, migrations, uploads, admin, and frontend behavior.
  • Review should focus on migration safety, route compatibility, auth/permission boundaries, and whether any legacy query routes need additional redirects.
  • DMail intentionally preserves old thread storage while exposing Danbooru-compatible owner-copy rows.
  • Some Danbooru behaviors are approximated where Rails-specific site logic does not exist in emalm yet; those are marked on-page where user-facing.
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: features/UI-theme