Skip to content

Staging → Main: HTML Challenge UX polish + retry/repair + history#44

Merged
cryptopoly merged 10 commits into
mainfrom
staging
May 9, 2026
Merged

Staging → Main: HTML Challenge UX polish + retry/repair + history#44
cryptopoly merged 10 commits into
mainfrom
staging

Conversation

@cryptopoly
Copy link
Copy Markdown
Owner

Summary

Promotes the HTML Challenge feature work from staging to main.

Notable commits since last main merge:

  • Polish HTML Challenge UX, add UI scale, harden previews (HTML Challenge UX polish, UI scale, preview hardening #43) — flexible iframe shell, in-iframe storage shim + zoom-to-fit, UI scale, slot card consolidation, per-slot Change Model with auto-retry, soft-delete to .trash/, deduplicated setup actions row.
  • Improve HTML challenge and gallery flows — ongoing UX polish.
  • Improve chat drafts and HTML challenge controls.
  • Ability to retry failed generation — Continue / Repair / Retry actions per slot.
  • Polish HTML challenge history view — searchable previous-challenges combobox.
  • Add HTML challenge comparisons — initial feature landing.
  • Stop tracking auto-gen Tauri schemassrc-tauri/gen/schemas/*.json removed from index; gitignore already covers them.
  • Bump version to 0.7.6.

Test plan

  • npx tsc --noEmit
  • npm test
  • pytest tests/test_backend_service.py
  • Smoke: run a 2-slot and 4-slot challenge end-to-end, verify previews fit, Change Model auto-retries, deletes land in .trash/.
  • Verify Tauri build still produces src-tauri/gen/schemas/*.json locally without git noise.

🤖 Generated with Claude Code

cryptopoly added 10 commits May 5, 2026 19:53
Frontend
- Drop fixed 1280x720 preview stage; iframe fills frame-shell directly so
  pages reflow at the actual rendered viewport like a resized browser.
- Inject in-iframe scripts: localStorage/sessionStorage shim (so sandboxed
  pages that read storage on init don't abort), CSS reset with
  zero-specificity :where() rules, scrollbar styling, body/html bg
  detector that posts the computed colour back so the frame shell can
  match the page theme, and a content-bounds zoom-to-fit helper for
  pages with overflow:hidden bodies and oversized canvases.
- Add UI scale (85/90/95/100%) via CSS `zoom` on `.app-shell`, with
  matching layout-box oversize so the app keeps filling the viewport at
  scale<1 and a `zoom: 1/scale` cancellation on the preview shell so
  iframes stay pixel-aligned.
- Slot card: name + meta badges share a single row with ellipsis on long
  names, Thinking becomes a select that lives in the same row as Temp /
  Seed / Randomize, all controls share a 110x32 footprint.
- Stream pane: fixed-height clamp(280px, 38vh, 520px) so streaming
  output scrolls inside its own box; auto-scrolls when at tail.
- Setup panel: dropped duplicate "HTML Challenge" header + folder-path
  subtitle, moved Run / Cancel / Use Prompt and New Challenge + history
  search into a single top action row, search input wider.
- History dropdown: per-row trash icon (fades in on hover) replaces
  standalone Delete button. Confirms via window.confirm.
- Per-slot Change Model button on every manifested slot. Confirming the
  picker auto-retries the slot with an explicit override payload so
  manifest filename + metadata + rendered HTML stay consistent.
- Random seed per slot (`int32` range), Randomize button on each card.

Backend
- Apply `mx.random.seed` before DFLASH/DDTree branches so seeds aren't
  silently dropped under speculative decoding.
- Soft-delete challenges into a sibling `.trash/` directory instead of
  `shutil.rmtree`; restorable from disk, no third-party trash dep.
- After a slot rerun, unlink the previous filename when the new model
  slug differs (path-traversal guarded) so folders don't accumulate
  orphan HTML files keyed to old model names.

Tests
- Updated `test_html_challenge_accepts_per_model_thinking_settings` for
  the slimmed payload (kept `seed`, dropped `topP` / `diversityStyle` /
  `diversityMode` which were UI-only and removed).
HTML Challenge UX polish, UI scale, preview hardening
@cryptopoly cryptopoly merged commit d4f98f4 into main May 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant