Commit Graph
100 Commits
Author SHA1 Message Date
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
Keavon Chambers 1e723b8c86 Add the Pivot Assist widget
Part of #525
2022-08-29 00:08:01 -07:00
Keavon Chambers 8f59289c5d Remove usage of 'null' in favor of 'undefined' 2022-08-26 00:24:20 -07:00
Keavon Chambers 078cc4373f Enable some TS consistency lints 2022-08-26 00:24:10 -07:00
Keavon Chambers 33e790dc86 Prefix all type imports with the 'type' keyword where appropriate 2022-08-26 00:10:41 -07:00
Keavon Chambers 7848391f6e Clean up MenuList types and fix many Vue and Clippy warnings
Also remove hard-coded-in-Vue Graphite logo in the menu bar in favor of a Rust definition.
2022-08-26 00:10:41 -07:00
Keavon Chambers 5ad76bec6e Clean up camelCase and snake_case in frontend code 2022-08-26 00:10:15 -07:00
Keavon Chambers 5531fc690f Add grayscale sample image for its node graph test 2022-08-23 14:00:17 -07:00
Keavon Chambers 763cdbb100 Move bezier-rs into libraries folder and deploy its interactive docs 2022-08-15 00:17:31 -07:00
Keavon Chambers 44eb83c9b3 Fix logic bug in key internationalization for A-Z keys in alternate layouts 2022-08-14 13:57:01 -07:00
Keavon ChambersandDennis 776992a297 Simplify platform-specific keyboard layouts with Accel key and global platform variable (#748)
* Simplify platform-specific keyboard layouts with Accel key and global platform variable


Co-authored-by: Dennis <dennis@kobert.dev>
2022-08-13 13:28:02 +02:00
Keavon Chambers d8ae727ea9 Rename MovementMessage to NavigationMessage 2022-08-11 17:20:10 -07:00
Keavon Chambers dfdfd8149c Switch Vec<Key> to KeysGroup newtype 2022-08-11 16:35:04 -07:00
Keavon Chambers d6e726f99d Fix shortcut label on welcome screen: "Control" -> "Ctrl" 2022-08-11 10:53:03 -07:00
Keavon Chambers 0f6ecefb3f Revamp key/code input processing which fixes Option key on Mac and other locales
Closes #742
Closes #746
2022-08-11 02:53:46 -07:00
Keavon Chambers 9f4a241e0f Extend welcome screen button click area to labels
Closes #738
2022-08-08 01:29:23 -07:00
Keavon Chambers e440fba4cc Populate menu bar
Closes #531
2022-08-06 18:08:39 -07:00
Keavon Chambers c235c7f252 Additional cleanup of prelude imports in editor codebase
Closes #744
2022-08-05 17:12:56 -07:00
Keavon Chambers ddfd7db0a0 Restructure the entire editor codebase to consistently match the message hierarchy
Closes #744
2022-08-05 17:13:43 -07:00
Keavon Chambers 0c7870c5b0 Fix formatting of previous commit 2022-08-04 00:18:42 -07:00
Keavon ChambersandDennis 52b3553a75 Add full support for Mac-specific keyboard layouts (#736)
* IPP for Mac, flawed initial experiments

* Cleanup and progress, but not compiling yet

* Fix error and rename nonmac -> standard

* Extentd ipp macros to accomodate mac input

* Add Mac versions of shortcuts; refactor and document the input mapper macros

* Change frontend styling for user input labels in floating menus

* Additional macro documentation

* A little more documentation

* Improve entry macro syntax

* Move input mapper macros to a separate file

* Adapt the keyboard shortcuts to the user's OS

* Display keyboard shortcuts in the menu bar based on OS

* Change Input Mapper macro syntax from {} to ()

* Fix esc key bug in Vue

* Tweaks

* Interim solution for Mac-specific hints

* Feed tooltip input hotkeys from their actions

* Fix hotkeys for tools because of missing actions

* Make Vue respect Ctrl/Cmd differences per platform

* Remove commented lines

* Code review pass by me

* Code review suggestions with TrueDoctor

* Turn FutureKeyMapping struct into ActionKeys enum which is a bit cleaner

* Add serde derive attributes for message discriminants

* Re-add serde deserialize

* Fix not mutating ActionKeys conversion; remove custom serializer

* Add serde to dev dependencies

Co-authored-by: Dennis <dennis@kobert.dev>
2022-08-03 14:13:43 -07:00
Keavon Chambers cafa2e61dc Update npm dependencies 2022-07-23 15:31:02 -07:00
Keavon Chambers f3bdf970f4 Implement File > Import and fix Ctrl+O to Open hotkey
Closes #671
2022-07-23 15:17:20 -07:00
Keavon Chambers 08a81002ff Hide canvas zoom widget automatically when zero 2022-07-22 23:09:45 -07:00
Keavon Chambers 4fa7a81f61 Fix broken BigInt64Array unsupported message on old Safari 2022-07-07 10:58:29 -07:00
Keavon Chambers b4a24d7d83 Fix website styling 2022-06-29 18:47:05 -07:00
Keavon Chambers 2052c00010 Fix DropdownInput repeated change emitting 2022-06-19 19:34:59 -07:00
Keavon Chambers a443de8342 Implement the Edit > Paste menu entry (#683)
Closes #682
2022-06-19 00:53:33 -07:00
Keavon Chambers 63fd5e87ab Change MenuList checkbox to be an icon from a widget 2022-06-17 17:55:04 -07:00
Keavon Chambers 4924d7ede7 Add code style formatting to the website 2022-06-16 22:57:15 -07:00
Keavon Chambers 04d6bd9190 Update npm dependencies (#678) 2022-06-13 12:32:01 -07:00
Keavon Chambers e6d096f73e Update banner for the lastest blog post 2022-06-06 16:09:42 -07:00
Keavon Chambers 811ca391ac Update readme 2022-05-26 00:28:29 -07:00
Keavon Chambers eca9797597 Refactor source of Git commit build info (closes #661) 2022-05-24 14:33:58 -07:00
Keavon Chambers bec7a4c109 Add frontend file structure docs and some related cleanup 2022-05-23 19:24:31 -07:00
Keavon Chambers ab77105ffb Reorganize Vue components and add documentation explaining each folder 2022-05-23 19:22:41 -07:00
Keavon Chambers 2c2d7bd137 Update the assets directory to prefix icon folders with "icon-" 2022-05-23 18:56:33 -07:00
Keavon Chambers ef53577b20 Vue initialization and FloatingMenu codebase refactoring and cleanup (#649)
* Clean up Vue initialization-related code

* Rename folder: dispatcher -> interop

* Rename folder: state -> providers

* Comments and clarification

* Rename JS dispatcher to subscription router

* Assorted cleanup and renaming

* Rename: js-messages.ts -> messages.ts

* Comments

* Remove unused Vue component injects

* Clean up coming soon and add warning about freezing the app

* Further cleanup

* Dangerous changes

* Simplify App.vue code

* Move more disparate init code from components into managers

* Rename folder: providers -> state-providers

* Other

* Move Document panel options bar separator to backend

* Add destructors to managers to fix HMR

* Comments and code style

* Rename variable: font -> font_file_url

* Fix async font loading; refactor janky floating menu openness and min-width measurement; fix Vetur errors

* Fix misaligned canvas in viewport until panning on page (re)load

* Add Vue bidirectional props documentation

* More folder renaming for better terminology; add some documentation
2022-05-21 19:46:15 -07:00
Keavon Chambersand0hypercube a8f09da5a2 Move layouts definitions to backend and fix Firefox overlay scrollbars (#647)
* Fix two-axis scrollbars in scrollable regions on Firefox

* Move Document Mode dropdown to the backend; and related code cleanup

* Port the Layer Tree options bar layout to the backend

* Port the tool shelf to the backend

* Clean up initialization and wasm wrapper

* Fix crash

* Fix missing document bar

* Remove unused functions in api.rs

* Code review

* Tool initalisation

* Remove some frontend functions

* Initalise -> Init so en-US/GB doesn't have to matter :)

* Remove blend_mode and opacity from LayerPanelEntry

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-05-17 13:12:52 -07:00
Keavon Chambers 95435d8bf1 Update the VS Code rust-analyzer extension to its new official owner 2022-05-13 12:09:37 -07:00
Keavon Chambers 6cae6b54b7 Fix website rendering issues on Firefox with -webkit-line-clamp 2022-05-12 14:22:43 -07:00
Keavon Chambers 15641a3d2a Fix website responsive layouts 2022-05-12 13:08:53 -07:00
Keavon Chambers e2f616934b Add Reddit and Twitter links to blog posts 2022-05-12 01:15:56 -07:00
Keavon Chambers 89ed5ac392 Fix website URL encoding in certain links 2022-05-12 01:04:23 -07:00
Keavon Chambers 10e2365536 Blog post updates 2022-05-12 00:45:20 -07:00
Keavon Chambersand0hypercube 07d5bef125 Build the node graph frontend with placeholder graph info (#581)
* Build the node graph frontend

* Graph pan and zoom

* Graph's dot grid now pans/zooms also

* Interactive horisontal to vertical curves

* Data types and zooming on wires

* Icon definitions code beautification

* Add a visibility toggle

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-05-10 22:34:25 -07:00
Keavon Chambers be6351573f Update list of recommended VS Code extensions 2022-05-10 20:39:58 -07:00
Keavon Chambers 8dec73c344 Clean up website file structure 2022-05-10 11:35:39 -07:00
Keavon Chambers 7729b6219e Move the Layer Tree panel's New Folder and Delete icons into the options bar 2022-05-06 13:19:00 -07:00
Keavon Chambers 8c9caf12c7 Tidy up the full frontend codebase and use optional chaining where possible (#620)
* Tidy up the full frontend codebase and use optional chaining where possible

* Code review changes
2022-04-30 02:52:53 -07:00
Keavon Chambersand0hypercube d1c32ad7d0 Upgrade vue-cli to version 5 (#594)
* Upgrade to Vue CLI 5 (fails to compile)

* Upgrade versions with last few weeks of changes

* Updated to fork-ts-checker-webpack-plugin 7.2.3

* Remove package.json overrides in lieu of the fixed fork-ts-checker-webpack-plugin@6.5.1

* Fix svg importing

* Comments

* For debugging only: added infrastructureLogging to vue.config.js

* Now works on Windows, waiting on fork-ts-checker-webpack-plugin backport if possible

* Switch to the fixed fork-ts-checker-webpack-plugin@6.5.2

* Fix license checker build compilation

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-04-26 01:47:13 -07:00
Keavon Chambers 1bf1687642 Change stroke weight from ints to floats (#601)
Also rename stroke "width" to "weight" in some places. Closes #587

* Change stroke weight from ints to floats

* "miter_limit" -> "line_join_miter_limit"

* Bump file format version
2022-04-21 13:35:35 -07:00
Keavon Chambers d65ce17d7e Rename Crop tool to Artboard tool 2022-04-21 10:52:33 -07:00
Keavon Chambers 9c61fbc936 New blog post: "Distributed computing with the Graphene runtime" 2022-04-18 02:04:22 -07:00
Keavon Chambers a76bded12f Expand upon the "Announcing Graphite alpha" blog post 2022-04-14 10:19:09 -07:00
Keavon Chambers 3e2962e36a Add node graph mockup to website 2022-03-25 02:11:31 -07:00
Keavon Chambers 9af26a3840 Various website fixes 2022-03-17 02:51:37 -07:00
Keavon Chambers 045448a26e Small website text improvements 2022-03-15 16:06:09 -07:00
Keavon Chambers a1b91c75c7 Add features page and fixes to website 2022-03-13 11:32:53 -07:00
Keavon Chambers b4f316c3b9 Add website revisions and many new pages 2022-03-12 08:31:12 -08:00