Compare commits

...
Author SHA1 Message Date
Brandon Thomas 1957bd32c7 tools for image gen 2025-10-30 17:09:02 -04:00
Brandon Thomas 9d161aae97 include request id 2025-10-30 16:48:38 -04:00
Brandon Thomas 977ea223cd tool to poll images 2025-10-30 16:38:52 -04:00
Brandon Thomas 25ed1a0cdf video download client 2025-10-30 15:48:07 -04:00
Brandon Thomas b396d95f9a parse video token and url 2025-10-30 15:26:53 -04:00
Brandon Thomas 33d4264db5 cleanup logging 2025-10-30 15:10:31 -04:00
Brandon Thomas 397409c60b debug logging instead of print 2025-10-30 15:00:53 -04:00
Brandon Thomas 9386fbbc86 cleanup 2025-10-30 14:45:10 -04:00
Brandon Thomas 6f16f9f832 cleanup client of dead weight 2025-10-30 14:33:14 -04:00
Brandon Thomas 14bc3f80c8 refactor 2025-10-30 14:27:52 -04:00
Brandon Thomas b7e635bc0b refactor 2025-10-30 14:11:58 -04:00
Brandon Thomas e45f74617c refactor 2025-10-30 13:23:57 -04:00
Brandon Thomas cc9089388f parse email address from index 2025-10-29 04:32:28 -04:00
Brandon Thomas a906bcf1be fetch user id 2025-10-29 04:26:40 -04:00
Brandon Thomas e92bf8c0cb add auto-liking 2025-10-29 03:38:27 -04:00
Brandon Thomas 245f193b4a fix request 2025-10-29 03:01:07 -04:00
Brandon Thomas e15880a078 updated request, not generating video 2025-10-29 02:45:30 -04:00
Brandon Thomas 8cc42de9e1 wip 2025-10-29 02:33:55 -04:00
Brandon Thomas 41cebf6f54 wip 2025-10-29 02:14:20 -04:00
Brandon Thomas 32d7cfb620 refactor 2025-10-29 02:04:45 -04:00
Brandon Thomas 829944068d wip, refactor 2025-10-29 01:30:49 -04:00
Brandon Thomas 03f34755c6 refactor 2025-10-29 01:14:26 -04:00
Brandon Thomas 3d46e8d4b6 refactor 2025-10-29 01:05:42 -04:00
Brandon Thomas 44dce4eb7f reorganize 2025-10-29 00:57:51 -04:00
Brandon Thomas 4d89ce130b wip 2025-10-29 00:48:20 -04:00
Brandon Thomas 6d19931943 refactor, stronger types 2025-10-29 00:37:13 -04:00
Brandon Thomas 1c99dfa48f stronger types 2025-10-29 00:12:03 -04:00
Brandon Thomas ad7f7928f5 cleanup 2025-10-28 22:14:48 -04:00
Brandon Thomas 27b400724c cleanup 2025-10-28 21:44:27 -04:00
Brandon Thomas 28ab25b4d3 extract sentry trace, new recipe for getting all ingredients 2025-10-28 21:40:13 -04:00
Brandon Thomas ab5f6e184b video wip 2025-10-28 20:54:58 -04:00
Brandon Thomas 81a6264154 timestamp is testable 2025-10-28 20:32:00 -04:00
Brandon Thomas d3269d185f working 2025-10-28 20:26:34 -04:00
Brandon Thomas 0eb2f9f79c wip 2025-10-28 20:12:48 -04:00
Brandon Thomas b7739295a8 xs works 2025-10-28 19:13:15 -04:00
Brandon Thomas 9ea6109bdf test cases from python 2025-10-28 19:07:41 -04:00
Brandon Thomas 0096ba5136 sig_to_hex needs tests 2025-10-28 19:03:02 -04:00
Brandon Thomas cd569002c9 wip on sig_to_hex 2025-10-28 18:55:25 -04:00
Brandon Thomas 1d1ab51baa matches 2025-10-28 18:18:57 -04:00
Brandon Thomas 15d5596cdf signature style working with test case 2025-10-28 18:05:58 -04:00
Brandon Thomas 8f044a79e1 helpers 2025-10-28 17:50:00 -04:00
Brandon Thomas 7ddfea4c74 trig 2025-10-28 17:44:19 -04:00
Brandon Thomas 87f3d0c5f2 color 2025-10-28 17:36:22 -04:00
Brandon Thomas ad984c9adf another test case 2025-10-28 17:24:53 -04:00
Brandon Thomas 8541de78bf bezier working, needs more tests 2025-10-28 17:22:31 -04:00
Brandon Thomas 91eac7e940 bezier wip 2025-10-28 17:18:33 -04:00
Brandon Thomas d9770440b9 stylecp matches python 2025-10-28 17:01:33 -04:00
Brandon Thomas c60819e995 test case 2025-10-28 16:54:56 -04:00
Brandon Thomas 2f39ebd192 test 2 2025-10-28 16:53:16 -04:00
Brandon Thomas 7197e4eb23 test cases 2025-10-28 16:51:37 -04:00
Brandon Thomas f63aab5d3f one test case works 2025-10-28 15:39:36 -04:00
Brandon Thomas d71eea3ad3 simulate style wip 2025-10-28 15:12:26 -04:00
Brandon Thomas b85dd82c92 wip 2025-10-28 15:02:33 -04:00
Brandon Thomas 4e001bc89d cleanup 2025-10-28 14:59:01 -04:00
Brandon Thomas e4a748f664 unit test xa 2025-10-28 14:56:25 -04:00
Brandon Thomas 213c1e9283 xa clean 2025-10-28 14:36:35 -04:00
Brandon Thomas 4acdc0f9f6 xs c 2025-10-28 14:18:10 -04:00
Brandon Thomas fb8422ce5f xs idx 2025-10-28 14:09:40 -04:00
Brandon Thomas f294f71fdb algo match so far 2025-10-28 06:23:42 -04:00
Brandon Thomas 722c031a09 refactor / cleanup for legibility 2025-10-28 04:23:52 -04:00
Brandon Thomas 6bac6aaab8 baggage 2025-10-28 04:16:10 -04:00
Brandon Thomas 10428cd182 path and data 2025-10-28 03:37:30 -04:00
Brandon Thomas 4453b1a774 svg paths 2025-10-28 03:17:18 -04:00
Brandon Thomas 59ce976c31 numbers parsing 2025-10-28 02:55:55 -04:00
Brandon Thomas dadf17ebcc rename 2025-10-28 01:18:22 -04:00
Brandon Thomas ad0c2d0cfb actions and xsid 2025-10-28 01:12:55 -04:00
Brandon Thomas bbc3e78378 actions capture works 2025-10-27 20:54:55 -04:00
Brandon Thomas c57cad23df get index page and scripts 2025-10-27 20:09:14 -04:00
Brandon Thomas 68e2c8e67c fix fetching 2025-10-27 19:56:27 -04:00
Brandon Thomas 3e903972b2 script fetching wip 2025-10-27 19:38:32 -04:00
Brandon Thomas 3af8ddd602 parse scripts 2025-10-27 18:40:11 -04:00
Brandon Thomas 29b2acdaf8 anim 2025-10-27 18:20:10 -04:00
Brandon Thomas d821a2d6de use of parsing 2025-10-27 17:46:55 -04:00
Brandon Thomas 91fdbe2a83 working captures 2025-10-27 17:20:04 -04:00
Brandon Thomas df2c2b781f requests, a few x crypto libraries from github 2025-10-24 10:48:01 -04:00
Brandon Thomas c0450f1aaa video gen shut down due to anti bot rules 2025-10-22 13:11:58 -04:00
Brandon Thomas 45c91b03a9 working media post 2025-10-22 13:00:28 -04:00
Brandon Thomas ac6377ec21 video urls 2025-10-22 12:29:11 -04:00
Brandon Thomas b0c68b7f5d url generation 2025-10-22 12:26:08 -04:00
Brandon Thomas 9f600a4a85 file upload works 2025-10-22 00:41:50 -04:00
Brandon Thomas a85a5693f9 upload file wip 2025-10-22 00:23:34 -04:00
Brandon Thomas 515f2b9c28 more requests 2025-10-21 20:21:06 -04:00
Brandon Thomas 0b4a5e938c more requests 2025-10-21 20:02:34 -04:00
Brandon Thomas 2d44d667af requests 2025-10-21 19:54:43 -04:00
Brandon Thomas 6854243fd4 request metadata 2025-10-21 19:38:33 -04:00
Brandon Thomas b4dafa5926 messages were floats 2025-10-21 19:14:14 -04:00
Brandon Thomas c8152ce364 test 2025-10-21 18:58:57 -04:00
Brandon Thomas e7575e2c57 why does pretty formatting matter 2025-10-21 18:55:53 -04:00
Brandon Thomas f7246daf9e wire message is unknown - why?? 2025-10-21 18:51:11 -04:00
Brandon Thomas 658328a0b1 not pulling correct values over the wire 2025-10-21 18:46:11 -04:00
Brandon Thomas 75df3cc64c test cases 2025-10-21 17:46:19 -04:00
Brandon Thomas f38f3f9000 wip 2025-10-21 03:04:58 -04:00
Brandon Thomas c949cd18d5 more fields 2025-10-21 02:11:07 -04:00
Brandon Thomas d89dd1431c image data 2025-10-21 02:07:53 -04:00
Brandon Thomas 5a0726e472 json tagging 2025-10-21 02:02:41 -04:00
Brandon Thomas 05c6108e88 refactor 2025-10-21 01:40:41 -04:00
Brandon Thomas fa68dfced8 this does it! 2025-10-21 00:50:53 -04:00
Brandon Thomas 47041e6bd2 wip trying to poll with timeout 2025-10-21 00:38:44 -04:00
Brandon Thomas a9ce5ff2f6 messages 2025-10-20 23:46:03 -04:00
Brandon Thomas d5f102deac prompting wip 2025-10-20 23:40:47 -04:00
Brandon Thomas de24b2115a prompt images wip 2025-10-20 23:30:05 -04:00
Brandon Thomas 6fa4c9f2ec also handle 401 2025-10-20 17:33:00 -04:00
Brandon Thomas 93d2f203a8 cleanup 2025-10-20 17:27:15 -04:00
Brandon Thomas 290edce1a3 cleanup, new lib 2025-10-20 17:02:06 -04:00
Brandon Thomas b578dc81df IT WORKS! 2025-10-20 01:08:21 -04:00
Brandon Thomas 93f5181252 wip 2025-10-20 00:58:31 -04:00
Brandon Thomas 6721a0ed2b cloudflare recognizes lower case 1.1 headers 2025-10-19 02:10:27 -04:00
Brandon Thomas ac8d61fbee it knows this is fake - why? 2025-10-19 02:09:00 -04:00
Brandon Thomas 7283adf320 wip 2025-10-19 02:05:08 -04:00
Brandon Thomas 87c5a463b1 need to adjust cookies and header casing 2025-10-19 01:44:37 -04:00
Brandon Thomas bce628bdac wip 2025-10-19 01:34:02 -04:00
Brandon Thomas 8c0358009a still not working wtf 2025-10-18 23:21:55 -04:00
Brandon Thomas d3c2a0da47 wip 2025-10-18 23:15:41 -04:00
Brandon Thomas 6f800fd92b wip 2025-10-18 23:04:17 -04:00
Brandon Thomas 2f06aff623 wip 2025-10-18 22:23:19 -04:00
Brandon Thomas d258ea4081 wip 2025-10-18 22:18:34 -04:00
Brandon Thomas 958015d33f mitm proxy wip 2025-10-18 22:15:12 -04:00
Brandon Thomas 0c74568080 details on wreq 2025-10-18 21:58:38 -04:00
Brandon Thomas be1e1d78b0 mitm proxy details 2025-10-18 21:48:22 -04:00
Brandon Thomas feda3314c3 notes 2025-10-18 00:31:44 -04:00
Brandon Thomas 820ab35527 wreq ff 143 not much different than 139 2025-10-18 00:08:26 -04:00
Brandon Thomas c13a7bc52a testing 2025-10-17 23:57:35 -04:00
Brandon Thomas 253e5e4287 wip 2025-10-17 23:50:03 -04:00
Brandon Thomas 79f5bfdf26 browser fingerprints 2025-10-17 23:13:18 -04:00
Brandon Thomas c4b1e85f54 cleanup 2025-10-17 15:19:36 -04:00
Brandon Thomas 2f62e1fd3b wip 2025-10-17 15:18:54 -04:00
Brandon Thomas a5962d0ceb wip 2025-10-17 15:14:29 -04:00
Brandon Thomas 937d0848d1 note 2025-10-17 14:57:24 -04:00
Brandon Thomas 8f7ef3d942 curl-impersonate now works (in current form) 2025-10-17 14:55:31 -04:00
Brandon Thomas 4d22be15b1 current test script 2025-10-17 14:45:48 -04:00
Brandon Thomas 8395b946f8 notes 2025-10-17 14:17:33 -04:00
Brandon Thomas 8678017156 still wip 2025-10-17 12:57:40 -04:00
Brandon Thomas b8409607fd still not working 2025-10-17 12:11:05 -04:00
Brandon Thomas 27680b6760 logging util 2025-10-17 11:41:08 -04:00
Brandon Thomas a06b35ae74 logger things not helping 2025-10-17 11:37:16 -04:00
Brandon Thomas 77c01d6170 headers 2025-10-17 10:45:59 -04:00
Brandon Thomas a3a3425bbc notes 2025-10-17 10:41:48 -04:00
Brandon Thomas 87d8304cc8 still broken 2025-10-17 10:13:01 -04:00
Brandon Thomas 82952e240e wip 2025-10-17 10:09:59 -04:00
Brandon Thomas d4473b852c something is wrong with websocket 2025-10-17 03:41:45 -04:00
Brandon Thomas d0fc1b47d6 account block 2025-10-17 03:15:54 -04:00
Brandon Thomas cbe2a2a6d5 ugh, user-agent header was scuffed 2025-10-17 03:15:37 -04:00
Brandon Thomas 89286ba459 tauri window wip 2025-10-17 02:26:01 -04:00
Brandon Thomas 512059c0f5 wip 2025-10-17 01:49:34 -04:00
Brandon Thomas 6af238c48e wip 2025-10-17 01:06:33 -04:00
Brandon Thomas 201dcb0192 wreq websocket wip 2025-10-17 00:50:29 -04:00
Brandon Thomas b867df290a grok wip 2025-10-17 00:12:32 -04:00
Brandon Thomas 851aba7e06 midjourney task completion data 2025-10-16 20:29:09 -04:00
Brandon Thomas 8ff9323ae6 add metadata to sora uploads 2025-10-16 20:14:16 -04:00
Brandon Thomas 50b085d450 minor cleanup 2025-10-16 19:17:04 -04:00
Brandon Thomas 1b70ee7394 fixup sora sentinel tokens (#879) 2025-10-16 19:09:52 -04:00
Brandon Thomas 1c3a176705 fix docs compile errors 2025-10-15 21:18:46 -04:00
bflatastic 70c305f78d promptbox clickthrough fix 3d 2025-10-15 22:49:47 +07:00
Brandon Thomas 1c3178d073 task queue api - thumbnails, tokens, etc. (#878) 2025-10-15 02:51:08 -04:00
Tanish Manku 1243e755fe Add reset ability to 2D (#874) 2025-10-14 15:57:03 -07:00
BFlat d551e48a23 sound toggle for veo models (#877)
- veo models if selected now has a sound toggle button which defaults to
ON/true (still needs backend link)
2025-10-14 23:30:26 +07:00
BFlat 5cb608fad6 lightbox updates (#876)
- colors will match selected theme now
- buttons relayout and added "turn into video" button for images that
will take you to the Image to Video page
- reference image matches imapge prompt row component now - opens full
preview in a separate resizable modal
2025-10-14 23:15:32 +07:00
BFlat d5ae28ca4c task queue dropdown and modal (#852)
task queue implementation
2025-10-14 00:11:40 +07:00
Brandon Thomas 8313558795 debugging for inference-job loop 2025-10-13 11:03:50 -04:00
Brandon Thomas 95173e032f Remove FAL from desktop app (for now) - build speed issue (#875)
Fal is causing really inflated build slowdowns on account of the library
using so much Serde/proc macros. We really need to rethink FAL client
workings before adding it.
2025-10-10 19:31:44 -04:00
Brandon Thomas b0f6551623 fix job builds (#873) 2025-10-10 19:00:22 -04:00
Brandon Thomas 8f2a03e21e nx fix vite build (#872) 2025-10-09 23:53:34 -04:00
Brandon Thomas 5c3760f9ec config+script to debug production builds (#871) 2025-10-09 05:07:27 -04:00
Brandon Thomas d6c1eaae5d fix inpainting thumbnails (#870) 2025-10-09 04:21:03 -04:00
Brandon Thomas d6abe9fb88 rename Nano Banana, change metadata, change predicates 2025-10-08 23:00:09 -04:00
Brandon Thomas 1e758b1b6c rename model to "Nano Banana" 2025-10-08 22:44:11 -04:00
Brandon Thomas cd40edb5f9 forgot to commit these changes 2025-10-08 21:15:31 -04:00
Brandon Thomas 3838cc3f21 artcraft task queue 2 (#869) 2025-10-08 21:14:16 -04:00
bflatastic 0fec772d9a page title for landing 2025-10-06 21:43:03 +07:00
bflatastic 1afe2ac26f footer link fixes 2025-10-06 15:30:59 +07:00
bflatastic 5eef6c0161 navbar, faq, tutorial page link fixes 2025-10-06 15:23:03 +07:00
bflatastic 6c6f7f054d update 2 faq 3d 2025-10-06 15:06:14 +07:00
bflatastic ba3d46607b 3d editor faq post update 2025-10-06 15:04:15 +07:00
BFlat 12bf504d6f faq and tutorials update to use markdown, footer updates, landing vid… (#868)
…eo layout shift fix
2025-10-06 14:57:33 +07:00
Brandon Thomas 026c2bf827 update version on website 2025-10-04 18:39:37 -04:00
Brandon Thomas d20854f75d remove service selector (#867) 2025-10-04 16:28:48 -04:00
Brandon Thomas 7c9396aa65 fix broken builds 2025-10-04 15:58:37 -04:00
Brandon Thomas 90810231da fix release script 2025-10-04 12:50:14 -04:00
Brandon Thomas e9613c6b4a boringssl got into web which conflicts with openssl on linux :( (#866) 2025-10-04 12:45:36 -04:00
Brandon Thomas cb2eb39183 bump toolchain 2025-10-04 02:13:44 -04:00
Brandon Thomas 7a100bd461 sora implementation (#865) 2025-10-04 01:58:31 -04:00
bflatastic 10c35381fa landing page text change 2025-10-02 22:53:18 +07:00
bflatastic 24c8353482 popover hover bug fix to prevent “first stays stuck open” when moving to the next 2025-10-02 14:10:23 +07:00
bflatastic eb0db3d67d first class provider selector next to model selector 2025-10-02 14:06:42 +07:00
Brandon Thomas 2d44b92bfc cleanup sora client (#863) 2025-10-02 00:27:16 -04:00
Brandon Thomas 8c36a7f98a refactor client package organization 2025-10-01 17:56:04 -04:00
Brandon Thomas a174730bf0 fix delete by calling tauri instead (#861) 2025-09-30 04:00:57 -04:00
Brandon Thomas 96ffeadbe0 github link (#860) 2025-09-29 23:10:00 -04:00
bflatastic bd93cd4f1f plan text update 2 2025-09-29 23:09:52 +07:00
bflatastic 39ad16e856 plans text change 2025-09-29 23:05:58 +07:00
bflatastic 64d589521a netlify redirects for tutorial page 2025-09-29 22:53:29 +07:00
BFlat 8c0529be0b tutorial modal for app and tutorial page for website (#859)
shared component for tutorials

app:
- tutorial modal accessible from any page on the app on the bottom right
- plays right in the modal through youtube embed
- it remembers the play progress and saves it in the zustand state so in
that current session if modal is opened again, it will continue where
the user left off

website:
- navbar updates (home and tutorials link)
- tutorial page with category buttons to filter by product or show all
- plays through youtube embed on website page
2025-09-29 16:19:59 +07:00
Brandon Thomas f198d5e90c bump version of binaries on website 2025-09-28 02:01:26 -04:00
BFlat a7f4a6eda4 dots dropdown on gallery item to edit image or delete (#858)
- each gallery item now has the three dots button on hover, clicking
shows a dropdown to edit image or delete
- reduced page size to 100 due to lag
2025-09-28 09:10:37 +07:00
Brandon Thomas 450c73a29d remove gpu loading error (#857) 2025-09-27 18:28:02 -04:00
742 changed files with 24032 additions and 6954 deletions
+3
View File
@@ -45,6 +45,9 @@ crates/lib/sqlite_queries/target/
# Javascript build directories
node_modules/
# Frontend build outputs
frontend/apps/editor3d/bundle-report.html
# Vim noise
*.swo
*.swp
@@ -0,0 +1,12 @@
{
"db_name": "SQLite",
"query": "\n UPDATE tasks\n SET is_dismissed_by_user = 1\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "13d435d8f681b73e4080748dcef0579e246e41049af67e1bd79ffc06aa6ba974"
}
@@ -0,0 +1,116 @@
{
"db_name": "SQLite",
"query": "\n SELECT\n id,\n task_status,\n task_type,\n model_type,\n provider,\n provider_job_id,\n frontend_caller,\n frontend_subscriber_id,\n frontend_subscriber_payload,\n on_complete_primary_media_file_token,\n on_complete_primary_media_file_class,\n on_complete_batch_token,\n on_complete_primary_media_file_cdn_url,\n on_complete_primary_media_file_thumbnail_url_template,\n created_at as \"created_at: DateTime<Utc>\",\n updated_at as \"updated_at: DateTime<Utc>\",\n completed_at as \"completed_at: DateTime<Utc>\"\n FROM tasks\n WHERE is_dismissed_by_user == 0\n ",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Text"
},
{
"name": "task_status",
"ordinal": 1,
"type_info": "Text"
},
{
"name": "task_type",
"ordinal": 2,
"type_info": "Text"
},
{
"name": "model_type",
"ordinal": 3,
"type_info": "Text"
},
{
"name": "provider",
"ordinal": 4,
"type_info": "Text"
},
{
"name": "provider_job_id",
"ordinal": 5,
"type_info": "Text"
},
{
"name": "frontend_caller",
"ordinal": 6,
"type_info": "Text"
},
{
"name": "frontend_subscriber_id",
"ordinal": 7,
"type_info": "Text"
},
{
"name": "frontend_subscriber_payload",
"ordinal": 8,
"type_info": "Text"
},
{
"name": "on_complete_primary_media_file_token",
"ordinal": 9,
"type_info": "Text"
},
{
"name": "on_complete_primary_media_file_class",
"ordinal": 10,
"type_info": "Text"
},
{
"name": "on_complete_batch_token",
"ordinal": 11,
"type_info": "Text"
},
{
"name": "on_complete_primary_media_file_cdn_url",
"ordinal": 12,
"type_info": "Text"
},
{
"name": "on_complete_primary_media_file_thumbnail_url_template",
"ordinal": 13,
"type_info": "Text"
},
{
"name": "created_at: DateTime<Utc>",
"ordinal": 14,
"type_info": "Int64"
},
{
"name": "updated_at: DateTime<Utc>",
"ordinal": 15,
"type_info": "Int64"
},
{
"name": "completed_at: DateTime<Utc>",
"ordinal": 16,
"type_info": "Int64"
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
false,
true
]
},
"hash": "47f94c127abc20683b25c257aed3c2190b9bd29eb829d61392f08e10fd986767"
}
@@ -0,0 +1,12 @@
{
"db_name": "SQLite",
"query": "\n UPDATE tasks\n SET\n task_status = ?,\n on_complete_batch_token = ?,\n on_complete_primary_media_file_token = ?,\n on_complete_primary_media_file_class = ?,\n on_complete_primary_media_file_cdn_url = ?,\n on_complete_primary_media_file_thumbnail_url_template = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 7
},
"nullable": []
},
"hash": "50a2449b87abed7df3302a74ecd0e8ab87940077a247636680cb09b2fe488321"
}
Generated
+664 -341
View File
File diff suppressed because it is too large Load Diff
+28 -6
View File
@@ -6,16 +6,17 @@ resolver = "2"
members = [
# API clients for external services
# These might be custom implementations or wrappers over other client libraries.
"crates/api_clients/artcraft_api_defs", # TODO: api_clients/{artcraft}/{api_defs,client}
"crates/api_clients/artcraft/artcraft_api_defs", # TODO: api_clients/{artcraft}/{api_defs,client}
"crates/api_clients/artcraft/storyteller_client",
"crates/api_clients/cloud_storage",
"crates/api_clients/fal_client",
"crates/api_clients/google_drive_common",
"crates/api_clients/google_sign_in",
"crates/api_clients/grok_client",
"crates/api_clients/midjourney_client",
"crates/api_clients/openai_sora_client",
"crates/api_clients/openart_client",
"crates/api_clients/runwayml_client",
"crates/api_clients/storyteller_client",
"crates/api_clients/thumbnail_generator",
# CLI tools for operations, etc.
@@ -43,6 +44,7 @@ members = [
"crates/lib/caching/memory_store",
"crates/lib/caching/redis_caching",
"crates/lib/cloudflare_errors",
"crates/lib/cloudflare_mitigation",
"crates/lib/concurrency",
"crates/lib/cookie_store",
"crates/lib/cookies",
@@ -84,6 +86,7 @@ members = [
"crates/lib/testing",
"crates/lib/tts_common",
"crates/lib/url_config",
"crates/lib/url_utils",
"crates/lib/user_input_common",
"crates/lib/web_scrapers",
#"crates/lib/api_clients/fakeyou_client",
@@ -181,10 +184,11 @@ workspace-build-acceleration = { path = "crates/workspace-build-acceleration" }
# Internal libs
# Setting paths here ensures we don't need to do so in every crate's Cargo.toml
# It makes refactoring much easier.
artcraft_api_defs = { path = "crates/api_clients/artcraft_api_defs" }
artcraft_api_defs = { path = "crates/api_clients/artcraft/artcraft_api_defs" }
build_metadata = { path = "crates/lib/build_metadata" }
cloud_storage = { path = "crates/api_clients/cloud_storage" }
cloudflare_errors = { path = "crates/lib/cloudflare_errors" }
cloudflare_mitigation = { path = "crates/lib/cloudflare_mitigation" }
component_traits = { path = "crates/service/plugins/component_traits" }
cookie_store = { path = "crates/lib/cookie_store" }
crockford = { path = "crates/lib/data/crockford" }
@@ -205,11 +209,12 @@ openai_sora_client = { path = "crates/api_clients/openai_sora_client" }
primitives = { path = "crates/lib/data/primitives" }
shared_service_components = { path = "crates/lib/shared_service_components" }
sqlite_tasks = { path = "crates/schema/database/sqlite_tasks" }
storyteller_client = { path = "crates/api_clients/storyteller_client" }
storyteller_client = { path = "crates/api_clients/artcraft/storyteller_client" }
subprocess_common = { path = "crates/lib/subprocess_common" }
test_data = { path = "crates/lib/test_data" }
testing = { path = "crates/lib/testing" }
tokens = { path = "crates/schema/public/tokens" }
url_utils = { path = "crates/lib/url_utils" }
web_base64 = { path = "crates/lib/data/web_base64" }
# External libs
@@ -230,19 +235,22 @@ base64 = "0.22.1"
bytes = "1.10.1"
chrono = { version = "0.4.41", features = ["serde"] }
cookie = "0.18.1"
env = "1.0.1"
env_logger = "0.11.8"
futures = { version = "0.3.31" }
hex-literal = "1.0.0"
indexmap = "2.9.0"
log = "0.4.27"
once_cell = "1.21.3"
rand = "0.9.1"
regex = "1.11.1"
reqwest = { version = "0.12.22", features = ["json", "cookies"] }
regex = "1.12.2"
reqwest = { version = "0.12.23", features = ["json", "cookies"] }
reqwest-websocket = { version = "0.5.0" }
serde = { version = "1.0.219", features = ["derive"] }
serde_derive = "1.0.219"
serde_json = "1.0.140"
serde_yaml = "0.9.34+deprecated"
sha2 = "0.11.0-rc.2"
sha3 = "0.10.8"
tauri = { version = "2.8.3", features = ["unstable", "devtools"] } # NB: "devtools" prevents App Store distribution; "ubstable" is needed for window access
tauri-plugin-dialog = "2.3.3"
@@ -255,3 +263,17 @@ thiserror = "2.0.12"
tokio = { version = "1.45.1", features = ["macros"] }
toml = "0.8.22"
url = { version = "2.5.4", features = ["serde"] }
uuid = "1.18.1"
# NB: wreq gets past fingerprinting, but we have to deal with platform-specific build issues.
#
# Mac:
# brew install --formula cmake pkg-config llvm
# Windows:
# choco install cmake -y
# choco install strawberryperl -y
# choco install pkgconfiglite -y
# choco install llvm -y
# choco install nasm -y
wreq = { version = "6.0.0-rc.20", features = ["json", "multipart", "cookies", "ws"] }
wreq-util = "3.0.0-rc.5"
@@ -0,0 +1,20 @@
-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
-- noinspection SqlResolveForFile
select
u.display_name,
count(*) as sessions,
a.session_duration_seconds / 60 / 60 as hours,
a.measurement_count,
u.email_address,
a.os_platform,
a.os_version,
u.created_at,
u.maybe_source,
a.last_active_at
from analytics_app_sessions as a
left outer join users as u
on a.user_token = u.token
group by a.user_token
order by hours desc;
@@ -9,6 +9,14 @@
-- tasks_v1.sqlite - initial version
-- tasks_v2.sqlite - added model_type (nullable)
-- tasks_v3.sqlite - added frontend_caller, comments
-- tasks_v4.sqlite - added is_dismissed_by_user
-- tasks_v5.sqlite - added five fields:
-- on_complete_batch_token,
-- on_complete_primary_media_file_token,
-- on_complete_primary_media_file_class,
-- on_complete_primary_media_file_cdn_url,
-- on_complete_primary_media_file_thumbnail_url_template,
--
CREATE TABLE tasks (
-- Task auto-incrementing primary key.
@@ -50,6 +58,32 @@ CREATE TABLE tasks (
-- will be re-emitted back to the frontend.
frontend_subscriber_payload TEXT,
-- Whether the user has dismissed the task from view.
is_dismissed_by_user INTEGER NOT NULL DEFAULT 0,
-- OPTIONAL.
-- When the generation completes, the batch token (if any).
-- This will point to a collection of multiple files.
on_complete_batch_token TEXT,
-- OPTIONAL.
-- When the generation completes, the media token of the "primary" media file.
-- We'll probably always generate homogenous types, but just in case this is the first or primary item in a batch.
on_complete_primary_media_file_token TEXT,
-- OPTIONAL.
-- When the generation completes, the file type of the primary media file.
-- We'll probably always generate homogenous types, but just in case this is the first or primary item in a batch.
on_complete_primary_media_file_class TEXT,
-- OPTIONAL.
-- The URL to the media file.
on_complete_primary_media_file_cdn_url TEXT,
-- OPTIONAL.
-- The URL template for the thumbnail of the primary media file.
on_complete_primary_media_file_thumbnail_url_template TEXT,
created_at INTEGER NOT NULL DEFAULT (unixepoch('now')),
updated_at INTEGER NOT NULL DEFAULT (unixepoch('now')),
completed_at INTEGER DEFAULT NULL
@@ -3,4 +3,5 @@ pub mod job_details;
pub mod media_file_cover_image_details;
pub mod media_links;
pub mod simple_entity_stats;
pub mod simple_generic_json_success;
pub mod user_details_light;
@@ -0,0 +1,7 @@
use serde_derive::{Deserialize, Serialize};
use utoipa::ToSchema;
#[derive(Serialize, Deserialize, ToSchema)]
pub struct SimpleGenericJsonSuccess {
pub success: bool,
}
@@ -6,4 +6,5 @@ pub mod jobs;
pub mod media_file;
pub mod prompts;
pub mod stripe_artcraft;
pub mod subscriptions;
pub mod subscriptions;
pub mod utils;
@@ -0,0 +1,19 @@
use serde_derive::{Deserialize, Serialize};
use utoipa::ToSchema;
use tokens::tokens::media_files::MediaFileToken;
#[derive(Serialize, Deserialize, ToSchema)]
pub struct DeleteMediaFileRequest {
pub set_delete: bool,
/// NB: this is only to disambiguate when a user is both a mod and an author.
pub as_mod: Option<bool>,
}
/// For the URL PathInfo
#[derive(Serialize, Deserialize, ToSchema)]
pub struct DeleteMediaFilePathInfo {
pub token: MediaFileToken,
}
@@ -1 +1,2 @@
pub mod delete_media_file;
pub mod list_batch_generated_media_files;
@@ -0,0 +1,12 @@
use crate::common::responses::media_links::MediaLinks;
/// Get the thumbnail template for either images or videos.
pub fn media_links_to_thumbnail_template(links: &MediaLinks) -> Option<&str> {
// NB: We only populate video previews for video tasks.
if let Some(video) = links.maybe_video_previews.as_ref() {
return Some(&video.animated_thumbnail_template);
}
// Image case - use the image thumbnail template if it exists.
links.maybe_thumbnail_template.as_deref()
}
@@ -0,0 +1 @@
pub mod media_links_to_thumbnail_template;

Some files were not shown because too many files have changed in this diff Show More