Skip to content

merge scenarios to staging - #1

Merged
Bureaucromancer merged 154 commits into
mainfrom
staging
Aug 4, 2026
Merged

merge scenarios to staging#1
Bureaucromancer merged 154 commits into
mainfrom
staging

Conversation

@Bureaucromancer

Copy link
Copy Markdown
Owner

Important

Contributions target staging. Only SpicyMarinara may promote this repository's staging branch or a same-repository hotfix/* branch to main.
Outside and first-time contributors also require an approving review from SpicyMarinara.

Linked issue

Closes #

Why this change

What changed

Validation

  • pnpm check passes locally
  • Container (Docker / Podman) built and ran without issue
  • Ran the app, clicked through the changes manually
  • Checked edge cases (light + dark mode, mobile viewport, empty states, error paths)
  • Above manual verification completed (describe below)
  • Read and followed CONTRIBUTING.md

Manual verification notes

Docs and release impact

  • No docs changes needed
  • Updated docs (README / CONTRIBUTING / android/README / CHANGELOG) as needed
  • Translated docs on the docs-i18n branch updated to match, or a [docs-i18n] follow-up issue opened (see CONTRIBUTING.md § Translated documentation)
  • Version/release files updated (only if this PR includes a version bump)

UI evidence (if applicable)

SpicyMarinara and others added 30 commits August 2, 2026 08:54
…-sweep

Bump v2.4.1 and fix assigned issue sweep
…-clip-layout

fix: stop sidebar and call-setting rows clipping
…itor-preview-lag

Fix theme editor live preview lag
…-group-chat-sprites

Preserve Expression Engine sprites across sparse group-chat rounds
…mage model

Noodle has no LLM refinement pass for images: the timeline model writes
imagePrompt while generating the post, and the image services then
concatenate that draft with the user's Noodle image instructions and hand
the whole string to the image generator. Instruction-style text such as
"Create a social-media-ready character image. Mention build, clothing,
pose..." therefore reached ComfyUI verbatim, with no character context.

Feed imageGenerationPrompt into the timeline feature instructions where
the model actually reads it, and drop userInstructions from the default
noodle.imagePost template. The variable stays registered so existing
custom templates keep resolving it. Both image paths (NoodleR and public
accounts) share the template, so both are fixed.

Users who used the field for raw style tokens should move them to an
image style profile, which compileImagePrompt still appends.
The personality block shipped "Let these traits naturally influence the
subject, image quality, camera habits, mood, and composition" straight to
the image model, along with "Character personality and traits:" and
"Character-specific image instructions:" labels. Nothing re-reads this
string after the template renders, so the framing is dead weight that
competes for CLIP token budget. Pass the bare values.
resolveIllustratorCharacterReferences prefixed its appearance block with
"Character appearance notes:". All three consumers (both Noodle image
services and the selfie runtime) append that block straight to an image
prompt, so the header only ever reached a diffusion model as text to draw.

Also guard imageGenerationPrompt with optional chaining: scripts/ is
outside the pnpm check tsconfig, so partial settings objects in the
regression lane hit it at runtime rather than at compile time.

Pins the reported behavior with regression coverage: settings
instructions must reach the timeline model and must not reach the image
prompt, and the surviving blocks carry no labels or framing.
…ckfile-validation

fix: normalize workspace lockfile line endings
…log claim

Build the image-prompt fixture from resolveIllustratorCharacterReferences
instead of a hand-written string, so the shared block's framing is pinned
here rather than only the Noodle-side template. Verified the new
assertions fail when the 'Character appearance notes:' header is restored.

Changelog now says the default template stops appending userInstructions;
custom templates referencing the variable still append it verbatim.
…pass-llm' into fix/noodle-image-instructions-bypass-llm
kolacheee and others added 19 commits August 3, 2026 16:45
feat(gallery): portable card://self/gallery references for chat images
…d recovery

Creator replies: the duplicate-claim early return ran before every eligibility
and post-access check, so a caller replaying known post/comment IDs from another
persona could read back a stored creator reply it was not entitled to, and an
orphan claim left by a crash blocked its comment past the expiry that was
supposed to release it. Both now run after the checks and the prune.

Deleting a comment left its creator reply and the permanent claim behind, so the
reply was unreachable and the claim kept consuming the rolling allowance.

Reserve: prepared slots elapsed during downtime published backdated and in a
burst; foreground refresh posts did not invalidate near-future slots, so a
creator could post twice within the hour.

Also: remap the new NoodleR tables on profile import, describe the reply ceiling
as installation-wide, cap bulk selection at the schema's own limit, keep created
profiles recoverable when the settings write fails, and stop the publishing and
persona surfaces from rendering cold or failed queries as authoritative empties.

Regressions cover parent-ownership revalidation, orphan expiry, reply/claim
cascade deletion, and elapsed-slot retirement.
…r-sprite-layout

Add per-character sprite layouts and polish roleplay overlays
Follow-up to 2c04eba, where several fixes were partial or aimed at the wrong
code path.

F10 was attached to `deleteStoredInteraction`, which only ever receives
like/repost. Comment deletion runs through `deleteInteractionById`, so that is
where creator-reply claims are now cleaned up — both the claims a deleted
comment owns and the ones pointing at a deleted reply. That path also refused
the whole delete when a subtree contained a NoodleR-authored reply, because its
"known account" set excluded the NoodleR platform.

F8's pruning used `< cutoff` while budget membership uses `> cutoff`, so a claim
landing exactly on the 24-hour boundary was neither counted nor released. F7
retired slots over an hour late but still stamped late publishes with their
planned time; they now carry the moment they actually published. F3 remapped
account IDs but not the linked source ID embedded in a prepared post's policy
fingerprint, so a collision import discarded the restored reserve on its next
reconcile. F11 let reserve-cleanup errors surface after the post was persisted,
inviting a retry that would post twice, and skipped cleanup entirely on the
execution-ID replay path.

F15 reported a failed settings write as "First posts could not be generated"
with no way to retry it; it has its own completion state, copy, and retry now.
F16 still had creator rows asserting "No prepared post" while reserve status was
unavailable. F25 described night quiet, refresh-all outcomes, and the per-creator
Automatic default incorrectly.

Regressions were extended accordingly, including replacing an F10 test that
exercised an unsupported storage command and therefore proved nothing.
- Log reserve-invalidation cleanup failure at warn, not error: it is
  intentionally swallowed because the post already succeeded.
- Assert the orphan claim row exists before releasing it, so the
  regression fails if the release path is never exercised.
- Use Sets for invalid/discarded prepared-post ids instead of repeated
  Array.includes scans in reconcileNoodlerPreparedPosts.
- Apply the ensureNoodlerReserveState NaN fallback in
  claimNoodlerAutomaticAttempt, and hold (rather than skip the hold) when
  preparationNotBefore does not parse.
- Delete the full descendant subtree in deleteInteractionChildren and
  drop creator-reply claims matching either end of the pair, so a reply
  to a creator reply cannot survive its thread or leak its claim.
…overlay

Fix Quick Replies overlay clipping and delete styling
feat(noodler): Slice 8f access model, creator replies, reserve, and guided onboarding,
@Bureaucromancer Bureaucromancer self-assigned this Aug 4, 2026
@Bureaucromancer
Bureaucromancer merged commit d10d846 into main Aug 4, 2026
6 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants