Commit Graph
14337 Commits
Author SHA1 Message Date
Brandon Thomas d64944b1c3 artcraft 0.26 -> 0.27 (#1346) artcraft-v0.27.0 2026-04-12 03:10:01 -04:00
Brandon Thomas 03edd5faf6 tauri cors fix (#1344) 2026-04-12 03:03:07 -04:00
Brandon Thomas 0ef57ff97e fal webhook error handling (#1343)
extractors for fal webhook data with tests
2026-04-12 02:04:22 -04:00
Brandon Thomas adda7483e8 fix billing pages (#1342) 2026-04-11 19:45:58 -04:00
Tanish Manku e77b946d57 fix brief No items yet flash after username fetch resolves (#1336)
setInitialLoading(true) and setUsername(name) are batched together so
React never produces a frame where username is set but initialLoading is
still false, which would fall through to the No items yet branch before
refreshGallery has a chance to set initialLoading(true) itself.
2026-04-10 08:11:59 -07:00
Brandon Thomas 3a6fad1812 bump artcraft 0.25 -> 0.26 (#1335) 2026-04-10 10:45:31 -04:00
Brandon Thomas 9e04990224 character tokens in omni api (#1333) 2026-04-10 10:25:31 -04:00
Brandon Thomas 885b68630a bump artcraft 0.24 -> 0.25 (#1332) 2026-04-10 10:15:04 -04:00
Brandon Thomas 9fee0b1c99 rename omni image params before widespread use (#1331) 2026-04-10 09:08:31 -04:00
Brandon Thomas 631b98f605 omni video handling + tests for seedream 1.5 (rest to follow) (#1330)
adjusts handling, and begins to add unit tests to ensure this works
2026-04-10 09:04:26 -04:00
Brandon Thomas 3334cf7b81 omni image tests (#1329)
This is a substantial number of tests to ensure we don't screw up parameters when migrating over to "omni image generation" from the distinct one-off, model-by-model endpoints.
2026-04-10 01:18:40 -04:00
Tanish Manku 50d8abcfb1 Fix gallery showing blank when session fetch fails or is slow (#1328)
- Remove useless forceFilterRef and its stale useEffect; use forceFilter
prop directly in JSX
- Show skeleton immediately while username is being fetched (!username
condition) instead of flashing "No items yet"
- Track username fetch failure with usernameError state and surface an
error message with a working Retry button
- Fix retry: setUsername("") was a no-op (same value → React bails out);
use usernameRetryCount in deps to actually re-trigger the fetch
- Guard error UI with allItems.length === 0 so stale items stay visible
if a retry fails mid-session
2026-04-09 19:11:02 -07:00
Tanish Mankuandbflatastic bce8d166e0 Feature: Multifile upload (#1294)
Notable behavior:

- Mixing supported and/or unsupported file types will only keep files of
file type that match the first supported file type in the list received
from browser (e.g. PNG, OBJ, EXE, JPG, OBJ order selection of files will
only show PNG, JPG for image upload)
- Removing files until only one is left will result in the sidebar
vanishing and only a single preview showing. More files can be added by
selecting multiple files again through the file selection button
- Failure to upload has been handled but not tested. It is expected any
failed uploads could be retried with a "retry failed" button. Any
individual fail can also be retried via a retry button upon hovering on
the exclamation mark by the failed file's name
- All multi-file uploads are queued async and likely wouldn't be ordered
as shown in the preview list (first-come-first-serve)
- Potentially deadlocks if a task never responds. Likely handled by
backend timeouts. This deadlock state is only partial and not lossy as
successfully uploaded files will appear in gallery even if the task is
cancelled. Cancellation can be attempted at any point during the upload.
Uploads shown in progress may be successful after cancellation depending
on the internal upload progress.
- TopBar upload images button now opens the image modal instead for
consistency and same-component use.

---------

Co-authored-by: bflatastic <bombayapirat@gmail.com>
2026-04-09 09:07:21 -07:00
frankywashereandClaude Opus 4.6 5fc27a5153 Fix blank screen crash and text selection loss in video prompt box (#1315)
## Summary
- **Fix blank screen crash** during video recreate flow: typing text,
adjusting time slider, typing again, then clicking the text box caused
an uncaught DOM exception in MentionTextarea's contentEditable caret
operations, which unmounted the entire React tree (no error boundaries
existed)
- **Fix text selection disappearing** on mouse release in
MentionTextarea: click handler and sync useEffect were destroying active
selections by rewriting innerHTML and restoring only a collapsed caret
- **Add React Error Boundary** around PromptBoxVideo as a safety net

## Changes
### MentionTextarea.tsx
- Wrap `getCaretOffset`, `setCaretOffset`, `scrollCaretIntoView`,
`handleInput`, sync `useEffect`, and `getOffsetRect` in try/catch to
prevent uncaught DOMExceptions
- Add null guard for `childNodes` iteration and `parentNode` access
- Skip `detectMention` in `handleClick` when user has active text
selection
- Skip innerHTML rewrite in sync useEffect when editor has selected text

### PromptBoxVideo.tsx
- Stabilize `characterNames` with `useMemo` to prevent `mentionColorMap`
from rebuilding every render
- Move empty characters array to module-level constant for stable
reference
- Add cleanup `useEffect` for `durationTimerRef` to prevent stale timer
after unmount

### New: PromptBoxErrorBoundary.tsx
- React Error Boundary with "Try again" recovery button

### ImageToVideo.tsx
- Wrap `<PromptBoxVideo>` with `<PromptBoxErrorBoundary>`

## Reproduction steps (original bug)
1. Click "Recreate" on a video
2. Type text into the prompt box
3. Adjust the time slider
4. Type text again
5. Adjust the time slider and click the text box → **UI goes blank**

## Test plan
- [x] Reproduced blank screen bug on Mac before fix
- [x] Verified fix: repeated recreation flow no longer causes blank
screen
- [x] Verified text selection persists after mouse release
- [x] Video generation with @mentions, reference images, and duration
changes works correctly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:03:59 -07:00
Tanish Manku 51e5db6b12 Text2Image carousel: cross-set navigation at arrow key boundaries (#1322)
Instead of looping within the image set, pressing Right on the last
image advances to the next set and Left on the first image goes to the
previous set, consistent with Up/Down behavior.
2026-04-08 23:46:19 -07:00
Brandon Thomas ff1ce82f66 transcode quicktime (#1318) 2026-04-08 10:27:14 -04:00
bflatastic ccea741443 fix safari mobile api calls/login not working since its third party 2026-04-08 14:45:29 +07:00
Brandon Thomas 2b9882d2d7 fix tests 2026-04-08 00:03:47 -04:00
bflatastic 55cab30dec comment out web generation access for now 2026-04-08 10:06:22 +07:00
Brandon Thomas a2f204b1be additional context for pages (#1317) 2026-04-07 19:07:49 -04:00
Brandon Thomas 12e4ff7a29 Omni Gen Video Models (#1316) 2026-04-07 17:05:52 -04:00
Brandon Thomas 8b73569238 omni image models (#1314) 2026-04-07 03:38:23 -04:00
Brandon Thomas badabe57eb fix inference-job 2026-04-07 00:49:18 -04:00
Brandon Thomas 2e62eef85b Bt cleanup web (#1313) 2026-04-07 00:43:21 -04:00
Brandon Thomas fd9f002615 avt cleanup (fix paging) (#1312) 2026-04-07 00:29:18 -04:00
Brandon Thomas a0e50067bb stop the session and session jobs alert pages by fixing error handling (#1310)
- was still getting dozens of pages from these two endpoints
- fixed the error chain so this is semantically correct
- improved code quality of legacy code/endpoints
2026-04-06 20:56:28 -04:00
Brandon Thomas 2b97694ebf omni gen for a few image models (#1308) 2026-04-06 04:10:14 -04:00
Brandon Thomas 0f6998cb6b bump artcraft 0.23 -> 0.24 (#1307) artcraft-v0.24.0 2026-04-05 17:57:42 -04:00
Brandon Thomas 8076d1b830 fix builds (#1306) 2026-04-05 02:55:08 -04:00
Brandon Thomas 9842734ce7 more cleanup of deprecated or orphaned code (#1305) 2026-04-05 02:35:55 -04:00
Brandon Thomas 72761e11f3 delete public enums crate - old tech debt / cruft (#1304)
Ages ago I tried to hide what we were doing from "Uberduck". That was
stupid. As if it mattered.

Never again.
2026-04-04 23:04:32 -04:00
bflatastic 60c97ff312 characters modal bug overflowing on very small screens 2026-04-05 06:40:55 +07:00
BFlat 03ed457cb5 remove character limits on seedance 2 and nano banana models (#1303) 2026-04-05 06:24:30 +07:00
Brandon Thomas e89229896f character descriptions max length (#1302) 2026-04-04 16:50:44 -04:00
Brandon Thomas 56c1b57cce bump website version to 0.23 2026-04-03 19:16:02 -04:00
bflatastic 122c1d6688 mention text area small styling fix 2026-04-04 05:40:52 +07:00
Brandon Thomas 6768208af3 bump artcraft 0.22 -> 0.23 artcraft-v0.23.0 2026-04-03 18:31:21 -04:00
Brandon Thomas 99b5a9774a Frontend failure text updates (#1300) 2026-04-03 18:20:06 -04:00
BFlat f55a4c722e mentions text area (#1299)
- content editable div instead of textarea when mentions is needed
- no more overlayed text areas and misaligned cursors
2026-04-04 05:16:14 +07:00
Tanish Manku f337d630e3 Fix: Allow asset.localhost in CSP for Windows drag-drop (#1298)
On Windows production builds, convertFileSrc() generates
https://asset.localhost/... URLs. The connect-src CSP only had "asset:"
(covering asset:// on macOS/Linux) but not https://asset.localhost,
causing the fetch() in GlobalFileDropHandler to be silently blocked —
overlay appeared but no modal opened on drop.
2026-04-03 14:46:32 -07:00
Brandon Thomas b4e1e3ea57 marketing tracking (#1297) 2026-04-03 15:06:38 -04:00
bflatastic 71fd694368 maybe_landing_url signup params 2026-04-03 23:51:11 +07:00
bflatastic f2c386dcb9 Merge branch 'main' of https://github.com/storytold/storyteller-rust 2026-04-03 23:39:36 +07:00
bflatastic ffb8cbe433 landing videos updates 2026-04-03 23:39:09 +07:00
Brandon Thomas 5f062c4512 new optional signup params 2026-04-03 12:37:33 -04:00
Brandon Thomas 2442cda22f bump ArtCraft 0.21 -> 0.22 (#1296) artcraft-v0.22.0 2026-04-03 11:36:17 -04:00
Brandon Thomas 0a534921ce fix mac build 2026-04-03 11:34:46 -04:00
Brandon Thomas 1fecc4405c Bump ArtCraft 0.20 -> 0.21 (#1295) 2026-04-03 11:05:47 -04:00
bflatastic cbca7e3cb4 confirm before deleting character alert dialog 2026-04-03 15:28:40 +07:00
BFlat d107b78498 characters (#1280)
- Create, list, delete characters for use as reference with seedance 2.0
- Characters are mentionable in the prompt box by using the @ sign
2026-04-03 15:19:41 +07:00