InkedStudio turns the things you type into pictures and
videos using artificial intelligence. You describe a character once, the
studio remembers them, and then every picture or video you make uses that
character as the subject. You can chat with the character too — they
have a personality, remember what you've talked about, and can send you
selfies when you ask.
The catch: it's not a magic wand. The better you describe what you want,
the better picture or video you get. This manual shows you how every
button works.
Sign in & sign out
1
Go to the sign-in page. The address depends on which
demo you're using:
https://demo2.inkedworld.ai/login.php (abaddon demo),
https://devinked.detodoenlaweb.com/login.php (hellboy dev),
or http://inkedstudio2.local/login.php (local).
2
Type your username (lowercase, no spaces) and
password. Hit the big orange
Sign in button.
3
You're in. You land on the studio — either onboarding (your first
visit) or the studio itself with your saved models.
To leave: click sign out. Where you land
depends on where you signed out from:
From the studio (regular user) → back to the regular
login page (/login.php). No ADMIN branding.
From the admin panel → back to the admin-branded
login page (/login.php?admin=1) so the next admin can
sign in without the regular login flow getting in the way.
Your models and gallery are saved on the server; signing back in
brings them back.
Lost your password? Ask your demo owner to reset it.
There's no self-serve reset.
The studio — what's on the screen
Once signed in, the studio has three regions:
Top bar (header) — title on the left, action buttons
on the right:
+ New Model (start a brand new character),
💬 Chat (open the companion chat with your
active model),
🎬 N (the render-queue chip —
see below, only visible while a video is
rendering),
your credit balance (e.g. "59,509 credits"),
and ? Help (this page). If you have admin
access (your demo owner granted it), you'll also see an
admin link between the credits and Help.
Middle (chat stream) — your conversation, top to
bottom. You type at the bottom (the composer); generated pictures and
videos appear above as inline bubbles. Scroll up to see older turns.
When you're in companion chat, the gallery heading becomes a
"💬 Chat with {model}" header and a side panel appears on
the left with the model's avatar (letter-fallback if no image),
name, @nickname, message count, and a
← Back to studio button at the bottom.
Bottom strip (your model gallery) — one card per
model you've created. Each card shows the model's latest picture,
name, and asset count (which matches the actual gallery thumbnails).
Hover a card to see a small footer with
💬 Chat and a ✕ delete button.
Hover the little ? icons next
to buttons if you're not sure what they do — a small message pops up
explaining the button. (See the About tooltips
section below for the full tour.)
About the ? tooltips
Throughout the studio you'll see small ? icons
next to buttons and labels. Hover (or tap) one to see a one-line
description of what that control does. They're contextual, so the
tooltip for + New Model explains what that
button does; the tooltip for the credits chip explains what credits
are; etc.
What you'll find tooltips on
Header buttons — New Model, Chat, the 🎬 render
chip, credits, Help, sign out, Your creations ↓.
Composer — the Copy / Clear buttons and the
Refine prompt (Send) button.
Welcome / onboarding — the Send button on the
onboarding textarea.
Chat side panel — the ← Back
to studio button.
Modal close buttons — every ✕ in the history,
save, saved, model-gallery, lightbox, and "video ready" modals.
Save / save-confirm / cancel buttons in the
save-chat modal.
Login form — the brand title, username field,
password field, and the Sign-in button.
Buttons that use a native hover tooltip instead
On the gallery thumbnail and lightbox, the small action buttons
(Animate, Custom Animate, Delete) show their tip as the browser's
native tooltip when you hover them. Same information, slightly
different style — same one-line description of what they do.
Keyboard:Tab moves focus to
the next tooltip, Space or
Enter opens it, Esc
closes it. The popover re-positions on window resize so it never runs
off-screen.
Onboarding (your first visit)
First time you sign in, the studio greets you with a single text box.
No multi-step questionnaire — just describe the character you want and the
AI fills in the rest.
1
Describe your character. Write a sentence that includes
whatever you care about — name, sex, body type, hair, eyes, ethnicity,
skin, age, vibe, setting. The AI extracts as much as it can from one
message.
Example: "A female model named Nova, athletic, long jet-black hair,
emerald eyes, East Asian, at a sunlit beach."
2
Hit Send. The AI reads your message and either asks one
follow-up question for something it couldn't guess, OR — if you gave it
everything — shows you a polished plan card with a
Generate it now button.
3
Generate it now. The studio fires the image model
with the model's profile prepended to your scene description. Your
first picture lands in the chat and in your new model's gallery.
Name conflicts: if the name you typed already exists in
your studio (e.g. "Luna"), the AI shows you four name suggestions
("Luna 2", "Luna V2", etc.). Click one to bind to the existing model
instead of creating a duplicate.
Active model — generate scenes
Once you've created at least one model, the studio shows a normal
composer at the bottom of the chat. Whatever you type here becomes a
scene for your active model — the most recently used
character.
1
Type a scene. The placeholder reads
"Describe a scene for {name}…". Be specific.
Example: "Luna at the beach at sunset, wind in her hair, golden
hour lighting".
2
Hit Send (or Enter). The AI rewrites your prompt with
Luna's profile baked in and shows you a plan card with the polished
prompt + a single Generate button. This step
doesn't cost credits — it's just a rewrite.
3
Click Generate. A pending bubble appears with
"🖼️ Generating image… feel free to go chat with models and start
another generation while this one finishes…" (or
"🎬 Rendering video…" if it's a video). The result lands in
the chat when ready and in the model's gallery.
Video mode is automatic. If your prompt mentions motion
(video, movie, animation, cinematic video, short film, etc.),
the planner picks the video model automatically and your scene renders
as a video instead of an image. Same Generate button, same composer.
Refining the plan: the plan card has a
Refine prompt button — type "make it night" or
"add a red dress" and click Refine to rewrite the plan with that tweak.
Animate: ▶ Simple (1-click)
Already have a picture you love? Turn it into a video in one click.
1
Hover any picture in your gallery. A small footer
appears with two buttons:
▶ Animate and ✨ Custom
Animate.
2
Click ▶ Animate. The studio fires the image-to-video
model immediately with a generic cinematic motion prompt
("subtle natural motion, cinematic camera movement").
3
Walk away. A pending bubble appears in the chat with
"🎬 Rendering video… feel free to go chat with models and
generate images while this renders…". The header
🎬 1 chip appears and pulses orange.
You can keep using the studio — chat with your
models, generate more pictures, navigate around. The video finishes
on its own and the result lands in the gallery.
Costs ~85 credits and takes about 90 seconds. The
chip stays visible the whole time so you always know something's
rendering.
Animate: ✨ Custom (describe the motion)
Same flow as ▶ Simple, but you describe the exact motion you want.
Best when you want a specific camera move or mood.
1
Hover the picture, click ✨ Custom Animate. The
studio navigates to a new page with an "animate welcome"
bubble:
"Hey {your name} ✨. Ready to animate Asset #57 of Luna. What kind
of motion do you want?…"
Three starter prompts are suggested (chosen to fit your model's
gender — male characters get "he/his" pronouns, female characters
get "she/her"). You can click one to use it as-is, or write your own.
2
Type the motion in the composer (placeholder:
"Describe the motion you want — slow zoom, walking forward,
camera orbits…"). Hit Send.
3
Plan card appears with your polished motion prompt
+ a Generate button. Click Generate.
4
Walk away. Same as Simple Animate — pending bubble,
pulsing header chip, free to use the studio while it renders.
Good motion prompts include: what the subject does
(walks, turns, smiles), where they look, how the camera moves (slow
zoom in, orbits from behind, low angle), and the mood (cinematic, soft,
dramatic). Three sentences is plenty.
If the animate can't find your image (it was deleted,
or belongs to a different account), you'll see a yellow
"⚠️ Couldn't load that asset" bubble instead. Pick a different
image from your gallery below.
Render queue indicator (the 🎬 chip)
A small chip between the Chat button and your credit balance shows
when something is rendering in the background:
Hidden when idle. Nothing rendering → no chip.
Pulses orange while rendering.🎬 1 (or more) with a spinning icon. This
means a video is in flight — go do something else.
Flips green "ready" for 6 seconds when a render
finishes, then auto-hides.
Click the chip to scroll to the latest pending bubble
in the chat — useful if you scrolled away and want to check progress.
The bubble briefly flashes orange so you can spot it.
It survives help.php navigation. Click
? Help, read this page, click Back to studio —
the chip is still pulsing with the same count. (It's stored in
sessionStorage so any other tab navigation within the same session
preserves it.)
It survives a page refresh (Cmd-R). Within 10 minutes.
After 10 minutes the entry is dropped silently — the upstream fetch was
almost certainly aborted when you navigated away, so a stale indicator
would be misleading.
"▶ Click to watch" overlay (inline videos)
When a video lands in the chat (either from a generation or a chat
reply), it appears as an inline bubble. To make sure you can always see
the video regardless of inline player quirks, every inline video has a
centered ▶ Click to watch button on top of it.
Click the button → opens the video full-size in the lightbox with
autoplay. The lightbox also has its own controls, and you can close it
with ✕, the dark backdrop, or
Escape.
If the inline video looks broken (black box, won't
play, codec error), click the centered "▶ Click to watch" button
instead. The lightbox is more robust than the inline player.
"Your video is ready" pop-up
When you're in companion chat with a model and a video
you started earlier finishes rendering, the studio shows you a pop-up so
you don't miss it:
The pop-up has the video thumbnail with sound off.
Watch ▶ opens the video in the lightbox.
Dismiss, the ✕,
or clicking the dark backdrop closes it.
The pop-up only fires when you're in chat mode. In
studio mode, the result card lands in front of you anyway, so a pop-up
would be redundant.
Your gallery (model cards + per-model gallery)
The bottom strip of the studio shows one card per model
you've created. Each card shows the model's name, the most recent
picture, and the asset count.
Click the thumbnail — opens that model's full
gallery in a modal with every image and video you've generated for
them, newest first.
Click any asset in the gallery modal — opens it in
the lightbox (image full-size, or video playing).
Hover any image in the gallery strip or modal —
reveals ▶ Animate and
✨ Custom Animate buttons in the footer, plus
a 💬 Chat button to open the companion chat
with that model.
✕ button in the top-right of a model card — deletes
the model + every image and video they generated. There's a
confirmation dialog.
Models are separate. Luna's gallery only shows things
generated for Luna. Switch models by clicking their card in the strip
— the composer re-binds so new generations land in that model's gallery.
Companion chat
Each model has a companion chat — you talk to them, and
they reply in character. The chat remembers your last 10
turns (and uses full-text search across your whole history with them).
Entering chat
Click 💬 Chat in the top bar (your active
model only).
OR click the 💬 Chat button on a model card
in the gallery strip.
The studio swaps into chat mode. Two new things appear:
A chat header at the top of the gallery area
that reads "💬 Chat with {model name}". This is the
main "you are here" indicator while you're chatting.
A side panel on the left showing the model's
profile: avatar (a letter-fallback circle if no reference image
is set yet), the model's name, their @nickname
if one is set, and the running message count. The
← Back to studio button sits at the
bottom of this panel.
The composer placeholder switches to "Message {name}… say 'send me a
pic' for a selfie, or 'make a video of you at X' for motion."
What the persona can do
The persona reads every message and decides what to do. Three intents —
picked automatically based on whether a phone camera could capture the
shot on its own:
Chat reply — they just answer. Standard conversation.
Also used when the user asks "do you have a pic of X?" and
X is something a phone camera could reach — the persona replies
conversationally, then offers to send one (which becomes a photo
intent) or point you to Studio (redirect intent).
Selfie (photo intent) — anything a real model could
pull off handheld with no crew, no props, no second person, no
special equipment. Fires the generation directly from the chat
endpoint — you see the image/video inline in the chat bubble plus it
lands in the model's gallery. The persona writes the image/video
prompt in third person (using the model's distinguishing features
so the result actually looks like the model).
Examples that count as selfie-able:
Anywhere a phone camera can reach: bike pic, hiking pic, at the
cafe, cooking, working out, walking the dog.
Body / outfit / location: cleavage, butt in jeans, gym selfie,
poolside, beach, rooftop.
Solo nudity is on the table — naked selfies, nude in bed, nude
by the window. That's still a phone shot.
Image vs video is auto-detected from the action
description + your message. If the action or your prompt contains
words like video, clip, movie, film, animation, animate,
moving, motion, cinematic, dancing, walking, talking, short film
the persona weaves motion into the action and the chat endpoint
fires the video generator (Seedance) instead of the image
generator (Qwen). Otherwise it fires the image generator and you get
a still selfie. So "send me a pic at the beach" → image,
"make a video of you walking on the beach" → video. Both
appear inline in the chat (videos get the
▶ Click to watch overlay) and both land in
the model's gallery.
Open in Studio (redirect intent) — for prompts
that need more than a phone camera can capture. The persona replies
with a short invitation ("that's a studio one", "outside my phone
range", "knock it out and come show me") AND a
🪄 Open in Studio button. Clicking the button
navigates you to the studio composer with the polished prompt
pre-filled + the model's profile loaded. This is the only
path that goes through the Studio composer — selfies and
videos in chat fire directly, they do NOT route to the composer.
Triggers a redirect (anything the persona classifies as needing a
director, crew, or second person):
Another person / second actor: "you and a Ferrari",
"you with [celebrity]", "you and me", "you having sex with
someone".
Props / toys: "with a toy", "using [prop]".
Sexual activity beyond solo nudity: masturbation, fingering,
oral, with a partner, group.
Staged fantasy / director's brief: "fighting a dragon",
"on Mars in a spacesuit", "on the moon", "riding a unicorn",
"doing a handstand on a motorcycle", "in a kung fu uniform
mid-fight".
Locations a phone camera can't reach unaided: "in space",
"underwater cave", "top of the Eiffel Tower mid-storm",
"on a moving rollercoaster".
The rule baked into the persona prompt is: would a real model
pose for this from her phone, or is this a director's brief?
Phone-selfie → photo. Needs more → redirect.
Persona style
Per-sex persona style. The studio keeps male and female
personas visually and tonally distinct. Female personas avoid
😘💋😏💕 (even if you ask). Both genders stick to the model's name in
replies. You'll notice the difference after a few exchanges.
Going back to studio
Click ← Back to studio at the bottom of the
side panel (or ← back to gallery in the chat header help text).
Both do a full page reload to the studio — your model is preserved and
the chat history is saved on the server.
Glossary
Model
A character you've created in the
studio. Each model has a profile (sex, body, hair, eyes, ethnicity,
skin, age) and their own gallery of generated images and videos.
Active model
The model your next scene prompt
will be applied to. The composer placeholder reads
"Describe a scene for {name}…". Switch active model by
clicking a different card in the gallery strip below the chat.
Scene
A description of what your model is
doing in a picture or video. Used as the input to the planner.
Plan card
The assistant bubble that appears
after you submit a scene. Shows the polished prompt + the model
settings that will be used (e.g. "Seedance 2.0 Fast · 16:9 ·
720p · 5s · ~72 credits") plus a
Generate and Refine
prompt button.
Asset
A single generated image or video
— what the studio saves to its database + downloads to its local
folder so it survives upstream CDN URL rotation.
Pending bubble
The assistant bubble that appears
immediately after you click Generate. Says "🎬 Rendering video… feel
free to go chat with models and generate images while this renders…"
for video, or "🖼️ Generating image… feel free to go chat…"
for image. Swaps for the result card when the upstream call resolves.
Render queue chip
The pulsing orange
🎬 N chip in the top bar that counts
in-flight video renders. Click it to jump to the latest pending
bubble in the chat. Flips green "ready!" briefly when a video
finishes while you're elsewhere.
Compliance gate
The safety check every prompt
goes through before reaching the upstream image/video APIs. The
upstream returns {status: "Success", result: "<text>"}
— the result field carries the actual decision
("ok" = approved, anything else = rejected with that text
as the reason). If rejected you'll see a red
compliance-refusal bubble with the upstream's reason
quoted verbatim — rephrase your prompt and try again. (Pre-v97 this
gate was a silent no-op because the endpoint URL was malformed;
that bug is fixed.)
Persona
The AI character that responds to
you in companion chat. Each persona reads the model's profile, has
a personality, remembers the conversation, and self-classifies every
message into one of three intents:
chat (just answer),
photo (fire a selfie / video directly — see below), or
redirect (send the user to the studio composer with a
🪄 Open in Studio button when the ask is beyond a phone selfie).
Selfie / photo
What the persona generates when
you ask for something a phone camera could capture — at the beach,
gym selfie, mirror selfie, etc. The persona writes a third-person
description of the scene and the chat endpoint fires the image-gen
(or video-gen) API directly — it does NOT route
through the studio composer. The result lands inline in the chat
and in the model's gallery. Image vs video is auto-detected from
the action description + your prompt keywords
(video/clip/movie/film/animation/animate/moving/motion/
cinematic/dancing/walking/talking/short film) — video keywords
fire Seedance, everything else fires Qwen image.
Open in Studio
A 🪄 Open in
Studio button the persona replies with when your request is
beyond a selfie (needs a Ferrari, a dragon, another person, etc.).
Clicking it navigates you to the studio with your prompt pre-filled
and the model's profile loaded — the planner polishes it, then
Generate fires the right upstream.
This is the only path that goes through the studio
composer — selfies and videos in chat fire directly from
model-chat.php, they never touch the composer.
Credits
Your balance for generations.
Images cost 12 credits (Qwen Image 3.0 Pro, 2K,
1:1) and videos cost 85 credits (Seedance 2.0 Fast,
720p, 16:9, 5s). Your chip in the top bar refreshes after every
generation. Out of credits? Chat, gallery browsing, and history
still work — only generation stops.
Seedance / Qwen
The upstream models behind the
generations. Seedance 2.0 Fast is the video
model; Qwen Image 3.0 Pro is the image model.
The plan card shows which one + the cost in credits.
Lightbox
The full-size viewer that opens
when you click any image or video. Has the model's name, asset
kind, resolution, aspect ratio, and credit cost. Close with ✕,
the dark backdrop, or Esc.
sessionStorage
Where the studio stashes
short-term session data (your active model + any in-flight video
jobs). Survives F5 reload and navigation
to Help / back. Cleared when you close the tab or sign out.
Video-ready modal
The small pop-up
"🎬 Your video is ready" that fires when a video you
started finishes rendering while you're in companion
chat. Shows a muted thumbnail of the video + a Watch
button that opens the lightbox. Does not fire in studio
mode — the result card is already in front of you there, so a pop-up
would be redundant.
Admin login
A separate sign-in flow for users
with the admin role. The URL is
/login.php?admin=1 (or
/admin.php — it redirects there automatically). The
page shows InkedStudio2 ADMIN branding with a small red
ADMIN pill. If you're signed in as a regular user and try to
reach /admin.php, the server redirects you back to
the admin login with a clear "you need an admin-role
account" message instead of showing the raw 403 Forbidden
page.
Animate (▶ Simple / ✨ Custom)
Two ways to turn a still image
into a video. Hover a gallery thumbnail to see both buttons:
▶ Simple Animate fires the image-to-video call
immediately with a generic cinematic motion prompt (no
conversation, ~90s, ~85 credits).
✨ Custom Animate navigates you to the studio
with the picked image as the source; you describe the motion you
want, the planner polishes it, Generate fires the image-to-video
call using your exact source image. Custom Animate
always produces a video, regardless of what the planner
classifies — this is enforced in the studio code so a prompt
like "hulk smash" doesn't silently route through the
image endpoint.
Troubleshooting
"Invalid credentials" when I sign in
Username or password is wrong. Usernames are lowercase, no spaces. If
you're sure they're right, ask your demo owner to reset it.
Help page says "Not signed in" even though I am
Fixed. The Help page used to always render the "Not signed in" branch
because it didn't load bootstrap.php (so
current_user() was undefined and the
function_exists() check returned false). It now loads
bootstrap.php and the status pill correctly shows
Signed in as <username> · ← Back to studio.
I get "Forbidden — admin role required" when I try /admin.php
Fixed. The old behaviour was a raw 403 page with no way out. The new
flow: require_admin() redirects you back to the login
page with ?admin=1¬admin=1&as=<your-username>
so you see InkedStudio2 ADMIN branding + a clear
"You're signed in as a regular user. To reach the admin area
you need to sign in with an account that has the admin role
(typically inabon)." message + your current username pre-filled.
Sign in as inabon (or whichever admin account you have)
and you'll land on the admin panel.
Sign out sent me to the wrong login page
By design, but explainer:
Sign out from the studio → regular login
(/login.php), no ADMIN badge.
Sign out from the admin panel → admin-branded
login (/login.php?admin=1) so the next admin doesn't
have to navigate back to /admin.php to trigger the
admin branding.
If you're stuck on the wrong page, just type the URL you want
directly — both pages accept any valid username + password.
Custom Animate drops me back to the studio welcome bubble instead
of asking what motion I want
Fixed. If the asset you tried to animate is gone (deleted, belongs to
another user, network blip), the URL navigation now sends you to
?animate_failed=N&reason=... and the studio renders a
dedicated "⚠️ Couldn't load that asset" bubble pointing you
at the gallery below. Pick a different still image and try again.
Lightbox / gallery / modal doesn't open when I click
Try Ctrl+Shift+
R to force-reload — a botched module load
can leave the click handlers unwired. If that doesn't help, check
the browser console (F12 → Console) for errors and paste them to
your demo owner.
Studio looks blank / buttons don't respond
Hit Ctrl+Shift+R
(or Cmd+Shift+R
on a Mac) to force-reload. Your browser cached an old version of the
studio module.
The render-queue chip disappeared after I navigated to Help
Shouldn't happen — the chip state is persisted in sessionStorage and
survives Help-page navigation, manual refresh, and tab switches within
the session. If it does disappear, your render is probably older than
10 minutes and was dropped as stale. The upstream fetch was almost
certainly aborted when you navigated away.
Inline video is black / won't play
Click the centered ▶ Click to watch button on
top of the video. That opens the video in the lightbox, which is more
robust than the inline player.
I clicked Custom Animate and it generated an image instead of a video
Fixed in v97. The studio now forces video mode for any Custom Animate
flow, even if the prompt planner defaulted to image. The plan card
correctly shows "Seedance 2.0 Fast · 16:9 · 720p · 5s · 85
credits". If you still see "Qwen Image" on the plan card,
hard-reload — the previous tab may be using a cached version.
Animate failed with "Couldn't load that asset"
The image you tried to animate is no longer available — it may have
been deleted, or the link was broken. Pick a different still image
from the gallery strip below and click
✨ Custom Animate on that one.
Animation stuck / no progress after 90 seconds
The upstream has a ~90s timeout. If the chip is still pulsing after 2
minutes, the render likely failed silently. Refresh the page — the
pending job will be cleared if it's older than 10 minutes.
Compliance refusal (red bubble)
The upstream safety service rejected your prompt. The bubble shows the
exact reason the upstream gave (e.g. "This prompt contains illegal,
violent, or harmful content…"). Try rephrasing — most refusals are
for prompts the upstream flags as provocative. The studio doesn't add
its own refusals; whatever you see came from upstream.
Pre-v97 bug: the compliance gate URL was malformed
(${API_ROOT_V1}/compliance/check — a literal JS template
string PHP didn't expand), so every prompt sailed through and the
upstream image/video APIs were the only thing standing between
blocked prompts and the user. That's fixed now — if a prompt that
used to "work" suddenly gets a compliance refusal, the upstream
itself is rejecting it, not the studio.
The model-card image count doesn't match the thumbnails
Fixed in v97 — the count under each model card now counts the actual
assets (images + videos) in that model's gallery. If you ever see it
disagree again, hit Ctrl+Shift+
R to force-reload — your browser may be on an
older cached module.
Compose doesn't fire — the button stays disabled
The Send button disables while the planner / an upstream call is in
flight. Wait a couple seconds — if it stays disabled after the loading
bubble disappears, hit F5. A previous botched
round-trip can leave the studio in a busy state until the page reloads.
My persona keeps replying with "Open in Studio" instead of a selfie
The persona routes to Studio when your ask is beyond a phone-selfie —
needs a Ferrari, on Mars, fighting a dragon, with a celebrity, etc.
Try a more selfie-able prompt ("at the beach", "at the gym", "in a
red dress") and the persona will send a photo directly.
The persona uses the wrong emoji
Shouldn't happen — male personas never use 😘 💋 😏 💕 (those read as
feminine-coded flirt emojis). If you spot one, hit
F5 and try again.
"No credits" or generation refused
You're out of credits. Ask your demo owner to top up. Everything else
(chat, gallery, history) still works.
Tooltips don't appear
If the ? tooltips don't show, your browser
may be blocking JavaScript or you've got an extension hiding them.
Try in a private/incognito window with no extensions. On the
gallery strip, the action buttons (Animate, Custom Animate, Delete)
use the browser's native tooltip instead — same info, slightly
different style.
Still stuck?
Ask your demo owner. They're the only one with admin access to fix
server-side problems.