Commit Graph
100 Commits
Author SHA1 Message Date
Keavon Chambers 9aa74ab197 Add the Selective Color adjustment node 2023-04-19 03:02:50 -07:00
Keavon ChambersandDennis Kobert 50105c9a74 Add the Channel Mixer node (#1142)
* Add the Channel Mixer node

* Fix NodeIdentifier not found in Registry

* Add radio toggle for red/green/blue

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2023-04-17 12:47:24 -07:00
Keavon Chambers 4127da823b Update nodes to work with linear color by default (#1135)
* Update nodes to work with linear color by default

* Make tests work in linear not gamma
2023-04-16 12:20:44 -07:00
Keavon Chambers b133fc7feb Implement the correct Brightness/Contrast node algorithm (#1130)
Implement correct brightness/contrast algorithm
2023-04-15 05:15:58 -07:00
Keavon Chambers 69f6ed3a11 Fix Levels and Exposure adjustment nodes (#1112)
* Step Imaginate resolution by 64

* Fix the Exposure node

* Change comments and variable names
2023-04-11 01:52:44 -07:00
Keavon Chambers 4e8b8cc7d1 Rename the Downscale node to Downres 2023-04-09 15:38:36 -07:00
Keavon Chambers 9e8ac42a82 Fix crash upon setting stroke color to none 2023-04-06 18:11:45 -07:00
Keavon Chambers 3878132dbe Fix some fatal failures related to rendered frame memory size limits 2023-04-06 17:01:55 -07:00
Keavon Chambers 05e5be3200 Prevent rendering when transforming frame layer
Reduces confusion from rendering lag and lessens the opportunity to build up leaked memory from the present lack of node graph cache eviction
2023-04-06 16:59:10 -07:00
Keavon Chambers 0d6d498480 Update the website with some new content 2023-04-05 02:34:16 -07:00
Keavon Chambers c22fa8dcae Prevent browser extensions from recoloring the UI 2023-04-04 18:32:27 -07:00
Keavon Chambers 8512bc1271 Change the edit icon used in Imaginate 2023-04-03 14:16:46 -07:00
Keavon Chambers 65d705abc7 Polish node graph frames and rename them for clarity (#1104)
* Polish layer panel UI and layer type icons/text

* Assorted UI text and comment cleanup

* Insert Transform node before Imaginate node via tool

* Rename "Node Graph Frame" to Layer type and Frame tool

* Rename "Node Graph Frame" to "Frame" tool

* Update Node Graph Frame -> Frame tool icon

* Fix lint warnings
2023-04-03 01:52:25 -07:00
Keavon Chambers 78116f305e Bezier-rs: Replace Vue-CLI with Webpack bundler 2023-03-29 18:24:22 -07:00
Keavon Chambers 93bd17e747 Bezier-rs: Fix visualizing negative curvature on demo site 2023-03-28 17:54:11 -07:00
Keavon Chambers adb7eea065 Bezier-rs: Release version 0.2 2023-03-28 13:04:51 -07:00
Keavon Chambers 2291442186 Update readme and Task Board links 2023-03-27 11:13:53 -07:00
Keavon Chambers eac301d6f0 Code review previous commit, and improve G/R/S hints 2023-03-26 11:50:00 -07:00
Keavon Chambers f910b45a5b Upgrade cargo dependencies (#1090) 2023-03-25 17:29:49 -07:00
Keavon Chambers 7aa355f62f Add Imaginate help docs link to UI 2023-03-25 01:04:58 -07:00
Keavon Chambers ae2369ef77 Update website mockup images 2023-03-22 09:35:32 -07:00
Keavon Chambers 4645cdf3f0 Skip showing auto-save document old version error 2023-03-21 09:18:28 -07:00
Keavon Chambers 2e7c0274bd Remove leftover debug logs 2023-03-21 00:41:56 -07:00
Keavon Chambers dfa0d54761 Fix remaining known Svelte UI regressions
Closes #1040
2023-03-20 21:26:33 -07:00
Keavon Chambers 0c7c689126 Fix Eyedropper tool and make Svelte's bind:this more robust 2023-03-11 12:32:01 -08:00
Keavon Chambers bc9b7c0178 Fix import being lost when running 'cargo fix' due to feature flag 2023-03-11 01:49:00 -08:00
Keavon Chambers dd458deb32 Assorted code file cleanup following Svelte switch 2023-03-10 15:48:04 -08:00
Keavon Chambers 6febdea3c3 Remove all references to Vue 2023-03-10 14:14:34 -08:00
Keavon Chambers b4a265a512 Delete the separate Svelte frontend folder 2023-03-10 14:14:34 -08:00
Keavon Chambers 14a0fc2847 Replace the Vue frontend with Svelte 2023-03-10 14:14:34 -08:00
Keavon Chambers 70428633c3 Rename .vue files to .svelte for diffing 2023-03-10 14:14:34 -08:00
Keavon Chambers 3370a0a33d Svelte bug fixes and code cleanup (#1074)
* Fix middle click tab close

* Fix swapping colors in the ColorPicker

* Cleanup

* Fix field inputs

* Fix tab key-based navigation

* Fix ColorPicker reseting Initial color when opened

* Prevent backend fighting with user dragging NumberInput

* Remaining fixes and comment cleanup
2023-03-10 03:47:06 -08:00
Keavon Chambers baf6dfbd32 Move JS script to the top of each Vue file 2023-03-10 03:44:49 -08:00
Keavon Chambers ff603f7d80 Fix FieldInput and several other Svelte bugs 2023-03-08 01:35:22 -08:00
Keavon Chambers fc56a6063e Add double click input hint icons 2023-03-05 17:49:47 -08:00
Keavon Chambers 8fe8896c4a Fix graph scrolling bug from #1021
And replicate those changes to the Svelte version.
2023-03-03 02:28:52 -08:00
Keavon Chambers f400d2c9dd Improve the Vibrance node (#1050)
* Fix vibrance

* Improve results

* Clean up implementation

* Fix warnings from unrelated commit

* Improve negative vibrance
2023-02-21 15:42:13 -08:00
Keavon Chambers 7b86af99bd Fix Svelte regressions related to some input widgets 2023-02-19 22:57:43 -08:00
Keavon Chambers 1c2b8f67b2 Replace "Edit" icon with final version 2023-02-12 20:02:15 -08:00
Keavon Chambers 0319fce930 Svelte: Fix FontInput component infinite loop 2023-02-12 01:01:40 -08:00
Keavon Chambers 48f5fa24d9 Fix regressions in previous PR 2023-02-09 11:53:14 -08:00
Keavon Chambers d3787eb5f6 Improve Threshold node, move Gamma into Exposure node 2023-02-08 18:02:01 -08:00
Keavon Chambers 6fbc589e7e Remove Color struct from document-legacy (#1012) 2023-02-07 17:31:50 -08:00
Keavon Chambers bfb0d5e7f8 Fix error spam from Rust-Analyzer due to build scripts 2023-02-03 13:00:55 -08:00
Keavon Chambers 8a9b9e7c3c Refactor font_cache into render_data; delete image layer type 2023-01-29 20:31:14 -08:00
Keavon Chambers b47ec1b356 Clean up arg order in process_message() so data is last 2023-01-29 04:22:31 -08:00
Keavon Chambers 6eafeaaecc Apply lints and cleanup to Rust code 2023-01-29 03:01:57 -08:00
Keavon Chambers d541cf9932 Update project readme and MSRV 2023-01-24 01:33:30 -08:00
Keavon Chambers f0705a46fd Fix website RSS feed title 2023-01-22 00:59:26 -08:00
Keavon Chambers a223c54626 Svelte: fix pre-init error check and Properties panel 2023-01-18 22:55:39 -08:00
Keavon Chambers 8f61698af5 Svelte: Fix calling DOM API functions on the actual elements 2023-01-13 17:17:48 -08:00
Keavon Chambers cc7ec9409d Clean up imports and warnings in Rust code 2023-01-13 13:14:49 -08:00
Keavon ChambersandLocria Cyber dcc3eadf44 Port frontend from Vue to Svelte (WIP in separate folder, many bugs) (#964)
* Make `tauri build` just work

* Move folder: frontend/wasm -> wasm

* Create SvelteKit project with 'npx create-svelte'

* Move wasm-communication into seperate npm package

* Use wasm-pack directly and pack package.json

* Got it to work

* Add primitive build script for wasm npm module

* Fix wasm build script (python)

* Clean up glue code

* Rewrite wasm build script in node.js

* Add serde-reflection to trace types

* Add traced types

* Generate typescript (.d.ts) from Rust types

* Update .d.ts

* Finalize TS types

* Add script to update .d.ts

* Add watch command to build wasm-bindgen

* Make wasm work again

* Add sass; fix build script for windows

* Describe requirement for wasm-pack

* Add license

* Copy and reorganize vue components

* translate LayoutCol.vue

* Split app.scss into pieces

* Translate LayoutRow.svelte

* Rename scss files

* Fix compile issues on Windows

* WIP port TitleBar

* Support classes for LayoutCol/Row

* Restructure based on Vue codebase

* Port all components in window folder

* Port FloatingMenu

* Port Document panel component

* Update readme after folder move

* Update typegen: print discriminant by default

* Update typegen: Merge from branch 'tailwind' 4f14fedb

Fixes bigint & bytes

* Made Vue/webpack/eslint to accept wasm package at new location

This is quite a hack.

Those two packages are both named the same. Yes, it's an npm package inside another npm package.

- frontend/src/wasm-communication/
- frontend-svelte/glue/

'wasm/pkg/index.js' imports the correct one registered when linking.

* Port LayerTree

* Port NodeGraph

* Port Properties

* Port components in /floating-menus

* Finish porting all Vue -> Svelte components

* Change import prefix

* Revert type generation

* Revert moved wasm folder

* Revert all of @locriacyber's work on this branch

- Remove Vite and restore Webpack
- Remove SvelteKit
- Remove everything except the components I ported to Svelte
- Restore all frontend files from Vue code, now altered for Svelte

* Convert Vue's 'reactive' and 'provide' to Svelte's stores and contexts

* Fix event emitting and bi-di data flow

* Undo removal of 'update:' events

* Fix 'update:' event dispatching

* Fix usage in parent of bi-di component props

* Fix component typing, more progress towards no errors

* The page builds and opens!

* Add loading spinner and remove postcss dependency

* Make the basics of document editing work

* Fix rebase history

Co-authored-by: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
2023-01-13 01:05:20 -08:00
Keavon Chambers 83eca77087 Fix build scripts so a failure returns a nonzero exit code 2023-01-03 01:05:09 -08:00
Keavon Chambers d66f09da08 Rename some Imaginate parameters 2022-12-27 14:30:54 -08:00
Keavon Chambers 6535ffeeb6 Minor logging code cleanup 2022-12-24 14:21:30 -08:00
Keavon Chambers 748c0ff7c0 Fix some paper cuts 2022-12-22 23:53:36 -08:00
Keavon Chambers d9101533f2 Make Properties panel radio buttons full width 2022-12-22 17:55:39 -08:00
Keavon Chambers 5c6679ab98 Rename the legacy Graphene crate to document-legacy (#899)
* Rename /graphene to /document-legacy

* Update names in code
2022-12-22 02:12:05 -08:00
Keavon Chambers 9071d9fdca Simplify website template code 2022-12-18 21:35:46 -08:00
Keavon Chambers f7317aa6b4 Prepare Bezier-rs for publishing 2022-12-17 22:14:56 -08:00
Keavon Chambers c9820efe35 Add breadcrumb trail widget (#884) 2022-12-12 17:16:40 +00:00
Keavon Chambers 951c4b665f Improve naming of nodes and 'add' menu styling 2022-12-03 23:29:55 -08:00
Keavon Chambers 3da87c4f78 Fix Imaginate generation with base image but no mask 2022-11-21 11:21:43 -08:00
Keavon Chambers 94e92be9d3 Prevent modifier key repeat from bogging down the app on WIndows
Closes #767
2022-11-20 14:02:59 -08:00
Keavon Chambers 5fe7aba85d Add GitHub Sponsors link for core team 2022-11-17 11:53:28 -08:00
Keavon Chambers cc4bfd7e42 Fix compilation after upgrading TypeScript 2022-11-16 20:50:53 -08:00
Keavon Chambers 02d5b019a6 Update frontend node.js packages 2022-11-16 18:36:34 -08:00
Keavon Chambers 839a55179e Update bezier-rs interactive demos node.js packages 2022-11-16 18:31:21 -08:00
Keavon Chambers f918745b73 Bump MSRV to 1.65.0 for let-else syntax
Closes #857
2022-11-16 18:04:13 -08:00
Keavon Chambers 71b98b0c21 Change Imaginate image creativity to a percentage 2022-11-12 14:36:12 -08:00
Keavon Chambers d75f0aa0ab Fix color picker alpha slider range 2022-11-12 09:11:25 -08:00
Keavon Chambers b1ee93313b Fix opacity slider range bug 2022-11-08 16:25:55 -08:00
Keavon Chambers 901a8652ec Update frontend and bezier-rs demo npm dependencies 2022-11-08 15:17:02 -08:00
Keavon Chambers f5f89a650c Fix swapped boolean subtract modes 2022-11-08 01:09:51 -08:00
Keavon Chambers 0725f80049 Add new sampling methods to Imaginate 2022-11-07 00:37:17 -08:00
Keavon Chambers 4622273b09 Change favicon/app manifest theme color to white 2022-11-06 01:55:48 -07:00
Keavon Chambers 9e5626ced6 Fix several CSS compatibility issues in Safari (#841)
* Fix button margin default for Safari compatibility

* Add Safari vendor prefixes that are somehow still necessary

* Add workaround for Safari not rendering text selection

* Replace <h3> and <p> placeholder labels in floating menus with <TextLabel>

* Replace <span> elements with <TextLabel> and set its cursor for Safari
2022-11-06 00:50:45 -07:00
Keavon Chambers 265f11a751 Add rotation custom cursor icon for the transform cage 2022-11-05 23:02:21 -07:00
Keavon Chambers 6031f4cffd Add the range slider design to the NumberInput widget (#839)
* Add range slider to NumberInput

* Cleanup

* Fix event ordering causing bug in Firefox

* Polish the code

* Switch number input modes to range in relevant places
2022-11-05 22:57:19 -07:00
Keavon Chambers 71680ab005 Add suffix widget non-rounding; add disabled state to many widgets 2022-11-04 17:09:03 -07:00
Keavon Chambers afc84d30f8 Revamp UI styling to remove accent color; improve tab navigation 2022-11-04 05:56:33 -07:00
Keavon Chambers 69fd3dfc35 Move browser incompatibility check outside the JS bundle 2022-11-03 03:06:16 -07:00
Keavon Chambers 70b03ec886 Update the Imaginate image generation API (#836)
* Update the Imaginate feature server API

* Change connection status strategy to prevent console errors

* Possible CORS fix? Maybe revert.

* Update to the final API and fix bugs
2022-11-03 03:06:14 -07:00
Keavon Chambers 7522af9fc7 Refactor persistent data storage code and add button to wipe data on crash (#827)
* Organize persistence.ts

* Switch to simpler promise handling

* Switch document list storage from localStorage to IndexedDB

* Track document auto-save status to avoid re-auto-saving unnecessarily

* Add button to clear storage on crash

* Bump document version and test file

* Switch to IDB-Keyval instead of raw IDB transactions
2022-11-03 03:05:41 -07:00
Keavon Chambers d6c2d73f45 Reenable optimizations in debug mode which were inadvertently disabled 2022-11-02 00:42:44 -07:00
Keavon Chambers df1b25f42e Remove regex lookbehind in rasterization which is unsupported by Safari 2022-11-02 00:26:39 -07:00
Keavon Chambers 7d2bdf11e1 Revamp the ColorPicker popover and ColorInput widget (#830)
* Add cancel hint to Eyedropper tool

* Improve eyedropper overlay CSS

* Make CSS for transparent checkered background reusable

* Add color choice preview to color picker

* Draw text and markers as contrasting white or black

* Add reactive color updating and new/initial swapping

* Add Hex, RGB, HSV, and Opacity inputs

* Add none color and preset buttons

* Add eyedropper button and fix alignment (now visually done)

* Wire up none colors through the backend and style the ColorInput widget

* Add color info chip to ColorInput widget

* Fix all UX bugs

* Add more tooltips

* Fix FloatingMenu recursive loop

* Prevent mouse stray from closing color picker while dragging pickers

Closes #703

* Fix deselect all layers shortcut

* Add temporary eyedropper for Chromium browsers and a coming soon fallback
2022-10-28 18:36:04 -07:00
Keavon Chambers 5f1501aad3 Improve floating menu hover transfer behavior (#829) 2022-10-26 02:39:08 -07:00
Keavon Chambers 3fe552ff20 Fix image flickering while Imaginate layers generate 2022-10-24 20:40:06 -07:00
Keavon Chambers 24cfa6a5ad Clean up Vue component refs (#813)
* Clean up Vue component refs

* Second pass of code improvements
2022-10-24 20:02:49 -07:00
Keavon Chambers 0b9c45c9e8 Refactor color picker floating menu (#809)
* Move FloatingMenu template component

* Rewrite the ColorPicker component so it's not horrifically bad code

* Move FloatingMenu into the ColorPicker component

* Little Imaginate fixes

* Add todo
2022-10-23 17:29:04 -07:00
Keavon Chambers 4023491792 Improve visibility of Eyedropper widget on dark backgrounds (closes #802) 2022-10-21 16:43:32 -07:00
Keavon Chambers f2db20f061 Remake Eyedropper tool to sample pixel colors from viewport canvas (#801)
* Remake Eyedropper tool to sample pixel colors from viewport canvas

* Bug fixes

* Reorder export buttons

* Remove the larger primary/secondary ring

* Add aborting with Escape
2022-10-21 01:50:02 -07:00
30719bdc72 Integrate Stable Diffusion with the Imaginate layer (#784)
* Add AI Artist layer

* WIP add a button to download the rendered folder under an AI Artist layer

* Successfully download the correct image

* Break out image downloading JS into helper function

* Change file download from using data URLs to blob URLs

* WIP rasterize to blob

* Remove dimensions from AI Artist layer

* Successfully draw rasterized image on layer after calculation

* Working txt2img generation based on user prompt

* Add img2img and the main parameters

* Fix ability to rasterize multi-depth documents with blob URL images by switching them to base64

* Fix test

* Rasterize with artboard background color

* Allow aspect ratio stretch of AI Artist images

* Add automatic resolution choosing

* Add a terminate button, and make the lifecycle more robust

* Add negative prompt

* Add range bounds for parameter inputs

* Add seed

* Add tiling and restore faces

* Add server status check, server hostname customization, and resizing layer to fit AI Artist resolution

* Fix background color of infinite canvas rasterization

* Escape prompt text sent in the JSON

* Revoke blob URLs when cleared/replaced to reduce memory leak

* Fix welcome screen logo color

* Add PreferencesMessageHandler

* Add persistent storage of preferences

* Fix crash introduced in previous commit when moving mouse on page load

* Add tooltips to the AI Artist layer properties

* Integrate AI Artist tool into the raster section of the tool shelf

* Add a refresh button to the connection status

* Fix crash when generating and switching to a different document tab

* Add persistent image storage to AI Artist layers and fix duplication bugs

* Add a generate with random seed button

* Simplify and standardize message names

* Majorly improve robustness of networking code

* Fix race condition causing default server hostname to show disconnected when app loads with AI Artist layer selected (probably, not confirmed fixed)

* Clean up messages and function calls by changing arguments into structs

* Update API to more recent server commit

* Add support for picking the sampling method

* Add machinery for filtering selected layers with type

* Replace placeholder button icons

* Improve the random icon by tilting the dice

* Use selected_layers() instead of repeating that code

* Fix borrow error

* Change message flow in progress towards fixing #797

* Allow loading image on non-active document (fixes #797)

* Reduce code duplication with rasterization

* Add AI Artist tool and layer icons, and remove ugly node layer icon style

* Rename "AI Artist" codename to "Imaginate" feature name

Co-authored-by: otdavies <oliver@psyfer.io>
Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-10-18 22:33:27 -07:00
Keavon Chambers 9f96d80bea Add building instructions to the website contribute page 2022-10-14 10:09:37 -07:00
Keavon Chambers 2ee57df709 Break apart and improve the JS for rasterizing SVGs and downloading files (#786)
It now uses a blob URL instead of a data URL in the download process, which is cleaner and better performance.
2022-10-08 11:34:31 -07:00
Keavon Chambers 6e12651c56 Add website link prompting to subscribe to the newsletter 2022-09-25 01:45:59 -07:00
Keavon Chambers 461064c81d Improve the website and readme with details and cleanup 2022-09-16 01:29:33 -07:00
Keavon Chambers 242a242809 Improve wording on the website home page; add a volunteer icon 2022-09-04 14:31:08 -07:00