Compare commits

...

6678 Commits

Author SHA1 Message Date
Andrey Antukh
49649a8814 Merge pull request #1662 from penpot/niwinz-hotfix-event-tracing-improvements
Minor improvements (hotfix)
2022-03-07 15:52:26 +01:00
Andrey Antukh
18a67a80bc 🔥 Remove unused code 2022-03-07 15:50:31 +01:00
Andrey Antukh
867669cc98 Add missing origin meta on left-toolbar events 2022-03-07 15:19:51 +01:00
Andrey Antukh
0158a93391 📎 Fix linter issues on staging branch 2022-03-07 15:10:03 +01:00
Andrey Antukh
fdb6533149 Minor improvement on workspace flags and modal event tracing 2022-03-07 15:10:03 +01:00
Andrey Antukh
6f32d721c2 📎 Minor changes on default values on devenv docker compose 2022-03-07 15:10:03 +01:00
Andrey Antukh
5f49656e30 Add proper event tracing on nudge modal
And ♻️ refactor data event handling, moving
some logic from component to the event.
2022-03-07 15:10:03 +01:00
Andrey Antukh
8114b165d9 📎 Update version.txt file 2022-03-07 13:13:41 +01:00
Andrey Antukh
dd39cb5a1c Merge pull request #1661 from penpot/fix/viewer-performance
🐛 Fix problems with viewer performance
2022-03-07 13:13:11 +01:00
Andrey Antukh
7f8c217e7c Merge remote-tracking branch 'origin/main' into staging 2022-03-07 13:11:38 +01:00
Andrey Antukh
d731a095c6 Merge branch 'main' into staging 2022-03-07 13:08:20 +01:00
alonso.torres
6630899d6e 🐛 Fix problems with viewer performance 2022-03-07 12:40:27 +01:00
Andrey Antukh
0cfd5095a7 🐛 Fix stack trace reporting on loki 2022-03-07 11:31:36 +01:00
Andrey Antukh
4f379821b5 🐛 Fix labels on loki logger 2022-03-07 11:09:06 +01:00
Eva
9eea7dabc2 🐛 Fix length of names in sidebar 2022-03-07 11:07:15 +01:00
Andrey Antukh
d1c834e647 🐛 Fix minor issue on executors monitor 2022-03-01 14:34:13 +01:00
Andrey Antukh
03a082fe40 🐛 Fix metrics on websocket connections 2022-03-01 14:19:26 +01:00
alonso.torres
0534570784 🐛 Fix typo in text palette 2022-03-01 13:00:48 +01:00
Andrey Antukh
f2e389593a 🐛 Fix graphic asset rename 2022-03-01 12:50:10 +01:00
Andrey Antukh
fae79d67e6 Merge branch 'staging' 2022-03-01 11:10:27 +01:00
Andrey Antukh
271f69d59d Merge branch 'release-1.12' into staging 2022-03-01 11:08:21 +01:00
elhombretecla
6563cd9c8b 🎉 Add new release info dialog 2022-03-01 11:07:50 +01:00
Andrey Antukh
e60b8a7aef 🐛 Minor fix on worker executors monitor 2022-02-28 17:21:36 +01:00
alonso.torres
a644599b16 🐛 Fix problem when disabling grid snap 2022-02-28 16:07:43 +01:00
Andrey Antukh
5d2715dd32 Improve monitors monitor 2022-02-28 15:29:30 +01:00
Andrey Antukh
1bad233e2f 📎 Fix linter issues on staging branch 2022-02-28 12:09:59 +01:00
Andrey Antukh
f64b1d3651 🐛 Properly handle invitations on login 2022-02-28 12:08:31 +01:00
Andrey Antukh
eb57c2f980 💄 Cosmetic changes on mutation profile ns 2022-02-28 12:08:05 +01:00
Andrey Antukh
ecd491cd09 🐛 Don't mark as touched temporal file 2022-02-28 12:07:44 +01:00
Andrey Antukh
dead3138b3 Reduce the size of the default thread pool 2022-02-28 12:07:21 +01:00
Andrey Antukh
0416082d4d 🐛 Fix awsns handler, convert it ot async 2022-02-28 12:06:47 +01:00
alonso.torres
05c77d0248 🐛 Fix problem with collapsing pages 2022-02-25 12:53:22 +01:00
Alejandro Alonso
2fc4c30bed 🐛 [Prototype] Prototype mode should not allow edits 2022-02-25 12:41:19 +01:00
Alejandro Alonso
d2590c7651 🐛 [Prototype] Prototype mode should not allow edits 2022-02-25 12:24:09 +01:00
alonso.torres
b4c87ad0b9 🐛 Fix font for guides and rulese 2022-02-24 11:45:56 +01:00
Andrey Antukh
37a35b1827 Minor improvements on telemetry task 2022-02-24 11:02:05 +01:00
Eva
24a0b4445e Open feedback page in a new tab 2022-02-23 12:51:02 +01:00
Andrey Antukh
87c1bc4bdb 🐛 Fix incorrect error id reporting on mattermost webhook 2022-02-23 12:40:28 +01:00
Andrey Antukh
e15f5bb432 🐛 Fix issues with not authenticated requests
Related to concurrency model refactor.
2022-02-23 12:34:08 +01:00
Andrey Antukh
496ba433e9 📎 Fix linter issues 2022-02-23 12:16:51 +01:00
Andrey Antukh
0b0ae756a3 🐛 Minor fix on audit http handler 2022-02-23 11:59:17 +01:00
Andrey Antukh
0ade0405f5 🐛 Fix feedback and audit-log http handlers 2022-02-23 11:49:25 +01:00
Andrey Antukh
aeed535f1b Minor improvement on reference handling on touched-gc task 2022-02-23 09:13:48 +01:00
Andrey Antukh
974084a9ca 🐛 Add missing executor dependency to auth handlers 2022-02-23 09:13:48 +01:00
Alejandro Alonso
88706534c2 🐛 Fixing fil typo 2022-02-23 08:33:03 +01:00
Eva
70def21153 ♻️ Improve file menu usage 2022-02-22 13:36:01 +01:00
Andrés Moya
46bfb2aacd 🐛 Fixed alignment of layers with children 2022-02-22 13:10:59 +01:00
Andrey Antukh
7cf27ac86d ♻️ Refactor general resource and concurrency model on backend 2022-02-22 13:05:41 +01:00
alonso.torres
d24f16563f Use remove to delete guides 2022-02-21 17:30:08 +01:00
Eva Marco
bb68838fa4 Merge pull request #1620 from penpot/fix_double_click
🐛 Fix problem with double click
2022-02-21 17:27:46 +01:00
alonso.torres
aed6a8a5ff 🐛 Fix problem with double click 2022-02-21 16:57:35 +01:00
Andrey Antukh
96facc5100 ♻️ Refactor invitation flow
Enfoces security and make the flow more deterministic.
2022-02-21 11:38:28 +01:00
Andrey Antukh
6486b24c8b ⬆️ Update shadow-cljs version 2022-02-17 11:15:19 +01:00
Pablo Alba
75a8f85ebb Do not show the templates modal on onboarding 2022-02-16 21:34:47 +01:00
Andrés Moya
3d8f757712 🐛 Fixed cannot align objects inside a group but not inside a frame 2022-02-16 17:07:28 +01:00
Alejandro Alonso
4efd8b7d3f 🐛 Select All (CTRL+A) fails 2022-02-16 16:24:00 +01:00
Andrés Moya
5d17933593 🐛 Fix touched component marker appearing when it's not needed 2022-02-16 16:23:31 +01:00
Andrey Antukh
206778021f 📎 Update changes.md file 2022-02-16 14:00:25 +01:00
Andrey Antukh
4a262de550 Merge branch 'niwinz-storage-transactionality-refactor' into staging 2022-02-16 13:58:36 +01:00
Andrey Antukh
350663b7ce 🎉 Add support for alternative S3 compatible services
And also add support for all AWS regions (prevoiosly onlu eu-central-1)
was supported.
2022-02-16 13:58:19 +01:00
Andrey Antukh
f1db0fea03 ♻️ Refactor storage transaction management 2022-02-16 13:58:15 +01:00
Andrey Antukh
256ed7410f Add unique id (uuid) on each log entry 2022-02-16 11:58:43 +01:00
Andrey Antukh
09a4cb30ec 🐛 Fix unresolved symbol error introduced in prev merge 2022-02-16 11:29:30 +01:00
Andrey Antukh
aa3826c389 📎 Sort translations 2022-02-16 11:26:13 +01:00
Andrey Antukh
b91042c1e5 Merge remote-tracking branch 'weblate/develop' into translations 2022-02-16 11:24:56 +01:00
Andrey Antukh
7eed8c5ee5 Merge remote-tracking branch 'origin/main' into develop 2022-02-16 11:23:26 +01:00
Andrey Antukh
3207860374 🐛 Fix compatibility issues of some requires and shadow-cljs 2022-02-15 16:01:46 +01:00
Keunes
b3bb8b6692 📎 Update bug_report.md file
Make clearer what information should be provided when filing a bug report.
2022-02-15 15:54:59 +01:00
Andrey Antukh
5b8b13c94c ⬆️ Update shadow-cljs to 2.17.2 2022-02-15 15:07:29 +01:00
Andrey Antukh
e8426006e3 Update version.txt file 2022-02-15 13:27:08 +01:00
Andrey Antukh
116fafd0e1 📎 Minor log param naming change 2022-02-15 13:25:46 +01:00
Andrey Antukh
e9fe1800e0 Fix minor issues on session expiration handling 2022-02-15 13:25:06 +01:00
Andrey Antukh
82796822d1 🐛 Fix possible race condition on component rename and deletion 2022-02-15 12:26:36 +01:00
Andrey Antukh
ce61b783fb Minor improvements on telemetry task 2022-02-15 12:26:36 +01:00
Andrey Antukh
9b78b2a432 Improve error reporting on background tasks 2022-02-15 12:26:36 +01:00
Andrey Antukh
321b2c7c23 🐛 Fix error handling on s3 delete-in-bulk operation 2022-02-15 12:26:36 +01:00
Andrey Antukh
dee397615c 📎 Update changelog file 2022-02-15 12:26:36 +01:00
Andrey Antukh
ef9339f6f1 🐛 Fix unexpected exception on handling empty state on boolean calc 2022-02-15 12:26:36 +01:00
Alejandro
f7f32408fc Merge pull request #1577 from penpot/fix/radial-gradients
 Changed radial gradients to use objectBoundingBox
2022-02-14 12:26:43 +01:00
Andrey Antukh
d4e6992442 Merge remote-tracking branch 'origin/main' into develop 2022-02-12 17:36:19 +01:00
Andrey Antukh
420ece7005 📎 Increase *print-level* on error reporting. 2022-02-12 17:35:29 +01:00
Andrey Antukh
741d2b3f3c Merge remote-tracking branch 'origin/main' into develop 2022-02-12 17:33:28 +01:00
Andrey Antukh
c8bf319b39 Merge pull request #1567 from penpot/frame-snapshot-api
 Frame snapshot api
2022-02-12 16:09:03 +01:00
Pablo Alba
34df52be5f 🎉 Add frame thumbnail API 2022-02-12 16:08:46 +01:00
Pablo Alba
fc2399a885 Rotation to snap to 15º intervals with shift 2022-02-11 12:42:43 +01:00
alonso.torres
699ec93ca4 Changed radial gradients to use objectBoundingBox 2022-02-11 12:33:13 +01:00
Andrés Moya
10598063d1 🔧 Provisional change menu to staging landing page 2022-02-11 12:32:57 +01:00
Eva Marco
db1e9574cd Merge pull request #1568 from penpot/fix/gradient-problem
🐛 Fix problem with gradient handlers
2022-02-11 11:27:01 +01:00
Andrés Moya
af74a1575b 🐛 Clear authentication cookies when logged out 2022-02-11 10:07:03 +01:00
Eva
03242e1a9c 🐛 Fix ungroup typography when editing 2022-02-10 16:20:13 +01:00
Andrey Antukh
dcbd89ff7c Increase default max connection pool size to 60. 2022-02-10 15:12:35 +01:00
Andrey Antukh
2312561041 Temporaly disable parallel uploading of files on import 2022-02-10 15:12:35 +01:00
Andrey Antukh
b591fbecf0 🎉 Add health check api endpoint 2022-02-10 15:12:35 +01:00
Andrey Antukh
3fbb440436 Handle EOF on websocket write/ping operations 2022-02-10 15:12:35 +01:00
Andrey Antukh
d358185a04 💄 Minor cosmetic change on database logger processor 2022-02-10 15:12:35 +01:00
Andrey Antukh
8babb59f75 Process audit log events only if profile-id is known 2022-02-10 15:12:35 +01:00
Andrey Antukh
3461ec2281 Ignore EOF errors on writting streamed response 2022-02-10 15:12:35 +01:00
Andrey Antukh
3dd94bd362 🐛 Log correct deleted number value on recheck task 2022-02-10 15:12:35 +01:00
Andrey Antukh
827c2140b7 ♻️ Refactor error reporting and logging context formatting
The prev approach uses clojure.pprint without any limit extensivelly
for format error context data and all this is done on the calling
thread. The clojure.pprint seems very inneficient in cpu and memory
usage on pprinting large data structures.

This is improved in the following way:

- All formatting and pretty printing is moved to logging thread,
  reducing unnecesary blocking and load on jetty http threads.
- Replace the clojure.pprint with fipp.edn that looks considerably
  faster than the first one.
- Add some safe limits on pretty printer for strip printing some
  data when the data structure is very large, very deep or both.
2022-02-10 15:12:35 +01:00
Andrés Moya
5a5222a97a 🐛 Fix error getting file library 2022-02-10 13:17:57 +01:00
Andrés Moya
bea3699451 🐛 Fix error instantiating a component 2022-02-10 12:27:44 +01:00
alonso.torres
93174f54a3 Change menu to add show/hide ui 2022-02-10 09:41:50 +01:00
Eva
e1348725c1 🐛 fix error when posting an empty comment 2022-02-10 09:28:05 +01:00
Andrey Antukh
528839cde2 Merge pull request #1569 from penpot/dashboard-user-menu
Dashboard user menu and session cookie
2022-02-09 23:51:14 +01:00
Andrés Moya
c5c331ee30 Refactor user menu in dashboard 2022-02-09 15:52:04 +01:00
Eva Marco
69effa37a3 Merge pull request #1570 from penpot/fix/problem-with-typographies
🐛 Fix problem with typographies in assets
2022-02-09 15:48:34 +01:00
alonso.torres
4c7a781228 🐛 Fix problem with typographies in assets 2022-02-09 15:26:45 +01:00
Andrés Moya
62a67bdb94 🎉 Set a domain cookie to check for logged from landing page 2022-02-09 15:25:40 +01:00
alonso.torres
c5c0b36f28 Improved mouse collision detection for groups and text shapes 2022-02-09 15:17:59 +01:00
Andrés Moya
0d48c758df 📚 Add new contributor change 2022-02-09 15:16:19 +01:00
Andrés Moya
4856413b24 Merge branch 'rhcarvalho-zopflipng' into develop 2022-02-09 15:13:53 +01:00
Rodolfo Carvalho
a1586280a9 Compress PNG images using zopflipng
Add a helper script and compress existing PNG images with zopflipng.

Before
552K    total

After
428K    total

Signed-off-by: Rodolfo Carvalho
2022-02-09 15:11:46 +01:00
Andrés Moya
00950b2c97 📚 Add new contributor change 2022-02-09 15:07:05 +01:00
Andrés Moya
79666bd51a Merge branch 'rhcarvalho-remove-dangling-png' into develop 2022-02-09 14:48:07 +01:00
Rodolfo Carvalho
ca284a86a3 Remove dangling images
Clean up images that are no longer in use.

Removed in 50eb744c3b:
- frontend/resources/images/color-bar-library.png
- frontend/resources/images/color-bar-options.png

Removed in 0de4f9074d:
- frontend/resources/images/color-gamma.png

Removed in 196b4dd89b:
- frontend/resources/images/colorspecrum-400x300.png

Added in 35c172a06b but maybe never used:
- frontend/resources/images/favicon-preview.png

Removed in d93fa72e48:
- frontend/resources/images/pot.png
2022-02-09 13:55:19 +01:00
alonso.torres
ee5b341d0e 🐛 Fix problem with gradient handlers 2022-02-09 13:04:16 +01:00
Alejandro
85cab5031d Merge pull request #1564 from penpot/fix/missing_translation
🐛 Fixed missing translation texts
2022-02-09 11:26:35 +01:00
Eva
2f7029516b 🐛 Fixed missing translation texts 2022-02-09 11:14:24 +01:00
Andrey Antukh
a1da4d4233 ♻️ Refactor common.page.helpers namespace. 2022-02-08 15:30:13 +01:00
Andrey Antukh
24724e3340 📎 Add helpful require on user ns 2022-02-08 15:30:13 +01:00
Eva
048ab9a0fc 🐛 fix missing translace string 2022-02-08 15:17:40 +01:00
Eva
40b005f46e 🐛 fix color palette overflow 2022-02-08 15:11:06 +01:00
Alejandro
ae2a99acb0 Merge pull request #1558 from penpot/fix/problem-svg-import
🐛 Fix problem with svg icons
2022-02-08 12:49:52 +01:00
alonso.torres
a81b6db093 🐛 Fix problem with svg icons 2022-02-08 12:30:52 +01:00
alonso.torres
39b05f5f9f 🐛 Fix problem with selection rect 2022-02-08 12:11:56 +01:00
Andrey Antukh
979f61df99 Merge remote-tracking branch 'origin/main' into develop 2022-02-08 09:12:13 +01:00
Andrey Antukh
e665f4e285 🐛 Log correct deleted number value on recheck task 2022-02-08 00:18:48 +01:00
Andrey Antukh
2c25dfcf1b 📎 Add exec perms to build script 2022-02-07 23:42:26 +01:00
Andrey Antukh
0632028579 📎 Set version to 1.11.1-beta 2022-02-07 23:26:21 +01:00
Andrey Antukh
95b9085258 Merge pull request #1555 from penpot/fix/thumbnails_firefox_problem
🐛 Fix Firefox problem when rendering frames
2022-02-07 18:03:33 +01:00
alonso.torres
cdc91feb28 🐛 Fix Firefox problem when rendering frames 2022-02-07 17:48:51 +01:00
alonso.torres
4caf278da5 🐛 Fix problems with handoff layout 2022-02-07 16:34:31 +01:00
Andrey Antukh
809a3420c1 Merge pull request #1554 from penpot/feat/tablet-improvements
Tablet improvements
2022-02-07 15:42:55 +01:00
alonso.torres
af8e9058a3 Move selection with space 2022-02-07 15:32:27 +01:00
alonso.torres
2b1c8cafe9 Improved color picker 2022-02-07 15:18:30 +01:00
alonso.torres
1abcd5819b Enter in dashboard to open files 2022-02-07 15:18:30 +01:00
alonso.torres
76b34bb600 Workspace interactions improvements 2022-02-07 15:18:30 +01:00
alonso.torres
67c6a042a0 Improved incremental selection 2022-02-07 15:18:30 +01:00
alonso.torres
72c2a213b4 Curve tool improvements 2022-02-07 15:18:30 +01:00
alonso.torres
ec1cc8ec64 Adds new shortcut for zoom in 2022-02-07 15:18:30 +01:00
alonso.torres
fbbb079599 ♻️ Remove rx/first calls and replaced by safer rx/take 1 2022-02-07 15:18:30 +01:00
Eva
b8f2f3e34d Show recent fonts only on text edition area not in typographies 2022-02-07 15:06:05 +01:00
Alejandro
39b29ee3f0 Merge pull request #1552 from penpot/fix/shadow_type_text
🐛 Fix shadow type text in handoff section
2022-02-07 13:15:46 +01:00
Eva
5f6cb1e0d7 🐛 Fix shadow type text in handoff section 2022-02-07 13:04:52 +01:00
Andrey Antukh
46250e6fab ⬆️ Update nodejs version on docker images. 2022-02-07 11:40:53 +01:00
Alejandro Alonso
fc2a26f249 🎉 Add border radius support to image shapes 2022-02-07 11:33:23 +01:00
Andrey Antukh
341caa3489 🎉 Add docker images auxiliar build script. 2022-02-07 11:21:54 +01:00
Eva
38b7474f0b Add a little improvent in recent fonts selector 2022-02-07 09:34:22 +01:00
Andrey Antukh
c91e2d13c0 📎 Add temporal workaround on config.env file 2022-02-06 23:40:04 +01:00
Pablo Alba
7134bbf484 Disallow using same password as user email 2022-02-04 17:41:01 +01:00
Andrey Antukh
6b18b258a4 🐛 Set proper default http server host. 2022-02-04 16:02:51 +01:00
Eva
86e4826e48 Add configurable nudge amount 2022-02-04 15:15:48 +01:00
Andrey Antukh
6461ebe2b8 🔥 Remove unreachable code. 2022-02-04 15:04:47 +01:00
Andrey Antukh
bfb23ad60b ⬆️ Update backend and frontend clojure deps 2022-02-04 15:04:47 +01:00
Andrey Antukh
637d6a0076 ⬆️ Update common module deps 2022-02-04 15:04:47 +01:00
Andrey Antukh
cbb8d13570 ⬆️ Update frontend npm dependencies 2022-02-04 15:04:47 +01:00
Andrey Antukh
2a6ba79e9a Ignore EOF errors on writting streamed response 2022-02-04 15:04:47 +01:00
Andrey Antukh
1e0dacfe9b Add reusable helper for expound pretty printing 2022-02-04 15:04:47 +01:00
Andrey Antukh
b194c0c5d8 Merge pull request #1534 from penpot/feat/toolbars-redesign
Toolbars Redesign
2022-02-04 09:26:22 +01:00
alonso.torres
9789b7081a Post-review changes 2022-02-03 18:27:12 +01:00
alonso.torres
03052ddd28 Fixed hover on sidebar 2022-02-03 18:27:12 +01:00
alonso.torres
779f685f72 Update strings for the new tabs 2022-02-03 18:27:12 +01:00
alonso.torres
1dee767762 Selection area on rules 2022-02-03 18:27:12 +01:00
alonso.torres
5cac5eb26b New text typographies palette 2022-02-03 18:27:12 +01:00
alonso.torres
b26cbeccca Resizable color palette 2022-02-03 18:27:12 +01:00
alonso.torres
8d4612c683 🐛 Fix some problems with scroll into view for layers 2022-02-03 18:27:12 +01:00
alonso.torres
e352c70013 Move layers and assets to tabs 2022-02-03 18:27:12 +01:00
alonso.torres
8c3c9a8ca4 Refactor workspace header 2022-02-03 18:27:12 +01:00
alonso.torres
ada837f7e4 New rules styles, resize pages 2022-02-03 18:27:12 +01:00
alonso.torres
1599b2644a Resizeable panels 2022-02-03 18:27:12 +01:00
Alejandro Alonso
acc3d00fd5 🎉 Add stroke properties to image shape 2022-02-03 17:23:26 +01:00
Alejandro Alonso
0f459ede50 🐛 Fix issue in viewport-scrollbars 2022-02-03 13:24:51 +01:00
Pablo Alba
105cb6fa13 Enhance the behaviour of the artboards list on view mode 2022-02-03 11:52:04 +01:00
Pablo Alba
1797c702a7 Automatically open comments from dashboard notifications 2022-02-03 11:38:30 +01:00
Pablo Alba
5f580f10ca On user settings, hide the theme selector as long as we only have one theme 2022-02-03 11:26:45 +01:00
Andrey Antukh
bd359f42f5 📎 Add package-lock.json to .gitignore file 2022-02-02 19:17:51 +01:00
Andrey Antukh
34bf73210e 🔥 Remove package-lock.json file. 2022-02-02 19:14:12 +01:00
Andrey Antukh
f1db4aae35 Merge branch 'main' into develop 2022-02-02 16:23:11 +01:00
Andrey Antukh
7710ffcbf1 🐛 Fix issue on 400 error handler. 2022-02-02 15:31:54 +01:00
Andrey Antukh
e9f45a0d0a 🐛 Fix release modal. 2022-02-02 15:02:47 +01:00
Andrey Antukh
743c2c3385 Merge branch 'staging' 2022-02-02 14:29:30 +01:00
Andrey Antukh
6f714facf9 🐛 Fix many minor issues on telemetry task 2022-02-01 17:49:18 +01:00
Andrey Antukh
5f81c7bc2d Merge remote-tracking branch 'origin/staging' into develop 2022-02-01 16:14:52 +01:00
Pablo Alba
72b00fa9af On team settings set color of members count to black 2022-02-01 15:35:51 +01:00
Andrés Moya
449756a0e4 🐛 Fix ungroup a component leaves asterisk in layers 2022-02-01 15:32:50 +01:00
Andrey Antukh
75930a0ce9 📚 Minor changes on commit guidelines on CONTRIBUTING.md file 2022-02-01 14:25:50 +01:00
Eva
a2c3b0926b Add recent used fonts in font selection widget 2022-02-01 14:11:54 +01:00
Andrey Antukh
57666e9173 Minor improvements on http reporting on 400 responses 2022-02-01 13:53:10 +01:00
alonso.torres
37f4b83d96 🐛 Fix problem with hover shapes 2022-02-01 13:09:51 +01:00
elhombretecla
5576b7568c 🎉 Add new content for release dialog. 2022-02-01 13:03:02 +01:00
Eva Marco
99e067b863 Merge pull request #1523 from penpot/test-e2e-enter-dashboard
👷 e2e tests for dashboard
2022-02-01 12:47:29 +01:00
Pablo Alba
5103624fe0 👷 e2e tests for dashboard
Including test for signing/singup, projects, files, teams, and misc
2022-02-01 11:50:33 +01:00
Andrey Antukh
26e5d57ced 🐛 Fix incorrect alias on shape-attrs spec on workspace. 2022-01-28 16:19:30 +01:00
Andrey Antukh
b586f2552c Merge branch 'staging' into develop 2022-01-28 13:58:22 +01:00
Andrey Antukh
0fbcec667c 📎 Minor format change on changelog file. 2022-01-28 13:57:11 +01:00
Eva
f40c58c64a 💄 Remove dots at the end of each line in changes file in actual sprint 2022-01-28 11:40:22 +01:00
Eva
d66619fe6d 💄 Remove dots at the end of each line in changes file 2022-01-28 11:36:47 +01:00
Eva
5c1b007c1b Align item to it's parent 2022-01-28 10:54:31 +01:00
Pablo Alba
86c394f4ce Merge pull request #1514 from penpot/enhacement/add-profile-e2e-tests
👷 Add e2e test to profile area
2022-01-28 10:32:49 +01:00
Andrés Moya
90d130a3bc 📚 Remove unneeded section in changelog 2022-01-28 10:21:36 +01:00
Eva
f185836fd4 👷 Add e2e test to profile area 2022-01-28 10:20:48 +01:00
Andrey Antukh
4c851856ff Emit warning when an error is raised on formating body. 2022-01-27 17:40:03 +01:00
Andrey Antukh
bc2a0432b9 Allow connect to read-only databases. 2022-01-27 16:11:32 +01:00
Alejandro Alonso
f72e140327 Graphic tablet use improvements: add scroll bars 2022-01-27 16:02:40 +01:00
Andrey Antukh
a633ed3c9a More tweaks on the error reporter. 2022-01-27 15:17:44 +01:00
Andrey Antukh
a8a6882708 💄 Minor changes on repl script. 2022-01-27 15:00:42 +01:00
Andrés Moya
1b76ed97e1 🐛 Fix rotation when set to 0 again 2022-01-27 14:57:26 +01:00
Andrey Antukh
04f7169aef ♻️ Refactor and modularize all specs. 2022-01-27 13:03:44 +01:00
Andrés Moya
d83b362c9f 🐛 Fix "move to" menu when duplicated team or project names 2022-01-27 11:39:18 +01:00
Andrey Antukh
b1d55348dc Merge remote-tracking branch 'origin/staging' into develop 2022-01-26 18:13:48 +01:00
Andrey Antukh
f8a46c56e9 🎉 Add helper for offline validate files with specs. 2022-01-26 18:12:17 +01:00
Andrey Antukh
420525cdf0 🐛 Make the path command params optional. 2022-01-26 18:11:20 +01:00
Andrey Antukh
686cacd5ae Add truncate function to time ns on backend. 2022-01-26 18:10:47 +01:00
Andrey Antukh
0092806dda Prevent high cpu usage on reporting big errors. 2022-01-26 18:09:59 +01:00
Andrey Antukh
2f8c63505f 💄 Fix linter issues. 2022-01-26 14:45:22 +01:00
Andrey Antukh
d892be4971 💄 Fix linter issues. 2022-01-26 14:44:01 +01:00
Andrey Antukh
59ed833abc Merge remote-tracking branch 'origin/staging' into develop 2022-01-26 14:24:34 +01:00
Andrey Antukh
110fb2e8db Minor improvements on error reporting.
Add missing expound.
2022-01-26 14:18:44 +01:00
Andrey Antukh
9f7a04e330 🐛 Fix unexpected exception on handling export data validation. 2022-01-26 14:08:54 +01:00
Andrey Antukh
ccbc519c04 💄 Minor cosmetic changes on internal spec naming. 2022-01-26 12:59:26 +01:00
Eva
036860b91b 🐛 fix typo in zoom options 2022-01-26 12:59:02 +01:00
Eva
7ac2a55315 🐛 Fix header z-index in viewer mode fullscreen 2022-01-26 12:58:27 +01:00
Andrey Antukh
f6cf8d2b1b 🐛 Relax text shape content spec validation.
Allow to be null in some circumstances.
2022-01-26 12:56:42 +01:00
Andrey Antukh
16788d7ab7 🐛 Make a path command params property nilable on spec. 2022-01-26 12:41:54 +01:00
Andrey Antukh
3142d48f3c 💄 Minor cosmetic change on changelog file. 2022-01-26 12:19:10 +01:00
Andrey Antukh
e1a88ae899 Merge branch 'staging' into develop 2022-01-26 12:16:50 +01:00
Andrey Antukh
a2e80cee47 📚 Update changelog file. 2022-01-26 12:09:27 +01:00
alonso.torres
5f14769abc 🐛 Fix problem with hover-ids 2022-01-26 11:49:01 +01:00
Eva
406c4063de Add select layer to contest menu 2022-01-26 11:49:01 +01:00
Andrey Antukh
b4bc30e56f Improve shape specs and add missing specs for content. 2022-01-26 11:30:50 +01:00
Eva
3482d6c303 Add Update component in bulk option 2022-01-26 10:53:31 +01:00
Andrés Moya
9dfd5c0bcc 🐛 Avoid empty names in projects, files and pages 2022-01-26 09:31:55 +01:00
Eva
b2b3de2782 🐛 fix typo in zoom options 2022-01-26 09:30:10 +01:00
Eva
50c20e2290 🐛 Fix header z-index in viewer mode fullscreen 2022-01-26 09:30:10 +01:00
Andrey Antukh
a10dcbd918 Merge pull request #1508 from penpot/feat/guides
Guides
2022-01-25 14:58:36 +01:00
alonso.torres
6e0433a34b Review changes 2022-01-25 14:54:13 +01:00
alonso.torres
8833e19c7f 🐛 Small fixes for guides 2022-01-25 14:17:13 +01:00
alonso.torres
663358bdae 📚 Update changelog 2022-01-25 14:17:13 +01:00
alonso.torres
d9b1c0e2e6 More tests for snap data 2022-01-25 14:17:13 +01:00
alonso.torres
39334b81ac Guides cursors 2022-01-25 14:17:13 +01:00
alonso.torres
62f7323acf Move frames with guides move the guides 2022-01-25 14:17:13 +01:00
alonso.torres
3f89baa1fe Move guides together with frames 2022-01-25 14:17:13 +01:00
alonso.torres
f0fd1bb40c Add menu option for guides 2022-01-25 14:17:13 +01:00
alonso.torres
f303d7b33e Add support to export/import guides 2022-01-25 14:17:13 +01:00
alonso.torres
d356a3fa56 Spec definition for guides 2022-01-25 14:17:13 +01:00
alonso.torres
64e7cad292 ♻️ Redone the snap calculation and added guides 2022-01-25 14:17:13 +01:00
alonso.torres
0766938f98 Add guides UI 2022-01-25 14:17:13 +01:00
alonso.torres
918829ad0a Improve import with parallel media upload 2022-01-25 11:30:32 +01:00
Pablo Alba
540e1fc492 🐛 Fix missing entry of e2e fixtures on gitignore 2022-01-25 11:11:51 +01:00
alonso.torres
ac30754a96 🐛 Fix problem with import 2022-01-25 10:28:04 +01:00
Andrey Antukh
b470a0ebbf 🐛 Add missing dependency update (lost in some merge). 2022-01-24 22:22:43 +01:00
Andrey Antukh
69daee4137 Merge branch 'staging' into develop 2022-01-24 16:21:01 +01:00
Andrey Antukh
3d6c903273 Improve path rendering performance. 2022-01-24 16:14:28 +01:00
Andrey Antukh
bc04a0b9f0 🐛 Fix incorrect behavior of trim-file-data. 2022-01-24 16:08:52 +01:00
Andrey Antukh
bfef94dbfb Merge branch 'main' into staging. 2022-01-24 16:07:47 +01:00
Andrey Antukh
9e06275945 🐛 Prevent exception on broken path. 2022-01-24 15:41:44 +01:00
Andrey Antukh
6410bcf3c8 Minor change on debug endpoint. 2022-01-24 15:13:02 +01:00
Andrés Moya
20baf02726 🐛 Normalize zoom levels in workspace and viewer 2022-01-24 13:30:11 +01:00
Andrey Antukh
8f6fdf361b Improve path rendering performance. 2022-01-24 13:23:09 +01:00
Andrey Antukh
ffa134f824 🐛 Fix incorrect behavior of trim-file-data. 2022-01-24 13:23:09 +01:00
Andrés Moya
b4bf6b9235 🐛 Fix zoom in/out after fit or fill in viewer 2022-01-24 11:04:01 +01:00
Andrés Moya
c3e37b0e04 🐛 Fix auto hide header in viewer full screen 2022-01-24 11:04:01 +01:00
Andrés Moya
374bba763b 🐛 Fix edit blur attributes for multiselection 2022-01-24 11:04:01 +01:00
Pablo Alba
2d00e68b78 👷 Tests e2e for drawing basic forms 2022-01-24 10:56:56 +01:00
Andrey Antukh
9a965dc693 Merge remote-tracking branch 'origin/staging' into develop 2022-01-21 14:54:32 +01:00
Andrey Antukh
b96ad5b37f 💄 Minor cosmetic change on get-parents fn. 2022-01-21 14:47:13 +01:00
Andrey Antukh
07a0f67b32 💄 Minor cosmetic change on reg-object. 2022-01-21 14:47:13 +01:00
Andrey Antukh
c754a757eb Upgrade rumext and add some examples of syntax sugar. 2022-01-21 14:47:13 +01:00
Andrey Antukh
dcd53183a8 📎 Simplify distribute-objects fn impl. 2022-01-21 14:47:13 +01:00
Andrés Moya
5641132eb9 Reload viewer and reset starting frame from workspace 2022-01-21 14:42:11 +01:00
Andrés Moya
b4c23f3554 🐛 Display animations only for allowed actions 2022-01-21 14:41:21 +01:00
Andrés Moya
7385445aa8 💄 Format translation files and remove unneeded script 2022-01-21 14:40:37 +01:00
Eva
5409f83167 Divide file menu options in semantically groups 2022-01-21 12:36:09 +01:00
Voxybuns
43951aad69 🌐 Add translations for: French.
Currently translated at 79.9% (694 of 868 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2022-01-20 21:55:48 +01:00
Rubén
9681d8c805 🌐 Add translations for: Catalan.
Currently translated at 98.8% (858 of 868 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2022-01-20 21:55:48 +01:00
Andrey Antukh
ff4d3cfeac 🐛 Fix issue on fressian blob encoding. 2022-01-20 16:57:20 +01:00
Andrey Antukh
8e4338c1c9 🐛 Minor fix on version parsing impl. 2022-01-20 14:47:28 +01:00
Andrey Antukh
c27d709b6b Merge remote-tracking branch 'origin/staging' into develop 2022-01-20 14:30:16 +01:00
Andrey Antukh
8caa289586 Fix version logging on exporter. 2022-01-20 14:27:03 +01:00
Andrey Antukh
f7568f6348 Minor improvements on exporter. 2022-01-20 14:16:58 +01:00
Pablo Alba
6a6f079a84 👷 Create firsts e2e tests 2022-01-20 14:10:48 +01:00
Andrey Antukh
0f04b86316 Improve performance on import .penpot files. 2022-01-20 11:47:17 +01:00
Andrey Antukh
1dae8a0771 📎 Minor improvement on error logging on worker. 2022-01-20 11:47:17 +01:00
Andrey Antukh
9bc816fc1c 🐛 Remove duplicate audit action reporting. 2022-01-20 11:47:17 +01:00
Andrey Antukh
11ea4c7aec 🐛 Fix raw logging on cljs. 2022-01-20 11:47:17 +01:00
Andrey Antukh
0c53aa158b 🐛 Fix profile image generation issue. 2022-01-20 11:47:17 +01:00
Andrey Antukh
072e4a4f98 Revert some memoizes on page/helpers.
And improves base performance of get-children and
remove duplicated code. Also optimize the use
of get-children on react components with corresponding
use-memo hook.
2022-01-20 11:47:17 +01:00
Andrey Antukh
1b3b3b0ee6 Minor naming change on page query parameters. 2022-01-20 11:47:17 +01:00
Andrey Antukh
d1e4f0de3e Improve performance and resolve render issues on exporter. 2022-01-20 11:47:17 +01:00
Andrey Antukh
fd3f304e07 📎 Increase default devenv jvm heapsize. 2022-01-20 11:47:17 +01:00
alonso.torres
9e7551551f 🐛 Fix problem with SVG's import/export 2022-01-19 16:07:44 +01:00
Andrés Moya
36bb5cbe01 🐛 Fix several questions about frame background export 2022-01-19 11:01:23 +01:00
Alejandro Alonso
f754c12e8c Limit pasted object position to container boundaries 2022-01-18 17:07:46 +01:00
Andrey Antukh
6f5916e334 ♻️ Minor reorganization on export & render namespaces. 2022-01-18 16:48:17 +01:00
Andrés Moya
13dd1cb6b6 🐛 Disable embed images in export 2022-01-18 16:48:17 +01:00
Andrey Antukh
eb4e7e0f0c 🐛 Fix dashboard grid thumbnails cache invalidation. 2022-01-18 16:48:17 +01:00
Andrey Antukh
7afb3e2c6d Stream transit encoding to the response output-stream.
Instead of in-memmory encoding. This will prevent many OOM errors.
2022-01-18 16:48:17 +01:00
Andrey Antukh
9cf5258053 Improve logging on worker and import process. 2022-01-18 16:48:17 +01:00
Andrey Antukh
56dfdaecb7 💄 Add cosmetic improvements on project_menu component. 2022-01-18 16:48:17 +01:00
Andrey Antukh
1d174a4379 🐛 Fix unexpected exception on time equiv impl. 2022-01-18 16:48:17 +01:00
Andrés Moya
2aeded1940 🐛 Show view mode buttons correctly centered in viewer 2022-01-18 13:26:09 +01:00
Andrés Moya
c23691284c 🐛 Show correctly group types label in handoff 2022-01-18 13:26:09 +01:00
Andrey Antukh
f7f6515561 ⬆️ Update exporter dependencies. 2022-01-18 11:25:06 +01:00
Andrey Antukh
438c14d29d ⬆️ Update exporter dependencies. 2022-01-18 10:58:45 +01:00
Andrés Moya
87351000ae 🐛 Avoid marking component as touched when moving into a group 2022-01-18 09:39:02 +01:00
Pablo Alba
0895a69bac Add an option to hide artboards names on the viewport 2022-01-18 09:38:03 +01:00
Eva
4285972e41 Add new zoom options in workspace and viewer mode 2022-01-17 17:18:12 +01:00
Pablo Alba
d33542c4dc Allow decimals on stroke width and positions 2022-01-17 15:52:32 +01:00
Andrey Antukh
bda97adf4f Fix minor issues on error reporting. 2022-01-17 13:09:15 +01:00
Andrey Antukh
b6f460940f ⬆️ Update dependencies. 2022-01-17 13:09:15 +01:00
Alejandro Alonso
aa0e8ed8d6 Pressing enter to exit the fields 2022-01-17 10:00:28 +01:00
Yaron Shahrabani
b99fa16b96 🌐 Add translations for: Hebrew.
Currently translated at 100.0% (868 of 868 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2022-01-15 17:53:28 +01:00
Oğuz Ersen
630d7a3220 🌐 Add translations for: Turkish.
Currently translated at 99.7% (866 of 868 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2022-01-15 17:53:27 +01:00
Andrey Antukh
03c91664cb 🐛 Fix session invalidation issue on password change. 2022-01-14 13:44:58 +01:00
Andrey Antukh
13773d829a Merge pull request #1473 from penpot/alotor/bugfixes_fixes
Bugfixes
2022-01-14 13:33:23 +01:00
Alejandro Alonso
d9e6e9b017 Ability to ignore background when exporting an artboard 2022-01-14 13:31:28 +01:00
alonso.torres
5d8982c734 🐛 Fix transform text 2022-01-14 12:10:55 +01:00
alonso.torres
f13c82da2a 🐛 Fix tab to apply changes in inputs 2022-01-14 11:58:56 +01:00
alonso.torres
363b0ba997 🐛 Fix problems with gradient and libraries 2022-01-14 11:57:07 +01:00
Alejandro Alonso
a4c45942c9 Fixing show color hex or name on hover 2022-01-14 11:57:07 +01:00
Andrey Antukh
a86e3a8636 📎 Sort translation files. 2022-01-14 11:32:43 +01:00
Andrey Antukh
db61d579e6 Merge remote-tracking branch 'weblate/develop' into translations 2022-01-14 11:30:25 +01:00
Andrey Antukh
e6e3f2cbd5 Add debugging pages for download/upload file data. 2022-01-14 10:54:57 +01:00
Andrey Antukh
ffdd539233 Minor improvements on error reporting mechanism. 2022-01-14 10:54:57 +01:00
Andrey Antukh
ef17af38a1 🎉 Add jvm-repl script to frontend directory. 2022-01-14 10:54:57 +01:00
Andrey Antukh
6dedfaea2f 📎 Minor changes on :reg-objects impl. 2022-01-14 10:54:57 +01:00
Andrey Antukh
cbb3783d84 📎 Add performance related helpers. 2022-01-14 10:54:57 +01:00
Eva
327c095d79 add V as shortcut to exit path editor 2022-01-13 22:39:05 +01:00
Andrey Antukh
88e222420c Merge pull request #1470 from penpot/alotor/bugfixes
Bugfixes
2022-01-13 18:33:32 +01:00
alonso.torres
045eec072b 🐛 Fix import/export with SVG edge cases 2022-01-13 18:28:47 +01:00
alonso.torres
5f3c381f88 🐛 Fix thumbnail not taking frame blending mode 2022-01-13 15:56:01 +01:00
alonso.torres
6090cf6c68 🐛 Fix problem with imported svgs with filters 2022-01-13 15:15:55 +01:00
alonso.torres
9ac4239c11 🐛 Restored rules color 2022-01-13 10:09:03 +01:00
alonso.torres
da2a3b6883 🐛 Fix handoff text with opacity 2022-01-13 09:56:46 +01:00
alonso.torres
b4accaad07 🐛 Fix scroll jumps in handoff mode 2022-01-13 09:56:46 +01:00
alonso.torres
edaef0096a 🐛 Improved copy for import/export files 2022-01-13 09:56:46 +01:00
alonso.torres
afba5ff083 🐛 Fix issues when updating selrect in paths 2022-01-13 09:56:46 +01:00
alonso.torres
8b8d614150 🐛 Fixed problem with stroke 2022-01-13 09:30:21 +01:00
Alejandro Alonso
090dbfda10 Upload/dismiss all custom fonts at once 2022-01-12 20:00:24 +01:00
Alejandro Alonso
04f5a6a9f9 Show color hex or name on hover 2022-01-12 18:20:31 +01:00
Andrey Antukh
d8311ac3fa Merge pull request #1462 from penpot/adding-prettier-to-ci
 Adding prettier to ci
2022-01-12 14:25:50 +01:00
Andrey Antukh
9c7f4dfd98 Merge pull request #1452 from penpot/bugfixes
Bugfixes
2022-01-12 14:24:24 +01:00
alonso.torres
8da66e1599 🐛 Fix problem when importing a file with grids 2022-01-12 13:47:50 +01:00
alonso.torres
2927b0cfc6 🐛 Fix default page id in workspace 2022-01-12 13:30:52 +01:00
alonso.torres
4663c296cd 🐛 Fix blur input field when click on viewport 2022-01-12 13:30:52 +01:00
alonso.torres
9403f8fd6e 🐛 Fix lossing changes when changing selection and an input was already changed 2022-01-12 13:13:28 +01:00
alonso.torres
badb5c6a9b 🐛 Fix keep name of component equal to the shape name 2022-01-12 13:13:27 +01:00
alonso.torres
e5430259e9 🐛 Changing pages while comments activated will not close the panel 2022-01-12 13:12:54 +01:00
alonso.torres
50fd44d3f2 🐛 Fix division by zero in bool operation 2022-01-12 13:12:16 +01:00
Andrés Moya
a8249b73b6 🐛 Fix nav to comments in a different page 2022-01-12 13:09:11 +01:00
Andrey Antukh
a15f867059 🐛 Fix open in new tab action on dashboard. 2022-01-12 13:00:50 +01:00
Andrey Antukh
4216e2e92b Properly set host on http server. 2022-01-12 12:42:11 +01:00
Alejandro Alonso
8ef20be9bd Adding prettier to ci 2022-01-12 12:32:06 +01:00
Alejandro Alonso
6413c9dddd Apply prettier to resources styles 2022-01-12 11:49:03 +01:00
Andrey Antukh
eb10f075b9 📎 Add some excludes to uber task. 2022-01-12 11:21:25 +01:00
Andrey Antukh
cd55ed7c8d 📎 Minor improvement on css on error report template. 2022-01-12 10:55:47 +01:00
Andrey Antukh
2fb96a1b7d 📎 Add debug to ws messages. 2022-01-12 10:55:47 +01:00
Andrey Antukh
c48da3d316 ♻️ Refactor backend bundle build process.
Now the final artifact is a single, compiled uberjar.
It considerably improves startup speed.
2022-01-12 10:55:47 +01:00
Andrey Antukh
9488a9a1ad Increase default upload size on docker imates. 2022-01-12 10:55:47 +01:00
Andrey Antukh
2feb22d3bd 🐛 Fix unexpected default cookies behavior on redirectiong to penpot.
The SameSite=Strict on chrome behaves differently than in Firefox and
makes the top-level url redirect not sending cookies if the user is
redirected from other page to penpot. The SameSite=Lax fixes the issue.
2022-01-12 10:55:47 +01:00
Andrey Antukh
f74569506e ⬆️ Update devenv dockerfile. 2022-01-12 10:55:47 +01:00
Andrés Moya
6633d0b4fb Right click on frame title to open its menu 2022-01-11 16:02:50 +01:00
Andrey Antukh
6fb35b40d7 Merge pull request #1445 from penpot/add-artboard-selection
 Add artboard selection
2022-01-11 16:02:12 +01:00
Alejandro Alonso
614d699098 Add artboard selection 2022-01-11 14:03:07 +01:00
Andrés Moya
8f4fbff40f 💄 Set consistent Login label 2022-01-10 16:58:15 +01:00
Andrés Moya
aaf8d2a233 🐛 Correct animations overflow 2022-01-10 16:02:36 +01:00
Andrey Antukh
0eb2336bc6 Merge pull request #1449 from penpot/bugfixes
Bugfixes
2022-01-10 15:36:59 +01:00
Andrey Antukh
f9cc9164b3 Merge pull request #1450 from penpot/fix-interactions-header
🐛 Fix viewer header controls when navigating from workspace
2022-01-10 15:31:28 +01:00
Andrés Moya
238ec60f89 🐛 Fix viewer header controls when navigating from workspace 2022-01-10 14:10:29 +01:00
alonso.torres
363a82d068 🐛 Fix decimal numbers in export viewbox 2022-01-10 13:32:29 +01:00
alonso.torres
4360c1fe4b 🐛 Improved behaviour on text options when not text is selected 2022-01-10 13:32:29 +01:00
alonso.torres
1d575ece06 🐛 Allow import to continue from recoverable failures 2022-01-10 13:32:29 +01:00
alonso.torres
d246788a35 🐛 Fix default state in viewer 2022-01-10 13:32:29 +01:00
alonso.torres
e9fa04dd1b 🐛 Fix problem with styles in the viewer 2022-01-10 13:32:29 +01:00
alonso.torres
8e57932966 🐛 Fix problem with multiple exports 2022-01-10 13:32:29 +01:00
alonso.torres
51ea354bcb 🐛 Fix problem when resizing texts inside groups 2022-01-10 13:32:29 +01:00
alonso.torres
6334520c66 🐛 Fix dotted style in strokes 2022-01-10 13:32:29 +01:00
alonso.torres
6354883a6f 🐛 Fix line-height/letter-spacing inputs behaviour 2022-01-10 13:32:29 +01:00
alonso.torres
477f553675 🐛 Fix problem with booleans 2022-01-10 13:32:29 +01:00
Eva
1ded4b2b28 🐛 Remove gradient if any when applyin solid color from library 2022-01-10 12:33:21 +01:00
eva
16c4116c15 🐛 fix enter key as a way to exit path editing mode 2022-01-07 15:51:50 +01:00
eva
f5cfbce1c2 🐛 Fix add fill and stroke color from palette to groups and components 2022-01-07 15:51:50 +01:00
eva
7bbf98dfb1 🐛 Fix default project name in dashboard Move to option 2022-01-07 15:51:50 +01:00
eva
533cac7881 🐛 Fix text inputs to allow negative values 2022-01-07 15:51:50 +01:00
eva
6afc734e91 🐛 Fix typo in handoff tooltip 2022-01-07 15:51:50 +01:00
eva
c4fb826d89 🐛 Fix crash when pressing Shift 1 in an empty file 2022-01-07 15:51:50 +01:00
Alejandro Alonso
1321bdeac5 Add opacity shortcuts 2022-01-07 11:31:21 +01:00
Alejandro Alonso
e0b7001a09 🐛 Fix default color fill for textx 2022-01-05 11:19:25 +01:00
eva
88120b83bd change reference to issue 2022-01-03 17:29:51 +01:00
eva
a952f7369c Add move shortcut 2022-01-03 17:16:03 +01:00
eva
d4fab3b46c Add alt as mod-key to add stroke color to a shape from color in menu library 2022-01-03 16:39:40 +01:00
eva
06b3499e7d Add detach components in bulk option 2022-01-03 13:43:11 +01:00
Eva Marco
fdd66bd513 Merge pull request #1430 from penpot/bugfixes
Bugfixes
2022-01-03 10:46:22 +01:00
alonso.torres
3b5aaf21fa 🐛 Fix problem when resizing texts 2022-01-03 10:00:17 +01:00
eva
59c46833ed Add penpot look and feel to multiuser pointers 2022-01-03 09:35:46 +01:00
alonso.torres
aee35cb456 🐛 Fix lock/hide elements in context menu when multiples shapes selected 2022-01-03 09:14:58 +01:00
alonso.torres
4a55ee2965 🐛 Fix problem exporting shapes from handoff mode 2022-01-03 09:14:58 +01:00
alonso.torres
4b490e3ca4 🐛 After team onboarding importing a file will import into the team drafts 2022-01-03 09:14:58 +01:00
alonso.torres
6727717d1a 🐛 Fix problem with join nodes 2022-01-03 09:14:58 +01:00
alonso.torres
d08891cffa 🐛 Disable running frontend tests in node 2022-01-03 09:10:18 +01:00
Andrey Antukh
799a83ba73 🔥 Remove unused import. 2021-12-31 13:47:49 +01:00
Andrey Antukh
261724e555 📎 Fix common tests. 2021-12-31 13:46:13 +01:00
Andrey Antukh
10e7d660ef Merge branch 'main' into develop 2021-12-31 13:23:42 +01:00
Andrey Antukh
bdfea7cda5 📎 Update version.txt file. 2021-12-31 13:04:15 +01:00
Andrey Antukh
fdb1c5e1f9 📎 Minor changes on error report http handler. 2021-12-31 12:24:46 +01:00
alonso.torres
71734df489 Backport changes from develop. 2021-12-31 12:06:15 +01:00
Andrey Antukh
071b81eadd ⬆️ Update dependencies. 2021-12-31 00:21:38 +01:00
Andrey Antukh
2abe3fde71 Remove unused stacktrace from commit-chages event. 2021-12-31 00:02:19 +01:00
Andrey Antukh
27e64ccaa8 🔥 Remove unused code. 2021-12-30 23:53:33 +01:00
Andrey Antukh
c9185f265c Add error report list template. 2021-12-30 23:51:39 +01:00
Andrey Antukh
79e5716f36 📎 Fix linter issues. 2021-12-30 19:43:05 +01:00
Andrey Antukh
9f0e156916 Improve error reporting. 2021-12-30 19:39:32 +01:00
Andrey Antukh
d24d45f4cb Terminate connection if incoming message cant be parsed. 2021-12-30 16:28:08 +01:00
Andrey Antukh
bf55250ae9 :sparkles Minor changes on websockets error handling. 2021-12-30 16:25:50 +01:00
Andrey Antukh
36016ad9ef Store changes on file_change table as vector. 2021-12-30 16:02:06 +01:00
Andrey Antukh
bf66b81702 Move dbg error http entrypoint handler to debug ns. 2021-12-30 16:01:36 +01:00
Andrey Antukh
758ffbf217 Add authentication to dbg entry points. 2021-12-30 16:00:55 +01:00
Andrey Antukh
f24563503a Parametrice file change snapshoting. 2021-12-30 13:03:49 +01:00
alonso.torres
a2dbc40571 🐛 Fixes problem with mov-objects 2021-12-30 13:03:49 +01:00
Andrey Antukh
a096b0777f 📎 Minor changes on debug ns. 2021-12-30 13:03:28 +01:00
Andrey Antukh
87690a534c 🎉 Add missing files. 2021-12-30 11:45:44 +01:00
Andrey Antukh
a70e416b0b Add more debug handlers. 2021-12-30 11:37:09 +01:00
alonso.torres
cd1170c543 Add a debug option to apply changes 2021-12-30 11:19:46 +01:00
Andrey Antukh
2962dc1faa Merge pull request #1429 from penpot/cache-thumbnails-v2
 Cache thumbnails with browser cache
2021-12-29 13:03:40 +01:00
alonso.torres
535c1fd007 Cache thumbnails with browser cache 2021-12-29 12:59:17 +01:00
Andrey Antukh
2bd94aff0e 🐛 Fix wring metrics usage on websocket module. 2021-12-29 12:55:41 +01:00
Andrey Antukh
9ea90c3400 🐛 Fix unexpected exception on websockets. 2021-12-29 12:16:48 +01:00
alonso.torres
0ac5d85117 🐛 Rollback thumbnail cache 2021-12-29 11:40:37 +01:00
Andrey Antukh
d3a83142ae Merge pull request #1428 from penpot/performance
 Improved thumbnails handling
2021-12-29 11:33:39 +01:00
alonso.torres
d5886123d8 Improved thumbnails handling 2021-12-29 11:21:57 +01:00
Andrey Antukh
dea090e7d3 📚 Update version.txt file. 2021-12-29 11:17:55 +01:00
Andrey Antukh
ba5e345677 Merge branch 'staging' 2021-12-29 11:17:06 +01:00
Andrey Antukh
13ae7b0976 📚 Update changelog. 2021-12-29 11:16:04 +01:00
Andrey Antukh
39c7bfb49f ⬆️ Finally update the prometheus client dependency. 2021-12-29 09:52:32 +01:00
Andrey Antukh
8479a6581d Make matrix use native doubles.
Increases 300x the performance of multiply on the JVM platform.
2021-12-29 09:52:32 +01:00
Andrey Antukh
e5885e83eb Add missing type hints on Matrix multiply function. 2021-12-29 09:52:32 +01:00
Andrey Antukh
914b41fcd4 🐛 Properly handle missing log/error id on database logger. 2021-12-29 09:52:32 +01:00
Andrey Antukh
224aa5b89a 🐛 Properly handle errors on body parsing middleware. 2021-12-29 09:52:32 +01:00
Andrey Antukh
01c89f6554 🐛 Set proper return value on validation error handler. 2021-12-29 09:52:32 +01:00
Andrey Antukh
f0e1bc1d59 🔥 Remove unused code. 2021-12-29 09:52:32 +01:00
Andrey Antukh
7b487e1bc3 📎 Fix unrelated linter issues. 2021-12-29 09:52:32 +01:00
Andrey Antukh
c394495a26 ♻️ Refactor websocket layer.
This commit replaces rj9a with funcool/yetti ring adapter.
Cleans the websocket api and makes it fully asynchronous.
Also a common websocket protocol abstraction that will allow
more easy path for creating new websocket based services.
2021-12-29 09:52:32 +01:00
eva
6dae420254 Add open components, and scroll into view to show main component acction 2021-12-28 16:19:07 +01:00
Andrey Antukh
c69d7f50a3 Merge remote-tracking branch 'origin/staging' into develop 2021-12-28 13:48:16 +01:00
elhombretecla
e9c654f30d Minor enhacements on onboarding modal. 2021-12-28 11:34:21 +01:00
Andrey Antukh
ae9b95f81b Merge pull request #1424 from penpot/performance
Performance improvements
2021-12-28 11:32:55 +01:00
Andrey Antukh
c240b69b5a 📎 Minor changes on error report template. 2021-12-28 11:19:38 +01:00
alonso.torres
493a7680e0 Improve interactions and after-review fixes 2021-12-28 11:12:33 +01:00
alonso.torres
c28a2acfc7 🐛 Fixes tests 2021-12-28 09:18:33 +01:00
alonso.torres
60af960f42 Thumbnail cache on dashboard 2021-12-28 09:18:33 +01:00
alonso.torres
4c86d5cfe3 🐛 Fixes some issues with bool shapes 2021-12-28 09:18:33 +01:00
alonso.torres
99a6142134 Improves boolean performance 2021-12-28 09:18:33 +01:00
alonso.torres
b2211aec59 Change resize to use DOM transformations 2021-12-28 09:18:33 +01:00
alonso.torres
fa09fff2b5 Performance improvements 2021-12-28 09:18:33 +01:00
Andrey Antukh
0204cdab83 🐛 Revert rj9a dep update. 2021-12-28 09:15:31 +01:00
Andrey Antukh
445195e9eb ⬆️ Update dependencies. 2021-12-27 11:55:42 +01:00
Andrey Antukh
7f5b0f359c Merge remote-tracking branch 'origin/staging' into develop 2021-12-27 11:42:44 +01:00
Andrey Antukh
d8f4176487 📎 Minor fixes on versions. 2021-12-27 11:41:13 +01:00
Andrey Antukh
220ab22115 🐛 Fix error reporting hook. 2021-12-27 11:30:22 +01:00
Andrey Antukh
67776c46d6 🐛 Fix NPE on email complains checking. 2021-12-27 11:13:08 +01:00
Andrey Antukh
2d118ecc65 Merge remote-tracking branch 'origin/staging' into develop 2021-12-27 09:50:15 +01:00
Andrey Antukh
4bc2d7444d 📎 Minor changes on dev tools. 2021-12-27 09:32:20 +01:00
Andrey Antukh
5c6d72b353 Improve logging performance and format. 2021-12-24 12:40:44 +01:00
Andrey Antukh
1839397ebc Minor enhacements on log processing. 2021-12-23 18:36:58 +01:00
Andrey Antukh
0ee34637f5 💄 Improve json namespace API (and fix linter). 2021-12-23 00:06:10 +01:00
Andrey Antukh
c6054f7ab2 💄 Improve json namespace API (and fix linter). 2021-12-23 00:04:37 +01:00
Andrey Antukh
9554dfbc5e :lisptick: Cosmetic changes. 2021-12-22 19:04:32 +01:00
Andrey Antukh
98d5789b1b :lisptick: Cosmetic changes. 2021-12-22 19:04:03 +01:00
Andrey Antukh
0cad1a1e7e Merge remote-tracking branch 'origin/staging' into develop 2021-12-22 18:49:46 +01:00
Andrey Antukh
31c07274cd 📎 Increase default session expiration to 15 days. 2021-12-22 18:44:49 +01:00
Andrey Antukh
37a736339e 🔥 Remove ALPHA and BETA batges. 2021-12-22 18:41:06 +01:00
Andrey Antukh
869abcc835 🐛 Fix incorrect grid calculation when size is 1. 2021-12-22 18:38:22 +01:00
Andrey Antukh
a6f05ea8c2 💄 Minor syntax cosmetic changes. 2021-12-22 18:37:29 +01:00
Andrey Antukh
6812099900 Simplify frames selection mechanism. 2021-12-22 18:37:08 +01:00
Andrey Antukh
53e6d7ef2a 🐛 Fix numeric-input component. 2021-12-22 17:06:59 +01:00
Andrey Antukh
c2f604cd01 Properly use take-until on shape movement streams. 2021-12-22 17:06:16 +01:00
Andrey Antukh
888ffa1bcd Merge remote-tracking branch 'origin/staging' into develop 2021-12-22 16:10:24 +01:00
Andrey Antukh
d06cfed50e 🐛 Add missing import. 2021-12-22 15:01:46 +01:00
Andrey Antukh
e06d063946 📎 Remove ALPHA label from feedback button. 2021-12-22 14:59:39 +01:00
Andrey Antukh
634ec1b113 Ensure valid messages on zmq listener. 2021-12-22 14:28:09 +01:00
Andrey Antukh
0bf883d5b2 📎 More updates to logging deps. 2021-12-22 14:09:23 +01:00
Andrey Antukh
c6d0e0124f ⬆️ Update log4j2 dependency to 2.17.0 2021-12-22 11:34:07 +01:00
Andrey Antukh
ce115c53e2 📎 Minor fixes on repl script. 2021-12-22 11:33:53 +01:00
Andrey Antukh
7014bc7a3c 🐛 Fix issue when typography name is empty. 2021-12-22 11:03:11 +01:00
Andrey Antukh
219f9c478d 🎉 Add version 4 of blob encoding.
The version 4 starts using the hight performance fressian
binary encoding with very lightweight compression layer.
2021-12-21 16:19:25 +01:00
Andrey Antukh
a9904c6ada Merge pull request #1386 from penpot/animations
Animations
2021-12-21 15:47:51 +01:00
Andrés Moya
81cbc33dbb 🎉 Add animations to interactions 2021-12-21 15:46:52 +01:00
eva
24062beebe 🐛 fix minor errors 2021-12-20 16:18:33 +01:00
eva
f3548aff8c Add shortcuts to viewer btns 2021-12-20 16:18:33 +01:00
eva
771bb20976 Add shortcuts for dashboard viewer and path 2021-12-20 16:18:33 +01:00
eva
8072caeff1 Add more workspace shortcuts 2021-12-20 16:18:33 +01:00
eva
d5568fcc25 Add alignement shortcuts 2021-12-20 16:18:33 +01:00
Andrey Antukh
eb1bcfba83 🎉 Backport questions form integration.
Among other related that need to be ported.
2021-12-20 16:16:29 +01:00
Andrey Antukh
a2d3616171 📎 Update changelog. 2021-12-20 11:55:32 +01:00
Andrey Antukh
a83e37493a ⬆️ Update log4j2 dependency. 2021-12-20 11:52:32 +01:00
Andrey Antukh
0feccc9d1c ⬆️ Update log4j2 dependency. 2021-12-20 11:49:30 +01:00
Andrey Antukh
e18ecb8c49 ⬆️ Update devenv (deps). 2021-12-20 11:16:26 +01:00
Andrés Moya
f5b87a9865 📚 Add docs contributor 2021-12-19 17:56:37 +01:00
Andy Li
3b93434dd3 🌐 Add translations for: Chinese (Traditional).
Currently translated at 33.5% (283 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2021-12-18 02:51:35 +01:00
Muhammad Insan Al-Amin
d522096caf 🌐 Add translations for: Indonesian.
Currently translated at 7.3% (62 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2021-12-18 02:51:35 +01:00
Andrey Antukh
6c67110dde 🐛 Fix middleware order that prevents multipart requests. 2021-12-10 15:06:42 +01:00
Andrey Antukh
963efc369b Merge branch 'main' into develop 2021-12-10 14:45:02 +01:00
Andrey Antukh
384f0a05c6 🐛 Fix race condition issues on workspace. 2021-12-10 12:32:10 +01:00
Andrey Antukh
a3016b8400 Make the media uploading idempotent. 2021-12-10 12:19:12 +01:00
Andrey Antukh
0df219c3ad 📎 Fix frontend tests. 2021-12-10 12:00:29 +01:00
Andrey Antukh
a0d527f795 📎 Add some minor changes to package.json scripts section. 2021-12-10 12:00:29 +01:00
Andrey Antukh
e44ea47497 🐛 Fix issue when typography name is empty. 2021-12-10 12:00:29 +01:00
Andrey Antukh
9ee5a3159c 💄 Add cosmetic changes on ungroup event. 2021-12-10 12:00:29 +01:00
Andrey Antukh
06d41c552b Simplify debuging information used on commit-changes. 2021-12-10 12:00:29 +01:00
Andrey Antukh
7874971550 🐛 Fix race condition issues on workspace. 2021-12-10 12:00:29 +01:00
Andrey Antukh
9925716134 💄 Add syntax improvements on libraries helpers. 2021-12-10 12:00:29 +01:00
Andrey Antukh
64c456678b Merge pull request #1401 from penpot/fix-destination
🐛 Fix error importing file with null destination in one interaction
2021-12-10 11:21:27 +01:00
Andrés Moya
16ed09a303 🐛 Fix error importing file with null destination in one interaction 2021-12-10 10:50:18 +01:00
Andy Li
1359a1aa7a 🌐 Add translations for: Chinese (Traditional).
Currently translated at 31.4% (265 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2021-12-10 09:52:18 +01:00
Andy Li
6ae36982b6 🌐 Add translations for: Chinese (Traditional).
Currently translated at 30.6% (258 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2021-12-09 05:50:27 +01:00
Maemolee
136d269605 🌐 Add translations for: Chinese (Simplified).
Currently translated at 80.6% (680 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2021-12-09 05:50:27 +01:00
Rubén
932c0ed4ad 🌐 Add translations for: Spanish.
Currently translated at 98.5% (831 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-12-09 05:50:26 +01:00
Andy Li
371875440f 🌐 Add translations for: Chinese (Traditional).
Currently translated at 25.7% (217 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2021-12-07 09:12:57 +01:00
Rubén
b01a9f2f95 🌐 Add translations for: Catalan.
Currently translated at 99.6% (840 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2021-12-06 12:26:52 +01:00
李安峻
0d2def102f 🌐 Add translations for: Chinese (Traditional).
Currently translated at 23.4% (198 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2021-12-04 03:52:36 +01:00
Andrey Antukh
beff3fe843 📎 Fix common tests. 2021-12-03 16:00:56 +01:00
Andrey Antukh
7a97c94f2b Merge branch 'main' into develop 2021-12-03 15:53:20 +01:00
Andrey Antukh
ce81908f02 📎 Minor changes on devenv. 2021-12-03 15:05:36 +01:00
Andrey Antukh
f8cecfd61f 🐛 Fix unexpected behavior of grid options on right sidebar. 2021-12-03 14:52:40 +01:00
Andrey Antukh
8a2a1d6d70 ♻️ Ensure a correct usage of concat/into operations. 2021-12-03 14:52:40 +01:00
Andrey Antukh
76dafea8a6 Add the abilty to enable verbose output using query param (api). 2021-12-03 11:13:08 +01:00
Andrey Antukh
86bbfde19e 📎 More fixes on ci config. 2021-12-03 11:09:01 +01:00
Andrey Antukh
71d6f7b1a2 📎 Fix linter issues. 2021-12-03 09:43:02 +01:00
Andrey Antukh
0c0ab612c0 📎 Minor fixes to previous commits. 2021-12-03 09:36:39 +01:00
Andrey Antukh
73042115e0 🎉 Add benchmark helper function (cljs only). 2021-12-03 09:30:33 +01:00
Andrey Antukh
0f7166d34a 📎 More fixes on CI. 2021-12-02 18:20:45 +01:00
Andrey Antukh
f35f2c95f0 📎 Fix issues with jvm on CI. 2021-12-02 18:15:44 +01:00
Andrey Antukh
4d280bdb6d Merge branch 'test-e2e' into develop 2021-12-01 16:14:46 +01:00
Andrey Antukh
47acab766d ⬆️ Update to OpenJDK17. 2021-12-01 16:13:46 +01:00
Andrés Moya
1cc3819e65 🧪 Add e2e tests with Cypress 2021-12-01 16:13:46 +01:00
Andrey Antukh
16fa6259ea 🚧 Update docker deps and start working on test coverage. 2021-12-01 16:13:46 +01:00
Andrey Antukh
95717c4c32 Merge pull request #1378 from penpot/performance
Performance Improvements
2021-12-01 14:43:43 +01:00
alonso.torres
7564f27f95 Improvements after review 2021-12-01 14:39:20 +01:00
alonso.torres
565046aaa6 Memoize transform-shape 2021-12-01 14:39:20 +01:00
alonso.torres
fb9b023fae Improve selection performance 2021-12-01 14:39:20 +01:00
alonso.torres
b05908a760 Improved performance for options and area selection 2021-12-01 14:39:20 +01:00
alonso.torres
3bbcd235e1 Improved selection rect calculation 2021-12-01 14:39:20 +01:00
alonso.torres
9d66984c62 Improved set-modifiers-recursive and some utils memoization 2021-12-01 14:39:20 +01:00
alonso.torres
9024408ed2 Improved frame defered handling 2021-12-01 14:39:20 +01:00
alonso.torres
2b32e864fd Performance improvements 2021-12-01 14:39:20 +01:00
alonso.torres
626d0cba46 🐛 Add to spec opacity and blend-mode 2021-12-01 14:39:20 +01:00
alonso.torres
2a11e9962d ♻️ Moved debug utils to debug namespace 2021-12-01 14:39:20 +01:00
Andrés Moya
7dffddd437 📖 Add doc contributors to CHANGES.md 2021-12-01 12:48:48 +01:00
Andrey Antukh
6a7600fd52 ♻️ Ensure a correct usage of concat/into operations. 2021-12-01 11:30:48 +01:00
Andrey Antukh
b897f202dd 📎 Minor changes on exporter shadow-cljs config. 2021-11-30 13:11:52 +01:00
Andrey Antukh
eb396f2367 🐛 Properly show message on password recovery request.
Additionally, add the ability to reset form passing `nil`
on `reset!` function of Atom interface.
2021-11-30 09:44:03 +01:00
Andrey Antukh
95bf3e3af4 🐛 Fix issues related to signup questions form. 2021-11-30 09:44:03 +01:00
Andrey Antukh
19944202fb Handle properly the user redirect after login. 2021-11-30 09:44:03 +01:00
Andrey Antukh
2596ad27c3 ♻️ Minor refactor of auth data-flow.
This fixes many issues related to using penpot on-premise
instances on different domain than localhost. This changes
ensures correct data flow of authenticated and not authenticated
sessions.
2021-11-30 09:44:03 +01:00
Andrey Antukh
ece914303a ⬆️ Update exporter dependencies. 2021-11-29 15:53:24 +01:00
eva
7a0c12e073 ♻️ Create a colors file to save constants of color that can no be refactored into sass variables 2021-11-29 11:21:12 +01:00
eva
14b23b491f use those new css variables in our cljs files 2021-11-29 11:21:12 +01:00
eva
039b03249b Create css variables fron our sass varibles to use them in cljs files 2021-11-29 11:21:12 +01:00
Andrés Moya
3919cf4f86 🐛 Fix resize behavior of masked groups 2021-11-25 15:53:09 +01:00
Yaron Shahrabani
319a9fd2de 🌐 Add translations for: Hebrew.
Currently translated at 100.0% (843 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2021-11-25 14:50:58 +01:00
Oğuz Ersen
cf1f9f93aa 🌐 Add translations for: Turkish.
Currently translated at 99.7% (841 of 843 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-11-25 14:50:57 +01:00
Andrey Antukh
0dd805da7f Improve team deletion process. 2021-11-25 14:19:06 +01:00
Andrey Antukh
e7a1833c44 🐛 Add missing "solid" font-weight parsing style.
Related issue: #1338
2021-11-25 14:19:06 +01:00
Andrey Antukh
54f8487b46 Make team leave & reassing as atomic operation. 2021-11-25 14:19:06 +01:00
alonso.torres
b68d721b39 🐛 Fix problem when importing in shared libraries 2021-11-25 13:28:37 +01:00
Andrey Antukh
b9ccb4e52c 🐛 Fix issues on login being logged. 2021-11-25 13:24:40 +01:00
Andrey Antukh
c4a11f73a0 ⬆️ Update deps. 2021-11-25 13:24:40 +01:00
Andrey Antukh
f96d4198c3 📎 Add scripts/repl to common. 2021-11-25 13:24:40 +01:00
Andrey Antukh
fe6a0ec5b8 📎 Fix linter issues. 2021-11-25 13:24:40 +01:00
Andrey Antukh
e7b4010eba 🐛 Fix undo on page relocate/sorting. 2021-11-25 13:24:40 +01:00
elhombretecla
c4947d3737 Add basic css sf structure 2021-11-25 13:24:40 +01:00
Andrey Antukh
8a8d677f85 🎉 Integrate questions form. 2021-11-25 13:24:40 +01:00
eva
baf4393310 🔨 Fix some spanish terms 2021-11-24 16:42:48 +01:00
eva
723916d930 Allow ungroup groups in bulk and unmask mask in group 2021-11-24 16:42:48 +01:00
Andrey Antukh
591d66564d 📎 Set develop branch to version 1.11.0-beta. 2021-11-24 13:23:36 +01:00
Andrey Antukh
79a2d522bf Merge remote-tracking branch 'origin/main' into develop 2021-11-24 13:23:14 +01:00
Andrey Antukh
4ad34ab5c8 📎 Update version number. 2021-11-24 13:06:36 +01:00
Andrey Antukh
33c7847dfc 🐛 Fix team deletion flow on dashboard. 2021-11-24 13:05:54 +01:00
alonso.torres
7a04f15710 🐛 Fix problems with team management. 2021-11-24 13:05:48 +01:00
Andrey Antukh
7e5b10eb3e 🐛 Fix team deletion flow on dashboard. 2021-11-24 12:45:06 +01:00
alonso.torres
896a07fa9a 🐛 Fix problems with team management 2021-11-24 12:27:14 +01:00
Andrey Antukh
07e8bb00fb Improve debug information of oidc provider. 2021-11-23 16:41:31 +01:00
Andrey Antukh
5d2742dd37 📎 Sort translation files. 2021-11-23 14:29:09 +01:00
Andrey Antukh
9ae3f1eb68 Merge remote-tracking branch 'weblate/develop' into translations 2021-11-23 14:27:29 +01:00
Andrey Antukh
8c6e0cf43a Merge branch 'jsoref-spelling' into develop 2021-11-23 14:23:29 +01:00
Andrey Antukh
1e220fd506 📎 Update changes.md file. 2021-11-23 14:22:46 +01:00
Andrey Antukh
4ff7855fd4 📎 Adapt translation files to spelling fixes. 2021-11-23 14:21:05 +01:00
Andrey Antukh
eb57354109 📎 Adapt migrations file. 2021-11-23 14:19:48 +01:00
Andrey Antukh
a82a33cecf Merge branch 'spelling' of https://github.com/jsoref/penpot into jsoref-spelling 2021-11-23 14:02:16 +01:00
Andrés Moya
c90fc2a9bf :white-check-mark: Add tests for interaction model and some fixes 2021-11-23 13:58:43 +01:00
Paul Schulz
c1a40e4aeb Add preset for ReMarkable 2 screen size
Logged in issue: https://tree.taiga.io/project/penpot/issue/2298

This page size (840x1120)(for the ReMarkable2 was tested with an exported PDF
test page, and does not appear to correspond directly to the resolution of the
device.

Signed-off-by: Paul Schulz <paul@mawsonlakes.org>
2021-11-23 13:57:26 +01:00
Andrey Antukh
9999b8bfab 📎 Update email on contributing file. 2021-11-22 15:42:50 +01:00
Andrey Antukh
cf62008acf Merge remote-tracking branch 'origin/main' into develop 2021-11-22 08:59:48 +01:00
Andrey Antukh
1c959a6653 📎 Add commented keycloak docker compose entry. 2021-11-22 08:57:20 +01:00
Andrey Antukh
b8043a2432 📎 Update ci config. 2021-11-18 17:19:55 +01:00
Andrey Antukh
ed5de525aa 📎 Increase default db pool size to 50. 2021-11-18 17:19:55 +01:00
Andrey Antukh
8105d9388b ♻️ Refactor rlimit usage (backend). 2021-11-18 17:19:55 +01:00
Andrey Antukh
8151dcc05f 📎 Improve services defmethod linter hook. 2021-11-18 17:19:55 +01:00
Andrey Antukh
25b1c5fe90 📎 Minor update on feedback module. 2021-11-17 14:46:18 +01:00
Andrés Moya
f566d2a0da 🐛 Remove unneeded style causing visual glitch 2021-11-17 14:06:15 +01:00
Andrey Antukh
ea218839e4 Minor change on error pruning mechanism. 2021-11-17 11:10:28 +01:00
Andrey Antukh
4c18a1881b 📎 Minor change on feedback subject template. 2021-11-17 11:10:04 +01:00
Andrey Antukh
0be2b2791f ♻️ Refactor error handling on exporter browser module. 2021-11-17 10:09:36 +01:00
Andrey Antukh
bf51e3db60 Invalidate all other sessions on password change. 2021-11-17 10:09:36 +01:00
Andrey Antukh
abca69f408 🐛 Fix tab reuse issue (viewer <-> workspace). 2021-11-17 10:09:36 +01:00
Andrey Antukh
6eac9102c9 🐛 Prevent conflict errors just ignoring repeated requests.
On media image uploading.
2021-11-17 10:09:36 +01:00
Andrey Antukh
0a7da1b7f2 🔥 Remove unused var. 2021-11-17 10:09:36 +01:00
Andrey Antukh
b4361cb202 📎 Increase idle-in-transaction default timeout. 2021-11-17 10:09:36 +01:00
Andrey Antukh
d2d4090e27 🐛 Don't raise exception when profile is not found. 2021-11-17 10:09:36 +01:00
Josh Soref
583eb53c9d 🐛 Fix typos 2021-11-15 09:54:36 -05:00
Josh Soref
39246f2beb 🐛 Fix typos in common 2021-11-15 09:53:42 -05:00
Josh Soref
cd2d3d5fa3 🐛 Fix typos in backend 2021-11-15 09:53:10 -05:00
Josh Soref
589e646023 🐛 Fix typos in frontend 2021-11-15 09:51:34 -05:00
Maciek Baron
b7ba3098ae 🐛 Fix typo in workspace.scss
Correct the spelling of 'width' to ensure it is set to '100%' properly and does not default to 'auto'.
2021-11-15 12:50:52 +01:00
Andrés Moya
631c5ecae3 💄 Change word in german for a shorter one 2021-11-15 12:50:07 +01:00
Andrés Moya
4962e45bd9 Change tool for exporting artboards and fix some issues 2021-11-15 11:55:58 +01:00
Andrey Antukh
c57219a356 📎 Allow specify the build optimization leven using env vars. 2021-11-12 13:31:28 +01:00
Andrey Antukh
03e6a187c5 Merge branch 'main' into develop 2021-11-12 13:31:13 +01:00
Andrey Antukh
0bdbbd35e3 📎 Fix linter issues. 2021-11-12 12:37:38 +01:00
Andrey Antukh
401afe7c1a 📎 Change loggling level on oauth ns. 2021-11-12 12:37:34 +01:00
Andrey Antukh
66b0039566 📎 Fix linter issues. 2021-11-12 12:36:32 +01:00
Andrey Antukh
17da51440c 📎 Change loggling level on oauth ns. 2021-11-12 12:34:50 +01:00
Andrés Moya
c5adeecd90 🐛 Fix problems importing files 2021-11-12 12:34:26 +01:00
Andrey Antukh
da6c62414b Merge remote-tracking branch 'origin/beta-release-info' 2021-11-11 13:54:01 +01:00
Andrey Antukh
6650fe863f 📎 Fix linter issues. 2021-11-11 13:28:02 +01:00
Andrey Antukh
76c00c42b5 📎 Update changelog. 2021-11-11 13:25:51 +01:00
Andrey Antukh
f8609419a1 Merge remote-tracking branch 'origin/develop' 2021-11-11 13:23:49 +01:00
Andrey Antukh
250e79eda1 Disable default project loading on demo users. 2021-11-11 13:23:07 +01:00
Andrey Antukh
f7401daeae 📎 Update label on version.txt 2021-11-11 13:22:43 +01:00
Andrey Antukh
7390e372e0 📎 Add missing translations. 2021-11-11 13:22:29 +01:00
Andrey Antukh
239c521ad9 📎 Minor change on gulpfile. 2021-11-11 12:21:21 +01:00
Andrey Antukh
77b4f09cfb 📎 Update onboarding texts. 2021-11-11 12:13:16 +01:00
Andrey Antukh
bb178af278 🐛 Fix import template on recently created team. 2021-11-11 11:49:23 +01:00
Andrey Antukh
3c39661174 📎 Enable _blank target on all markdown links. 2021-11-11 11:31:27 +01:00
Andrés Moya
1fffc1e828 💄 Change placeholder text 2021-11-11 11:09:17 +01:00
Andrey Antukh
ed50cd1fa8 📎 Remove :insecure-register default flag (backend). 2021-11-11 11:00:23 +01:00
Andrey Antukh
ef6a02e8ef ⬆️ Update clk-kondo dependency on devenv. 2021-11-10 23:21:41 +01:00
Andrey Antukh
e7003dde83 Add :insecure-register flag.
This allows on-premise users skip the email validation.
2021-11-10 23:21:41 +01:00
Andrey Antukh
bf2a393fd3 🎉 Add generic retry middleware for rpc methods. 2021-11-10 23:21:41 +01:00
elhombretecla
bb2cfd52f4 Add new wording 2021-11-10 14:52:48 +01:00
Andrés Moya
6a6f88c6ef 📚 Update changelog 2021-11-10 12:17:23 +01:00
elhombretecla
0a2b1a4fbe 🎉 Add new beta onboarding info 2021-11-10 11:53:14 +01:00
Andrey Antukh
5fd48c9e98 📎 Update changelog. 2021-11-10 11:26:28 +01:00
alonso.torres
022d32cd44 🐛 Fix project files count not refreshing correctly after import 2021-11-10 11:08:32 +01:00
alonso.torres
af10cf71db 🐛 Add placeholder to create shareable link 2021-11-10 11:08:32 +01:00
alonso.torres
1bf1de8ce8 🐛 Fix problem in viewer with dropdowns when comments active 2021-11-10 11:08:32 +01:00
alonso.torres
b80ddfa580 🐛 Remove change style on hover for options 2021-11-10 11:08:32 +01:00
alonso.torres
aa276ab308 🐛 Fix viewer comment position when zoom applied 2021-11-10 11:08:32 +01:00
alonso.torres
f50943d470 🐛 Fix max/min values for opacity fields 2021-11-10 11:08:32 +01:00
alonso.torres
959c998664 🐛 Fix a worker error when transforming a rectangle into path 2021-11-10 11:08:32 +01:00
alonso.torres
b6b6b6043c 🐛 Add shortcuts to boolean icons popups 2021-11-10 11:08:32 +01:00
alonso.torres
8e0807d502 🐛 Fix problem when flattening booleans losing styles 2021-11-10 11:08:32 +01:00
alonso.torres
78d027b25e 🐛 Fix problem with text rendering on export 2021-11-10 11:08:32 +01:00
alonso.torres
503f0bee69 🐛 Add ellipsis in long labels for input fields 2021-11-10 11:08:32 +01:00
Andrés Moya
50d756b189 🐛 Disallow to create a redundant component 2021-11-05 16:55:38 +01:00
Andrey Antukh
7c3d71e572 Merge pull request #1320 from penpot/scroll
Preserve Scroll posiition
2021-11-04 15:20:26 +01:00
Andrey Antukh
bf895d26b0 📎 Port from develop fixes to frontend build script. 2021-11-04 11:00:22 +01:00
Andrey Antukh
5530e8581a Merge remote-tracking branch 'origin/main' into develop 2021-11-04 10:48:47 +01:00
Andrés Moya
f913816d87 🎉 Add preserve scroll option 2021-11-04 10:39:16 +01:00
Andrés Moya
3d59d31b0a 🐛 Fix horizontal scrollbar hidden 2021-11-04 10:37:56 +01:00
alonso.torres
9a66f26bd9 🐛 Fix problem with inner stroke 2021-11-04 10:36:51 +01:00
Andrey Antukh
d5b6605ce8 🐛 Fix issue on translation files. 2021-11-04 10:33:05 +01:00
Andrey Antukh
38e5184be4 📎 Minor fix on frontend build script. 2021-11-04 10:17:19 +01:00
Andrey Antukh
369ec9f814 📎 Fix on previous commit. 2021-11-04 09:43:40 +01:00
Andrey Antukh
620b454c49 📎 Minor changes on build script resource management. 2021-11-04 09:43:03 +01:00
Andrey Antukh
2e5040e65d Don't load initial project on profile creation. 2021-11-04 09:23:14 +01:00
Andrey Antukh
71fe7ef125 📎 Add better auditlog event for profile email change event. 2021-11-04 09:23:14 +01:00
Andrey Antukh
e0e8fd7ddc 📎 Increment version number. 2021-11-04 09:23:14 +01:00
Andrey Antukh
01b4b4933e Update devenv nginx config. 2021-11-04 09:23:14 +01:00
Andrey Antukh
fced22bc60 🎉 Add new onboarding flow. 2021-11-04 09:23:14 +01:00
Andrey Antukh
898ae64a57 ⬆️ Update frontend dependencies. 2021-11-04 09:23:14 +01:00
Andrey Antukh
8d50852cbe Minor imrovements on general purpose specs naming. 2021-11-04 09:23:14 +01:00
Andrey Antukh
a11c7b10ac 🔥 Remove deprecated fixtures related code. 2021-11-04 09:23:14 +01:00
Andrey Antukh
fe9033b8be Merge branch 'main' into develop 2021-11-03 16:41:55 +01:00
alonso.torres
e26f9e4a71 🐛 Fix problem with arrow lines 2021-11-03 16:41:03 +01:00
alonso.torres
c477328da4 🐛 Fix problem with view mode comments 2021-11-03 13:45:43 +01:00
alonso.torres
214c64c49e 🐛 Fix problem when exporting texts with gradients or opacity 2021-11-03 10:56:42 +01:00
Andrés Moya
bce0e9194c Merge branch 'main' into develop 2021-11-02 11:09:11 +01:00
曹恩逢
40326177fd 🌐 Add translations for: Chinese (Traditional).
Currently translated at 23.2% (192 of 826 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hant/
2021-11-01 04:34:53 +01:00
Yaron Shahrabani
4ab0272fa6 🌐 Add translations for: Hebrew.
Currently translated at 99.8% (825 of 826 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2021-11-01 04:34:52 +01:00
Marius
fb33366c91 🌐 Add translations for: German.
Currently translated at 99.3% (821 of 826 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2021-11-01 04:34:51 +01:00
Oğuz Ersen
75352c9afe 🌐 Add translations for: Turkish.
Currently translated at 99.7% (824 of 826 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-11-01 04:34:50 +01:00
Andrey Antukh
a0f98e3823 Merge pull request #1306 from penpot/hotfix-validate-url
 Auto add http prefix to interaction url
2021-10-29 14:11:38 +02:00
Andrés Moya
bff6768adf 🐛 Fix linter error 2021-10-29 13:38:47 +02:00
Andrés Moya
8ce2eb448c Auto add http prefix to interaction url 2021-10-29 13:38:47 +02:00
alonso.torres
7c5d00f8a4 🐛 Fix problem with export 2021-10-28 17:56:51 +02:00
Andrés Moya
30cd499014 Enhance border radius options form 2021-10-28 17:32:57 +02:00
Andrey Antukh
99d173789e Merge pull request #1304 from penpot/bugfix
Bugfix
2021-10-28 17:31:40 +02:00
alonso.torres
ae72db8129 🐛 Fix pages dropdown in viewer 2021-10-28 17:18:17 +02:00
alonso.torres
9437cc1806 🐛 Fix undo stacking when changing color from color-picker 2021-10-28 17:18:17 +02:00
alonso.torres
0e76aa0265 🐛 Fix problem with exporting before the document is saved 2021-10-28 17:18:17 +02:00
Andrey Antukh
756e654d32 📎 Fix linter issues. 2021-10-27 16:16:44 +02:00
Andrey Antukh
78d1c57b7c Merge branch 'staging' 2021-10-27 12:45:53 +02:00
Andrey Antukh
bb27405e8f 🐛 Fix some issues with Arabic translations. 2021-10-27 12:26:21 +02:00
Andrey Antukh
0cfc46b417 Merge remote-tracking branch 'origin/1.9-release-notes' into staging 2021-10-27 12:00:57 +02:00
Yaron Shahrabani
bfb30fe68d 🌐 Add translations for: Hebrew.
Currently translated at 95.8% (792 of 826 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2021-10-27 11:49:02 +02:00
Andrey Antukh
63959b4b22 📎 Update gulpfile (related to i18n changes). 2021-10-27 11:22:24 +02:00
Andrey Antukh
66d086892f 📎 Add Arabic lang to i18n module. 2021-10-27 11:18:28 +02:00
Andrey Antukh
b878570b14 📎 Add hebrew lang to i18n module. 2021-10-27 11:14:55 +02:00
Andrey Antukh
b059610d16 📎 Sort all translation strings. 2021-10-27 11:08:30 +02:00
Andrey Antukh
972aa7f4e3 Merge remote-tracking branch 'weblate/develop' into translations 2021-10-27 11:06:45 +02:00
Andrey Antukh
797c1421da 📎 Upadate changelog. 2021-10-27 11:01:05 +02:00
Andrés Moya
e65cbcba65 🌐 Added translation for: Chinese (Traditional). 2021-10-27 10:58:20 +02:00
Andrés Moya
6d96dd3818 🐛 Fix detach stroke color 2021-10-26 14:44:29 +02:00
Andrés Moya
16db31c53c Ignore constraints when flipping 2021-10-26 14:43:55 +02:00
Andrey Antukh
c72138d15a 📎 Update manage.sh to use 'docker compose' command. 2021-10-26 10:58:23 +02:00
Andrés Moya
6d28a9ad58 🐛 Import files with interactions correctly 2021-10-25 17:59:38 +02:00
Andrés Moya
75c8d97a6e 🐛 Fix vertical flip for nested shapes 2021-10-25 17:55:38 +02:00
elhombretecla
c35f53af89 🎉 Add release onboarding texts 2021-10-21 21:54:54 +02:00
Andrey Antukh
55784f64b8 🎉 Add entrypoint for autogenerated api docs. 2021-10-21 11:31:29 +02:00
alonso.torres
a7241d4128 Change cookie config 2021-10-20 17:12:45 +02:00
Andrey Antukh
1573d794b9 Merge pull request #1290 from penpot/devenv-improvements
Dev Environment improvements
2021-10-20 16:03:24 +02:00
alonso.torres
bc725800ed New docker recipes for a backend only environment 2021-10-20 15:44:08 +02:00
alonso.torres
007728819b Allow CORS backend option and fix frontend to allow it 2021-10-20 15:44:08 +02:00
alonso.torres
f32f13069f Improve test workflow 2021-10-20 15:12:25 +02:00
Andrey Antukh
5ec73da17f Merge pull request #1292 from penpot/bugfix
Bug fixing
2021-10-20 15:05:50 +02:00
alonso.torres
5fd3689333 🐛 Fix no color when boolean with an SVG 2021-10-20 14:59:04 +02:00
alonso.torres
cca1431012 🐛 Fix font size input stuck on selection change 2021-10-20 14:59:04 +02:00
alonso.torres
7ba9558a7a 🐛 Fix masks export area 2021-10-20 14:59:04 +02:00
alonso.torres
c65e8b4a5e 🐛 Fix problem with stroke inside/outside 2021-10-20 14:59:04 +02:00
alonso.torres
eed75bcbda 🐛 Fix stroke cut on shapes export 2021-10-20 14:59:04 +02:00
Andrés Moya
1af4325e8f ♻️ Do a small performance refactor 2021-10-20 14:29:26 +02:00
alonso.torres
5e6719e22e 🐛 Fix paste in place in arboards 2021-10-20 14:22:47 +02:00
Andrés Moya
a4bbfe3c79 Consider overlays inside flows 2021-10-20 14:22:39 +02:00
elhombretecla
63f42fc8bb Add new release onboarding info 2021-10-20 13:24:17 +02:00
elhombretecla
5b9bcf8b1d Update CHANGES.md 2021-10-20 07:58:01 +02:00
Andrey Antukh
f02bc82525 Make permissions subsystem more flexible.
And fix some bugs related to permissions.
2021-10-19 11:36:58 +02:00
Andrés Moya
92f89c6cc1 Enhance duplicating prototype connections 2021-10-18 16:01:20 +02:00
alonso.torres
a1908be982 Update gitignore 2021-10-18 09:53:12 +02:00
alonso.torres
f08894629d ♻️ Refactor routes 2021-10-18 09:40:47 +02:00
Yaron Shahrabani
e46f11e6f8 🌐 Add translations for: Hebrew.
Currently translated at 100.0% (767 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2021-10-18 09:35:05 +02:00
Yaron Shahrabani
df6234ea28 🌐 Add translations for: Hebrew.
Currently translated at 41.0% (315 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/he/
2021-10-15 22:36:19 +02:00
Andrey Antukh
21cdf8b0ae 📎 Enable logging on prod builds. 2021-10-15 14:46:16 +02:00
Andrés Moya
192fb07ef1 🐛 Fix broken references on duplicate file 2021-10-14 18:18:48 +02:00
Andrés Moya
226216d111 🌐 Added translation for: Hebrew. 2021-10-14 14:18:36 +02:00
Andrey Antukh
bed2deb683 Merge pull request #1280 from penpot/hotfixes-20211014
Hotfixes 20211014
2021-10-14 13:07:30 +02:00
Andrey Antukh
6e327b69f5 🐛 Fix bugs on audit log module. 2021-10-14 12:57:27 +02:00
Andrey Antukh
1d3c8e867e 🐛 Minor improvements on file-created event (frontend). 2021-10-14 12:20:40 +02:00
Andrey Antukh
d0f761172a Avoid unnecesary error report on audit module. 2021-10-14 12:14:03 +02:00
Andrés Moya
fd6a8aec71 🐛 Fix docker devenv config 2021-10-14 12:07:33 +02:00
alonso.torres
e00e501605 Fix nrepl connection inside docker 2021-10-13 17:42:40 +02:00
Andrés Moya
81a42ef1df 🐛 Fix flow diaplay when index is still not calculated 2021-10-13 17:41:23 +02:00
Andrey Antukh
ee5eb2abc5 Merge pull request #1277 from penpot/auto-flows
🎉 Enable auto-flows
2021-10-13 16:43:00 +02:00
Andrey Antukh
0ed14f0288 📎 Improve db module api. 2021-10-13 15:05:09 +02:00
Andrey Antukh
c55f740978 Update default timeouts on db namespace. 2021-10-13 14:51:38 +02:00
Andrés Moya
38952b6734 🎉 Enable auto-flows 2021-10-13 14:47:42 +02:00
Andrey Antukh
925058467f Merge pull request #1276 from penpot/bugfixes
Bugfixes
2021-10-13 13:40:07 +02:00
Andrey Antukh
e5afeccadf 🐛 Minor improvements on file-created event (frontend). 2021-10-11 13:51:44 +02:00
alonso.torres
ad18604552 🐛 Fix bug in firefox when a text box is inside a mask 2021-10-11 12:41:35 +02:00
alonso.torres
d2d506dbf0 🐛 Fix problem with mix between open/closed and line/curves 2021-10-11 12:41:35 +02:00
alonso.torres
2833d3126f 🐛 Fix bug with transformation operations 2021-10-11 12:41:35 +02:00
alonso.torres
950367b055 🐛 Fix path stroke is not working properly with high thickness 2021-10-11 12:30:57 +02:00
alonso.torres
703859ac75 Change order of the teams menu so it's in the joined time order 2021-10-11 12:30:57 +02:00
alonso.torres
4bf5434e8f 🐛 Fix problem when ctrl+d when moving 2021-10-11 12:30:57 +02:00
alonso.torres
350c44f56f 🐛 Fix problem when calculating group bounds 2021-10-11 12:30:57 +02:00
alonso.torres
679c630a4d 🐛 Fix shift+wheel to horizontal scrolling in MacOS 2021-10-11 12:30:57 +02:00
alonso.torres
dbbb0a4a3d 🐛 Add stroke width in selection calculation 2021-10-11 12:30:57 +02:00
alonso.torres
0ca7d074ac 🐛 Fix problem with lines and inside/outside stroke 2021-10-11 12:30:57 +02:00
alonso.torres
65894bf582 🐛 Fix problem inheriting attributes from SVG root when importing 2021-10-11 12:30:57 +02:00
alonso.torres
8eacf738c2 🐛 Fix problem with page-options spec 2021-10-11 12:30:29 +02:00
Andrey Antukh
1b69eda43e Add some improvements to the auditlog module. 2021-10-11 12:17:51 +02:00
Andrés Moya
09d1c958ce Include advanced interactions and flows in import/export 2021-10-11 12:17:26 +02:00
Marius
589d16bc37 🌐 Add translations for: German.
Currently translated at 98.4% (755 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2021-10-08 22:58:54 +02:00
Andrés Moya
a6dfa6bbbd Modify behavior of flows menu in viewer 2021-10-08 09:14:20 +02:00
alonso.torres
b2721305c5 Merge remote-tracking branch 'origin/main' into develop 2021-10-07 17:19:22 +02:00
alonso.torres
24b3404876 🐛 Fix problem importing components 2021-10-07 17:04:55 +02:00
Andrés Moya
92ca1e4873 🐛 Fix permissions in viewer 2021-10-07 15:15:38 +02:00
Andrey Antukh
59d44c41e4 Merge pull request #1263 from penpot/bugfixes
Bugfixes
2021-10-07 13:50:52 +02:00
Andrey Antukh
08a503f160 📎 Rename penpot logo svg file. 2021-10-07 12:04:56 +02:00
alonso.torres
e0e68835ef 🐛 Fix problem duplicating paths 2021-10-07 12:04:37 +02:00
alonso.torres
734287b66d 🐛 Fix stroke caps adjustments in relation with stroke size 2021-10-07 12:04:37 +02:00
alonso.torres
ddc9d30a3e 🐛 Fix zoom context menu in viewer 2021-10-07 12:04:37 +02:00
alonso.torres
890bf9eced 🐛 Fix export group with shadows on children 2021-10-07 12:04:37 +02:00
alonso.torres
b8677b2b9a 🐛 Fix group renaming problem 2021-10-07 12:04:37 +02:00
alonso.torres
1f5e974cfc 🐛 Allow lowercase search for fonts 2021-10-07 12:04:37 +02:00
alonso.torres
54e7e44df1 🐛 Allow three character hex and web colors in color picker hex input 2021-10-07 12:04:37 +02:00
alonso.torres
9736810f87 🐛 Add links for terms of service and privacy policy in register checkbox 2021-10-07 12:04:37 +02:00
alonso.torres
5547383434 🐛 Disable boolean operations when selecting invalid shapes 2021-10-07 12:04:32 +02:00
alonso.torres
85f8e77928 🐛 Fix residual stroke on imported svg 2021-10-07 11:42:53 +02:00
alonso.torres
6918216b86 🐛 Fixed open shapes boolean operations 2021-10-07 11:42:53 +02:00
alonso.torres
efd2ad8f8b 🐛 Fix text editor enter behaviour with centered texts 2021-10-07 11:42:53 +02:00
alonso.torres
5a8ce52105 🐛 Fix problem with booleans empty selrect 2021-10-07 11:42:53 +02:00
alonso.torres
cbee65671c 🐛 Fix problem with masked texts on exporting 2021-10-07 11:42:53 +02:00
alonso.torres
75a7ce24bf 🐛 Fix problem with text margin while rendering 2021-10-07 11:42:53 +02:00
alonso.torres
013f56347d 🐛 Fix undo problem when changing typography/color 2021-10-07 11:42:53 +02:00
alonso.torres
a052bfd2fa 🐛 Fix error screen when operations over comments fail 2021-10-07 11:42:53 +02:00
alonso.torres
4b1fa2589e 🐛 Fix menu context for single element nested in components 2021-10-07 11:42:45 +02:00
alonso.torres
1a61c855ca 🐛 Fix problem with overflow dropdown on stroke-cap 2021-10-07 11:40:31 +02:00
Andrés Moya
0159eea526 🎉 Add interaction flows 2021-10-07 11:40:01 +02:00
Andrey Antukh
f3bb5c55f5 🐛 Show proper 404 when look on not-existing page on viewer. 2021-10-06 15:57:49 +02:00
Andrey Antukh
9ecbddc18c ♻️ Refactor internal handling of profile props. 2021-10-06 15:57:49 +02:00
Andrey Antukh
d36bf188ae 📎 Enable audit-log on devenv. 2021-10-06 15:57:49 +02:00
Andrey Antukh
b8cddbca88 📎 Fix linter issues on frontend. 2021-10-06 15:57:49 +02:00
Andrey Antukh
ee9b7166a6 🔥 Remove deprecated event from routr ns. 2021-10-06 15:57:49 +02:00
Andrey Antukh
9c1c755836 🐛 Fix race-condition on 404 states. 2021-10-06 15:57:49 +02:00
Andrey Antukh
6722ca41bf 🐛 Fix bugs on audit log module. 2021-10-06 15:57:49 +02:00
Andrey Antukh
9586d478ad 📎 Add noindex tags on error report handler. 2021-10-06 15:57:49 +02:00
Andrey Antukh
77cf4a5332 ♻️ Refactor frontend error handling. 2021-10-06 15:57:49 +02:00
elhombretecla
7199ab7cbe 🎉 Font size adjustemts 2021-10-05 13:45:37 +02:00
elhombretecla
5de2ff40d8 🎉 fix size variables 2021-10-05 13:45:37 +02:00
Andrés Moya
790d532cee Hide after-delay trigger in non-frames 2021-10-04 17:14:25 +02:00
alonso.torres
9f03e353c7 Boolean shapes enhancements 2021-10-04 11:07:04 +02:00
alonso.torres
68e3d53cb7 🐛 Fix problem with move+alt 2021-10-04 11:04:51 +02:00
alonso.torres
f9082e18e2 Merge remote-tracking branch 'origin/main' into develop 2021-09-30 11:54:22 +02:00
alonso.torres
02d31a7947 Adds progress report to importing process 2021-09-30 11:48:58 +02:00
Andrey Antukh
3e3faf6576 📎 Fix affected backend tests. 2021-09-30 11:48:14 +02:00
Andrey Antukh
bee1db135f 📎 Fix frontend linter issues. 2021-09-30 11:48:14 +02:00
Andrey Antukh
09d39ca425 🔥 Remove SVG parse rpc query. 2021-09-30 11:48:14 +02:00
Andrey Antukh
d58b6e5117 🔥 Remove deprecated queries. 2021-09-30 11:48:14 +02:00
Andrey Antukh
f0cf3e6411 🔥 Remove deprecated and unused tasks. 2021-09-30 11:48:14 +02:00
Andrey Antukh
b64d5ef357 🎉 Add unified logging api. 2021-09-30 11:48:14 +02:00
Andrey Antukh
2eccf77986 📎 Add data.csv dev dependency to backend. 2021-09-29 14:21:07 +02:00
Andrés Moya
0b8b766b62 Some visual fixes 2021-09-29 12:37:54 +02:00
alonso.torres
8d634a79c8 🐛 Fix problem with content 2021-09-29 12:36:45 +02:00
alonso.torres
4b9e7fdb15 🐛 Fix problem with incorrect content 2021-09-29 12:11:06 +02:00
Andrés Moya
165a84534a 📖 Update changelog 2021-09-29 12:01:00 +02:00
Andrés Moya
fe4cab3a9e Protect external links 2021-09-29 11:54:04 +02:00
Andrey Antukh
9e5166d991 Merge branch 'main' into develop 2021-09-29 11:29:01 +02:00
alonso.torres
48e78125e8 🐛 Fix problems with selection index update 2021-09-29 11:27:37 +02:00
Andrey Antukh
3fb3a92a8f 📎 Minor changes to cron schedule. 2021-09-29 11:06:50 +02:00
Andrey Antukh
8dba55d5cb 📎 Port some auditlog changes from develop. 2021-09-29 10:46:31 +02:00
Andrey Antukh
045a5156d1 📎 Minor changes on internal audit archive task params. 2021-09-29 09:02:02 +02:00
Andrey Antukh
8a162e39d5 Merge pull request #1248 from penpot/fix-interactions
 Change overlay position algorithm and some refactor
2021-09-28 17:28:23 +02:00
Andrés Moya
695788df0e ♻️ Move lens to a more specific site 2021-09-28 17:13:53 +02:00
Andrés Moya
4df96b03eb Change overlay position algorithm and some refactor 2021-09-28 17:09:08 +02:00
alonso.torres
49c2cb985c 🐛 Fix problems with imported svgs 2021-09-28 16:19:36 +02:00
alonso.torres
a189dc8243 🐛 Fixed some problems with booleans and paths 2021-09-28 13:09:19 +02:00
alonso.torres
ff8db0cd77 📚 Updated readme 2021-09-28 12:06:28 +02:00
Andrey Antukh
eff3e4015b 📎 Reduce drastically the auditlog archive task cron schedule. 2021-09-28 12:04:42 +02:00
Andrey Antukh
9ad43e13da Merge pull request #1247 from penpot/feat/bool-shapes
Bool shapes
2021-09-28 11:45:49 +02:00
alonso.torres
1bd3a792da Improved intersection edge cases 2021-09-28 11:30:06 +02:00
alonso.torres
75f8e473a5 Export/Import and edgecases fixing 2021-09-27 21:58:29 +02:00
alonso.torres
8c25ee7796 Fix style for bool shapes 2021-09-27 21:58:29 +02:00
alonso.torres
c3520cf606 Improved intersection calculation 2021-09-27 21:58:29 +02:00
alonso.torres
75d2d97d8e Renderers for booleans 2021-09-27 21:58:29 +02:00
alonso.torres
778a542e1c Removes children when flattening a group or bool shape 2021-09-27 21:58:29 +02:00
alonso.torres
74f3d551f2 Context menu for booleans 2021-09-27 21:58:29 +02:00
alonso.torres
fcc7b6791e Correct selrect calculation 2021-09-27 21:58:29 +02:00
alonso.torres
56e2db22eb Clip boolean selrects 2021-09-27 21:58:29 +02:00
alonso.torres
c56f024a86 Handling groups inside bool shapes 2021-09-27 21:58:29 +02:00
alonso.torres
6fd35ae5d9 Updates selrects, groups to path 2021-09-27 21:58:29 +02:00
alonso.torres
1db2895606 Union,intersection,difference 2021-09-27 21:58:29 +02:00
alonso.torres
df60ee06a1 Add exclusion boolean operation 2021-09-27 21:58:29 +02:00
alonso.torres
0b4b2d3814 Add UI for boolean operations 2021-09-27 21:58:29 +02:00
alonso.torres
9f08153a85 Created bool shapes 2021-09-27 21:58:29 +02:00
alonso.torres
5031700af6 Add utilities to calculate boolean shapes 2021-09-27 21:58:29 +02:00
Andrés Moya
57245dd77e 🎉 Add open url action 2021-09-27 12:37:39 +02:00
Andrés Moya
4697a1904a 🎉 Add previous screen action 2021-09-27 12:37:39 +02:00
Andrés Moya
ed380c86eb 🎉 Add delay interactions trigger 2021-09-27 12:37:39 +02:00
andy
02deecf54b 🌐 Add translations for: Spanish.
Currently translated at 99.6% (764 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-09-24 15:39:17 +02:00
Andrey Antukh
133c0312be 🐛 Fix unexpected exception on audit log handler. 2021-09-24 13:04:01 +02:00
Andrey Antukh
45e501ce02 🐛 Don't send incorrect flag values on register page. 2021-09-24 13:04:01 +02:00
Andrey Antukh
87dfa8c7fc 📎 Don't redirect user to landing page on clicking on logo. 2021-09-24 13:04:01 +02:00
Andrey Antukh
edefb588b6 Merge branch 'main' into develop 2021-09-23 13:52:08 +02:00
Andrey Antukh
8ce8b85089 📎 Update version.txt file. 2021-09-23 12:00:07 +02:00
Andrey Antukh
54c409a71c Merge pull request #1239 from penpot/fix/mask-viewer-problem
🐛 Fix problem with masking images in viewer
2021-09-23 11:55:33 +02:00
alonso.torres
2f8960d34f 🐛 Fix problem with masking images in viewer 2021-09-23 11:49:18 +02:00
Andrey Antukh
20036bd72b Merge pull request #1237 from penpot/complex-interactions3
Complex interactions3
2021-09-23 08:36:40 +02:00
Andrés Moya
38a84d4598 🎉 Add new triggers for interactions 2021-09-22 15:57:28 +02:00
Andrés Moya
bc1372c2f9 🎉 Add 'toggle overlay' action (and some fixes) 2021-09-22 14:42:48 +02:00
Andrés Moya
c241100886 Hide guide lines when moving overlay marker 2021-09-22 13:38:53 +02:00
Andrés Moya
fea2d91a63 💄 Adjust size of interaction markers 2021-09-22 12:38:58 +02:00
Andrey Antukh
f2c4aa852d Merge pull request #1225 from penpot/complex-interactions2
Complex interactions2
2021-09-22 11:31:46 +02:00
Andrés Moya
f8d09917a5 💄 Make some design adjustments 2021-09-22 10:54:25 +02:00
Andrés Moya
bbdf1152c1 🎉 Add close on click and background overlays 2021-09-22 10:54:25 +02:00
Andrés Moya
f208731746 🎉 Overlay positions buttons 2021-09-22 10:54:25 +02:00
Andrés Moya
0516cfa296 ♻️ Small refactor of basic specs 2021-09-22 10:54:25 +02:00
Andrés Moya
157e8413fb 🎉 Allow to position interaction overlays 2021-09-22 10:54:25 +02:00
Andrey Antukh
4708af3b91 🎉 Add sentry integration (on exporter). 2021-09-22 10:53:53 +02:00
Andrey Antukh
bee47d7fda ♻️ Remove koa dependency from exporter.
Replaced it with a direct usage of node http
server api and some external helpers for body
and cookies parsing.
2021-09-22 10:53:53 +02:00
Andrey Antukh
d246db7be8 📎 Change default params on exporter pool. 2021-09-20 15:21:26 +02:00
Andrey Antukh
02025bc70a 🎉 Add sentry integration (frontend). 2021-09-20 15:21:26 +02:00
Andrey Antukh
4275298f19 Merge branch 'main' into develop 2021-09-20 13:59:40 +02:00
Andrey Antukh
f0a02e4734 📎 Set version to 1.8.1-alpha. 2021-09-20 13:58:49 +02:00
Andrey Antukh
59464469c2 🐛 Fix unexpected exception on audit log persistence function. 2021-09-20 11:26:02 +02:00
Andrey Antukh
4d880a0d77 🐛 Fix unexpected exception related to some potok issues. 2021-09-20 11:22:56 +02:00
Andrey Antukh
26b28e2364 🎉 Add sentry integration (on backend). 2021-09-17 15:26:18 +02:00
Andrey Antukh
835b597af5 ⬆️ Update backend deps. 2021-09-17 14:34:14 +02:00
Andrey Antukh
c44d22ccf5 ⬆️ Update frontend dependencies. 2021-09-17 14:34:14 +02:00
Andrey Antukh
a11cda91de ⬆️ Update devenv system deps. 2021-09-17 14:34:14 +02:00
Andrey Antukh
cfbbb85254 🐛 Properly handle current team id assignation. 2021-09-17 14:34:14 +02:00
Andrey Antukh
8a0bba3c7a ♻️ Unify flags parsing on backend. 2021-09-17 14:34:14 +02:00
Andrey Antukh
da1135c80f Merge branch 'develop' of github.com:penpot/penpot into develop 2021-09-16 15:15:58 +02:00
Andrey Antukh
7fcf481243 Merge branch 'main' into develop 2021-09-16 11:36:15 +02:00
Andrey Antukh
06e54a17c0 📚 Update some comments on docker config.env file. 2021-09-16 11:35:45 +02:00
Andrey Antukh
1fe23ff732 📎 Minor renaming of config variables. 2021-09-16 11:33:40 +02:00
Andrey Antukh
39278b47dd 🐛 Fix typo in prev commit. 2021-09-16 11:31:54 +02:00
Andrey Antukh
bff0030f2b 🐛 Fix frontend docker image entry point. 2021-09-16 11:28:39 +02:00
Andrés Moya
b4b2f91363 🎉 Add interaction overlays 2021-09-16 07:53:54 +02:00
Andrés Moya
c7252a950b 🎉 Allow complex interactions 2021-09-16 07:53:54 +02:00
Andrey Antukh
e48b01fd18 📎 Add default env variable for browser executable path. 2021-09-15 14:28:57 +02:00
Amine Gdoura
ef2337f6d8 🌐 Add translations for: Arabic.
Currently translated at 68.3% (524 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-09-14 15:35:48 +02:00
Andrey Antukh
13d83cb0d1 🐛 Fix incorrect handling of metrics on notifications module. 2021-09-14 10:45:06 +02:00
Andrey Antukh
033355395f 🐛 Fix metrics on ws connections. 2021-09-13 15:00:08 +02:00
Andrey Antukh
6c332b949b 📎 Start new development cycle. 2021-09-13 12:55:52 +02:00
Andrey Antukh
0711438433 Merge branch 'main' into develop 2021-09-13 12:55:36 +02:00
Andrey Antukh
ee6350189f Merge remote-tracking branch 'origin/staging' into main 2021-09-13 12:54:44 +02:00
Andrés Moya
46189c0ff1 🐛 Fix wrong timeout in download artboards message 2021-09-13 12:52:14 +02:00
alonso.torres
45d55e87eb 🐛 Fix problem while moving imported SVG's 2021-09-13 11:56:01 +02:00
alonso.torres
8a158146cd 🐛 Fix problem with import broken images 2021-09-13 11:56:01 +02:00
andy
1a859fc639 🌐 Add translations for: Spanish.
Currently translated at 99.6% (764 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-09-11 11:32:54 +02:00
Rubén
43518c6cfe 🌐 Add translations for: Catalan.
Currently translated at 99.0% (760 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2021-09-11 11:32:53 +02:00
Andrés Moya
7bfb7b6da0 Merge branch 'staging' into develop 2021-09-10 13:24:29 +02:00
Oğuz Ersen
c0474b206e 🌐 Add translations for: Turkish.
Currently translated at 98.5% (756 of 767 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-09-10 12:57:50 +02:00
Andrés Moya
fe6623b342 🐛 Fix interactions in viewer 2021-09-10 12:55:21 +02:00
Andrey Antukh
de8220245c Merge branch 'release-1.8-onboarding' into staging 2021-09-10 11:50:16 +02:00
elhombretecla
562f0d9872 🎉 Update 1.8 release onboarding info 2021-09-10 11:50:01 +02:00
elhombretecla
ed89f858e1 🎉 add new onboarding images 2021-09-10 11:50:01 +02:00
Andrey Antukh
9527b2c456 Merge branch 'staging' into develop 2021-09-10 10:57:15 +02:00
Andrey Antukh
5da2e5e7b7 🎉 Add Catalan language to the supporter languages list. 2021-09-10 10:56:23 +02:00
alonso.torres
e55e5aa168 Merge branch 'staging' into develop 2021-09-09 15:18:53 +02:00
alonso.torres
22b45266bf 🐛 Fix problem with path not closing on escape 2021-09-09 15:08:47 +02:00
Andrey Antukh
b280b5a517 Merge pull request #1194 from penpot/fix-pdf-pages
Fix pdf pages
2021-09-09 14:27:24 +02:00
Andrés Moya
60cb358cce 🐛 Fix extra blank pages when exporting to PDF 2021-09-09 14:11:50 +02:00
Andrey Antukh
f03a74abc7 🐛 Fix next frame shortcut on viewer. 2021-09-09 12:05:15 +02:00
Andrey Antukh
34885b64bd 🐛 Fix style on viewer header. 2021-09-09 11:41:18 +02:00
elhombretecla
f3bfa4e587 Update CHANGES.md 2021-09-09 11:09:21 +02:00
Andrey Antukh
3136ce7dc2 Add missing frame index on viewer. 2021-09-09 11:07:47 +02:00
elhombretecla
15a050517b Update CHANGES.md 2021-09-09 09:28:38 +02:00
Andrey Antukh
85a1c61880 Improve 404 and add broken link static page on viewer. 2021-09-08 13:52:11 +02:00
Andrey Antukh
15991d0226 Merge pull request #1189 from penpot/sequential-export
 Change frame exports to be sequential
2021-09-08 13:48:12 +02:00
Andrés Moya
413bc41695 Change frame exports to be sequential 2021-09-08 13:11:32 +02:00
Andrey Antukh
36137808f0 📎 Sort translation strings. 2021-09-08 12:59:24 +02:00
Andrey Antukh
12c1852297 Merge remote-tracking branch 'weblate/develop' into translations 2021-09-08 12:54:20 +02:00
Andrey Antukh
95e3c3eafc 📎 Enable by default demo users. 2021-09-08 11:14:19 +02:00
Andrey Antukh
c458fa6441 📎 Update changelog. 2021-09-08 11:14:19 +02:00
Andrey Antukh
66c1e386ce 🐛 Fix style issues on share link dialog. 2021-09-08 11:14:19 +02:00
Andrey Antukh
59e203fd52 🐛 Fix messages z-index issue.
Happens when modals and messages are visible
in the same time.
2021-09-08 11:14:19 +02:00
Andrey Antukh
7e0c097f23 🎉 Add linter for check duplicte potok types. 2021-09-07 11:48:14 +02:00
Andrey Antukh
926fa483b9 Improve event registry. 2021-09-07 11:48:14 +02:00
Rubén
2ebc92a167 🌐 Add translations for: Spanish.
Currently translated at 98.8% (679 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-09-04 17:33:02 +02:00
Rubén
eb511757db 🌐 Add translations for: Catalan.
Currently translated at 99.7% (685 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2021-09-04 17:33:02 +02:00
alonso.torres
b5b97f7626 🐛 Fix problem with multiple selection conflicting with hover 2021-09-03 15:31:45 +02:00
Andrés Moya
ba0f7416bb Add some user feedback while exporting artboards 2021-09-03 15:13:32 +02:00
Andrey Antukh
f6e18de6af Add more metrics to update-file. 2021-09-03 10:36:34 +02:00
Andrey Antukh
320a4552bc Merge pull request #1172 from penpot/export-artboards
🎉 Export to PDF all artboards of one page
2021-09-02 16:33:47 +02:00
Andrés Moya
203473c965 🎉 Export to PDF all artboards of one page 2021-09-02 15:21:33 +02:00
Andrés Moya
255177d12b 🐛 Fix linter error 2021-09-02 15:21:01 +02:00
Andrey Antukh
290bf00b2d Use compact transit encoding instead of verbose. 2021-09-02 14:29:53 +02:00
Andrey Antukh
8464e6a822 Disable response streaming.
Because it is really slow.
2021-09-02 14:17:12 +02:00
Andrey Antukh
8af46ac7fc Minor improvements on section initialization. 2021-09-02 09:45:43 +02:00
Andrey Antukh
daeaf14032 Merge pull request #1169 from penpot/bugfixing
Bugfixing
2021-08-31 17:09:15 +02:00
alonso.torres
bd52a7c926 🐛 Fix minor visual issue 2021-08-31 16:10:42 +02:00
alonso.torres
c8c43de510 🐛 Fix group renaming problem 2021-08-31 15:52:39 +02:00
alonso.torres
bb49071088 🐛 Fix SVG components preview 2021-08-31 15:22:38 +02:00
alonso.torres
7a523a9d89 🐛 Fix problems with order in groups 2021-08-31 14:52:59 +02:00
alonso.torres
885d7de11b 🐛 Fix rename typography on text options 2021-08-31 14:52:06 +02:00
alonso.torres
f44675a1e4 🐛 Fix repeated fetch on file selection 2021-08-31 14:52:06 +02:00
alonso.torres
ce912c7430 🐛 Fix problems with export components 2021-08-31 14:12:12 +02:00
Andrey Antukh
e9fdd74a99 🐛 Fix unexpected text wrapping on exporting. 2021-08-31 12:17:52 +02:00
Andrés Moya
df8269bc7f 🐛 Fix color of texts in pdf exported files 2021-08-31 12:05:43 +02:00
alonso.torres
23e4fa82c8 Add translations to onboarding 2021-08-31 12:01:05 +02:00
alonso.torres
9bea604a46 🐛 Fix thumbnail cropping issue 2021-08-31 11:46:43 +02:00
alonso.torres
119fbd114d 🐛 Fix typos in mailing list 2021-08-31 11:46:43 +02:00
alonso.torres
1b6e6ec2e4 🐛 Fix problem with borders on shape export 2021-08-31 11:46:43 +02:00
alonso.torres
2dfa4f9ec9 Add export/import to custom caps 2021-08-30 12:56:22 +02:00
alonso.torres
3cd3e89679 🐛 Fix problem with caps in thumbnails 2021-08-30 12:56:22 +02:00
alonso.torres
c3be1c870d 🐛 Fix problem with zoom and selection 2021-08-30 12:54:07 +02:00
Andrey Antukh
6b571fd2bb 🐛 Fix wrong pages filtering on view-only-bundle rpc output. 2021-08-30 12:39:06 +02:00
alonso.torres
92df7abcf0 🐛 Fix lint error 2021-08-30 12:22:53 +02:00
Andrey Antukh
498d1570ce 📎 Fix linter issues. 2021-08-27 13:37:55 +02:00
Andrey Antukh
e587179359 ♻️ Refactor flags handling on frontend. 2021-08-27 13:19:36 +02:00
Andrey Antukh
c9985121c4 📎 Allow overwrite archive task props. 2021-08-27 09:42:58 +02:00
Andrey Antukh
e768600df3 ♻️ Enable receiving frontend audit log on backend. 2021-08-25 14:01:43 +02:00
Andrés Moya
3dffb9c8a0 Enable line caps in component sync and svg upload 2021-08-24 16:27:58 +02:00
Andrés Moya
eb40297a35 🎉 Enhance line caps selectors 2021-08-24 16:27:58 +02:00
elhombretecla
837985ccc5 💄 Fix ui constraints color 2021-08-20 10:48:02 +02:00
Andrés Moya
1def4b0f0c Merge pull request #1151 from penpot/niwinz-exporter-and-docker
Exporter resource management improvements.
2021-08-19 15:10:15 +02:00
Andrey Antukh
4c430cedf5 ♻️ Refactor exporter browser management.
Replace the cluster dependency with generic-pool.
2021-08-19 14:17:51 +02:00
Andrey Antukh
18d9212253 Enable aarch64 build for exporter docker image. 2021-08-19 14:16:53 +02:00
Andrey Antukh
36314691f1 ⬆️ Update devenv dockerfile. 2021-08-19 14:16:34 +02:00
Andrey Antukh
24da25f0f7 📎 Update changelog and increase version (minor). 2021-08-19 11:15:30 +02:00
Andrey Antukh
84ba8e6dde Add better error reporting when ldap is not configured correctly. 2021-08-19 11:04:08 +02:00
Andrey Antukh
c6fe035939 🐛 Fix demo user login issue. 2021-08-19 11:04:08 +02:00
Andrés Moya
be9073f0b7 🎉 Add stroke caps to path ends 2021-08-19 09:13:22 +02:00
Andrey Antukh
ac6c07b771 🐛 Fix demo user login issue. 2021-08-18 16:54:56 +02:00
Andrey Antukh
c8102f4bff 🎉 Share link & pages on viewer. 2021-08-18 16:54:56 +02:00
Andrey Antukh
df1fcd5e22 📎 Update changelog. 2021-08-18 15:08:25 +02:00
Andrey Antukh
de87da9c91 🐛 Fix font uploading issue on windows. 2021-08-18 15:06:19 +02:00
Andrey Antukh
3532263af4 🐛 Fix font uploading issue on windows. 2021-08-18 13:14:02 +02:00
Andrés Moya
a9cf4dad82 🎉 Allow increment font size by 0.1 with alt 2021-08-18 10:56:33 +02:00
Andrés Moya
1de1eb6b9b 🐛 Fix initial shape names 2021-08-13 13:42:33 +02:00
Andrés Moya
f6742d1bbf 📚 Update changes. 2021-08-13 10:05:13 +02:00
Andrés Moya
a377c602cc 🐛 Fix naming of duplicated objects in copy&paste and others 2021-08-13 09:49:42 +02:00
Andrey Antukh
58f0ad999c Merge pull request #1144 from penpot/colorpicker-tooltips
🎉 Add tooltips to color picker tabs
2021-08-12 11:23:34 +02:00
Andrés Moya
f612d35daf ♻️ Remove locale translation 2021-08-12 11:17:31 +02:00
Andrés Moya
7d202cb492 🎉 Add tooltips to color picker tabs 2021-08-12 10:56:08 +02:00
Andrés Moya
39bb7f209d Use penpot metadata only for whole file export 2021-08-11 12:26:50 +02:00
Mahmoud A. Rabo
bbd38a7e47 🌐 Add translations for: Arabic.
Currently translated at 75.8% (521 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-08-11 01:33:17 +02:00
Voxybuns
d8b2cc7e1b 🌐 Add translations for: French.
Currently translated at 100.0% (687 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2021-08-11 01:33:15 +02:00
Andrés Moya
09b328167c Truncate 2 decimals in font size 2021-08-10 11:24:54 +02:00
Andrés Moya
4439ef07b6 🎉 Allow orthogonal movement 2021-08-10 11:20:43 +02:00
Andrés Moya
f8491e9631 🎉 Increment font size by 10 with shift+arrows 2021-08-10 08:51:23 +02:00
Andrés Moya
63259b3f92 🎉 Add shortut Ctrl+Shift+K to detach instances 2021-08-09 12:02:20 +02:00
Andrés Moya
10db35eab4 Hide options for drafts project in dashboard 2021-08-09 09:37:48 +02:00
Eranot
0fa79c7a46 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 72.9% (501 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-08-08 03:35:05 +02:00
Andrés Moya
e20f557bd6 Enhance resize from center, work when locked proportions 2021-08-06 13:42:50 +02:00
Andrés Moya
25d8d76524 🐛 Fix "Allow resizing from center"
This reverts commit cc0f99333f.
2021-08-06 09:20:32 +02:00
Andrés Moya
cc0f99333f Revert "🎉 Allow resizing from center"
This reverts commit 2a70964dce.
2021-08-05 15:39:09 +02:00
Andrés Moya
982aa874f2 🐛 Disable path conversion for raw-svg, to avoid errors 2021-08-05 14:54:54 +02:00
Andrés Moya
2a70964dce 🎉 Allow resizing from center 2021-08-05 14:54:54 +02:00
Mahmoud A. Rabo
3051a185e5 🌐 Add translations for: Arabic.
Currently translated at 47.5% (327 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-08-04 12:32:22 +02:00
Andrés Moya
5e788fff99 Merge remote-tracking branch 'origin/main' into develop 2021-08-04 12:00:13 +02:00
Andrey Antukh
326c52604b 🐛 Don't dissoc :current-team-id on finalizing workspace. 2021-08-04 11:54:54 +02:00
Andrey Antukh
e7d1647769 🐛 Don't allow remove default teams. 2021-08-04 10:54:31 +02:00
Andrey Antukh
1e35116d8f 🐛 Don't allow remove default projects. 2021-08-04 10:50:21 +02:00
Andrey Antukh
35ca3ec895 🐛 Fix loggin issue when user uses the same email as previously deleted profile. 2021-08-04 10:42:22 +02:00
Andrés Moya
3435684c87 Merge branch 'staging' 2021-08-04 09:36:56 +02:00
Andrés Moya
7c30cccc97 📚 Add contribution 2021-08-03 09:50:09 +02:00
Andrés Moya
4194abe4f2 🧹 Remove unneeded function 2021-08-03 09:50:09 +02:00
Eduard Aymerich
0b698576da fix: remove top right button in settings. #1123 2021-08-03 09:50:09 +02:00
Andrés Moya
3fbd73129e Set email fields to email type to help editing 2021-08-03 09:50:09 +02:00
Andrés Moya
bbd6d171be 🎉 Allow to navigate undo history 2021-08-03 09:50:09 +02:00
Andrés Moya
f7929bbf93 📚 Some cleanup in CHANGES.md 2021-08-03 09:50:09 +02:00
Andrés Moya
29cd8530a3 🎉 Remember displacements when duplicating several shapes in a row 2021-08-03 09:50:09 +02:00
Andrés Moya
574387acac Move artboards when duplicating 2021-08-03 09:50:09 +02:00
Andrés Moya
6a1ab4d73c 🎉 Allow to zoom with ctrl + middle button 2021-08-03 09:50:09 +02:00
Andrés Moya
29e0c32679 Start panning with space+click instread of just space 2021-08-03 09:50:09 +02:00
Andrey Antukh
db7fe023c6 📎 Set next version to 1.8.0-alpha. 2021-08-03 09:50:09 +02:00
Andrey Antukh
bed702d8de 🐛 Fix font uploading (related to storage internal changes). 2021-08-03 09:48:37 +02:00
Maemolee
ccf3d7a285 🌐 Add translations for: Chinese (Simplified).
Currently translated at 97.3% (669 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2021-07-30 18:34:06 +02:00
Andrey Antukh
e4f755416d 🐛 Fix backward compatibility introduced in previous commit.
Related to stroage.
2021-07-29 16:44:25 +02:00
Andrey Antukh
4d5b0731be 📎 Prepare 1.7.2-alpha release. 2021-07-29 14:54:30 +02:00
Andrey Antukh
fde6ea1c83 Merge branch 'main' into staging 2021-07-29 14:44:37 +02:00
Andrey Antukh
7a94a2f087 🐛 Fix default storage config on docker images compose file. 2021-07-29 14:36:03 +02:00
Andrey Antukh
97b8f742dd 🐛 Fix exporter bug on docker images. 2021-07-29 13:05:39 +02:00
Andrey Antukh
06733ea7cd 🐛 Fix exporter bug on docker images. 2021-07-29 12:59:24 +02:00
Andrey Antukh
efa5120fac Fix inconsistencies on storage backend usage. 2021-07-29 12:59:24 +02:00
Andrés Moya
80ab6bbda2 🐛 Fix linter error 2021-07-28 16:23:15 +02:00
Andrés Moya
53620b9f1b 🐛 Fix tooltip errors:move nodes and draw nodes are swapped
From PR https://github.com/penpot/penpot/pull/1100 by @soultipsy
2021-07-28 16:15:56 +02:00
Andrés Moya
259b405526 Detach all assets when unlinking an external lib 2021-07-28 13:48:52 +02:00
Andrés Moya
c6fe19c321 🐛 Protect against broken component refs #1114 2021-07-28 13:48:52 +02:00
alonso.torres
9d545004cb 🐛 Fix problem with pasting text into text editor 2021-07-28 13:48:39 +02:00
Andrés Moya
7fe419ecb0 🐛 Fix error when editing texts 2021-07-27 17:05:44 +02:00
Andrey Antukh
55ddf9cc38 🎉 Add some missing js hints. 2021-07-27 14:10:56 +02:00
Andrey Antukh
38292bcda7 🐛 Properly handle group naming on group creation. 2021-07-27 14:10:56 +02:00
Andrey Antukh
08062e8ce8 📚 Add better docstring to group creation internal function. 2021-07-27 14:10:56 +02:00
Andrey Antukh
bff35de39f 🐛 Don't remove :workspace-layout on finalize-file. 2021-07-27 14:10:56 +02:00
Andrey Antukh
394e6b08ad 🎉 Add many improvements on nil handling and code structure on changes impl. 2021-07-27 14:10:56 +02:00
alonso.torres
d61a86cad1 🐛 Frame moving with title with button different than left 2021-07-26 19:28:06 +02:00
alonso.torres
43198eb263 🐛 Improved object deletion 2021-07-26 19:28:06 +02:00
alonso.torres
8493e51070 🐛 Fix problem with svg's viewbox 2021-07-26 19:28:06 +02:00
Andrey Antukh
07eeb76a5f Stream all transit responses.
Instead of buffering for etag. The etags are temporary disabled.
2021-07-26 13:43:39 +02:00
Andrey Antukh
6ee6a03e4a Revert "Update and rename frontend/src/app/main/ui/workspace/viewport/path_actions.cljs to 前端 /src /app /main /ui /工作区 /视口 /path_actions.cljs"
This reverts commit 9d372301ed.
2021-07-26 12:08:24 +02:00
Andrey Antukh
8e3eb98789 Revert "🔥 Remove file."
This reverts commit c5b23816e9.
2021-07-26 12:08:14 +02:00
Andrey Antukh
c5b23816e9 🔥 Remove file. 2021-07-26 11:33:05 +02:00
Andrey Antukh
0a3cd4f8e4 ⬆️ Update deps. 2021-07-26 11:32:46 +02:00
Andrey Antukh
7882dead81 Merge pull request #1100 from soultipsy/develop
Tooltip errors:move nodes and draw nodes are swapped
2021-07-26 11:03:37 +02:00
Andrey Antukh
44f96dd6a3 Merge pull request #1095 from penpot/text-editor-improvements
Text editor improvements
2021-07-26 11:02:29 +02:00
Andrey Antukh
a442afd8d2 Merge branch 'main' into develop 2021-07-26 09:49:37 +02:00
Andrey Antukh
bdbc57b926 📎 Update changelog and increase version. 2021-07-26 09:47:47 +02:00
Andrey Antukh
9ed53ba064 Merge remote-tracking branch 'origin/main' into develop 2021-07-26 09:42:59 +02:00
soultipsy
9d372301ed Update and rename frontend/src/app/main/ui/workspace/viewport/path_actions.cljs to 前端 /src /app /main /ui /工作区 /视口 /path_actions.cljs
Tooltip errors:move nodes and draw nodes are swapped.
2021-07-20 15:44:51 +08:00
Andrey Antukh
b483513fa8 Merge pull request #1099 from penpot/fix-vertical-resize
🐛 Fix vertical resize when nested shapes
2021-07-20 09:42:44 +02:00
Andrés Moya
578c561473 🐛 Fix linter issues 2021-07-20 09:35:22 +02:00
Andrés Moya
f6134a6bd3 🐛 Fix vertical resize when nested shapes 2021-07-20 09:19:24 +02:00
Wang Jiaxiang
fb59d5d268 🌐 Add translations for: Chinese (Simplified).
Currently translated at 82.9% (570 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/zh_Hans/
2021-07-16 17:35:11 +02:00
Andrey Antukh
2758b6ffd9 Merge pull request #1096 from penpot/fix-duplicate-names
🐛 Fix repeated names when duplicating object trees.
2021-07-16 16:26:56 +02:00
Andrés Moya
fa99dea8fe 📚 Add some comments about possible code enhancements 2021-07-16 16:21:56 +02:00
Andrés Moya
6ced56301c ♻️ Optimice a bit of performance 2021-07-16 16:21:56 +02:00
Andrés Moya
008134fde8 🐛 Fix repeated names when duplicating object trees. 2021-07-16 16:21:55 +02:00
Andrés Moya
3ed593e4b6 🐛 Fix scroll in teams dropdown at dashboard 2021-07-16 14:35:43 +02:00
alonso.torres
1fc5182979 🐛 Fix text focus issues 2021-07-16 14:14:36 +02:00
alonso.torres
9ebafddac2 Make last font used the default for next text box 2021-07-16 13:13:24 +02:00
alonso.torres
26467187c4 Fix text editor issues 2021-07-16 13:13:24 +02:00
alonso.torres
69e256ab86 Moves cursor to position when clicking in the text box 2021-07-16 13:13:24 +02:00
Andrey Antukh
b4b12e68bf Merge remote-tracking branch 'origin/main' into develop 2021-07-15 18:08:32 +02:00
Andrey Antukh
768216d9bc 🐛 Fix previous migration. 2021-07-15 17:39:56 +02:00
Andrey Antukh
f29d54ad0d 🐛 Add migration for fix unreferenced shapes on frames. 2021-07-15 17:23:51 +02:00
Andrey Antukh
946309a485 📎 Add migration for cleaning unused props on file data. 2021-07-15 16:50:56 +02:00
Andrey Antukh
7c98336148 📎 Improve error reporting. 2021-07-15 16:50:32 +02:00
Andrey Antukh
455b0efa71 🐛 Add migration for fix some inconsistencies on page data. 2021-07-15 16:40:00 +02:00
Guilherme Dimas
05cf14846c 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 64.3% (442 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-07-15 16:33:38 +02:00
Andrey Antukh
9ddcb036cf Merge branch 'main' into develop 2021-07-15 15:17:36 +02:00
Andrés Moya
185e06ed79 Merge pull request #1093 from penpot/niwinz-hotfixes
Hotfixes
2021-07-15 14:13:42 +02:00
Andrey Antukh
17ae6bf89d 🐛 Fix problem when page deletion and undo.
Related to duplicated page reference in undo page deletion.
2021-07-15 14:03:11 +02:00
alonso.torres
7efc1a0366 🐛 Fix problem with undo operation and children order 2021-07-15 14:03:11 +02:00
Andrey Antukh
899dc5b680 🐛 Properly dissoc :metadata prop on image->path conversion. 2021-07-15 11:57:45 +02:00
Andrey Antukh
5126c85623 🐛 Properly handle path with fill-image on file media gc task. 2021-07-15 11:57:15 +02:00
Andrés Moya
9ec23ceed6 🐛 Hide popup messages when navigating out 2021-07-14 18:39:33 +02:00
Andrey Antukh
a6d156438f Merge branch 'staging' into main 2021-07-14 11:32:09 +02:00
Andrey Antukh
23e4915d60 ⬆️ Set next version number (1.8.0) 2021-07-14 11:10:03 +02:00
Andrey Antukh
5ecfe05f3b 📎 Update CHANGES.md file. 2021-07-14 11:09:09 +02:00
Andrey Antukh
d35192d50f 📎 Minor cosmetic fixes on relnotes dialog. 2021-07-13 15:31:02 +02:00
Andrey Antukh
e2f9ce0fc5 📎 Minor improvement on relnotes dialog texts. 2021-07-13 14:56:22 +02:00
Andrey Antukh
8f55741c3e 📎 Fix typo on relnotes dialog. 2021-07-13 14:51:56 +02:00
Andrey Antukh
b7dc6d6cce Merge pull request #1083 from penpot/constraints-rotated
🐛 Fix constraints for rotated shapes
2021-07-13 14:15:42 +02:00
Andrey Antukh
8fb8a5d89a 🎉 Add release notes dialog for 1.7. 2021-07-13 14:13:25 +02:00
Andrey Antukh
dc22c2763e ⬆️ Update dependencies. 2021-07-13 14:13:25 +02:00
Andrés Moya
a77863d3c5 🐛 Fix constraints for rotated shapes 2021-07-13 11:26:03 +02:00
alonso.torres
0c8e0ed3dd 🐛 Fix problem with invalid svg value 2021-07-09 14:50:57 +02:00
Andrés Moya
fb7751eaae Apply different resize vectors for h and v constraints 2021-07-09 12:53:47 +02:00
Andrés Moya
56795f8d26 ♻️ Reorder functions, for more clarity, and add some comments 2021-07-09 12:53:47 +02:00
Andrés Moya
741d3050ad ♻️ Small refactor set modifiers 2021-07-09 12:53:47 +02:00
alonso.torres
0ff0fd7ced Merge remote-tracking branch 'origin/main' into develop 2021-07-09 12:42:33 +02:00
alonso.torres
b9b287d3b2 🐛 Fix problem with non existing children 2021-07-09 10:40:39 +02:00
Andrey Antukh
dc089ba84a Merge pull request #1080 from penpot/enhancement/incremental-area-selection
Incremental area selection
2021-07-08 23:08:06 +02:00
alonso.torres
55d2acdf13 Incremental area selection 2021-07-08 22:01:05 +02:00
Andrey Antukh
3a64efd136 Merge pull request #1078 from penpot/enhancement/shape-to-path
Double click won't make a shape a path until you change a node
2021-07-08 16:38:27 +02:00
alonso.torres
4e439792ec Double click won't make a shape a path until you change a node 2021-07-08 16:02:39 +02:00
alonso.torres
895889d27a 🐛 Fix local assert when deleting text 2021-07-08 16:02:21 +02:00
alonso.torres
d2777f5915 🐛 Fix dynamic alignment enabled with hidden objects 2021-07-07 17:16:56 +02:00
alonso.torres
9b878bd1cc 🐛 Fix header partialy visible on fullscreen viewer mode 2021-07-07 17:16:56 +02:00
alonso.torres
73a08fd119 🐛 Fix resize/rotate with mouse buttons different than left 2021-07-07 17:16:56 +02:00
alonso.torres
7b9b3dabbe 🐛 Fix problem when editing color in group 2021-07-07 17:16:56 +02:00
alonso.torres
163215d5c9 🐛 Fix negative values in blur options 2021-07-07 17:16:56 +02:00
Andrés Moya
7cc9fa6d30 🐛 Fix constraints calc when parent has displacement 2021-07-07 13:32:46 +02:00
Andrey Antukh
2d38d7af82 Merge pull request #1075 from penpot/fix/color-picker
Fix issues with color picker
2021-07-07 12:48:11 +02:00
alonso.torres
26e9f652b6 🐛 Fix color picker for texts in root frame 2021-07-07 12:45:33 +02:00
Andrey Antukh
19afc2274a Minor improvement on event syncronization on login after register. 2021-07-07 12:44:25 +02:00
alonso.torres
16fcc60a59 🐛 Fix color picker not working 2021-07-07 12:11:42 +02:00
alonso.torres
1b44fe8fec 🐛 Fixed problem when importing flatten components 2021-07-07 10:56:54 +02:00
Andrey Antukh
028e1d63a3 📎 Add logging to server repl namespace. 2021-07-07 10:31:01 +02:00
Andrey Antukh
e1e825f350 Do not initialize mattermost error reporter if no uri is provided. 2021-07-07 10:26:04 +02:00
Andrés Moya
65a4aff5fc 📚 Add constraints to CHANGES.md 2021-07-07 09:34:18 +02:00
Andrey Antukh
8f95f2ba12 Merge pull request #1074 from penpot/import/drag-drop
Import/drag drop
2021-07-07 09:24:03 +02:00
alonso.torres
991e0d5e5b ♻️ Remove classnames old reference 2021-07-07 09:23:10 +02:00
alonso.torres
84cf63d1ba Changed export modal progress 2021-07-06 18:08:25 +02:00
alonso.torres
60009476d6 Allows drag-drop files into dashboard 2021-07-06 18:08:25 +02:00
Andrés Moya
1894fc7cfa 🐛 Fix linter error 2021-07-06 18:08:08 +02:00
Andrés Moya
c9c24c3464 🐛 Fix linter error 2021-07-06 18:08:08 +02:00
Andrés Moya
cb731176eb 🎉 Change print artboard presets to 96dpi 2021-07-06 18:08:08 +02:00
Andrés Moya
1ee14a76f4 🎉 Export shapes to pdf 2021-07-06 18:08:08 +02:00
Andrey Antukh
e9945235ed Improvements on auth and login. 2021-07-06 16:03:48 +02:00
alonso.torres
60b29a3bf5 🐛 Fix problem with import with default grids 2021-07-06 12:19:11 +02:00
alonso.torres
3eb209b602 🐛 Fix import images 2021-07-06 11:19:38 +02:00
Andrey Antukh
d1cce44616 🎉 Add keys namespace.
A modularized approach for key derivation.
2021-07-06 10:49:27 +02:00
Andrey Antukh
c02638e10e Merge pull request #1072 from penpot/import-export-improvements
Import export improvements
2021-07-06 09:57:25 +02:00
alonso.torres
ddbdc2a27f Import/export folders in library elements 2021-07-06 09:52:49 +02:00
alonso.torres
f312c122ca 🐛 Migration to solve a problem with mime types 2021-07-06 09:52:49 +02:00
Çağlar Yeşilyurt
1d6a421388 🌐 Add translations for: Turkish.
Currently translated at 93.4% (642 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-07-05 19:02:21 +02:00
alonso.torres
6e40e4e994 📚 Update changelog 2021-07-05 18:13:45 +02:00
alonso.torres
2149576289 Updated translations 2021-07-05 13:17:10 +02:00
alonso.torres
96891a5e5c Upgraded beicon version 2021-07-05 13:17:10 +02:00
alonso.torres
2771cab71a Export options 2021-07-05 13:17:10 +02:00
alonso.torres
d0ab813520 Import/export UI and final touches 2021-07-05 13:17:10 +02:00
Andrey Antukh
1b1c0ff9e4 🐛 Fix incorrect terms check validation on register page. 2021-07-05 12:19:11 +02:00
Andrey Antukh
083696a899 ⬆️ Update deps on devenv dockerfile. 2021-07-05 12:18:36 +02:00
Andrey Antukh
1376c26def 📎 Minor changes on register page. 2021-07-05 11:46:40 +02:00
Andrés Moya
e13cfad9da 🐛 Include constraints in the list of synced attrs 2021-07-02 09:56:21 +02:00
Andrés Moya
723cb3b546 Detach typographies when deleted in the file library 2021-07-01 17:33:04 +02:00
Andrés Moya
dac7a6497f Detach colors when deleted in the file library 2021-07-01 17:33:04 +02:00
Andrés Moya
ea8bc687c0 Detach instance when syncing if the master component is gone 2021-07-01 17:33:04 +02:00
Andrés Moya
c98958053c 🐛 Fix geometry sync for subcomponents 2021-07-01 17:32:39 +02:00
Andrés Moya
5f1ed511ea ♻️ Refactor to separate constraints to its own module 2021-07-01 17:15:51 +02:00
elhombretecla
61b7c279d6 💄 Change sidebar order 2021-07-01 17:15:51 +02:00
alonso.torres
4c84b18bb6 Add library linking to export/import 2021-06-30 09:09:48 +02:00
alonso.torres
484eb3a7c4 Allow to set up id for media 2021-06-30 09:09:48 +02:00
Eranot
f73880e565 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 61.4% (422 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-06-29 13:34:09 +02:00
Andrés Moya
36cca0d871 🐛 Reset constraints when reparenting a shape 2021-06-28 22:46:13 +02:00
Andrés Moya
08d2dbc9bb Preserve components on copy&paste when possible 2021-06-28 22:45:48 +02:00
nautilusx
ce13902680 🌐 Add translations for: German.
Currently translated at 91.8% (631 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2021-06-27 10:33:22 +02:00
alonso.torres
e818170eec 🐛 Fix problem when exporting components with images 2021-06-25 11:27:31 +02:00
alonso.torres
91b6a0bf69 🐛 Fix problem with shadow menu 2021-06-25 10:34:51 +02:00
alonso.torres
85a6edb1fd Import components 2021-06-24 16:57:16 +02:00
alonso.torres
7d14122746 Import library media,color,typographies 2021-06-24 16:57:16 +02:00
alonso.torres
aa14d9626f Add library elements to file builder 2021-06-24 16:57:16 +02:00
alonso.torres
98f072619f Allow removing background from frames 2021-06-24 16:57:16 +02:00
Andrés Moya
150427cd39 🐛 Fix contextual menu in dashboard shared libraries section 2021-06-24 15:47:40 +02:00
Andrés Moya
3295685938 Improve algorithm for constraints calculation 2021-06-24 13:30:36 +02:00
elhombretecla
ca4ce569e7 📚 Improve general README file 2021-06-24 09:46:54 +02:00
Andrés Moya
ca9edf2bc9 ♻️ Refactor resize shapes from the sidebar measures form 2021-06-22 15:25:31 +02:00
Andrés Moya
be387ad892 Merge pull request #1053 from penpot/feat/export-import
Feat/export import
2021-06-22 12:02:04 +02:00
alonso.torres
9b9959da9a Export library components 2021-06-22 11:11:49 +02:00
alonso.torres
234a698538 ❇️ Fix linter warnings 2021-06-22 11:11:49 +02:00
alonso.torres
fbf1c10077 Export library data (images, typographies, colors) 2021-06-22 11:11:49 +02:00
alonso.torres
4d0dcc5876 Process interactions on import 2021-06-22 11:11:49 +02:00
Andrés Moya
4e909dc369 Emit numeric input changes only if value actually changed 2021-06-21 15:38:17 +02:00
Andrés Moya
ac1d0a5502 🐛 Fix taking into account attrs filter in update-shapes 2021-06-21 10:31:00 +02:00
Andrés Moya
d89a4a1218 🐛 Fix constraints detection on rotated structures 2021-06-21 10:31:00 +02:00
Andrés Moya
71759386c5 Detect movements inside a component and not override them 2021-06-21 10:31:00 +02:00
Eranot
fdbf94f415 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 54.4% (374 of 687 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-06-21 05:32:46 +02:00
Andrey Antukh
ad4115acc8 ⬆️ Update shadow-cljs dependency. 2021-06-18 15:06:05 +02:00
Andrey Antukh
432a8f2338 Merge branch 'translations' into develop 2021-06-18 11:26:13 +02:00
Andrés Moya
b994363972 Merge pull request #1048 from penpot/niwinz-bugfixes-20210617
 Fix linter issues on frontend
2021-06-18 11:25:49 +02:00
Andrey Antukh
2a81321ead Merge remote-tracking branch 'weblate/develop' into translations 2021-06-18 11:25:30 +02:00
Andrey Antukh
dd7f5fd228 Revert "📎 Sort & validate translation files."
This reverts commit 09314c8926.
2021-06-18 11:24:54 +02:00
Andrey Antukh
047791413e Fix linter issues on backend. 2021-06-18 11:20:26 +02:00
Andrey Antukh
358fa7b20f 📎 Add specific linter for service defmethod (on backend). 2021-06-18 11:20:26 +02:00
Andrey Antukh
c937ccc92b 📎 Activate frontend and common linter on CI. 2021-06-18 11:20:26 +02:00
Andrey Antukh
e796c3dfba Fix linter issues on frontend (part 6). 2021-06-18 11:20:26 +02:00
Andrey Antukh
0f3e4c289c Fix linter issues on frontend (part 5). 2021-06-18 11:20:26 +02:00
Andrey Antukh
e0846ce00e Fix linter issues on frontend (part 4). 2021-06-18 11:20:25 +02:00
Andrey Antukh
30e77556db Fix linter issues on frontend (part 3). 2021-06-18 11:20:25 +02:00
Andrey Antukh
3e4e54870b Fix linter issues on frontend (part 2). 2021-06-18 11:20:25 +02:00
Andrey Antukh
e90185b553 Fix linter issues on frontend (part 1). 2021-06-18 11:20:25 +02:00
Amine Gdoura
4a82c14808 🌐 Add translations for: Arabic.
Currently translated at 27.3% (181 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-06-18 11:19:05 +02:00
andy
80371233c9 🌐 Add translations for: Spanish.
Currently translated at 99.5% (659 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-06-18 11:19:05 +02:00
Andrey Antukh
09314c8926 📎 Sort & validate translation files. 2021-06-18 11:18:05 +02:00
Andrey Antukh
0e67e0d87e Merge remote-tracking branch 'weblate/develop' into translations 2021-06-18 11:12:48 +02:00
alonso.torres
c21ad48370 🐛 Fix problem with order in color palette 2021-06-18 10:36:04 +02:00
Andrey Antukh
9e3ba85b72 ♻️ Refactor profile registration flow. 2021-06-18 09:42:52 +02:00
alonso.torres
c82d936e96 Improves selrect calculation 2021-06-17 14:45:37 +02:00
alonso.torres
7b4603e33e Change to penpot file format and fixes 2021-06-17 14:45:37 +02:00
Andrés Moya
84a7ab8568 Merge branch 'main' into develop 2021-06-17 14:07:31 +02:00
Andrés Moya
beaea73276 📎 Update version number. 2021-06-17 14:00:24 +02:00
Andrey Antukh
ef1c1d8ced 💄 Fix linter issues on settings/feedback ns. 2021-06-17 11:42:00 +02:00
Andrey Antukh
91425050e4 🐛 Fix incorrect value handling on color-input component.
Related to the bug when the input value of the page color
is not refreshed on page change.
2021-06-17 11:42:00 +02:00
Andrey Antukh
41d05d6de0 🐛 Fix invalid link on workspace header (presence component). 2021-06-17 11:42:00 +02:00
Andrey Antukh
376d0663c2 🐛 Fix navigation on dashboard when file is moved to other team. 2021-06-17 11:42:00 +02:00
Andrey Antukh
231a133f23 🐛 Fix team modal auto focus handling. 2021-06-17 11:42:00 +02:00
Andrey Antukh
eacc945254 🐛 Fix wrong styles on viewer comments header menu & icon.
And additionally fix some linter issues on the affected namespaces.
2021-06-17 11:42:00 +02:00
Andrey Antukh
16b5bb595c 🐛 Fix tooltip positioning. 2021-06-17 11:42:00 +02:00
Andrey Antukh
a1ad6ca289 🐛 Fix tooltip positioning on view application. 2021-06-17 11:42:00 +02:00
Andrey Antukh
a8523f41b3 🐛 Remove unnecesary redirect when user goes from dashboard to workspace.
And then, clicks the browser back button.
2021-06-17 11:42:00 +02:00
Andrey Antukh
1d6905cb25 🔥 Remove obsoleted props on colorpalette component. 2021-06-17 11:42:00 +02:00
Andrey Antukh
a548bd7ffd 💄 Fix linter issues on ui/workspace ns. 2021-06-17 11:42:00 +02:00
Andrey Antukh
46e0151c28 💄 Start use nginx (without cache) to serve frontend dev files.
Usefull for checking production builds and not depend on the shadow-cljs
watch http-dev server running.
2021-06-17 11:42:00 +02:00
Andrey Antukh
23b315c58f 🐛 Fix incorrect lense on dashboard selected files. 2021-06-17 11:42:00 +02:00
Andrey Antukh
ac37f903d4 ⬆️ Update frontend npm deps. 2021-06-17 11:42:00 +02:00
Andrey Antukh
5572c0798f Minor improvement on start-tmux.sh script. 2021-06-17 11:42:00 +02:00
Andrés Moya
cb5e300534 🎉 Add full screen to view menu 2021-06-16 17:37:38 +02:00
Andrés Moya
50e0284084 Merge pull request #1043 from penpot/fix/problem-with-flip-transforms
🐛 Fix problem with paths editing after flip
2021-06-16 17:11:02 +02:00
alonso.torres
e08788190d 🐛 Fix problem with paths editing after flip 2021-06-16 17:05:18 +02:00
Andrey Antukh
44441ae928 💄 Minor lint fix on emails ns. 2021-06-16 16:49:15 +02:00
Andrey Antukh
e42e1e8751 🐛 Properly preserve the font-family name on upload custom font. 2021-06-16 16:32:21 +02:00
Andrey Antukh
ae4b743ea4 🐛 Add missing system deps to the default docker backend image. 2021-06-16 16:14:44 +02:00
alonso.torres
370b6bb2f2 🐛 Fix problem with odd widh/height and antialias icons 2021-06-16 11:09:47 +02:00
Amine Gdoura
796141f2b8 🌐 Add translations for: Arabic.
Currently translated at 23.7% (157 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-06-15 20:34:14 +02:00
Eranot
2711181e19 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 46.8% (310 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-06-15 20:34:13 +02:00
Andrew Montoya
2cd7f0f74c 💄 Fix add font button wrap 2021-06-15 14:01:13 +02:00
Andrey Antukh
96e7910cf9 Merge pull request #1038 from penpot/view-back-btn
View back btn
2021-06-15 14:00:35 +02:00
Andrey Antukh
4683d959a5 Merge pull request #1037 from penpot/feat/export-import
Import/export more features and toggleable UI
2021-06-15 13:32:08 +02:00
Andrés Moya
9300adf374 🎉 Activate edit file menu in viewer 2021-06-15 13:30:30 +02:00
alonso.torres
5c9ec92cc5 UI debug toggle for export/import 2021-06-15 13:10:08 +02:00
alonso.torres
76e2309778 Improve builder library 2021-06-15 13:07:53 +02:00
alonso.torres
9fc633080a Upload fill-image data 2021-06-15 11:39:35 +02:00
alonso.torres
8952cb4e00 Adds constraints to export/import 2021-06-15 11:39:35 +02:00
alonso.torres
d6e009ce78 Adds flip,proportion and rotation 2021-06-15 11:39:35 +02:00
elhombretecla
a106c728ba 💄 Add new project header 2021-06-15 11:34:39 +02:00
Andrés Moya
5cddc9836f Merge pull request #1031 from penpot/niwinz-file-data-offload
Add mechanism for offload the file data to external storage.
2021-06-15 11:15:50 +02:00
Andrey Antukh
2728fa2b8d Add proper fdata objects deletion. 2021-06-15 09:25:37 +02:00
Andrey Antukh
2293253558 🎉 Add profiler dev dependency. 2021-06-15 08:36:04 +02:00
elhombretecla
ee7248204f 💄 Add new actions icon 2021-06-14 20:00:10 +02:00
Andrey Antukh
0c97a44a2a 🎉 Add file offloading to external storage mechanism. 2021-06-14 15:41:27 +02:00
Andrés Moya
0c49ed1fec Merge pull request #1028 from penpot/feat/export-import
Feature / export import
2021-06-11 15:55:47 +02:00
alonso.torres
dd15bf7328 Adds flip,proportion and rotation 2021-06-11 15:48:23 +02:00
alonso.torres
3aa5fda695 Import pages with imported svgs 2021-06-11 15:48:23 +02:00
alonso.torres
e880d94f51 Add import blend modes 2021-06-11 15:48:23 +02:00
alonso.torres
0647fa832a Read files info from manifest 2021-06-11 15:48:22 +02:00
alonso.torres
4af83eadc4 Import shadows,blur,exports 2021-06-11 15:48:09 +02:00
alonso.torres
cc2c249a07 Import masks 2021-06-11 15:48:09 +02:00
alonso.torres
152bcf451a Import images and upload media 2021-06-11 15:48:09 +02:00
alonso.torres
83879fb931 Support for fill,stroke,gradient,text 2021-06-11 15:48:09 +02:00
Andrey Antukh
8d703a3fb4 Write transit data to response output-stream.
Previously, all responses from GET and POST requests are serialized
to a byte array (using transit) which is returned as response body.

With this commit, the response body of POST requests is written
directly to the response output-stream, reducing the memmory need
to perform that operation.

The responses for GET request still uses the old mechanism because
we need the whole response as byte array for calculate the ETAG and
check it before returning the body.
2021-06-11 12:36:21 +02:00
Andrey Antukh
022d57ef42 Increase a little bit the compression level of blob encoding. 2021-06-11 12:36:21 +02:00
Andrey Antukh
4928f875b3 Strip incoming changes from update-file response.
Until now, `update-file` always returned a ordered set of change-groups
plus the one created by the ongoing request.

A change-group corresponds to a list of changes commited in a single
update-file (file_change table row).

Including the ongoing request change-group on response with increase
load stated causing considerable amount of memmory pressure.

Since this changes are no longer necessary on frontend side, with this
commit we strip the changes list from the ongoing request change-group,
sending back an empty entry with the increased `revn` number.
2021-06-11 12:36:21 +02:00
Andrey Antukh
840430c189 Increment the file-change garbage collection time window.
The previous value was 24 hours because the snapshot stated to consume a
lot of disk space. Since we reduced snapshot generation considerably, we
now can increase the gc time window to 72 hours.
2021-06-11 12:36:21 +02:00
Andrey Antukh
024cc88738 Reduce the file-change snapshot taking ratio.
Until now, a file `data` snapshot was persisted on every file_change
row. That causes a lot of IO load and increase disk usage without
a real benefit.

This commit reduces the snapshot generation; now the snapshot
is persisted every 20 update-file or when a file is not touched
in 3 hours or more.
2021-06-11 12:36:21 +02:00
Amine Gdoura
eee0cf569e 🌐 Add translations for: Arabic.
Currently translated at 16.7% (111 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-06-10 17:33:13 +02:00
Andrey Antukh
371c78b1d3 ♻️ Refactor delete-shapes event.
Properly handle parent deletion + performance.
2021-06-10 14:34:19 +02:00
Andrés Moya
6988ae83c9 🐛 Fix mini visual bug 2021-06-10 11:19:25 +02:00
Andrey Antukh
f95705d2d6 Add source ip to the audit-log. 2021-06-10 10:56:39 +02:00
Andrey Antukh
ff3caec36c 🎉 Add decode-inet helper on app.db ns. 2021-06-10 10:56:39 +02:00
Andrey Antukh
4c4dac8e90 Allow check for pgobject type. 2021-06-10 10:56:39 +02:00
Andrey Antukh
beaa62c9a9 Merge pull request #1022 from penpot/advanced-options-ui
Advanced options UI
2021-06-10 10:55:28 +02:00
Andrés Moya
69fe8bc9b5 ♻️ Add some small performance refactors 2021-06-10 10:28:07 +02:00
Andrés Moya
092a973f9a 🎉 Add resize constraints to shapes 2021-06-10 10:28:07 +02:00
Andrey Antukh
55b0f6e950 📎 Minor change on locking order on update-file. 2021-06-09 15:53:38 +02:00
Andrey Antukh
b9df489962 ⬆️ Update clj-kondo and babashka dependencies on devenv dockerfile. 2021-06-09 15:49:45 +02:00
Andrey Antukh
144127224c Reduce contention on file-update using advisory locks and weaker row locking. 2021-06-09 15:49:45 +02:00
Andrey Antukh
2202f90d74 🐛 Fix wrong spec definition on invite email. 2021-06-09 15:27:07 +02:00
Andrey Antukh
860e0227af ♻️ Reimplement GC mechanism for penpot database objects. 2021-06-09 15:27:07 +02:00
alonso.torres
c4b4976be0 Remove advanced options overlay and single option when advanced options displayed 2021-06-09 14:22:05 +02:00
elhombretecla
a2b0305162 Add new text and grid advanced opt css 2021-06-09 14:22:05 +02:00
elhombretecla
6404907699 Add new asset advanced optios css 2021-06-09 14:22:05 +02:00
elhombretecla
d4b02e36a7 💄 Change shadow options css 2021-06-09 14:22:05 +02:00
Andrey Antukh
71c4145ea2 Merge pull request #1017 from penpot/fix/style-block
 Move frame style block to workspace wrapper
2021-06-07 12:12:23 +02:00
alonso.torres
075f0a1bb0 Move frame style block to workspace wrapper 2021-06-07 12:10:41 +02:00
Andrey Antukh
d80bd3661d Merge pull request #1016 from penpot/fix-library-assets
🐛 Fix error when opening assets of external library
2021-06-07 11:25:22 +02:00
Andrés Moya
44f4441372 🐛 Fix error when opening assets of external library 2021-06-07 11:22:09 +02:00
Andrey Antukh
782e060448 📎 Add minior adaptations to main docker files. 2021-06-07 11:03:53 +02:00
Andrey Antukh
8c223b9fb8 Allow future dates on get-by-params method. 2021-06-07 10:56:21 +02:00
Andrey Antukh
1232f93f1a 🐛 Fix shadow-cljs version on common/deps.edn file. 2021-06-07 10:55:50 +02:00
Andrey Antukh
8f3c5b5cea 📎 Add minior adaptations to main docker files. 2021-06-07 09:44:12 +02:00
Andrey Antukh
c4d3023fd3 ⬆️ Upgrade potok.
Includes many performance improvements.
2021-06-07 09:22:26 +02:00
alonso.torres
a97c7cada4 🐛 Fix problem with namespace 2021-06-04 15:52:18 +02:00
alonso.torres
5b0cd974ac Merge remote-tracking branch 'origin/main' into develop 2021-06-04 15:38:17 +02:00
Andrey Antukh
bb5804cde3 📎 Update changelog and increase version. 2021-06-04 14:15:48 +02:00
Andrey Antukh
7819757759 🐛 Fix unexpected exception on searching without term.
When term is empty on frontend, frontend just does not sends it
to backend, leving it as missing field. This commit makes the
seatch-term as optional.
2021-06-04 14:15:48 +02:00
Andrey Antukh
b861e261ed 🐛 Replace frame term usage by artboard on viewer app.
Replace frame with artboard.
2021-06-04 14:15:48 +02:00
Andrey Antukh
17b32d6518 🐛 Don't allow rename drafts project. 2021-06-04 14:15:48 +02:00
Andrey Antukh
d2359046c4 🐛 Fix problem when moving files with drag & drop. 2021-06-04 14:15:48 +02:00
Andrey Antukh
8a700170b0 🐛 Fix font loading on viewer app. 2021-06-04 13:39:01 +02:00
Andrey Antukh
8c68e29bf3 🐛 Fix custom font rendering on exporting shapes. 2021-06-04 13:26:37 +02:00
Andrey Antukh
1a81631886 📎 Decrease default bulk buffers on storage tasks. 2021-06-04 09:41:42 +02:00
Andrey Antukh
634fe2c458 📎 Reduce file_change preserve interval to 24h. 2021-06-04 01:27:21 +02:00
Andrey Antukh
6cc8fca506 Merge remote-tracking branch 'origin/main' into develop 2021-06-03 17:35:37 +02:00
Andrey Antukh
053d46144e 📎 Fix linter issues. 2021-06-03 17:24:19 +02:00
Andrey Antukh
b2e7bb6be1 🐛 Properly handle nil values on update-shapes function. 2021-06-03 17:19:14 +02:00
Andrés Moya
31689cd947 Merge pull request #1006 from penpot/feat/export-import
Import/export (partial)
2021-06-03 13:31:52 +02:00
alonso.torres
d855b930c5 Temporary UI 2021-06-03 13:26:05 +02:00
alonso.torres
61545ea13e Import/export workers 2021-06-03 13:26:05 +02:00
alonso.torres
21aa23e7f5 Parsing and file builder 2021-06-03 13:26:05 +02:00
alonso.torres
f197124ee5 Changes to render to support exporting 2021-06-03 13:26:05 +02:00
alonso.torres
b76fef1e44 Change create file to send data from the frontend 2021-06-03 13:26:05 +02:00
alonso.torres
9f36f4fbe7 Save as dialog option 2021-06-03 13:26:05 +02:00
alonso.torres
a76bf1d0b2 🐛 Fix problem with export assets 2021-06-03 13:26:05 +02:00
alonso.torres
6cbbfa6499 ♻️ Refactor custom stroke 2021-06-03 13:26:05 +02:00
alonso.torres
bf5f845789 Import/Export framework first version 2021-06-03 13:26:05 +02:00
Andrey Antukh
d7eec3b92b Merge remote-tracking branch 'origin/main' into develop 2021-06-03 12:56:37 +02:00
Andrey Antukh
bae709df5b 🐛 Fix custom font deletion task. 2021-06-03 12:55:31 +02:00
Andrey Antukh
ba33de815f Merge remote-tracking branch 'origin/main' into develop 2021-06-03 12:41:06 +02:00
Andrey Antukh
1b495ebad1 Minor improvements on loki reporter. 2021-06-03 12:40:22 +02:00
Andrey Antukh
4e0289b341 Reduce the deletion window of file_changes. 2021-06-03 12:34:11 +02:00
Andrey Antukh
866d95149e Downgrade shadow-cljs version.
Because the new compiler causes some bugs on compiling
internal ES6 modules.
2021-06-03 11:59:20 +02:00
Andrey Antukh
e9bbe9fca0 ⬆️ Update beicon dep. 2021-06-02 15:03:34 +02:00
Andrey Antukh
8da0e9adb2 📎 Adapt exporter and frontend build scripts. 2021-06-02 14:28:59 +02:00
Andrey Antukh
f0e78f693f 🐛 Add missing deps on exporter. 2021-06-02 14:20:21 +02:00
Andrey Antukh
9333ed5be4 Adapt exporter to common changes. 2021-06-02 14:10:25 +02:00
Andrey Antukh
a244fbee4d 📎 Fix linter issue. 2021-06-02 13:20:25 +02:00
Andrey Antukh
9bc2f7dce4 Merge remote-tracking branch 'origin/main' into develop 2021-06-02 13:15:23 +02:00
Andrey Antukh
056fce9187 📎 Minor changes on background tasks cron expr. 2021-06-02 13:13:25 +02:00
Andrey Antukh
9f034c7e7e Disable excesive logging of some modules. 2021-06-02 11:27:22 +02:00
Andrey Antukh
2704258dba Merge pull request #1000 from penpot/view-mode-header
View mode header
2021-06-02 11:12:03 +02:00
elhombretecla
3d5caf18e3 Add new interactions link and translations 2021-06-02 11:10:56 +02:00
elhombretecla
e45f7598db First viewer header changes 2021-06-02 11:10:52 +02:00
Andrey Antukh
09b72588d8 Merge pull request #938 from penpot/assets-enhancements
assets improvements
2021-06-02 11:10:34 +02:00
Andrey Antukh
a0f80e740e Merge pull request #997 from dragetd/patch-1
Fix typos and rephrase some comments
2021-06-02 11:09:29 +02:00
Andrey Antukh
a6de4e3742 📎 Change version.txt file. 2021-06-01 15:19:37 +02:00
Andrey Antukh
2d6a375afc 📎 Update changelog. 2021-06-01 15:18:26 +02:00
Andrey Antukh
585e5d0199 📎 Minor changes on internal audit module buffers. 2021-06-01 15:14:39 +02:00
Andrey Antukh
fcb4cb38a9 Merge remote-tracking branch 'origin/main' into develop 2021-06-01 12:44:04 +02:00
Çağlar Yeşilyurt
de5e8f8e57 🌐 Add translations for: Turkish.
Currently translated at 92.9% (615 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-06-01 02:38:55 +02:00
Antonio
11f360bdab 🌐 Add translations for: Catalan.
Currently translated at 30.5% (202 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2021-06-01 02:38:52 +02:00
Andrés Moya
ebc79c278b ♻️ Apply transducer-fu 2021-05-31 13:15:42 +02:00
Andrés Moya
b2fef7b7a8 🎉 Add many functions to assets panel and big refactor 2021-05-31 12:51:49 +02:00
alonso.torres
71524fe649 🐛 Fix problem with empty path editing 2021-05-31 12:50:24 +02:00
alonso.torres
55d2768807 🐛 Fix problem with create component 2021-05-31 12:50:24 +02:00
Andrey Antukh
3c7dda02c6 🚑 Add tempory shadow-cljs npm dependency. 2021-05-31 11:55:13 +02:00
Andrey Antukh
6ed182002b ⬆️ Update lambdaisland/uri dependency. 2021-05-31 11:04:32 +02:00
Andrey Antukh
ee1738c9d4 ♻️ Replace backend transit ns with common transit. 2021-05-31 11:04:32 +02:00
Andrey Antukh
068c94da4e ♻️ Replace frontend transit ns usage with common transit. 2021-05-31 11:04:32 +02:00
Andrey Antukh
2ec769981a Resolve almost all linter issues on common module. 2021-05-31 11:04:32 +02:00
Andrey Antukh
548664f6ce ♻️ Internal directory refactor.
Make common as first-class module.
2021-05-31 11:04:32 +02:00
Michael G
9d54f71dbb 📚 Align comments to 80 characters
I did not find any style recommendation that states an exact line length. Assuming a common value of 80, this leads to less lines being split.
2021-05-30 19:04:18 +02:00
Michael G
d102144746 📖 Fix typos and rephrase some comments
Minor typos and the names of official services corrected in comments.
2021-05-30 19:04:18 +02:00
alonso.torres
3d7a3f27d5 🐛 Fix problem with move-objects 2021-05-28 11:05:18 +02:00
alonso.torres
46448bc5c7 🐛 Fix problem with merge and join nodes 2021-05-28 10:51:36 +02:00
Andrey Antukh
6a2e45988f Merge remote-tracking branch 'origin/main' into develop 2021-05-28 08:52:14 +02:00
Andrey Antukh
2f8f1f0b9a 📎 Update changelog. 2021-05-28 08:49:27 +02:00
Andrey Antukh
d572fdac9b 🐛 Fix unexpected exception on duplicate project.
Related to files created out of order.
2021-05-28 08:39:04 +02:00
Andrey Antukh
ac41ed1af4 Add missing cause prop on error loging. 2021-05-28 08:32:30 +02:00
Andrey Antukh
f47bb6bcd0 Minor fix on previous commit. 2021-05-27 18:12:29 +02:00
Andrey Antukh
a3eb5e2928 🐛 Fix incorrect unicode code points handling on draft-to-penpot conversion. 2021-05-27 17:52:16 +02:00
Andrey Antukh
53cb36dd8a Merge pull request #988 from penpot/alotor/small-improvements
Small improvements
2021-05-27 14:51:28 +02:00
alonso.torres
9cda361523 Removed unnecessary background box 2021-05-27 14:44:37 +02:00
alonso.torres
1a70071405 Adds support to rx streams on workers framework 2021-05-27 14:44:37 +02:00
alonso.torres
b648fb7446 Zip utils 2021-05-27 14:33:04 +02:00
alonso.torres
aaef0777b0 ⬆️ Add jszip dependency 2021-05-27 14:33:04 +02:00
alonso.torres
68d287ed82 ♻️ Refactor trigger download 2021-05-27 14:33:04 +02:00
alonso.torres
641e4080bc Changed transparent for none 2021-05-27 14:33:04 +02:00
Andrey Antukh
a80120278e Merge remote-tracking branch 'origin/main' into develop 2021-05-27 14:13:45 +02:00
Andrey Antukh
d4bf3ef6fd 📎 Remove mattermost mention-all workds from error report. 2021-05-27 13:29:29 +02:00
Andrey Antukh
ca5c374ecd 🐛 Fix empty font-family handling on custom fonts page. 2021-05-27 13:21:37 +02:00
Andrey Antukh
69ea8229ca :spakles: Minor improvements on svg uploading on libraries.
Mainly reject svgs that have doctype declaration for security reasons.
2021-05-27 13:00:13 +02:00
Andrey Antukh
4d19b87fff Improve error report on uploading invalid image to library. 2021-05-27 12:40:38 +02:00
Andrey Antukh
8847047fd1 🐛 Fix unexpected exception when user leaves typography name empty. 2021-05-27 12:21:40 +02:00
Andrey Antukh
6e8a5015c9 Add better auth module logging. 2021-05-27 11:52:01 +02:00
Andrey Antukh
e8919ee340 🐛 Add missing email scope to OIDC backend.
And additionaly emit a warn log message about the error.
2021-05-27 11:52:01 +02:00
alonso.torres
f8f506a8be 🐛 Fix some problems with paths 2021-05-27 11:10:30 +02:00
Andrey Antukh
74756db7e6 Merge remote-tracking branch 'origin/main' into develop 2021-05-26 16:58:15 +02:00
Andrey Antukh
96d9e101cc 📎 Update version.txt file. 2021-05-26 16:57:34 +02:00
Andrey Antukh
7eb3693804 📎 Update changelog. 2021-05-26 16:56:59 +02:00
Andrey Antukh
cad2b831ed Make the navigation async by default.
This leaves some time to eventloop to terminate other
async events before navigate.
2021-05-26 16:38:03 +02:00
Andrey Antukh
b2dc849e52 Improve editor lifecycle management. 2021-05-26 16:38:03 +02:00
alonso.torres
6489ad4114 Merge remote-tracking branch 'origin/main' into develop 2021-05-26 16:26:53 +02:00
alonso.torres
0de8bfeba6 🐛 Fix problem when creating a component with empty data 2021-05-26 16:12:29 +02:00
Andrey Antukh
6710d99878 🐛 Fix dashboard ordering issue. 2021-05-26 15:22:41 +02:00
alonso.torres
7a32d902ec 🐛 Fix problem with moving shapes into frames 2021-05-26 14:33:55 +02:00
alonso.torres
52f699c175 🐛 Fix problems with mov-objects 2021-05-26 13:43:57 +02:00
Andrey Antukh
ba211e3cbd 🐛 Fix wrong type usage on libraries changes. 2021-05-26 13:31:07 +02:00
Andrey Antukh
897f41bc7a Fix custom fonts embbedding issue. 2021-05-26 12:39:41 +02:00
Andrey Antukh
2834850337 📎 Add safety check on reg-objects change impl. 2021-05-26 12:14:02 +02:00
Andrey Antukh
67cd877281 🐛 Fix unexpected excetion related to rounding integers. 2021-05-26 11:54:40 +02:00
Eranot
6e18bc9e04 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 38.0% (252 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-05-26 11:23:05 +02:00
alonso.torres
6d0b36e9b9 🐛 Fix problem with new nodes in paths 2021-05-26 10:43:29 +02:00
Andrey Antukh
bd8aa8163d Merge branch 'staging' into main 2021-05-26 10:36:12 +02:00
Andrey Antukh
febaec1b1e Merge remote-tracking branch 'origin/staging' into develop 2021-05-25 23:25:27 +02:00
Andrey Antukh
2ac790693a 🐛 Fix CSRNG usage on webworker context. 2021-05-25 23:24:19 +02:00
Andrey Antukh
08dce3bcdc 🐛 Fix possible bug in domain whitelisting checking. 2021-05-25 21:19:13 +02:00
Andrey Antukh
806dc78d2b Merge remote-tracking branch 'origin/staging' into develop 2021-05-25 18:03:37 +02:00
Andrey Antukh
e5d4755619 📎 Revert some changes related to build resource usage. 2021-05-25 16:45:04 +02:00
Andrey Antukh
c44befb957 📎 Minor cosmetic fixes on onboarding ns. 2021-05-25 16:30:49 +02:00
Andrey Antukh
871e849660 Merge branch 'onboarding-1.6-release' into staging 2021-05-25 16:29:54 +02:00
Andrey Antukh
43b34aa279 🐛 Fix many corner cases on custom font management. 2021-05-25 15:41:52 +02:00
Andrey Antukh
6b1e5b4169 📎 Change default jvm options for backend and frontend repl. 2021-05-25 15:41:52 +02:00
elhombretecla
952bcd853e 🎉 Fix release notes version at profile 2021-05-25 15:35:10 +02:00
elhombretecla
77446a71e2 💄 Changes at onboarding content 2021-05-25 15:35:10 +02:00
elhombretecla
d722f37468 Add new 1.6 onboarding info 2021-05-25 15:35:10 +02:00
elhombretecla
9757836067 🐛 Fix basic onboarding CSS 2021-05-25 15:35:10 +02:00
Yannik Rödel
7d80a5a7f7 🌐 Add translations for: German.
Currently translated at 91.9% (609 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2021-05-25 14:31:59 +02:00
alonso.torres
a9e8115088 Merge remote-tracking branch 'origin/staging' into develop 2021-05-25 14:01:42 +02:00
alonso.torres
f92dc6f4b4 🐛 Fix problem with colaborative editing 2021-05-25 13:24:02 +02:00
alonso.torres
e43ab51b7d 🐛 Fix problem with locked shapes when change parents 2021-05-25 12:23:33 +02:00
alonso.torres
6a68e9c118 ♻️ Refactor embed resouces 2021-05-25 10:12:09 +02:00
alonso.torres
95cb6d132b 🐛 Fix problem with :multiple for colors and typographies 2021-05-25 10:11:50 +02:00
alonso.torres
ed95b59003 🐛 Fix issue when group creation leaves an empty group 2021-05-25 10:11:50 +02:00
alonso.torres
5730769a19 🐛 Fix order on color palette 2021-05-24 15:09:34 +02:00
alonso.torres
2a67008531 🐛 Fix problem with color picker positioning 2021-05-24 15:09:34 +02:00
alonso.torres
651230d40f 🐛 Fix problem with Safari and render frames 2021-05-24 15:09:34 +02:00
alonso.torres
28c5fd4583 🐛 Fix problem with imported SVG on editing paths 2021-05-24 15:09:34 +02:00
luthfi azhari
944e7c6e3d 🌐 Add translations for: Indonesian.
Currently translated at 7.2% (48 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/id/
2021-05-23 23:33:08 +02:00
Amine Gdoura
3094fe2855 🌐 Add translations for: Arabic.
Currently translated at 11.3% (75 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-05-23 23:33:07 +02:00
Gizem Akgüney
deb0ee3d29 🌐 Add translations for: Turkish.
Currently translated at 39.5% (262 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-05-23 23:33:07 +02:00
Antonio
23076727c7 🌐 Add translations for: Catalan.
Currently translated at 20.9% (139 of 662 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ca/
2021-05-23 23:33:06 +02:00
Andrés Moya
42072f2584 🐛 Add filter to remove groups without content in all files 2021-05-21 09:51:24 +02:00
Andrey Antukh
b50ffa087d Sort & validate translations files. 2021-05-20 17:03:09 +02:00
Andrey Antukh
03b74b582e 📎 Update changelog file. 2021-05-20 17:01:06 +02:00
Andrey Antukh
4af5341f81 Merge branch 'translations' into develop 2021-05-20 16:56:33 +02:00
Andrey Antukh
77ab0706be 🐛 Fix some issues on recent files loading. 2021-05-20 16:55:57 +02:00
Andrey Antukh
1d6094e893 Update i18n module to provide more langs. 2021-05-20 16:54:42 +02:00
Jan C. Borchardt
af29ca92cc 🌐 Add translations for: English.
Currently translated at 100.0% (661 of 661 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/en/
2021-05-20 16:12:19 +02:00
Amine Gdoura
c83bfe0b16 🌐 Add translations for: Arabic.
Currently translated at 7.4% (49 of 661 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ar/
2021-05-20 16:12:19 +02:00
George Lemon
891ce8a33d 🌐 Add translations for: Romanian.
Currently translated at 100.0% (661 of 661 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/ro/
2021-05-20 16:12:19 +02:00
Simon Bechmann
c356e64be5 🌐 Add translations for: Danish.
Currently translated at 17.7% (117 of 661 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/da/
2021-05-20 16:12:19 +02:00
Eranot
245f7256e1 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 35.0% (232 of 661 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-05-20 16:12:19 +02:00
Gizem Akgüney
e0a0b82958 🌐 Add translations for: Turkish.
Currently translated at 34.0% (225 of 661 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/tr/
2021-05-20 16:12:19 +02:00
Andrey Antukh
2b4a78ea28 🌐 Added translation for: Indonesian. 2021-05-20 16:12:19 +02:00
Andrey Antukh
33a1e29a0c 🌐 Added translation for: Arabic. 2021-05-20 16:12:19 +02:00
Andrey Antukh
8a76d8322f 🌐 Added translation for: Romanian. 2021-05-20 16:12:19 +02:00
Andrey Antukh
1ff9b24818 Merge pull request #966 from penpot/remove-back-xml-parse
⬆️ Move svg parsing to the frontend with Tubax
2021-05-20 11:57:59 +02:00
alonso.torres
4613aef1c8 🐛 Fix problem with index updating 2021-05-20 11:50:41 +02:00
alonso.torres
7ff608ff0b ⬆️ Move svg parsing to the frontend with Tubax 2021-05-20 11:49:45 +02:00
Andrey Antukh
87aa4622b4 Don't prefix events on audit archiver. 2021-05-20 11:14:21 +02:00
Andrey Antukh
188126a895 Properly use dumped objects on initial data load process. 2021-05-20 10:52:20 +02:00
Andrey Antukh
f57fb5006d Merge branch 'niwinz-auditlog-fixes' into develop 2021-05-20 10:51:06 +02:00
Andrey Antukh
6c1e13b6e5 Improve profile props handling and audit log integration. 2021-05-20 10:50:53 +02:00
Andrey Antukh
344622b1c1 🐛 Fix many on handle some audit events. 2021-05-20 10:50:53 +02:00
Andrey Antukh
20b8269766 Improve bundle generation scripts. 2021-05-20 10:50:53 +02:00
alonso.torres
810f868b67 🐛 Fix problem with shapes with no transform to path 2021-05-19 16:52:21 +02:00
Andrey Antukh
9c99ec3410 🐛 Fix issues related to font family names with spaces. 2021-05-19 14:23:51 +02:00
Andrey Antukh
2ea200be78 🎉 Add new font selector to workspace. 2021-05-19 14:23:51 +02:00
Andrey Antukh
8831f3241c Merge pull request #957 from penpot/change-resize-key
🎉 Use shift instead of ctrl/cmd to fix aspect ratio
2021-05-19 12:06:26 +02:00
Andrey Antukh
3752322c01 Merge branch 'develop' into change-resize-key 2021-05-19 12:05:56 +02:00
Andrey Antukh
fa87187849 📎 Set correct version on version.txt file. 2021-05-19 12:02:38 +02:00
Andrey Antukh
662f87080c 📎 Minor cosmetic changes. 2021-05-19 11:41:16 +02:00
alonso.torres
6003591ecd Merge remote-tracking branch 'origin/staging' into develop 2021-05-17 17:55:25 +02:00
alonso.torres
c618317a76 Minor improvements 2021-05-17 17:08:24 +02:00
alonso.torres
5d689551e3 🐛 Fix problem with rounding 2021-05-17 16:16:27 +02:00
Andrés Moya
c9e7be28af 🎉 Use shift instead of ctrl/cmd to fix aspect ratio 2021-05-17 14:19:44 +02:00
alonso.torres
346fb8fb11 Transform simple shapes to path on double click 2021-05-17 13:12:20 +02:00
Andrey Antukh
3fdcea78e4 Properly configure page default timeouts (exporter). 2021-05-17 12:02:21 +02:00
Andrey Antukh
fb2d1e7953 🎉 Add proper audit log impl. 2021-05-17 12:02:21 +02:00
Andrey Antukh
ce19bcd364 Minor improvements on batching channel impl. 2021-05-17 12:02:21 +02:00
Andrey Antukh
610afc7702 Fix msbus/redis logged errors on restarting (repl). 2021-05-17 12:02:21 +02:00
Andrey Antukh
6557792a98 Unify all deletion delays on main config. 2021-05-17 12:02:21 +02:00
Andrey Antukh
a3e464aea3 Add better error reporting on config validation. 2021-05-17 12:02:21 +02:00
Andrey Antukh
087f2aee09 ⬆️ Update backend dependencies. 2021-05-17 12:02:21 +02:00
alonso.torres
88d8431985 Merge remote-tracking branch 'origin/staging' into develop 2021-05-17 11:36:28 +02:00
alonso.torres
ea22f3f81c 🐛 Fixes problem on shape creation 2021-05-17 11:34:39 +02:00
alonso.torres
93d8c171be 🐛 Fix problems with snap index regeneration 2021-05-14 18:08:15 +02:00
alonso.torres
b2e01cd52b Performance improvements 2021-05-13 17:06:45 +02:00
Andrey Antukh
9afe499075 Merge remote-tracking branch 'origin/staging' into develop 2021-05-13 14:36:09 +02:00
Andrey Antukh
91fe0b0985 Add more complete font conversion suite. 2021-05-13 14:34:31 +02:00
Andrey Antukh
90aab92a59 Add more helpers to util/dom ns. 2021-05-13 14:34:31 +02:00
Andrey Antukh
d613d00bca Minor improvements on workspace initialization. 2021-05-13 14:34:31 +02:00
Andrey Antukh
c15c277b03 ⬆️ update deps. 2021-05-13 14:34:31 +02:00
Andrey Antukh
a86c4a8309 🎉 Add resize observer as rx stream. 2021-05-13 14:34:31 +02:00
Andrey Antukh
4b7f82a9d9 ♻️ Improves shortcuts lifecycle management. 2021-05-13 14:34:31 +02:00
Andrey Antukh
c33c3fb2fa 📚 Update changelog. 2021-05-13 14:34:31 +02:00
Andrey Antukh
07f3d48a9d 🔧 Allow override oidc scopes.
And relax default scopes to `profile` and `openid`.
2021-05-13 14:34:31 +02:00
Andrey Antukh
f5a6159e1d Merge remote-tracking branch 'origin/staging' into develop 2021-05-13 14:33:18 +02:00
alonso.torres
3656ab977b Improve frame thumbnail rendering 2021-05-13 11:00:28 +02:00
Andrey Antukh
891506ab52 📎 Prepare next development cycle. 2021-05-13 10:55:20 +02:00
Andrey Antukh
37f9a5d9f2 📎 Update changelog file. 2021-05-13 10:54:19 +02:00
Andrey Antukh
958c5ebcc6 Merge branch 'weblate/translations' into develop 2021-05-13 10:52:40 +02:00
Andrey Antukh
b8afdda856 🌐 Add translations for: French.
Currently translated at 82.4% (541 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/fr/
2021-05-13 10:48:04 +02:00
Andrey Antukh
2c250a2740 🌐 Add translations for: German.
Currently translated at 92.2% (605 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/de/
2021-05-13 10:48:03 +02:00
Simon Bechmann
512b66cb04 🌐 Add translations for: Danish.
Currently translated at 8.2% (54 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/da/
2021-05-13 10:48:03 +02:00
Eranot
a11cec9fdc 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 34.6% (227 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-05-13 10:48:03 +02:00
Andrey Antukh
81e5a8c925 🌐 Added translation for: Danish. 2021-05-13 10:48:03 +02:00
Allan Nordhøy
a12f369bda 🌐 Add translations for: Norwegian Bokmål.
Currently translated at 26.5% (174 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/nb_NO/
2021-05-13 10:48:03 +02:00
Eranot
ec2f88ebc0 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 5.7% (38 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-05-13 10:48:03 +02:00
Andrey Antukh
c449492a33 🌐 Added translation for: Norwegian Bokmål. 2021-05-13 10:48:03 +02:00
Guilherme Dimas
5614aceaa8 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 3.3% (22 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-05-13 10:48:03 +02:00
Eranot
d6e7dfc648 🌐 Add translations for: Portuguese (Brazil).
Currently translated at 3.3% (22 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/pt_BR/
2021-05-13 10:48:03 +02:00
Jan C. Borchardt
b84222e171 🌐 Add translations for: English.
Currently translated at 100.0% (656 of 656 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/en/
2021-05-13 10:48:03 +02:00
Andrey Antukh
8e785e62e3 Merge branch 'main' into develop 2021-05-12 15:21:07 +02:00
alonso.torres
4977c22b08 🐛 Fix problem with text editing auto-height 2021-05-12 15:18:30 +02:00
elhombretecla
5c0bc1cf84 💄 Add new color assets styles and titles 2021-05-12 13:38:30 +02:00
Andrés Moya
ddbaee228a 🎉 Group typographies 2021-05-12 13:19:36 +02:00
Andrés Moya
c858707c39 🎉 Group color assets 2021-05-12 13:19:36 +02:00
Andrey Antukh
83bca7fb10 Merge branch 'main' into develop 2021-05-12 10:29:21 +02:00
Andrey Antukh
7d19518ba8 📎 Set verstion to 1.5.4-alpha 2021-05-12 10:28:08 +02:00
alonso.torres
9775b79a0b 🐛 Fix problem with memoized group 2021-05-12 10:25:17 +02:00
alonso.torres
e1dfd91e24 Frame thumbnails 2021-05-11 18:18:45 +02:00
Andrey Antukh
b4351208cc Merge remote-tracking branch 'origin/main' into develop 2021-05-11 09:05:03 +02:00
alonso.torres
ae1e9a861b Improve handling of shape transform modifiers 2021-05-11 08:16:42 +02:00
Andrey Antukh
ab799c83ee 📚 Update changelog and set version to 1.5.3-alpha. 2021-05-10 16:57:40 +02:00
alonso.torres
4118e53d7d 🐛 Fix problem with undo 2021-05-10 16:48:26 +02:00
Andrés Moya
384b464f0f Translate automatic names of new files and projects 2021-05-10 15:47:51 +02:00
Andrey Antukh
ecacd47523 ⬆️ Update babashka to 0.4.0 on devenv docker. 2021-05-10 14:53:47 +02:00
Andrey Antukh
334ac26f0d Add improved activity logging. 2021-05-10 14:53:47 +02:00
Andrey Antukh
e94e202cef 🐛 Fix unexpected exception bug on exporter.
Puppetter bug, fixed upgrading it.
2021-05-10 14:53:47 +02:00
Andrey Antukh
7cf120e2e1 Move events batching to a util/async ns. 2021-05-10 14:53:47 +02:00
Andrey Antukh
0f8e2a9b1b 🎉 Add experimental trazability to update-file. 2021-05-10 14:53:47 +02:00
Andrey Antukh
c70bc5baff ♻️ Refactor dashboard state management.
Mainly for performance, also affects backend endpoints.
2021-05-10 14:53:47 +02:00
Andrey Antukh
e7b3f12b71 🔥 Remove duplicated change apply operation. 2021-05-10 14:53:47 +02:00
Andrey Antukh
a03882de76 📎 Minor changes on log4j2-devenv.xml file. 2021-05-10 14:53:47 +02:00
Andrey Antukh
d9a4a8d6de Merge pull request #925 from penpot/resize-text
Resize text
2021-05-10 13:40:08 +02:00
Andrés Moya
4c48f34d61 🎉 Add resize scale for texts 2021-05-10 13:28:15 +02:00
Andrés Moya
ebb6df4696 ♻️ Refactor shortcuts and change image shortcut 2021-05-10 13:28:06 +02:00
alonso.torres
7033ae4f2e 🐛 Fixes problem recreating indices 2021-05-10 10:21:04 +02:00
Andrés Moya
0cc600de6d Preserve layer order when copying shapes to the clipboard 2021-05-09 15:14:17 +02:00
alonso.torres
c1278194ce 🐛 Fix snap index problem 2021-05-09 15:13:04 +02:00
Andrey Antukh
50bdcea81b ⬆️ Upgrade cuerdas version. 2021-05-09 12:28:52 +02:00
Andrey Antukh
c5fa8f560c 📎 Fix linter issues. 2021-05-09 12:28:38 +02:00
alonso.torres
6d5276c0c6 Merge remote-tracking branch 'origin/main' into develop 2021-05-07 13:34:48 +02:00
Andrey Antukh
4405bd95f9 🔥 Remove unused stacktrace. 2021-05-07 13:15:48 +02:00
alonso.torres
3bb3fcfbda 🐛 Fix problems with empty paths and shortcuts 2021-05-07 13:13:58 +02:00
alonso.torres
5e0101e424 🐛 Fixes problem with edition state and paths 2021-05-07 13:13:58 +02:00
Andrey Antukh
2c96ecac87 🐛 Fix wrong query for obtain profile default project-id. 2021-05-07 13:13:58 +02:00
alonso.torres
9fcddc37f6 🐛 Fix problem with command 2021-05-07 13:13:58 +02:00
Andrey Antukh
1fd2b3fff8 Merge remote-tracking branch 'origin/main' into develop 2021-05-06 19:53:21 +02:00
Andrey Antukh
39066bfee3 📚 Update changelog. 2021-05-06 18:46:26 +02:00
Andrey Antukh
2d75efbace 🐛 Add correct error mesage when using an expired token. 2021-05-06 18:46:26 +02:00
Andrey Antukh
8a8403834f 💄 Cosmetic change on onboarding modal. 2021-05-06 18:46:26 +02:00
Andrey Antukh
e98b88f673 Set default role on invitation modal.
Just a quality of life improvement.
2021-05-06 18:46:26 +02:00
Andrey Antukh
d2f8d4a306 Increase default team invitation token expiration. 2021-05-06 18:46:26 +02:00
Andrey Antukh
2138530f3e 🎉 Add profile-id on mattermost error reporter. 2021-05-06 18:46:26 +02:00
Andrey Antukh
94d94684c8 📎 Minor logging change on mattermost ns. 2021-05-06 18:46:26 +02:00
alonso.torres
550164cf5e Merge remote-tracking branch 'origin/main' into develop 2021-05-06 16:34:58 +02:00
alonso.torres
5352918ff8 🐛 Fix problem when deleting all nodes from a path 2021-05-06 15:55:02 +02:00
alonso.torres
57b6807333 🐛 Fix problem when copy image shapes 2021-05-06 15:55:02 +02:00
Andrey Antukh
e3171d9ee5 💄 Cosmetic fixes on events ns. 2021-05-06 14:13:54 +02:00
Andrey Antukh
8ef49d2ec4 Minor improvement on event ordering on signup. 2021-05-06 14:13:54 +02:00
Andrey Antukh
3ce4769e8d Report errors on events. 2021-05-06 14:13:54 +02:00
Andrey Antukh
abb244c940 ♻️ Refactor exporter state initialization. 2021-05-06 14:13:54 +02:00
Andrey Antukh
4825efb582 Add default secret key env on devenv. 2021-05-06 14:13:54 +02:00
Andrey Antukh
2195b8932e 🐛 Fix status code checking on telemetry client task. 2021-05-06 14:13:54 +02:00
Andrey Antukh
81c406bb60 🎉 Add db/inet type factory. 2021-05-06 14:13:54 +02:00
Andrey Antukh
9d28807796 🔥 Remove unused config props. 2021-05-06 14:13:54 +02:00
Andrey Antukh
6dbabf2935 ♻️ Refactor application initialization. 2021-05-06 14:13:54 +02:00
Andrey Antukh
4018e4df79 ♻️ Refactor storage namespace (frontend). 2021-05-06 14:13:54 +02:00
Andrey Antukh
8835216ca9 🎉 Add analytics related event namespace. 2021-05-06 14:13:54 +02:00
Andrey Antukh
04ab99c8ad Minor improvement on try* helper on common/exceptions. 2021-05-06 14:13:54 +02:00
Andrey Antukh
1bc210c9a9 ⬆️ Update frontend dependencies.
And add user agent parsing library dependency.
2021-05-06 14:13:54 +02:00
Andrey Antukh
6250b457ad Allow raw logging messages. 2021-05-06 14:13:54 +02:00
Andrey Antukh
460c824117 📎 Minor changes on migration files.
Making them reusable.
2021-05-06 14:13:54 +02:00
Andrey Antukh
77c2a98304 🎉 Add insert-multi helper on db namespace. 2021-05-06 14:13:54 +02:00
Andrey Antukh
8ad8196d70 Allow overide the secret-key on setup module.
Usefull when using a pre-shared secret key.
2021-05-06 14:13:54 +02:00
Andrey Antukh
fa4410bea3 Merge branch 'staging' into main 2021-05-06 12:55:34 +02:00
Andrés Moya
af23d62568 🐛 Remove interactions when the destination artboard is deleted 2021-05-06 12:52:43 +02:00
alonso.torres
e241273a1e Merge remote-tracking branch 'origin/staging' into develop 2021-05-06 12:08:40 +02:00
alonso.torres
269efc98c3 📚 Updates changes 2021-05-06 11:57:00 +02:00
alonso.torres
2c3a3845ac 🐛 Fix problem with embed fonts 2021-05-06 11:53:39 +02:00
Andrey Antukh
4bf0ae0a9d Deactivate profile-activity middleware. 2021-05-06 10:27:05 +02:00
alonso.torres
a3ead3aa6d 🐛 Fix error on collaboratibe editing 2021-05-05 16:40:40 +02:00
alonso.torres
d965736751 🐛 Fix problems with interactions in view mode 2021-05-05 16:14:57 +02:00
alonso.torres
437a6cf476 🐛 Fix problem with interactions on deleted frames 2021-05-05 14:47:41 +02:00
alonso.torres
a91a57581f 🐛 Fix issues with non updated selected 2021-05-05 14:27:19 +02:00
alonso.torres
be0d1c19fa ♻️ New namespace for state helpers 2021-05-05 14:27:19 +02:00
Andrey Antukh
447e1bf435 Merge remote-tracking branch 'weblate/develop' into translations 2021-05-05 11:36:28 +02:00
andy
6a62f4d3fb 🌐 Add translations for: Spanish.
Currently translated at 96.7% (616 of 637 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-05-05 11:32:04 +02:00
Andrey Antukh
f507722f43 Merge remote-tracking branch 'origin/staging' into develop 2021-05-05 11:31:10 +02:00
Andrey Antukh
0030b9c3ac 🎉 Add accidentally deleted germany translations file. 2021-05-05 11:17:07 +02:00
Andrey Antukh
4db7a6782b 🎉 Add 1.5 relnotes modal. 2021-05-05 10:54:14 +02:00
Andrey Antukh
bb3be3d495 Merge pull request #903 from penpot/visual-fixes-april2 2021-05-05 10:51:31 +02:00
elhombretecla
fe28648a88 💄 Review icons 2021-05-05 10:48:42 +02:00
elhombretecla
2b393355ad 💄 Change messages css 2021-05-05 10:48:42 +02:00
elhombretecla
79f5c6a008 🎉 Quick fixes 2021-05-05 10:48:42 +02:00
elhombretecla
f75ee48795 🎉 Add viewer fixes 2021-05-05 10:47:55 +02:00
elhombretecla
81d9727d03 🎉 Add new svg icons 2021-05-05 10:47:55 +02:00
elhombretecla
4ac3573ab1 🎉 Add new title and th styles 2021-05-05 10:47:33 +02:00
alonso.torres
92b79f1731 🐛 Fix problem with make curve/corner in paths 2021-05-05 09:48:38 +02:00
alonso.torres
32b623e82b Improve performance of z-index update 2021-05-05 09:39:49 +02:00
alonso.torres
285a0d5f47 Changes indices to update only necesary data 2021-05-05 09:39:49 +02:00
Andrey Antukh
308fd8d4b0 Merge branch 'staging' into develop 2021-05-04 14:35:14 +02:00
Andrey Antukh
4000855f45 🚑 Add missing files on exporter subdirectory. 2021-05-04 14:34:27 +02:00
Andrey Antukh
ca777790d4 Merge branch 'staging' into develop 2021-05-04 14:30:08 +02:00
Andrey Antukh
e15a212b14 🎉 Add dashboard custom fonts management. 2021-05-04 14:21:31 +02:00
Andrey Antukh
8c6863e2ad ⬆️ Update exporter dependencies. 2021-05-04 14:15:03 +02:00
Andrey Antukh
5e329e62b3 Revert session cookie name change. 2021-05-04 14:14:31 +02:00
alonso.torres
2582e87ffa Improve path editor 2021-05-04 11:44:23 +02:00
Andrés Moya
1c0822ffb3 Merge pull request #900 from penpot/visual-fixes-april
Visual fixes april
2021-05-04 11:08:33 +02:00
Andrey Antukh
9d0877e985 🌐 Added translation for: Portuguese (Brazil). 2021-05-04 11:03:02 +02:00
elhombretecla
a6fb4a8271 💄 Review icons 2021-05-04 10:31:31 +02:00
elhombretecla
9adf0b3611 💄 Change messages css 2021-05-04 10:31:31 +02:00
elhombretecla
e3896da3c4 🎉 Quick fixes 2021-05-04 10:31:31 +02:00
elhombretecla
f5ad7dc2dc 🎉 Add viewer fixes 2021-05-04 10:31:31 +02:00
elhombretecla
d0af14c40f 🎉 Add new svg icons 2021-05-04 10:31:18 +02:00
elhombretecla
d8fb575d46 🎉 Add new title and th styles 2021-05-04 10:22:23 +02:00
Andrey Antukh
aaf0618d24 Merge remote-tracking branch 'origin/staging' into develop 2021-04-29 20:45:45 +02:00
Andrey Antukh
92d1dcb3d4 Merge pull request #885 from penpot/alotor/improve-snaps
Improve snaps performance
2021-04-29 15:43:50 +02:00
alonso.torres
a9e93a5ace Improve snap responsiveness 2021-04-29 15:08:47 +02:00
Andrey Antukh
e9ae59ad00 Merge remote-tracking branch 'origin/staging' into develop 2021-04-29 14:52:12 +02:00
Andrey Antukh
056b80939e ⬆️ Update beicon library (frontend). 2021-04-29 13:16:37 +02:00
Andrés Moya
3a4f63848d 🐛 Fix active area for interactive shapes in view mode 2021-04-29 11:50:31 +02:00
alonso.torres
907f39c73f 🐛 Fix problem with selection after create paths 2021-04-29 11:43:46 +02:00
alonso.torres
91f60000b3 Memoize shapes 2021-04-29 11:39:20 +02:00
alonso.torres
0b6c2df5b6 Change some verify to asserts 2021-04-29 11:39:20 +02:00
alonso.torres
ac27d35ff5 Improve move shapes performance 2021-04-29 11:39:20 +02:00
Andrés Moya
c62905b9a8 🐛 Fix ordering of copy+pasted shapes after rect select 2021-04-28 16:52:02 +02:00
Andrés Moya
2974fb0f4e 🐛 Fix page always visible when selecting it in sitemap 2021-04-28 16:52:02 +02:00
Andrés Moya
df73df311b 🐛 Fix error entering search in dashboard 2021-04-28 12:43:11 +02:00
Andrés Moya
b0575e969f ♻️ Refactor keyboard events to replace a deprecated parameter 2021-04-28 12:02:24 +02:00
Andrey Antukh
547a472016 Merge pull request #876 from penpot/alotor/improved-changes-performance
Improved changes performance
2021-04-27 18:38:24 +02:00
alonso.torres
d67dd21c56 Improved performance on move and text resize 2021-04-27 18:00:59 +02:00
alonso.torres
59187f9ff4 ♻️ Refactor commit-changes and undo actions 2021-04-27 18:00:59 +02:00
Andrés Moya
da8a32047c ♻️ Rework assets selection to have a single selected set 2021-04-27 15:01:13 +02:00
Andrey Antukh
4c93ef4bb3 Merge pull request #871 from penpot/feat/path-move-nodes-keyboard
Add move path points with keyboard
2021-04-26 20:13:45 +02:00
Andrey Antukh
e9b8295bf1 📎 Update circle ci config file. 2021-04-26 20:08:32 +02:00
alonso.torres
14475fdc67 Add move path points with keyboard 2021-04-26 18:30:56 +02:00
alonso.torres
21cf845c02 🐛 Removed unused import 2021-04-26 15:08:29 +02:00
alonso.torres
2cea7405b5 🐛 Allow use library colors when defining gradients 2021-04-26 15:08:29 +02:00
alonso.torres
dff067c1a7 🐛 Fix issues with promote owner panel 2021-04-26 15:08:29 +02:00
alonso.torres
a507ab0e07 🐛 Fix visual problem with group invite 2021-04-26 15:08:29 +02:00
alonso.torres
1ee1cada9e 🐛 Fixes problems with blending modes 2021-04-26 15:08:29 +02:00
alonso.torres
1584f3771b 🐛 Fix problem when opening the context menu in dashboard at the bottom 2021-04-26 15:08:29 +02:00
alonso.torres
1ec423c11d 🐛 Fix problems with text editor selection 2021-04-26 15:08:29 +02:00
alonso.torres
c3611c3047 🐛 Fix problem displaying team statistics 2021-04-26 15:08:29 +02:00
alonso.torres
41e57bcb6b 🐛 Fix problem with zoom an selection rect 2021-04-26 15:08:29 +02:00
Andrey Antukh
057b0e163c 📎 Minor changes on CI configuration. 2021-04-26 14:15:04 +02:00
Andrey Antukh
3840e4c214 Merge branch 'staging' into develop 2021-04-26 14:06:35 +02:00
Andrey Antukh
715900d0ef 📎 Add tests to shadow-cljs.edn source paths list. 2021-04-26 14:04:25 +02:00
Andrés Moya
e9cbfbe7f8 📚 Update CHANGES.md 2021-04-26 13:33:27 +02:00
elhombretecla
a14d8e2b41 🎉 Add pin fill icon 2021-04-26 13:27:58 +02:00
Andrey Antukh
d57f4cebff 🐛 Fix shadow-cljs.edn file. 2021-04-26 12:59:31 +02:00
Andrey Antukh
cbe54d0bbe 🐛 Remove duplicate prop from shadow-cljs config file. 2021-04-26 12:39:59 +02:00
Andrey Antukh
2034f0a7c2 Merge branch 'staging' into develop 2021-04-26 11:24:33 +02:00
Andrey Antukh
ce5429a531 Merge branch 'main' into staging 2021-04-26 11:23:55 +02:00
Andrey Antukh
df11ef4aca 🔥 Remove unused requires. 2021-04-26 11:23:37 +02:00
Andrey Antukh
8ecc0b3cd9 🐛 Fix email registration whitelist handling. 2021-04-26 11:19:50 +02:00
Andrey Antukh
5d2f4bac76 Replace random session tokens with JWE tokens.
We still maintain the http session state on the database for to prevent
replay attacks to the main application. But internally, on less critical
parts of the infraestructure, it usefull have access to the identified
user without hit the main database for that information.
2021-04-25 20:35:36 +02:00
Andrey Antukh
bb73ddc58f Replace random session tokens with JWE tokens.
We still maintain the http session state on the database for to prevent
replay attacks to the main application. But internally, on less critical
parts of the infraestructure, it usefull have access to the identified
user without hit the main database for that information.
2021-04-25 20:34:32 +02:00
Andrey Antukh
0f91f02508 📎 Prepare next development cycle. 2021-04-24 12:17:39 +02:00
Andrey Antukh
ce072937e4 📎 Update changelog. 2021-04-24 12:17:01 +02:00
Andrey Antukh
3b5b25fc86 🔥 Remove automatic path handling on config.
This makes that when you want to use penpot in a prefix,
you will need explicitly set the prefix on the configuration.
2021-04-24 12:12:13 +02:00
Andrey Antukh
170ab9e93b ⬆️ Update deps and devenv. 2021-04-24 11:49:58 +02:00
Andrés Moya
a67370bb83 ♻️ Optimize some dependencies 2021-04-23 15:26:33 +02:00
Andrés Moya
42cc97f86b ♻️ Validate translations 2021-04-23 15:26:33 +02:00
Andrés Moya
e3440ad773 🐛 Fix some bugs and omissions in assets 2021-04-23 15:26:33 +02:00
Andrés Moya
5e73e68ef7 🐛 Disable autocomplete color names 2021-04-23 15:18:33 +02:00
Andrés Moya
c16434e608 🎉 Autocomplete color fields 2021-04-23 15:18:33 +02:00
Andrés Moya
9e39e53488 Merge pull request #864 from penpot/fix/close-paths
Close paths
2021-04-23 13:30:39 +02:00
alonso.torres
1a7b098282 Improvements to loop removing 2021-04-23 13:29:54 +02:00
alonso.torres
2184286a78 Merge closing subpaths for seamless paths 2021-04-23 13:29:54 +02:00
Andrey Antukh
3583eb6aa9 🐛 Fix encoding issue on reading po files. 2021-04-23 12:57:33 +02:00
Andrey Antukh
adff40a4e7 Merge branch 'translations' into develop 2021-04-23 08:04:52 +02:00
Andrés Moya
f7064c5c0e 🌐 Add translations for: Spanish.
Currently translated at 98.7% (612 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
Andrey Antukh
208b6515a4 🌐 Add translations for: Spanish.
Currently translated at 98.8% (613 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
Andrey Antukh
66e54f7bd2 🌐 Add translations for: Spanish.
Currently translated at 98.8% (613 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
andy
d0baf76599 🌐 Add translations for: Spanish.
Currently translated at 98.8% (613 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
Andrey Antukh
1757db3051 🌐 Add translations for: Spanish.
Currently translated at 98.8% (613 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
andy
c7cfca8437 🌐 Add translations for: Spanish.
Currently translated at 98.8% (613 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
Andrey Antukh
3efb50b103 🌐 Add translations for: Spanish.
Currently translated at 98.7% (612 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
andy
be5c382ace 🌐 Add translations for: Spanish.
Currently translated at 98.7% (612 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
Andrey Antukh
d06f08e156 🌐 Add translations for: Spanish.
Currently translated at 98.7% (612 of 620 strings)

Translation: Penpot/frontend
Translate-URL: https://hosted.weblate.org/projects/penpot/frontend/es/
2021-04-23 07:59:33 +02:00
Andrés Moya
43f7750658 Merge pull request #851 from penpot/advanced-path-options
Advanced path options
2021-04-22 16:02:09 +02:00
alonso.torres
65ad46ab38 Shortcuts for paths 2021-04-22 14:08:12 +02:00
Andrey Antukh
432d24dc94 🐛 Fix manage.sh script on docker images. 2021-04-22 07:49:53 +02:00
alonso.torres
6331dff484 Snapping 180 angle with opposites handlers 2021-04-21 17:40:09 +02:00
alonso.torres
961a7a2e03 Additional changes to path editing 2021-04-21 17:40:09 +02:00
alonso.torres
c7683dfd80 Improved make curve options 2021-04-21 17:40:09 +02:00
alonso.torres
de11e85d2b ♻️ Refactor path utils 2021-04-21 17:40:09 +02:00
alonso.torres
0455aaa4cd Undo/redo paths 2021-04-21 17:40:09 +02:00
alonso.torres
e2cf3a5a98 Adds path new-point edition 2021-04-21 17:40:09 +02:00
Andrés Moya
f7712f2b40 Update CHANGES.md 2021-04-21 17:26:56 +02:00
Andrés Moya
41bf436c3a Disallow relative substraction in numeric fields 2021-04-20 17:45:28 +02:00
Andrey Antukh
9aee88f9f1 ⬆️ Update backend dependencies. 2021-04-20 16:42:21 +02:00
Andrey Antukh
94a3c5853b ⬆️ Update frontend dependencies.
And fix breaking changes on logging library.
2021-04-20 16:42:21 +02:00
Andrey Antukh
55ea84a056 Add more adaptations to make app run in a prefixed path. 2021-04-20 16:42:21 +02:00
Andrey Antukh
2828ccda7f Add the ability to check roles to openid integration. 2021-04-20 16:42:21 +02:00
Andrey Antukh
465a25145d Merge pull request #850 from penpot/smart-inputs
Smart inputs
2021-04-20 15:56:37 +02:00
Andrés Moya
d64eaab0b9 💄 Minor aesthetics 2021-04-20 15:14:24 +02:00
Andrés Moya
fad9d2fd3a 🎉 Allow calculations in numeric fields 2021-04-20 13:32:36 +02:00
Andrey Antukh
dd92e5d773 🐛 Fix bug in font embedding. 2021-04-16 12:16:13 +02:00
Andrey Antukh
2b35dce037 🎉 Add cache for font fetching on embedd ns. 2021-04-16 12:16:13 +02:00
Andrey Antukh
a777e8e42a 🐛 Set correct locale code for Greek. 2021-04-16 12:16:13 +02:00
Andrey Antukh
88eb6abdd6 Improve time related functions (frontend). 2021-04-16 12:16:13 +02:00
Andrey Antukh
e4d4245b6c Move data.colors under workspace namespace. 2021-04-16 12:16:13 +02:00
Andrey Antukh
874378869d 🔥 Remove legacy system user and team. 2021-04-16 12:16:13 +02:00
Andrés Moya
dd6bd6bbff 🐛 Fix frontend tests 2021-04-16 11:38:51 +02:00
Andrey Antukh
d946aceacb Merge branch 'main' into develop 2021-04-15 17:34:40 +02:00
Andrey Antukh
e3691cc0e3 🔥 Remove console.log. 2021-04-15 17:10:49 +02:00
Andrey Antukh
db7518025d 🎉 Add html template for feedback email. 2021-04-15 17:10:49 +02:00
Andrey Antukh
ac4bfc9bac 🐛 Fix excesive font fetching on embedding it. 2021-04-15 17:10:49 +02:00
Andrey Antukh
63b95e71a7 🎉 Add generic oauth2/openid-connect authentication subsystem. 2021-04-15 13:24:35 +02:00
Andrey Antukh
9e5923004f Merge branch 'main' into develop 2021-04-15 12:44:58 +02:00
Andrey Antukh
d01eb30ef2 Improve default docker-compose with env file. 2021-04-15 11:54:55 +02:00
Andrés Moya
b585c2ac22 Merge pull request #842 from penpot/advanced-path-options
Advanced path options
2021-04-14 16:58:16 +02:00
alonso.torres
74a09301a7 Shift+select path nodes 2021-04-14 16:57:25 +02:00
alonso.torres
07799d9b01 Path improvements 2021-04-14 16:57:25 +02:00
alonso.torres
48ba80c6e2 📚 Updated changelog 2021-04-14 16:57:25 +02:00
alonso.torres
74f99f0d48 Toggle snap on button 2021-04-14 16:57:25 +02:00
alonso.torres
f396ef4fa0 Snap for moving path nodes and handlers 2021-04-14 16:57:25 +02:00
alonso.torres
de8207c5a6 Snap on paths 2021-04-14 16:57:25 +02:00
alonso.torres
5f114163dc Fixes licenses headers 2021-04-14 16:57:25 +02:00
alonso.torres
5ce2bc862c ♻️ Move streams refactor 2021-04-14 16:57:25 +02:00
alonso.torres
6db144e5ed Path-point calculation 2021-04-14 16:57:25 +02:00
alonso.torres
fc383664c7 Adds join, merge, separate nodes 2021-04-14 16:57:25 +02:00
alonso.torres
bc3640893c Remove nodes 2021-04-14 16:57:25 +02:00
alonso.torres
5361e42976 Path split segments 2021-04-14 16:57:25 +02:00
alonso.torres
e81b1b8115 Adds point to curves tool 2021-04-14 16:57:25 +02:00
alonso.torres
421b30c1d8 Snapping on path elements 2021-04-14 16:57:25 +02:00
alonso.torres
2e6dacf539 ♻️ Refactor path into modules 2021-04-14 16:57:25 +02:00
alonso.torres
c22b4a1de2 Allows multiple selection and move 2021-04-14 16:57:25 +02:00
alonso.torres
a06a8c648e Select path nodes in area 2021-04-14 16:57:25 +02:00
Andrey Antukh
bb719d6211 📎 Minor improvements to translations scripts. 2021-04-14 15:43:17 +02:00
Andrey Antukh
5a49ce2028 Merge pull request #808 from penpot/group-assets
🎉 Group items in assets sidebar
2021-04-14 14:34:31 +02:00
Andrés Moya
e8da04d4ab 🎉 Show assets as a list 2021-04-14 14:17:59 +02:00
Andrés Moya
112e656f40 🎉 Sort assets ascending / descending 2021-04-14 14:17:59 +02:00
Andrés Moya
77a2fd6e36 🎉 Bulk duplicate and delete assets 2021-04-14 14:17:59 +02:00
Andrés Moya
3613e6f3d3 🎉 Group components and graphics in assets sidebar 2021-04-14 14:17:59 +02:00
Andrey Antukh
eff333cbaf Merge branch 'main' into develop 2021-04-14 13:52:09 +02:00
Andrey Antukh
ba0f9360f9 📎 Set version to 1.4.1-alpha. 2021-04-14 13:50:11 +02:00
Andrey Antukh
a8565dc2c2 🐛 Fix typography unlinking. 2021-04-14 08:32:06 +02:00
Andrey Antukh
9f5c19244d 🎉 Add preprocessing to svg parse method. 2021-04-13 17:16:39 +02:00
Andrey Antukh
7cc4873dd4 ♻️ Move svg parsing into query rpc methods. 2021-04-13 17:16:39 +02:00
Andrey Antukh
03a031091f 🎉 Allow copy&paste from inkscape. 2021-04-13 17:16:39 +02:00
Andrés Moya
14359d9acf Merge pull request #836 from penpot/bugfixes
Bugfixes
2021-04-13 15:26:52 +02:00
Andrey Antukh
bfbc715977 Merge remote-tracking branch 'origin/bugfixes' into develop 2021-04-13 14:14:03 +02:00
alonso.torres
6161911ff1 🐛 Fixes measurement on root frame 2021-04-13 14:12:21 +02:00
alonso.torres
162b0cfa6c 🐛 Fixes issue when parsing exponential numbers in paths (backport). 2021-04-13 14:07:06 +02:00
Andrey Antukh
94ccc013d7 🐛 Fix unexpected console errors on removing shape.
Caused because in some instances selected shapes set
will contain an id that is already removed from object.
This is a tipical race condition.
2021-04-13 14:07:06 +02:00
Andrey Antukh
239ec12529 🐛 Fix usability issue on team invitation dialog.
Happens when user select (autocompletion), writes or
pastes an email that starts and/or ends with a trailing
spaces. The new spec allows tailing spaces but conforms
to a valid email address without trailing spaces.
2021-04-13 14:07:06 +02:00
Andrey Antukh
99bcf0484a 🐛 Fix race conditions on profile and teams loading. 2021-04-13 14:07:06 +02:00
Andrey Antukh
6e80a2f9fb 📎 Update changelog. 2021-04-13 13:59:50 +02:00
Andrey Antukh
4cca8f0600 ♻️ Refactor translations subsystem.
Migrate from plain json files to gettext.
2021-04-13 13:59:50 +02:00
alonso.torres
b9ca4e7f9b 🐛 Fixes issue when parsing exponential numbers in paths 2021-04-13 13:40:08 +02:00
Andrey Antukh
464a686c04 🐛 Fix incorrect handling of user lang selection.
That causes double loading of the http resources
in some circumstances.
2021-04-13 12:41:34 +02:00
mathieu.brunot
f0439da293 Frontend can receive hash from CI
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2021-04-13 11:59:52 +02:00
Andrey Antukh
f545e41d10 📎 Fix license header. 2021-04-12 16:49:43 +02:00
Andrey Antukh
7d14aef393 ♻️ Refactor http client.
Start using Fetch API.
2021-04-12 16:49:43 +02:00
Andrey Antukh
9a0f6018a7 Merge branch 'main' into develop 2021-04-09 15:32:20 +02:00
alonso.torres
0a44dbd921 🐛 Fixes problem with pan and space 2021-04-09 15:31:54 +02:00
Andrey Antukh
fa2d0f5ed7 Merge pull request #809 from penpot/improve-trazability
Improve trazability
2021-04-09 15:28:55 +02:00
Andrey Antukh
d889d39151 📎 Fix linter issues. 2021-04-09 15:28:18 +02:00
Andrey Antukh
8daf6e822e 🎉 Add profile activity registry logger. 2021-04-09 15:28:18 +02:00
Andrey Antukh
c40d9d9a7c 🔥 Remove unused code. 2021-04-09 15:28:18 +02:00
Andrey Antukh
e12a6e65a6 ♻️ Refactor logging. 2021-04-09 15:28:18 +02:00
Andrey Antukh
a92820e910 🐛 Fix incorrect handling of font embedding. 2021-04-09 14:30:21 +02:00
alonso.torres
080dd88509 🐛 Fixes problem when exporting svg's 2021-04-09 14:26:52 +02:00
Andrés Moya
44d64e4831 Merge branch 'zzkt-patch-1' into develop 2021-04-09 14:05:13 +02:00
Andrés Moya
6f2306439c 📚 Add contribution to change log 2021-04-09 14:03:56 +02:00
nik gaffney
2c6b896989 Update en.subj
spelling
2021-04-09 12:16:40 +02:00
Andrey Antukh
4e1d85a5f4 🐛 Add missing breaking change notification on changelog. 2021-04-09 09:15:39 +02:00
Andrey Antukh
09aa28a943 🐛 Fix incorrect vertical align handling. 2021-04-09 09:12:14 +02:00
alonso.torres
faff32203c 🐛 Fixes problems with measurment distances 2021-04-08 11:07:49 +02:00
Andrey Antukh
77280961ef Merge branch 'main' into develop 2021-04-07 20:18:45 +02:00
Andrey Antukh
5f7f88d299 🔥 Remove unnecesary metrics observe calls. 2021-04-07 20:18:06 +02:00
Andrey Antukh
50bc1b0347 Merge branch 'main' into develop 2021-04-07 20:16:54 +02:00
Andrey Antukh
166fdbd406 🐛 Fix incorrect handling of websocket metrics. 2021-04-07 19:52:40 +02:00
Andrey Antukh
a6920122e6 Merge branch 'main' into develop 2021-04-07 15:11:17 +02:00
elhombretecla
e677692594 Minor design fixes 2021-04-07 14:29:09 +02:00
alonso.torres
459c9a3bb1 🐛 Adds some guards to viewbox calculation 2021-04-07 14:28:50 +02:00
Andrey Antukh
9544ee2140 🔥 Remove artifacts from changes file. 2021-04-07 14:14:50 +02:00
Andrey Antukh
45cd05184b Merge branch 'main' into develop 2021-04-07 14:14:36 +02:00
Andrey Antukh
e8aa521a1e Merge branch 'staging' into main 2021-04-07 13:19:07 +02:00
Andrey Antukh
c4c0e105cf Merge remote-tracking branch 'origin/staging' into develop 2021-04-07 09:28:02 +02:00
Andrey Antukh
69031bb8e1 🐛 Fix font fetching on embedding it. 2021-04-07 09:24:14 +02:00
elhombretecla
19ced21b20 Minor design fixes 2021-04-07 09:16:41 +02:00
Andrey Antukh
46b55822dc Merge branch 'staging' into develop 2021-04-06 20:09:00 +02:00
Andrey Antukh
4f20d22a4f 🐛 Use safer defaults for xml parser. 2021-04-06 17:08:12 +02:00
Andrey Antukh
8f51450f7e Merge remote-tracking branch 'origin/staging' into develop 2021-04-06 15:07:29 +02:00
alonso.torres
94a294e147 🐛 Fixed problem when drawing paths 2021-04-06 15:01:46 +02:00
Andrey Antukh
4acfc15705 Merge remote-tracking branch 'origin/staging' into develop 2021-04-06 14:44:08 +02:00
Andrey Antukh
73b555eb9b 📎 Minor fix on config defaults. 2021-04-06 12:05:52 +02:00
Andrey Antukh
d93fa72e48 🎉 Add release notes lightbox. 2021-04-06 12:05:39 +02:00
Andrey Antukh
bbb26002e4 🔥 Remove unused code from manage.sh script. 2021-04-06 09:19:27 +02:00
Andrey Antukh
1ab1059b06 ⬆️ Update devenv image and compose file. 2021-04-06 09:17:19 +02:00
Andrey Antukh
7b67e05e50 ⬆️ Update gitpod dockerfile. 2021-04-06 09:15:06 +02:00
Andrey Antukh
c7fcb00b81 ⬆️ Update devenv image and compose file. 2021-04-06 09:01:07 +02:00
alonso.torres
2b66d0ea06 Merge remote-tracking branch 'origin/staging' into develop 2021-04-05 11:39:31 +02:00
alonso.torres
f3b779e50c 🐛 Fixed problem with right-click menu 2021-04-05 11:37:41 +02:00
alonso.torres
9e348ecc99 🐛 Fixed problem when editing paths 2021-04-05 11:23:46 +02:00
alonso.torres
78fe0ab7e3 🐛 Fixes problem with docker-compose environment 2021-04-05 08:39:31 +02:00
Andrey Antukh
fc9f2864d8 Merge pull request #807 from penpot/Monogramm-madmath03/gitpod-setup
Gitpod (by monogramm)
2021-03-31 14:49:24 +02:00
Andrey Antukh
1e642bba8f 📎 Update changelog. 2021-03-31 14:48:28 +02:00
Andrey Antukh
a5994140e2 📎 Fix linter issues. 2021-03-31 14:37:30 +02:00
Andrey Antukh
018b47ab6b ⬆️ Update frontend dependencies (yarn.lock). 2021-03-31 14:37:30 +02:00
Andrey Antukh
f4f51dbf6b Add minor adaptations for gitpod config and docker files. 2021-03-31 14:37:30 +02:00
madmath03
43e75401d7 🎉 Fully automate dev setup with Gitpod.
This commit implements a fully-automated development setup using Gitpod.io, an
online IDE for GitLab, GitHub, and Bitbucket that enables Dev-Environments-As-Code.
This makes it easy for anyone to get a ready-to-code workspace for any branch,
issue or pull request almost instantly with a single click.

🐳 Gitpod docker image with Clojure

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐳 Fix path to GitPod docker image

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐳 Use sudo for setup

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐳 More sudo commands

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐳 Remove penpot user in gitpod

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐳 Brew install redis

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Init DB and penpot user

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐳 Switch user for installs

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Improve startup and DB init

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Configure gitpod tasks

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Configure gitpod ports

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Setup for mailhog

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐛 Use perms to install mailhog

🐛 Install mailhog before workspace creation

Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>

🔧 Manage signed commits

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Configure tasks to wait on ports

🔧 Improve Gitpod config

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

⬆️ Upgrade deps in gitpod

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🎨 Use absolute path for cd

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Add nginx conf

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Fix nginx config for gitpod

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Ensure nginx listens all incoming

🎨 Change layers order

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🎨 Change layers order

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🔧 Set Nginx logs permissions

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>

🐛 Use sudo to create nginx logs

Signed-off-by: madmath03 <mb.mathieu.brunot@gmail.com>
2021-03-31 14:36:46 +02:00
Andrey Antukh
8b45ed9c0c Merge remote-tracking branch 'origin/staging' into develop 2021-03-31 12:24:10 +02:00
Andrey Antukh
88a3548d7e Use babashka to properly wait exporter compilation. 2021-03-31 12:20:49 +02:00
Andrey Antukh
3ddc95d4b5 🎉 Add nginx config file inside devenv image. 2021-03-31 12:20:49 +02:00
Andrey Antukh
08a682efc2 Change default location of assets on devenv. 2021-03-31 12:20:49 +02:00
Andrey Antukh
32afe57e18 Improve build scripts. 2021-03-31 12:20:49 +02:00
Andrey Antukh
43465f7c4b 🔥 Remove unused prop. 2021-03-31 09:28:15 +02:00
Andrey Antukh
351daacca0 🔧 Change CI configuration. 2021-03-31 09:28:15 +02:00
Andrey Antukh
0926fbcbc6 ♻️ Minor code reorganization.
Improves modularity and reusability and allows usage
of backend code as a library.
2021-03-31 09:28:15 +02:00
Andrey Antukh
59a45530a8 🐳 Add babashka to devenv.
Among other changes.
2021-03-31 09:28:15 +02:00
Andrey Antukh
cf2998eeec 🔥 Remove unused files. 2021-03-31 09:28:15 +02:00
Andrey Antukh
6f1508acc1 ⬆️ Update slf4j dependency. 2021-03-31 09:28:15 +02:00
Andrey Antukh
edb88027a4 📎 Minor fix on readme file. 2021-03-31 09:28:15 +02:00
Andrey Antukh
5111551c89 📎 Update .gitignore file. 2021-03-31 09:28:15 +02:00
alonso.torres
6891826c78 Adds a worker message buffer for selection queries 2021-03-30 14:59:40 +02:00
Andrey Antukh
e68d63ea71 Merge remote-tracking branch 'origin/staging' into develop 2021-03-30 14:49:40 +02:00
alonso.torres
d83d241c39 🐛 Fixed translation string 2021-03-30 10:20:07 +02:00
Andrey Antukh
9950f464ce Merge branch 'staging' into develop 2021-03-30 08:49:32 +02:00
Andrey Antukh
676a2db1f5 🐛 Fix team form autofocus prop. 2021-03-30 08:33:45 +02:00
alonso.torres
62ed2221e9 🐛 Fix when right click on a selected text shows artboard contextual menu 2021-03-30 08:29:05 +02:00
alonso.torres
60f6093357 🐛 Fix titles in viewer thumbnails too long 2021-03-30 08:29:05 +02:00
alonso.torres
ed893b995d 🐛 Fix artboard title wasn't move when resizing 2021-03-30 08:29:05 +02:00
alonso.torres
3ebc94ab8e 🐛 Fix layout problem for editable selects 2021-03-30 08:29:05 +02:00
alonso.torres
cd7ad03cf0 🐛 Fix drag-select when renaming layer text 2021-03-30 08:29:05 +02:00
alonso.torres
0f6ce233bd 🐛 Fix shadows when exporting groups 2021-03-30 08:29:05 +02:00
alonso.torres
a14890f163 🐛 Fix SVG not showing properties at code 2021-03-30 08:29:05 +02:00
alonso.torres
213a8c69fb 🐛 Fix cannot click on blocked elements in viewer 2021-03-30 08:29:05 +02:00
Andrey Antukh
2500486186 🐛 Properly redirect bad-gateway errors on login. 2021-03-29 18:01:40 +02:00
Andrey Antukh
9cd15fd362 📎 Set next version number. 2021-03-29 15:38:56 +02:00
Andrey Antukh
efdfbbaf5e Merge remote-tracking branch 'origin/staging' into develop 2021-03-29 15:38:36 +02:00
Andrey Antukh
87aa3fbfe8 Improve version handling. 2021-03-29 15:38:13 +02:00
alonso.torres
ea3f2fbfce 🐛 Fix issue when promoting to owner 2021-03-29 10:51:07 +02:00
alonso.torres
7d68d79fc3 🐛 Fix issue with recent files not showing 2021-03-29 10:51:07 +02:00
Andrey Antukh
6f6a750373 Merge remote-tracking branch 'origin/staging' into develop 2021-03-29 10:34:03 +02:00
Andrey Antukh
993530dbcb Properly handle 'idle-in-tx' errors. 2021-03-29 10:30:46 +02:00
Andrey Antukh
7b4ca6dcef 📎 Minor fixes on changelog. 2021-03-29 10:30:13 +02:00
Andrey Antukh
ae1d5667cc Merge remote-tracking branch 'origin/bugfixing' into staging 2021-03-29 09:22:06 +02:00
Andrey Antukh
90a51dc44a 🐛 Only allow bitmap images on team and profile photo. 2021-03-29 09:06:42 +02:00
Andrey Antukh
caf1ef653f 🐛 Fix wrong spec usage. 2021-03-29 09:06:24 +02:00
Andrey Antukh
8cba56b2d5 Merge branch 'mbrksntrk-patch-1' into staging 2021-03-29 09:03:20 +02:00
Andrey Antukh
2fed88e840 📎 Reorganize locales.json file. 2021-03-29 09:02:57 +02:00
Andrey Antukh
1df407ca96 📎 Update changelog. 2021-03-29 09:01:24 +02:00
M Burak Şentürk
f4c3aa8b89 Add 98 new Turkish translation strings. 2021-03-29 08:56:48 +02:00
Andrey Antukh
cc92e4be75 🐛 Fix unexpected internal error on press enter. 2021-03-26 23:38:47 +01:00
Andrey Antukh
aa866bbe13 🐛 Fix wrong spec usage. 2021-03-26 23:38:28 +01:00
Andrey Antukh
18ec8009a1 🐛 Only allow bitmap images on team and profile photo. 2021-03-26 23:38:03 +01:00
Andrés Moya
c6d7f0e352 🐛 Fix calculate size of some animated gifs 2021-03-26 17:15:42 +01:00
Andrey Antukh
038e820815 🐛 Fix object exportation. 2021-03-26 17:15:07 +01:00
Andrey Antukh
605143ef7e Minor improvements on version decoding ns. 2021-03-26 16:37:21 +01:00
alonso.torres
3cb9470db2 🐛 Fix problem with enter to edit paths 2021-03-26 15:57:05 +01:00
Andrés Moya
7c21624e09 🐛 Fix glitch when dragging a file thumbnail in the dashboard 2021-03-26 15:30:59 +01:00
Andrés Moya
47c58df2a4 🐛 Fix errors duplicating objects with deleted relations 2021-03-26 12:51:48 +01:00
alonso.torres
e6a2cc16a4 🐛 Fix problem with blocked shapes 2021-03-26 12:09:56 +01:00
alonso.torres
66f9e98499 ♻️ Moved outlines to viewport namespace 2021-03-26 12:09:56 +01:00
alonso.torres
4f8d82dae7 🐛 Fixed some issues when shift-selecting on sidebars 2021-03-26 12:09:56 +01:00
alonso.torres
66f88576e1 🐛 Fix text selection in comments 2021-03-26 12:09:56 +01:00
alonso.torres
3c2ae03cea 🐛 Fix problem with blocked shapes 2021-03-26 10:53:29 +01:00
alonso.torres
a2d8518724 ♻️ Moved outlines to viewport namespace 2021-03-26 10:53:29 +01:00
alonso.torres
20e4562c09 🐛 Fixed some issues when shift-selecting on sidebars 2021-03-26 10:42:34 +01:00
alonso.torres
68eadcb24f 🐛 Fix text selection in comments 2021-03-26 10:37:19 +01:00
alonso.torres
0a3b244f44 🐛 Fix problem with blending modes in masks 2021-03-26 09:57:59 +01:00
alonso.torres
19ea7e8b2f 🐛 Fix problem with team management in dashboard 2021-03-26 09:19:37 +01:00
Andrey Antukh
c447279c75 Improve text shape tracing process on exporter.
Fixes many bugs related to the svgo removal and remove
unneded neesting of groups.
2021-03-26 08:10:04 +01:00
Andrey Antukh
b1477d8087 🐛 Fix text rendering performance problem. 2021-03-26 08:10:04 +01:00
alonso.torres
7f7c803d9e ⬆️ Updated worksans font 2021-03-25 15:35:35 +01:00
Andrey Antukh
41b5374027 🐛 Fix build commands on devenv. 2021-03-25 09:05:32 +01:00
Andrey Antukh
27d28f7baf Merge pull request #783 from penpot/release-enhancements
Release enhancements
2021-03-25 08:24:31 +01:00
Andrey Antukh
50aef6ab65 🔥 Remove graaljs and commons-pool. 2021-03-25 08:23:41 +01:00
alonso.torres
ecff4c5dce Removed svgcleaner 2021-03-25 08:19:35 +01:00
alonso.torres
c380400578 SVG import enhancements 2021-03-25 08:19:35 +01:00
alonso.torres
92e07c3b54 🐛 Fix problem when upload image after zoom 2021-03-25 08:19:35 +01:00
alonso.torres
0756de25f8 Paths improvements 2021-03-25 08:19:35 +01:00
Andrés Moya
1773de88f5 🐛 Fix closing of thumbnails panel in view mode 2021-03-25 08:17:58 +01:00
alonso.torres
b534f5b736 🐛 Fixed problem with enter key shortcut 2021-03-25 08:17:45 +01:00
Andrey Antukh
727d6b78ce 🐛 Fix ldap connection handling. 2021-03-24 11:43:19 +01:00
Andrés Moya
2dbcb4c2a2 🎉 Rename frame with double click on the title 2021-03-24 11:42:40 +01:00
alonso.torres
a399363b08 🐛 Fixes problem with snaps 2021-03-24 11:37:01 +01:00
alonso.torres
7ac78cb103 Adds layers options to texts 2021-03-24 11:34:54 +01:00
Andrés Moya
ec217d8201 🎉 Remember last team visited 2021-03-23 13:37:21 +01:00
Andrey Antukh
013fc2fc9c 📎 Update changelog. 2021-03-23 11:56:24 +01:00
alonso.torres
8cf2d4f3a4 🐛 Fixes some problems with shapes selection 2021-03-23 11:55:22 +01:00
Andrey Antukh
ebcb820335 🔥 Remove forced container names from devenv compose file. 2021-03-23 11:18:00 +01:00
Andrey Antukh
43963fa09b Merge branch 'gizembln-patch-1' into develop 2021-03-23 11:13:48 +01:00
Andrey Antukh
b17067b8da Add Turkish to locale labels. 2021-03-23 11:13:21 +01:00
Gizem Belen Akgüney
66f92405e2 🎉 Add some Turkish translation strings. 2021-03-23 11:11:10 +01:00
elhombretecla
288c5c7fc4 🎉 Add new login image. 2021-03-23 11:09:40 +01:00
Andrés Moya
6383dc0952 Show current page in browser title 2021-03-23 11:08:06 +01:00
Andrey Antukh
0008a2aa48 Merge pull request #766 from penpot/refactor/viewport
♻️ Viewport refactor and improvements
2021-03-23 11:06:14 +01:00
Andrey Antukh
d7d56db1af 🐛 Fix focus on text editor. 2021-03-23 10:57:30 +01:00
Andrey Antukh
60f9b47115 🐛 Fix default font loading. 2021-03-23 10:57:30 +01:00
Andrey Antukh
4729801fca 🔥 Remove unused fonts. 2021-03-23 10:57:30 +01:00
alonso.torres
136a48a18f ♻️ Viewport refactor and improvements 2021-03-22 22:09:57 +01:00
Andrey Antukh
5c31830edb 📎 Update changelog. 2021-03-22 16:37:19 +01:00
Andrey Antukh
17ab753c2b Sort icons. 2021-03-22 16:35:22 +01:00
Andrey Antukh
422f4ee6c2 🎉 Add text-direction option on for text shape. 2021-03-22 16:35:22 +01:00
Andrés Moya
a988292253 🎉 Multi select file menu 2021-03-22 13:42:43 +01:00
Andrés Moya
dcb913d9fa Hide navbar in fullscreen view mode 2021-03-22 13:41:51 +01:00
Andrey Antukh
d2d1eed68a 🔥 Remove unused variable on manage.sh script. 2021-03-22 13:38:44 +01:00
Andrey Antukh
e7085571bf 🎉 Add :memory backend to the msgbus module. 2021-03-22 13:38:44 +01:00
Andrey Antukh
28691e2bf2 📎 Update changelog. 2021-03-22 13:38:44 +01:00
Andrey Antukh
e15d93e8a4 ♻️ Reimplement workspace presence state.
Remove the use of the database for presence state.
2021-03-22 13:38:44 +01:00
Andrey Antukh
a16f4393b9 🔥 Remove legacy code from manage.sh. 2021-03-22 13:38:44 +01:00
Andrey Antukh
3681c17f4b Minor improvements on exporter dockerfile. 2021-03-22 13:38:44 +01:00
Andrey Antukh
abcd92a6b1 ⬆️ Update backend dockerfile.
Make it more multiplatform and start using openjdk16.
2021-03-22 13:38:44 +01:00
Andrey Antukh
dd4930e055 🐳 Minor improvements on devenv docker image. 2021-03-22 13:38:44 +01:00
Andrey Antukh
4a58a429d4 Minor improvement on devenv logging config. 2021-03-22 13:38:44 +01:00
Andrey Antukh
142086b2c3 ⬇️ Downgrade prometheus client to 0.9.0.
Because it introduces some breaking changes.
2021-03-22 13:38:44 +01:00
Andrés Moya
1e25e543b3 💄 Rename "master" to "main" in components 2021-03-22 13:20:30 +01:00
Andrey Antukh
a1e75c6e03 🐛 Fix typo on i18n locale labels. 2021-03-17 07:56:27 +01:00
Andrey Antukh
ca2612937e ⬆️ Update backend deps and devenv. 2021-03-16 22:02:44 +01:00
Andrey Antukh
1e6673f6b6 Add deutsche lang to the supported languages. 2021-03-16 18:02:52 +01:00
Stas Haas
6d821660c9 🎉 Add German translations.
Signed-off-by: Stas Haas <stas@girafic.de>
2021-03-16 18:00:28 +01:00
Andrey Antukh
67138ac629 🐛 Properly handle nil values on style conversion. 2021-03-16 16:37:59 +01:00
Andrey Antukh
b816e0ed32 🐛 Fix possible issue with advanced compilation. 2021-03-16 15:47:50 +01:00
Andrés Moya
d9aa94025a ♻️ Refactor field name 2021-03-16 15:33:03 +01:00
Andrés Moya
b464181213 🐛 Navigate when moving file to a different team 2021-03-16 15:19:54 +01:00
Andrés Moya
ef901dbd5e 🐛 Create default projects for teams in devenv fixtures 2021-03-16 15:19:54 +01:00
Andrés Moya
0cb816c16d 🐛 Translate default team name in file menu 2021-03-16 15:19:54 +01:00
Andrés Moya
4d3142e826 🐛 Fix some visual issues in dashboard 2021-03-16 15:19:54 +01:00
Andrey Antukh
fc29e8fb6b 🐛 Fix minor issue on text_editor_impl.js file.
That causes the production build fail.
2021-03-16 15:13:32 +01:00
Andrey Antukh
fb36ab0e41 Merge branch 'niwinz/draftjs' into develop 2021-03-16 14:43:44 +01:00
Andrey Antukh
aa83f1bbd3 🐛 Fix undo with text shapes. 2021-03-16 14:42:35 +01:00
Andrey Antukh
7bc91e7224 Allow to unselect the text alignment.
Defaulting to 'start' (rtl friendly).
2021-03-16 14:42:35 +01:00
Andrey Antukh
ca52f4f8ea Improve use-previous hook. 2021-03-16 14:42:35 +01:00
Andrey Antukh
ede42e42b1 🐛 Don't emit update-shape when no page-id. 2021-03-16 14:42:35 +01:00
Andrey Antukh
f0087e11b0 🐛 Proper handle visual selection on blured editor. 2021-03-16 14:42:35 +01:00
Andrey Antukh
5519cdfd7c 🐛 Remove some drop-propagation that causes strange behavior. 2021-03-16 14:42:35 +01:00
Andrey Antukh
68e3566b8b 🐛 Properly handle empty blocks on draft-js format conversion. 2021-03-16 14:42:35 +01:00
Andrey Antukh
13131a0226 📎 Update changelog. 2021-03-16 14:42:35 +01:00
Andrey Antukh
92254a175e 🐛 Handle properly pointer capture on text edition shape. 2021-03-16 14:42:35 +01:00
Andrey Antukh
48747d9553 🐛 Handle properly the mouse capture. 2021-03-16 14:42:35 +01:00
Andrey Antukh
fde6126ac6 🐛 Remove pasted styles on the editor. 2021-03-16 14:42:35 +01:00
Andrey Antukh
7db82a6af1 🐛 Add missing text cursor on the editor. 2021-03-16 14:42:35 +01:00
Andrey Antukh
7709d219a9 🐛 Fix minor issue with text directionality. 2021-03-16 14:42:35 +01:00
Andrey Antukh
3bef80932d ♻️ Replace slate editor with draft-js. 2021-03-16 14:42:35 +01:00
Andrey Antukh
439e5ee6a1 🎉 Add array util ns (frontend only). 2021-03-16 14:42:35 +01:00
Andrey Antukh
2de1c92ee8 🎉 Add transducer version of mapm data helper. 2021-03-16 14:42:35 +01:00
Andrey Antukh
f7d0383919 Improve performance of enumerate data helper. 2021-03-16 14:42:35 +01:00
Andrés Moya
84b7a2de0b Disable drag enter/leave animation in webkit browsers 2021-03-15 14:58:37 +01:00
Andrés Moya
797ba3ef9b ♻️ Rename custom data types in drag&drop 2021-03-15 14:37:40 +01:00
Andrey Antukh
374653d9f6 ⬆️ Update devenv docker image. 2021-03-15 12:48:10 +01:00
Andrey Antukh
22c8a2b538 Merge pull request #747 from penpot/dashboard/select-and-drag-files
🎉 Drag and drop files in the dashboard
2021-03-15 12:05:30 +01:00
Andrés Moya
47320330ad Activate SCSS library to manipulate colors 2021-03-15 11:23:12 +01:00
Andrés Moya
4b2a4c8fa3 💄 Refactor clear selected files 2021-03-12 12:40:41 +01:00
Andrés Moya
c2332331ce 🎉 Drag and drop files in the dashboard 2021-03-12 12:40:41 +01:00
elhombretecla
81a604dca2 Add some enhancements to context menus 2021-03-12 11:40:27 +01:00
Andrey Antukh
b547f1cd7e Merge branch 'main' into develop 2021-03-12 08:39:41 +01:00
Andrey Antukh
931deec6bd 🐛 Add missing dependency on exporter dockerfile. 2021-03-11 22:01:12 +01:00
Andrey Antukh
aed94c8e91 Merge pull request #742 from penpot/bugfixes
Bugfixes
2021-03-10 12:47:02 +01:00
alonso.torres
277ff12822 🐛 Fixes problem with empty prototype navigation 2021-03-10 12:01:13 +01:00
alonso.torres
3329216e3c 🐛 Fixes problem with default square grid 2021-03-10 11:57:48 +01:00
alonso.torres
c12cbbca2e 🐛 Fixes problems with comments section 2021-03-10 11:48:09 +01:00
alonso.torres
172372d4c0 🐛 Fix problem with rotation degree input 2021-03-10 10:35:02 +01:00
alonso.torres
6d427cdc9c 🐛 Fix issues with Alt key in distance measurement 2021-03-10 10:35:02 +01:00
alonso.torres
e1df3efd6e 🐛 Fix problem with masks interactions outside bounds 2021-03-10 10:35:02 +01:00
alonso.torres
2a4849cf8f 🐛 Fix problem with middle mouse button press moving the canvas when not moving mouse 2021-03-10 10:35:02 +01:00
alonso.torres
33a2f8d788 🐛 Fix issue with typographies panel cannot be collapsed 2021-03-10 10:35:02 +01:00
alonso.torres
fee99a081b 🐛 Fix problem with system shortcuts and application 2021-03-10 10:35:02 +01:00
alonso.torres
d263dd52e9 🐛 Fix issue when undo after changing the artboard of a shape 2021-03-10 10:35:02 +01:00
alonso.torres
47e0c2c75b 🐛 Disables buttons in view mode for users without permissions 2021-03-10 10:35:02 +01:00
alonso.torres
5b25a42f32 🐛 Fix problem with rotated blurs 2021-03-10 10:35:02 +01:00
Andrey Antukh
d64dd29ca9 📎 Minor update on logging config (devenv). 2021-03-10 10:23:01 +01:00
Andrey Antukh
6e1e3772b9 Merge remote-tracking branch 'origin/main' into develop 2021-03-10 10:21:39 +01:00
Andrey Antukh
b0336e1f7b 🐛 Fix broken styles on team invitation modal.
https://tree.taiga.io/project/penpot/issue/1404
2021-03-10 09:18:32 +01:00
Andrey Antukh
ed3d571793 🎉 Backport to main the blob encoding v3.
Safer approach (uses json instead of custom binary format) than v2.
2021-03-10 09:18:32 +01:00
Andrey Antukh
3d043adb03 🐛 Fix wrong handling of deleted users on password recovery. 2021-03-10 09:18:32 +01:00
Andrey Antukh
7f624b5c61 Minor improvements on logging subsystem. 2021-03-10 09:18:32 +01:00
Andrey Antukh
d70910fc0d Merge pull request #740 from penpot/fix/mask-rotation-issue
🐛 Fixes problems with flip and masks
2021-03-08 22:48:20 +01:00
Andrey Antukh
69ac552881 Merge pull request #728 from penpot/presets-dropdow-fix
 Presets dropdow fix
2021-03-08 22:48:02 +01:00
Andrey Antukh
275438673d 📎 Update changelog. 2021-03-08 22:47:41 +01:00
elhombretecla
404e2bf0b3 🐛 Fix css custom presets dropdown 2021-03-08 22:47:41 +01:00
Andrey Antukh
708ba3d7ac 🐛 Fix initial data loading issues. 2021-03-08 22:35:11 +01:00
alonso.torres
9e47318e09 🐛 Fixes problems with flip and masks 2021-03-08 18:14:05 +01:00
Andrey Antukh
f0eaf9aa20 Merge pull request #739 from penpot/feat/blending-modes
Opacity and blending modes
2021-03-08 17:57:16 +01:00
alonso.torres
cf78861396 Improvements after review 2021-03-08 17:37:37 +01:00
alonso.torres
517751c116 📚 Updated changelog 2021-03-08 16:33:02 +01:00
alonso.torres
2fd6344c44 Support for opacity/blend-mode in svgs 2021-03-08 16:31:43 +01:00
alonso.torres
1be993f8b1 🐛 Fixes problem with default fill colors 2021-03-08 16:22:09 +01:00
alonso.torres
942c62bf1d Translations for new strings 2021-03-08 16:21:54 +01:00
alonso.torres
31fa4a8c8b Adds blending mode and opacities to shapes 2021-03-08 15:40:45 +01:00
alonso.torres
d39694af59 ♻️ Refactor modules of options 2021-03-08 15:39:49 +01:00
Andrey Antukh
68d8a49466 🎉 Add blob encoding v3.
Safer approach (uses json instead of custom binary format) than v2.
2021-03-08 13:30:04 +01:00
Andrey Antukh
99d9d77c63 Merge pull request #733 from penpot/feat/svg-native
Advanced SVG Import
2021-03-08 13:26:50 +01:00
alonso.torres
4da3270d34 Handoff for imported SVGS 2021-03-08 13:26:18 +01:00
alonso.torres
6f07b4ea80 Improved svg options handling 2021-03-08 13:26:18 +01:00
alonso.torres
29f421d867 Import fixes 2021-03-08 13:26:18 +01:00
alonso.torres
40ddcb89fc 📚 Updates changelog 2021-03-08 13:26:18 +01:00
alonso.torres
e75284ce97 Support for upload embedded images 2021-03-08 13:25:55 +01:00
alonso.torres
7482122964 Adjustments to svgclean 2021-03-08 13:25:55 +01:00
alonso.torres
d3345c0fa6 Clip-paths, polylines, polygons and fixes 2021-03-08 13:25:55 +01:00
alonso.torres
237ef2a205 Adds rects, ellipses and uses to svg elements 2021-03-08 13:25:55 +01:00
alonso.torres
0f7596bacf Changes to svgclean 2021-03-08 13:25:55 +01:00
alonso.torres
6e88d3a04c Adds imported rectangles SVGs 2021-03-08 13:25:55 +01:00
alonso.torres
59022904fb Handling group inheritance 2021-03-08 13:25:55 +01:00
alonso.torres
94c5004c33 Improved geometry for rects 2021-03-08 13:25:55 +01:00
alonso.torres
23d531a664 Changed config for svgclean 2021-03-08 13:25:55 +01:00
alonso.torres
19febde547 Import paths as native shapes 2021-03-08 13:25:55 +01:00
alonso.torres
741d67c30b Makes import SVG groups 2021-03-08 13:25:55 +01:00
Andrés Moya
507f3c06e7 Merge pull request #735 from penpot/niwinz/deps-update
Update deps & minor enhacements
2021-03-08 12:50:49 +01:00
Andrey Antukh
c16a24a59a Allow pluggable backends on msgbus module.
Prepare it to use different backends than redis.
2021-03-08 12:20:04 +01:00
Andrey Antukh
e446f47e2c Reorganize util.time ns (on backend). 2021-03-08 12:20:04 +01:00
Andrey Antukh
146394f3ca 🎉 Add thumbnail caching.
Avoid unnecesary rendering unchanged pages.
2021-03-08 12:20:04 +01:00
Andrey Antukh
9d7214702f 🎉 Add general purpose etag for query rpc requests. 2021-03-08 12:20:04 +01:00
Andrey Antukh
861d5f0064 Fix incompatibilities with dateFns dependency. 2021-03-08 12:20:04 +01:00
Andrey Antukh
34c4f23e49 Minor reorganization of transit handlers (backend). 2021-03-08 12:20:04 +01:00
Andrey Antukh
48a094d22d ⬆️ Update dependencies. 2021-03-08 12:20:04 +01:00
Andrey Antukh
f143197f1f 📎 Update changelog. 2021-03-08 11:59:12 +01:00
Andrey Antukh
fdeaac7f65 Merge branch 'main' into develop 2021-03-08 11:58:48 +01:00
Andrey Antukh
cbb68acd75 🐛 Fix incorrect default value handling on select form input. 2021-03-08 11:40:29 +01:00
Andrey Antukh
31165c4ce6 🐛 Fix broken profile and profile options forms. 2021-03-08 11:27:42 +01:00
Andrés Moya
77ed530de7 📚 Update changelog 2021-03-08 11:17:11 +01:00
Andrey Antukh
f509d9acd0 Fix linter issues. 2021-03-08 10:29:36 +01:00
elhombretecla
6c47df20af 🎉 Add terms check to register 2021-03-08 10:10:53 +01:00
Andrey Antukh
dca402eb18 📚 Update README.md file. 2021-03-05 09:14:37 +01:00
Andrey Antukh
fbfe792a93 📎 Fix linter issues. 2021-03-05 09:13:11 +01:00
Andrey Antukh
868f18fd21 Point documentation to the help center. 2021-03-05 09:10:57 +01:00
Andrey Antukh
5ae823b25c 🐛 Don't cache ldap connection. 2021-03-05 08:58:57 +01:00
Andrey Antukh
2de16985d3 🚑 Fix syntax error. 2021-03-04 17:20:38 +01:00
Andrey Antukh
2ca8ff4db1 Merge pull request #694 from penpot/dashboard-files
Dashboard files
2021-03-04 17:11:41 +01:00
Andrés Moya
ee6717ef69 Translate name of default projects 2021-03-04 17:01:56 +01:00
Andrey Antukh
7c2f0ed7b9 📚 Update changelog. 2021-03-04 16:57:13 +01:00
Andrés Moya
161b8cdabb Hide move options when no targets 2021-03-04 16:52:53 +01:00
mathieu.brunot
1f7ddc081a 🌐 Improve FR translation and add i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2021-03-04 16:52:45 +01:00
Maemolee
df0dcc587f 🎉 Add more chinesse translations.
Complete Chinese Translation
2021-03-04 16:48:10 +01:00
mathieu.brunot
e1ae80583f 💥 Change escape character for LDAP
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2021-03-04 16:43:39 +01:00
Andrés Moya
2adc45fc19 Show notifications on operations success 2021-03-03 16:28:48 +01:00
Andrés Moya
2e92757df6 🎉 Move projects to other teams 2021-03-03 16:04:51 +01:00
Andrés Moya
c6765a48c5 🎉 Move files to other projects and teams 2021-03-03 13:23:06 +01:00
Andrey Antukh
6a345c4b8a Complete backend behavior when duplicate and move 2021-03-03 12:38:34 +01:00
Andrés Moya
044f1f63c0 🎉 Duplicate projects and files 2021-03-03 12:29:52 +01:00
Andrey Antukh
9945243a23 🎉 Add backend management module with duplicate file and duplicate project 2021-03-03 12:20:10 +01:00
Andrés Moya
d1261fc841 🎉 Open file in a new tab 2021-03-03 12:14:32 +01:00
Andrés Moya
e87dc6d34c Add context menu with right click in dashboard 2021-03-03 12:14:32 +01:00
Andrés Moya
70cba4bbdf Allow pin/unpin from project header 2021-03-03 12:14:32 +01:00
Andrey Antukh
93311b8b98 🐛 Don't wait for foreignObjects. 2021-03-03 10:42:32 +01:00
Andrey Antukh
3b9201ed0e 🔥 Remove unused code. 2021-03-02 21:15:27 +01:00
Andrey Antukh
044aef8414 Add some waits on export-svg (exporter). 2021-03-02 13:04:43 +01:00
Andrey Antukh
3234b19790 🐛 Update puppeter and try fix exporting bug. 2021-03-02 10:51:06 +01:00
Andrey Antukh
f14325d12b 🎉 Add server repl helper for duplicate file. 2021-03-02 10:49:50 +01:00
Andrey Antukh
db49c54681 Merge branch 'staging' into main 2021-03-01 17:18:38 +01:00
Andrey Antukh
c54d9b777d 🐛 Minor memory leak fix on workspace initialization. 2021-03-01 16:39:13 +01:00
Andrey Antukh
52a3cd6ae4 🐛 Don't show update library message on onboarding files. 2021-03-01 16:38:28 +01:00
Andrey Antukh
9b8d73ef86 🐛 Fix topic encoding on msg publication. 2021-03-01 16:37:58 +01:00
Andrey Antukh
f12f46981b 🐛 Add mising remap-id on onboarding files setup. 2021-03-01 15:41:39 +01:00
Andrey Antukh
9fb8ba2ff1 🎉 Add better reply-to handling on feedback module. 2021-03-01 13:16:06 +01:00
Andrey Antukh
fe114d2e66 Add missing file. 2021-03-01 12:48:03 +01:00
Andrey Antukh
56ed474d8c Minor improvements on http ns. 2021-03-01 12:34:54 +01:00
Maemolee
a595effbe9 🎉 Update locales.json with more chinese translations.
Add more Chinese translations
2021-03-01 12:21:40 +01:00
Andrey Antukh
ee8c430d85 Merge pull request #720 from penpot/onboarding-files-fixes
Onboarding files fixes
2021-03-01 12:18:29 +01:00
Andrey Antukh
0683c4a963 🎉 Add better feedback backend. 2021-03-01 12:14:30 +01:00
Andrey Antukh
833944bebb 🐛 Fix CI buid. 2021-02-28 20:04:07 +01:00
Andrey Antukh
2a8a0afd09 🐛 Fix many bugs on onboarding file loading process. 2021-02-28 19:58:15 +01:00
Andrey Antukh
61ad112451 Minor improvement on retrieve profile by email fn. 2021-02-28 19:57:19 +01:00
Andrey Antukh
129cc86e3b Minor improvements on getting profile additional data. 2021-02-28 19:51:12 +01:00
Andrey Antukh
645954bc7c 🐛 Fix issues on files and project rpc methods. 2021-02-25 17:45:39 +01:00
alonso.torres
ecd020eec2 🐛 Disables filters in masking elements 2021-02-25 17:17:19 +01:00
Andrey Antukh
8fb5dbb980 🐛 Fix fullname handling on manage cli command. 2021-02-24 18:03:34 +01:00
Andrey Antukh
cef0353642 🐛 Fix wrong permission check on removing member of team. 2021-02-24 17:30:06 +01:00
Andrey Antukh
e3727aaefe 🎉 Add onboarding data to the database. 2021-02-24 16:31:56 +01:00
Andrés Moya
85781c5b7f 🐛 Remove unused local fonts 2021-02-24 15:23:58 +01:00
Andrey Antukh
62784d0708 🐛 Fix syntax error on locales.json. 2021-02-24 14:54:18 +01:00
Maemolee
48a62ddd2b 🎉 Add more chinese transtions.
Updated more Chinese translations.
2021-02-24 14:37:55 +01:00
Andrey Antukh
04af15cba5 🐛 Add prefix on topics (msgbus module). 2021-02-24 14:12:25 +01:00
Andrey Antukh
65a3126f15 🎉 Add manage cli helper. 2021-02-24 14:12:25 +01:00
Andrey Antukh
82d7a0163d Rename sprops to setup module. 2021-02-24 14:12:25 +01:00
Andrés Moya
5b200fd6a2 Merge pull request #698 from penpot/fix/drawing-tool-priority
Drawing tool will have priority over resize/rotate handlers
2021-02-24 13:58:42 +01:00
alonso.torres
b79c986fc9 🐛 Drawing tool will have priority over resize/rotate handlers 2021-02-24 13:38:27 +01:00
alonso.torres
8f4e13072c 🐛 Fixes issues with frame selection 2021-02-24 13:25:47 +01:00
alonso.torres
d517daa045 🐛 Fixes problems with line paths 2021-02-24 12:34:20 +01:00
Andrey Antukh
3171d9d64d 📎 Add missing entries on changelog. 2021-02-24 10:48:19 +01:00
Andrey Antukh
0ea2951515 :paperclip update changelog. 2021-02-24 10:36:25 +01:00
Andrey Antukh
0612e71166 Merge remote-tracking branch 'origin/main' into staging 2021-02-24 10:32:27 +01:00
Andrey Antukh
f9b24bd01c More improvements to logging config. 2021-02-23 15:13:54 +01:00
Andrey Antukh
65eb8e7c43 Minor changes on logging config files. 2021-02-23 15:10:23 +01:00
Andrey Antukh
c7795640e1 📎 Minor log level change on session updater task. 2021-02-23 14:56:24 +01:00
Andrey Antukh
2eea63dd1a Change validation order on password recovery request mutation. 2021-02-23 14:34:12 +01:00
Andrey Antukh
7e1ee087d3 Improve msgbus subscription handling. 2021-02-23 13:17:40 +01:00
alonso.torres
8fd37dbad5 🐛 Fixes shortcut typo 2021-02-23 10:12:36 +01:00
Andrey Antukh
2e68d41dcc 📚 Minor update on issue template. 2021-02-22 23:55:06 +01:00
Andrey Antukh
1eddc9de33 Add more logging to msgbus module. 2021-02-22 23:40:42 +01:00
Andrey Antukh
ca1a97a52e Improve backpressure handling on websocket connection. 2021-02-22 23:14:53 +01:00
Andrey Antukh
b14c98b76e ⬇️ Downgrade redis client version. 2021-02-22 22:11:24 +01:00
Andrey Antukh
d89bf772a6 Add debug messages on notifications module. 2021-02-22 19:10:32 +01:00
Andrés Moya
688d649c4a 🐛 Hide registration screen when registration is disabled 2021-02-22 17:44:25 +01:00
Andrey Antukh
002a6f1e52 📎 Fix missing log entries formating. 2021-02-22 16:05:43 +01:00
Andrés Moya
4a61eba3b9 Merge pull request #683 from penpot/niwinz/session-updater
Enhacements
2021-02-22 14:53:10 +01:00
Andrey Antukh
e1161037a5 📎 Update changelog. 2021-02-22 14:50:01 +01:00
Andrey Antukh
6e840a439e 🐛 Fix unexpected recursion error on logout. 2021-02-22 14:50:01 +01:00
Andrey Antukh
29addbe987 Change the metric type of rpc methods from summary to histogram. 2021-02-22 14:50:01 +01:00
Andrey Antukh
19f098359b 🎉 Add specific profile registration and activation metrics. 2021-02-22 14:50:01 +01:00
Andrey Antukh
5ce450f578 Increase default database statement timeout. 2021-02-22 14:50:01 +01:00
Andrey Antukh
fb51580740 🎉 Add proper lifecycle handling for http sessions. 2021-02-22 14:50:01 +01:00
Andrey Antukh
995017df5a 🎉 Add the ability to execute code on the end of http request.
Mainly for register metrics once the main transaction is commited.
2021-02-22 14:50:01 +01:00
Andrey Antukh
c79036aa65 Improve metrics on websocket notification module.
Add session timing.
2021-02-22 14:50:01 +01:00
Andrey Antukh
fbe2e2a285 Improve tasks metrics. 2021-02-22 14:50:01 +01:00
Andrey Antukh
a63f28a2e5 Normalize logging messages on backend. 2021-02-22 14:50:01 +01:00
Andrey Antukh
5e2bb3f546 Fix ordering on locales.json file. 2021-02-22 14:47:23 +01:00
Natacha
60232baffb Add catalan translation (partial)
Signed-off-by: Natacha <natachamenjibar@gmail.com>
2021-02-22 14:46:21 +01:00
Andrés Moya
c38117d116 🎉 Allow a different radius for each rect corner 2021-02-22 14:14:14 +01:00
Andrey Antukh
d56b758490 🐛 Fix possible bug with share-link formating. 2021-02-22 14:08:25 +01:00
Andrey Antukh
de394a7d4e ♻️ Refactor LDAP auth backend.
And reorganize oauth backend namespaces.
2021-02-19 13:09:18 +01:00
alonso.torres
55b1417df8 🐛 Fixes problems with new paths 2021-02-19 11:34:00 +01:00
Andrey Antukh
471cad3ae9 🐛 Disable placeholders on text editor.
Causes crash on use IME.
2021-02-19 10:53:41 +01:00
Andrey Antukh
299b29b66f 🎉 Add browser language detection. 2021-02-19 09:46:11 +01:00
Maemolee
344a7dfbaa Update locales.json file.
Add some Simplified Chinese translations.
2021-02-19 09:46:11 +01:00
Andrey Antukh
56c204509a Merge branch 'girafic-develop' into develop 2021-02-18 14:38:43 +01:00
Andrey Antukh
f7ecd4880f 📎 Update changelog. 2021-02-18 14:37:54 +01:00
Stas Haas
b2f8a843b5 Add more artboard presets.
Signed-off-by: Stas Haas <stas@girafic.de>
2021-02-18 14:37:03 +01:00
elhombretecla
1d01ac72ba 🎉 Reduce tools space between 2021-02-18 11:45:51 +01:00
Andrey Antukh
1ad1f3eb33 Add missing default config for zmq listener. 2021-02-18 09:35:37 +01:00
Andrey Antukh
e3bad997fd Port fixes from google oauth handlers to github and gitlab. 2021-02-18 09:35:37 +01:00
Andrey Antukh
800f97c5a1 🔥 Remove unused sql code. 2021-02-18 09:35:37 +01:00
Andrey Antukh
abb8d8502b Remove line numbers from locales.json
This will help to avoid unnecesary conflicts.
2021-02-18 09:35:37 +01:00
Fabien Basmaison
dc69d0c7f4 Improve French translation strings.
See https://unicode-table.com/en/202F/ for the character to add before `!`, `?`, `;`, `:` and `»`, and after `«`.

fix: Typography

Replace `...` with `…` for all languages.

In French:

- Replace `'` (quote) with `’` (apostrophe).
- Replace `“` and ” with `«` and `»`.
- Replace `-` (hyphens) with `‑` (non‑breaking hyphens).
- Fix a few grammar issues.
- Replace `Editer` with `Modifier`.
- Replace `Espacement des lettres` with `Crénage`; shorter term for “kerning”.
- Add accents on uppercase letters.

Fix a string in French.

Missed two replacements in French.

Add missing changes:

- French typographic quotes.
- Crénage

Addresses https://github.com/penpot/penpot/pull/591#pullrequestreview-585038080

Update locales:

- Fix some typos in English (dowload, reasign).

- Fix some grammar.
- _Accord de proximité_ on one occasion. (masculine + feminine + adjective = feminine adjective).
- “Soulignage” and “Barré” (I looked at LibreOffice to see how they were doing it).
- Consistent use of “Êtes‑vous sûr de vouloir ”.
- bibliothèque partagée: Bibliothèque Partagée.
- « Mise à jour » to use a noun that is not gender ambiguous.
- “Disposition” changed to “Mise en page” (could be “Composition”, although more ambiguous with other terms).
- Hauteur de ligne: Interlignage.
- Crénage: [Interlettrage](https://fr.wikipedia.org/wiki/Interlettre) which is more what a typographer would do based on the existing kerning of the font.
- Première lettre en majuscule: Premières Lettres en [Capitales](https://fr.wikipedia.org/wiki/Capitale_et_majuscule) (to illustrate the result).
- Quitter: Se déconnecter (clearer about the outcome of the action).
- Use of “a” for the title and “the” for the confirmation.
- Couche: Calque.

Update a missed string for consistency.

[L10N] Update some French terms.
2021-02-18 09:35:37 +01:00
Mathieu Brunot
56b10d669a 🐳 SMTP and LDAP test containers 2021-02-18 09:35:37 +01:00
Andrey Antukh
4991cae5ad 🐛 Fix corner cases on invitation/signup flows. 2021-02-18 09:35:37 +01:00
Andrey Antukh
784a4f8ecd Add some type hints and remove legacy code. 2021-02-18 09:35:37 +01:00
Andrey Antukh
2e084cc2a6 🐛 Add more generic error handing to svgparse. 2021-02-18 09:35:37 +01:00
Andrés Moya
0f35906930 Add internal links for long error reports 2021-02-17 22:34:09 +01:00
elhombretecla
e96d2336cf Add links to web and terms 2021-02-17 22:33:55 +01:00
alonso.torres
803caf6531 🐛 Fixes problem with chinese inputs 2021-02-17 13:43:13 +01:00
Andrés Moya
cfa47cc7b9 🐛 Fix small typo 2021-02-17 12:13:58 +01:00
alonso.torres
043c038dae 🐛 Fix radial gradients 2021-02-17 10:38:16 +01:00
Andrés Moya
41aede2b50 🐛 Have language change notification written in the new language 2021-02-16 16:09:33 +01:00
alonso.torres
0014bb3d24 🐛 Fix problem with indices refreshing on page changes 2021-02-16 15:48:48 +01:00
alonso.torres
94405ab72d 🐛 Fixed problem with transform matrices 2021-02-16 11:55:44 +01:00
Andrey Antukh
0f9b2923c2 🎉 Add msgbus abstraction.
As a replacement for the current pubsub approach.

It now uses a single connection for multiple
subscriptions (instead of conn per subscription);
has asynchronous publish and uses more efficient
blob encoding for message encoding (the same used
as page storage).
2021-02-16 11:49:47 +01:00
Andrey Antukh
60f4f863df Add missing indexes and improve others. 2021-02-16 11:49:47 +01:00
Andrey Antukh
c1476d0397 🎉 Add optional loki integration.
And refactor internal error reporting.
2021-02-16 11:31:48 +01:00
Andrey Antukh
90d7efe3a9 Merge branch 'main' into develop 2021-02-15 13:32:24 +01:00
Andrey Antukh
136d00797c Merge branch 'release-1.2.0' into main 2021-02-15 13:29:36 +01:00
Andrey Antukh
101027e6b8 Merge branch 'release-1.2.0' into develop 2021-02-15 13:29:11 +01:00
Andrés Moya
23f95c2b2b Merge pull request #636 from penpot/feature/other-improvements
Deep selection improvements
2021-02-15 12:52:14 +01:00
alonso.torres
baaeb20d6b ♻️ Moved namespace for keyboard utils 2021-02-15 12:49:54 +01:00
alonso.torres
cd313dc2fe Changed keyboard streams 2021-02-15 12:49:54 +01:00
alonso.torres
d86dc608b0 Adds edition shortcut and context menu item 2021-02-15 12:49:54 +01:00
alonso.torres
6c2b5ff0c7 Control key to hide group interactions 2021-02-15 12:49:54 +01:00
Andrés Moya
fcda3b557e Merge pull request #643 from penpot/fix/problem-handoff-artboard
Fix problem width handoff code generation
2021-02-15 11:38:14 +01:00
alonso.torres
d8104f0d22 🐛 Fix problem width handoff code generation 2021-02-15 11:16:36 +01:00
Andrey Antukh
964dad0d5b Merge pull request #641 from penpot/select-all
🐛 Fix behavior of select all command when there are objects outsi…
2021-02-15 10:57:39 +01:00
Andrés Moya
30819a08f4 🐛 Fix behavior of select all command when there are objects outside frames 2021-02-15 10:51:45 +01:00
Andrey Antukh
22b8eb856e Merge pull request #639 from penpot/fix/bugfixing
Bugfixing
2021-02-15 10:51:41 +01:00
Andrey Antukh
f8ccd0b120 📎 Add bigger window for quantiles on metrics. 2021-02-14 18:01:04 +01:00
Andrés Moya
0c0f26bb18 🐛 Fix two small typos 2021-02-12 16:57:18 +01:00
Andrés Moya
9c0dc54cfe Merge pull request #635 from penpot/niwinz/bounce-handling
Bounce & Complaint handling (on AWS only)
2021-02-12 16:38:24 +01:00
Andrey Antukh
fb0c1f548b 📎 Update changelog. 2021-02-12 16:26:28 +01:00
Andrey Antukh
7708752ad9 🎉 Add automatic complaint and bouncing handling. 2021-02-12 16:26:28 +01:00
alonso.torres
9d49d781cc 🐛 Fixes problem with text immediately after creation 2021-02-12 15:42:24 +01:00
alonso.torres
a81d20a2d1 🐛 Fixes console error for kebab-case properties 2021-02-12 12:14:31 +01:00
Andrey Antukh
17229228a3 Add initialization logging to connection pool. 2021-02-12 09:44:08 +01:00
Andrey Antukh
fc619f975c Add helper for more testable access to config. 2021-02-12 09:44:08 +01:00
Andrey Antukh
5858f3f180 Improve auth module. 2021-02-12 09:44:08 +01:00
Andrey Antukh
d5ff5ea91e 📎 Update changelog. 2021-02-12 09:43:10 +01:00
alonso.torres
cf465d93f9 🐛 Fixes problem when shrinking text 2021-02-11 17:26:02 +01:00
Andrés Moya
521ccc25cf Merge pull request #633 from penpot/bugfixing
Bugfixing
2021-02-11 16:21:22 +01:00
alonso.torres
dc0765f6b0 Improved calculations for auto-resize 2021-02-11 16:01:21 +01:00
alonso.torres
8cfc2ec21a 🐛 Fixes problem with red handler indicator on resize 2021-02-11 15:49:18 +01:00
alonso.torres
10cad69fac 🐛 Fixes problem with multiple selection and groups 2021-02-11 14:43:59 +01:00
alonso.torres
b7d3158514 📚 Updates changelog with Taiga references 2021-02-11 13:45:30 +01:00
Andrés Moya
4b8334fe1c 🐛 Fix ordering when restoring deleted shapes in sync 2021-02-11 13:30:56 +01:00
Andrey Antukh
608b5cc9f9 Merge pull request #631 from penpot/bugfixing
Bugfixing
2021-02-11 13:21:25 +01:00
alonso.torres
42a55015fa 🐛 Fixes problem when pasting URL's from the browser address bar 2021-02-11 13:03:41 +01:00
alonso.torres
0a6e0d0f2c 🐛 Fixes dashboard preview text alignment 2021-02-11 11:58:45 +01:00
alonso.torres
7846682223 🐛 Fixes logo icon navigation in viewer 2021-02-11 11:34:24 +01:00
alonso.torres
5336bbbe65 🐛 Fixes problem change color to texts from the palette 2021-02-11 11:23:48 +01:00
Andrey Antukh
8e5fd5892e Merge pull request #624 from penpot/feature/flip
Adds flip vertical/horizontal commands
2021-02-11 10:52:24 +01:00
alonso.torres
eaff888486 Translations for flip commands 2021-02-11 10:47:43 +01:00
alonso.torres
f1383f4dca Updates changelog 2021-02-11 10:46:13 +01:00
alonso.torres
d9c10cea5d Flip horizontal/vertical operations 2021-02-11 10:46:13 +01:00
alonso.torres
d48a1ca0b0 Relative gradient rendering 2021-02-11 10:46:13 +01:00
alonso.torres
bfcfe2fd31 🐛 Fixes problems with path transforms 2021-02-11 10:46:13 +01:00
alonso.torres
648c088d02 🐛 Fixes problem with remote changes 2021-02-11 09:36:55 +01:00
alonso.torres
70258e0eee 🐛 Fixes problem with locking proportions in paths 2021-02-11 09:35:56 +01:00
alonso.torres
5b1e9ec7da 📚 Updates changelog 2021-02-10 17:32:23 +01:00
Andrey Antukh
7a250a170e 📎 Update changelog. 2021-02-10 17:06:09 +01:00
Andrey Antukh
2e438385f3 Increase default deletion delay. 2021-02-10 17:06:09 +01:00
Andrés Moya
d6f3efb358 🎉 Add more tests for components 2021-02-10 14:46:10 +01:00
Andrés Moya
884410c0d8 🎉 Add more tests for components 2021-02-10 14:46:10 +01:00
Andrés Moya
cdab9ff69c 🎉 Add more tests of components 2021-02-10 14:46:10 +01:00
Andrey Antukh
1da43bb5b5 Merge branch 'hotfixes' into main 2021-02-10 12:30:04 +01:00
Andrey Antukh
6f3a08be0c 🐛 Remove file lock contention on media upload. 2021-02-10 12:25:32 +01:00
Andrey Antukh
e5cb6ebec7 More improvements on background task scheduling. 2021-02-10 12:25:22 +01:00
Andrey Antukh
f60ad9e559 🐛 Fix unexpected 404 error on access shared link. 2021-02-10 12:24:58 +01:00
Andrey Antukh
69b23e4000 Change background tasks schedule. 2021-02-10 12:24:06 +01:00
Andrey Antukh
bedfb9a1ee Increment default statement timeout. 2021-02-10 12:23:51 +01:00
Andrey Antukh
e4fb802d7a Minor improvement on telemetry server error reporting. 2021-02-10 12:23:29 +01:00
Andrés Moya
068a099f37 Merge pull request #616 from penpot/niwinz/bugfixes-1
Bugfixes
2021-02-10 12:13:47 +01:00
Andrey Antukh
fa573f8a24 🐛 Remove file lock contention on media upload. 2021-02-10 12:07:35 +01:00
Andrey Antukh
ebb745cc11 More improvements on background task scheduling. 2021-02-10 12:07:35 +01:00
Andrey Antukh
2b33300d79 🐛 Fix unexpected exception on uploading invalid svg file. 2021-02-10 12:07:35 +01:00
Andrey Antukh
946d40e6cd Improve error handling on google auth. 2021-02-10 12:07:35 +01:00
Andrey Antukh
36285a65d2 🐛 Show correct error when google auth is disabled on backend. 2021-02-10 12:07:35 +01:00
Andrey Antukh
fc49674997 🐛 Add better error handling on upload image by url. 2021-02-10 12:07:35 +01:00
Andrey Antukh
d0a8647186 🐛 Fix unexpected 404 error on access shared link. 2021-02-10 12:07:35 +01:00
Andrey Antukh
9b875aba21 🐛 Fix unexpected exception on upload invalid image. 2021-02-10 12:07:35 +01:00
Andrey Antukh
76e43f339a 🎉 Add missing index to file_change table. 2021-02-10 12:07:35 +01:00
Andrey Antukh
32e832eb39 🎉 Add srepl helper for migrate page storage to new blob format. 2021-02-10 12:07:35 +01:00
Andrey Antukh
60704bca17 Change background tasks schedule. 2021-02-10 12:07:35 +01:00
Andrey Antukh
43e4712b86 📚 Fix CLA mention on CONTRIBUTING.md file.
Closing #590
2021-02-10 12:07:35 +01:00
Andrey Antukh
5359c3a7ed Increment default statement timeout. 2021-02-10 12:07:35 +01:00
Andrey Antukh
81bf68c67c Minor improvement on telemetry server error reporting. 2021-02-10 12:07:35 +01:00
alonso.torres
4d5231598f 🐛 Fixes issues with moving shapes outside groups 2021-02-09 15:42:16 +01:00
Andrey Antukh
c1a139fc51 🎉 Add user feedback module. 2021-02-09 14:12:31 +01:00
Andrey Antukh
1cb18ad7cb Merge branch 'main' into develop 2021-02-09 12:53:52 +01:00
Andrey Antukh
6f0258c8d4 Improve build scripts. 2021-02-09 12:53:09 +01:00
Andrey Antukh
124efc0d88 Improve build scripts. 2021-02-09 12:18:14 +01:00
mathieu.brunot
924ecd998f 🐛 Fix ldap function called on login click
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2021-02-09 09:40:12 +01:00
Andrés Moya
07a94de607 Merge branch 'main' into develop 2021-02-08 16:49:15 +01:00
Andrés Moya
7bd05d63ac 🐛 Fix error 500 when requesting a password reset 2021-02-08 16:30:35 +01:00
mathieu.brunot
bb15924c95 🐳 Frontend configuration on env var
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2021-02-08 14:26:23 +01:00
Nishant Srivastava
1ebce37e17 Update getting started guide 2021-02-08 14:15:45 +01:00
Danny Lin
b93dc752fe 💄 Update UXBOX name in emails
When registering for a new account, I noticed that the HTML emails had
the new Penpot name but the plain-text versions were still using the old
UXBOX name. This commit fixes the discrepancy.

Signed-off-by: Danny Lin <danny@kdrag0n.dev>
2021-02-08 13:59:26 +01:00
Andrey Antukh
dbbe1f7df2 📎 Minor improvement on main ns on srepl module. 2021-02-08 13:52:51 +01:00
Andrey Antukh
a709c47f6f 🎉 Add zstd+nippy based blob storage format. 2021-02-08 13:52:51 +01:00
Andrey Antukh
68ed30ff35 📚 Update CONTRIBUTING.md file. 2021-02-05 15:01:50 +01:00
Andrés Moya
a65a31810c Merge branch 'patch-1' of https://github.com/tomer/penpot into tomer-patch-1 2021-02-05 14:46:18 +01:00
Tomer Cohen
8c50dc0c72 Fix broken link to Taiga.io in README.md
Signed-off-by: Tomer Cohen <tomer@users.noreply.github.com>
2021-02-05 13:47:15 +02:00
alonso.torres
a8a036206b Pixel grid 2021-02-05 12:19:05 +01:00
Andrés Moya
8313f1d96e Merge branch 'Monogramm-i18n/fr' into develop 2021-02-05 11:48:37 +01:00
Andrés Moya
1898ed215e Merge branch 'i18n/fr' of https://github.com/Monogramm/penpot into Monogramm-i18n/fr 2021-02-05 11:44:13 +01:00
alonso.torres
83aceba913 Makes images proportion lock by default 2021-02-05 11:29:39 +01:00
mathieu.brunot
c56fb0ea47 🌐 Update French locale
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2021-02-04 20:10:46 +01:00
Andrey Antukh
83a2df3ef3 🎉 Add changelog. 2021-02-04 16:27:54 +01:00
alonso.torres
4703f6d5c7 🐛 Fixes problem with multiple selection 2021-02-04 15:29:19 +01:00
alonso.torres
8d2797f8a1 🐛 Fixes problem with multiple selection 2021-02-04 15:08:47 +01:00
alonso.torres
6cdde84445 🐛 Color palette text-wrap and showing when open color palette 2021-02-04 14:54:40 +01:00
Andrey Antukh
afa35379b2 🐛 Fix onboarding after logging with token. 2021-02-04 14:47:14 +01:00
alonso.torres
1099e08b7d 🐛 Fixed small visual problem for images in handoff 2021-02-04 14:31:49 +01:00
alonso.torres
89cb20ada7 🐛 Fixes Ctrl+a for viewer 2021-02-04 14:31:49 +01:00
alonso.torres
32b0fd7b36 🐛 Fixes issue with multiple selection and shadows 2021-02-04 14:31:49 +01:00
Andrey Antukh
04670bb5f2 Reset some message timeout defaults. 2021-02-04 14:29:39 +01:00
Andrey Antukh
8566fe4ac1 Show close icon on messages by default. 2021-02-04 14:29:39 +01:00
Andrey Antukh
e607e8315c Auto login after email verify. 2021-02-04 14:29:39 +01:00
Andrés Moya
a9b7cf61a5 🐛 Fix display of custom shape strokes 2021-02-04 14:22:39 +01:00
elhombretecla
7c7bda669c Add better layout for register success page. 2021-02-04 13:36:47 +01:00
Andrey Antukh
0c82c6f2f5 🐛 Fix recursion error on not-found. 2021-02-04 13:34:38 +01:00
alonso.torres
b7cbe49cb2 🐛 Fixes image upload position when uploading from left sidebar 2021-02-04 12:43:50 +01:00
alonso.torres
7378089f4a 🐛 Fixes problems with multiple values in fill and stroke 2021-02-04 12:39:41 +01:00
Andrey Antukh
62b6b12066 Merge branch 'violoncelloCH-fix/js-var-prefix' into develop 2021-02-04 12:16:24 +01:00
Jonas Sulzer
39fdff9052 🐛 Fix js variable prefix app->penpot on config doc.
Signed-off-by: Jonas Sulzer <jonas@violoncello.ch>
2021-02-04 12:15:40 +01:00
alonso.torres
32c0913f00 🐛 Fixes problem with pixel-level movement 2021-02-04 11:54:45 +01:00
Andrey Antukh
7eb90d62b0 🐛 Fix typos on translation strings. 2021-02-04 11:48:47 +01:00
Andrey Antukh
ec2683417f 🐛 Fix image upload internal error. 2021-02-04 11:48:47 +01:00
Andrey Antukh
cb23c8b093 Increase default flash message timeout. 2021-02-04 11:48:47 +01:00
Andrey Antukh
687f7ddf64 Don't send emails on recovery password on not verified profile.
And show proper message to the user saying that the profile
need to be verfied before proceed.
2021-02-04 11:48:47 +01:00
Andrey Antukh
992a8e9aef Improve posible race condition handling on user registration. 2021-02-04 11:48:47 +01:00
Andrey Antukh
6e08c6bc35 📎 Fix linter issues. 2021-02-04 11:48:47 +01:00
Andrey Antukh
b71d05935a Expose user-agent and frontend-version on error report. 2021-02-04 11:48:47 +01:00
Andrey Antukh
c14dbc19f8 🎉 Add register confirmation page. 2021-02-04 11:48:47 +01:00
Andrey Antukh
1eff1c94c4 🔥 Remove goodbye page (useless). 2021-02-04 11:48:47 +01:00
Andrey Antukh
53be7feee1 🎉 Add 3rd party auth buttons to register page. 2021-02-04 11:48:47 +01:00
Andrey Antukh
e182cc4028 Add default headers to frontend http client. 2021-02-04 11:48:47 +01:00
Andrey Antukh
80309cbff3 Improve error reporting of tasks. 2021-02-04 11:48:47 +01:00
alonso.torres
816db29f9c Refactor of shortcuts and adaptations for macosx 2021-02-04 11:34:00 +01:00
Andrés Moya
526e0afc70 💄 Fix args and docstrings 2021-02-04 11:24:19 +01:00
Andrés Moya
77973af49f Remember assets libraries open in local session 2021-02-04 11:24:19 +01:00
Andrés Moya
dc5cff645a Remember color picker library in local session 2021-02-04 11:24:19 +01:00
alonso.torres
0ea8e9e750 🐛 Fixes issue with lock proportions 2021-02-04 11:18:59 +01:00
alonso.torres
69b4968578 Change to add when selected shape 2021-02-04 11:17:40 +01:00
Andrey Antukh
b7e266e350 Revert "🐛 Fixes problems with multiple values in fill and stroke"
This reverts commit 8fd8bc4537.
2021-02-03 17:27:08 +01:00
alonso.torres
b056cc35e4 🐛 Fixes problem when moving parent to children group 2021-02-03 15:36:28 +01:00
alonso.torres
d66452423f 🐛 Fixes recursion problems when creating component 2021-02-03 15:36:28 +01:00
Andrey Antukh
d85537fa7b Merge branch 'main' into develop 2021-02-03 15:18:35 +01:00
Andrey Antukh
fc11fb6e3d Reduce system resources for frontend build. 2021-02-03 15:18:16 +01:00
alonso.torres
cbdfb4349b 🐛 Fixed problem when editing paths 2021-02-03 13:30:59 +01:00
Abtin
19ed0b70c2 Update 00-Getting-Started.md
fix link to configuration guide
2021-02-03 13:29:55 +01:00
Andrey Antukh
3092747b5f Merge branch 'main' into develop 2021-02-03 13:27:03 +01:00
Andrey Antukh
0adfc2ddab Update manage.sh
Make the bundle use LZ4 compression by default.
2021-02-03 13:25:58 +01:00
alonso.torres
8fd8bc4537 🐛 Fixes problems with multiple values in fill and stroke 2021-02-03 12:30:58 +01:00
Andrey Antukh
e7d6a54907 🐛 Fix static file handling on docker images. 2021-02-03 11:30:10 +01:00
Hirunatan
e3c273c84b Merge pull request #532 from penpot/hotfix/texts
🐛 Fixes problems with paste empty text
2021-02-02 15:43:19 +01:00
alonso.torres
8aedbd1418 🐛 Fixes problems with paste empty text 2021-02-02 15:36:49 +01:00
Andrés Moya
e713c30785 🐛 Prevent browser dragging of images in some cases 2021-02-02 15:01:36 +01:00
Andrey Antukh
74a168d87e 🐛 Use proper config value. 2021-02-02 14:39:44 +01:00
Andrey Antukh
ca63ff621a 🐛 Fix email from handling. 2021-02-02 14:39:44 +01:00
Andrés Moya
d120af2c81 🐛 Fix workspace breadcrumb 2021-02-02 13:03:36 +01:00
alonso.torres
95ab5b57b7 🐛 Removes problems with texts 2021-02-02 13:03:21 +01:00
alonso.torres
2e7f90f3cc Adds commands to load data into user 2021-02-02 13:03:21 +01:00
Andrés Moya
8403352af8 🐛 Fix error in fixtures loading 2021-02-02 10:40:13 +01:00
Andrey Antukh
526b6e1f03 🐛 Unexpected exception on handling of invitation user registration. 2021-02-02 09:30:43 +01:00
Andrey Antukh
f2fd976934 📎 Replace develop with latest in default compose file. 2021-02-01 22:37:28 +01:00
Andrey Antukh
8b9371d7e1 🎉 Add the ability to disable mattermost webhook on runtime. 2021-02-01 22:37:28 +01:00
Andrés Moya
948a4038c6 Update social cards meta tags 2021-02-01 18:19:07 +01:00
alonso.torres
57c366ec9a 🐛 Fixes embedded images for external programs 2021-02-01 17:51:14 +01:00
Andrey Antukh
3c65f9fe91 📎 Minor changes on manage.sh 2021-02-01 17:40:09 +01:00
Hirunatan
4f92e68172 Merge pull request #510 from penpot/niwinz/circleci-frontend-tests
🎉 Add frontend tests to circleci.
2021-02-01 17:37:52 +01:00
Andrey Antukh
4e9d599e64 🎉 Add frontend tests to circleci. 2021-02-01 17:27:40 +01:00
Hirunatan
650c8bfc9e Merge pull request #508 from penpot/circleci-project-setup
🎉 Add circle CI (for backend).
2021-02-01 16:30:46 +01:00
Andrey Antukh
b3f9c3d27e 🎉 Add circle CI (for backend). 2021-02-01 14:06:06 +01:00
Mathieu Brunot
240de28567 📚 Improve frontend configuration docs 2021-02-01 13:03:13 +01:00
Andrey Antukh
5ff11fdd0a Merge pull request #507 from penpot/fixes/bugfixing
Bugfixing
2021-02-01 12:38:48 +01:00
alonso.torres
2de758a167 🐛 Fixed problem with context menu offscreen 2021-02-01 12:32:19 +01:00
alonso.torres
4ee6c278d9 Deferred components rendering 2021-02-01 12:30:07 +01:00
Andrey Antukh
9771db7133 🐛 Enable initial data for users registred from 3rd party auth. 2021-02-01 12:07:32 +01:00
alonso.torres
464c19bf39 🐛 Improved layout of share link button 2021-02-01 11:41:00 +01:00
Andrey Antukh
1d349ec62b 🐛 Minor fix on manage.sh script. 2021-02-01 11:33:03 +01:00
alonso.torres
334830b826 🐛 Fixes problem when creating mask 2021-02-01 11:27:57 +01:00
Andrés Moya
ccf1031fad 🐛 Disable team viewer role temporarily 2021-02-01 11:22:15 +01:00
Andrés Moya
5041020596 🐛 Fix psql script 2021-02-01 11:00:48 +01:00
Andrey Antukh
e2d842ec1a 🐛 Fix taiga badge. 2021-02-01 11:00:30 +01:00
alonso.torres
5a053d89b7 🐛 Fixed layout for shared libs 2021-02-01 10:59:36 +01:00
Andrey Antukh
7b82d91a7c 🎉 Add gitter badge. 2021-02-01 10:58:19 +01:00
Andrey Antukh
822bd91323 🐛 Fix team role change permissions handling. 2021-02-01 10:53:42 +01:00
Andrey Antukh
a397ab63f7 🐛 Fix permission handling on team mutations. 2021-02-01 09:48:28 +01:00
Andrey Antukh
4afd9e75da 🔥 Remove commented code. 2021-02-01 09:48:28 +01:00
Andrey Antukh
d1f7bc6198 🐛 Fix share-link incorrect error handling. 2021-02-01 09:48:28 +01:00
Andrey Antukh
3dd22fd298 🎉 Add tests for file-media-gc task. 2021-02-01 09:48:28 +01:00
Andrey Antukh
5ee6897ce6 🎉 Add tests for svgc. 2021-02-01 09:48:28 +01:00
Andrey Antukh
b252b55c85 🎉 Add metrics for svgc function. 2021-02-01 09:48:28 +01:00
Andrey Antukh
b80295a21c Fix all linter issues on backend code. 2021-02-01 09:48:28 +01:00
Andrey Antukh
6dafc087e9 Remove unused code from profile inital-data module. 2021-02-01 09:48:28 +01:00
Andrey Antukh
a599835e1f 🎉 Add tests for storage module. 2021-02-01 09:48:28 +01:00
Andrey Antukh
fac0354b2d 🚑 Fix broken tests. 2021-02-01 09:48:28 +01:00
Andrey Antukh
26948fb68b Make storage tasks more testable and traceable. 2021-02-01 09:48:28 +01:00
Andrey Antukh
586d95fb55 📎 Change logging level on rpc registry. 2021-02-01 09:48:28 +01:00
Andrey Antukh
2456b82e65 🎉 Add helpers for create datetimes in the past. 2021-02-01 09:48:28 +01:00
Andrey Antukh
2145130d21 Minor changes on delete profile tasks.
For testing purposes mainly.
2021-02-01 09:48:28 +01:00
Andrey Antukh
233cd8c3d6 Add expiration checking on storage functions. 2021-02-01 09:48:28 +01:00
Andrey Antukh
5751ac6b4e Minor adaptations for tests of profile creation function. 2021-02-01 09:48:28 +01:00
Andrey Antukh
2c05a82204 📎 Minor changes on default logging config (devenv). 2021-02-01 09:48:28 +01:00
Andrey Antukh
43b8743569 🔥 Remove unused code. 2021-02-01 09:48:28 +01:00
Andrey Antukh
c62bc408dc ⬆️ Minor deps update. 2021-02-01 09:48:28 +01:00
Andrey Antukh
8253ef90d0 Improve handling of temporal files.
Store temporal files outside of main fs backend.
2021-02-01 09:48:28 +01:00
Andrey Antukh
e54b443247 🎉 Add refcount-like functionality to storages.
This allows reuse of storage objects among different files.
2021-02-01 09:48:28 +01:00
Andrey Antukh
b57e63d7d6 Merge pull request #501 from penpot/more-tests
🎉 Add frontend tests for creating and renaming components
2021-01-29 22:53:20 +01:00
Andrey Antukh
60ba3eaf03 Merge pull request #502 from penpot/fixes/bugfixing
Bugfixing
2021-01-29 22:52:51 +01:00
alonso.torres
04246936d2 🐛 Fixed console error with NaN stroke 2021-01-29 21:46:03 +01:00
alonso.torres
5b7ffac74e 🐛 Fixes problem with cursor 2021-01-29 21:45:52 +01:00
alonso.torres
f4bbcdb382 🐛 Fixed problem with borders in images 2021-01-29 21:45:13 +01:00
Andrés Moya
c127978dd2 🎉 Add frontend tests for creating and renaming components 2021-01-29 18:04:49 +01:00
Andrey Antukh
e3891df243 Minor improvements on profile initial data. 2021-01-29 18:04:33 +01:00
alonso.torres
510d3cfa33 Allows initial data to be extracted/loaded to file 2021-01-29 18:04:33 +01:00
Hirunatan
676ce9b68d Merge pull request #500 from penpot/niwinz/enhacements-5
Niwinz/enhacements 5
2021-01-29 18:03:50 +01:00
Andrey Antukh
0d17d34983 Show default lang transation if no translation found. 2021-01-29 18:02:50 +01:00
Andrey Antukh
cd8a304690 ⬆️ Update beicon. 2021-01-29 18:02:50 +01:00
Andrey Antukh
1dcd7dc806 Improve implementation of rpc handler for profile deletion. 2021-01-29 18:02:50 +01:00
alonso.torres
b2bde8d97e Improvements over svg export 2021-01-29 15:51:03 +01:00
Andrey Antukh
afedd397a7 🐛 Simplify the impl of profile deletion. 2021-01-29 15:48:49 +01:00
Andrey Antukh
1210924562 🐛 Hide demo user link on login and register when is disabled. 2021-01-29 13:10:35 +01:00
Andrey Antukh
341bb8495a Improve globals handling on fronted application. 2021-01-29 13:10:35 +01:00
Andrey Antukh
b0749b5595 Add option for disable demo users. 2021-01-29 13:10:35 +01:00
Andrey Antukh
393c9cd13c 🔥 Remove unused config variables. 2021-01-29 12:58:57 +01:00
Andrey Antukh
b44dfc2d9d Simplify internal props handling and telemetry. 2021-01-29 12:58:57 +01:00
Andrey Antukh
fa852a1ab8 Merge pull request #496 from penpot/fixes/bugfixing
Bugfixing
2021-01-29 12:26:48 +01:00
alonso.torres
e38d78a7b4 🐛 Fixes problem in handoff 2021-01-29 12:24:04 +01:00
alonso.torres
bc3275e624 🐛 Fixed issues when changing pages quickly while resizing texts 2021-01-29 11:51:28 +01:00
alonso.torres
bb04181abf 🐛 Fixed problem with old svgs 2021-01-29 11:51:28 +01:00
Andrey Antukh
17d28ed9bc Merge pull request #494 from penpot/fixes/bugfixing
Bugfixing
2021-01-29 09:56:08 +01:00
alonso.torres
2374cf41f8 🐛 Fixed problem with timers 2021-01-29 09:53:55 +01:00
alonso.torres
3faa5b4a11 🐛 Fixes issues with export 2021-01-29 09:53:55 +01:00
alonso.torres
41ec622e26 🐛 Adds shortcut in tooltip for paths 2021-01-29 09:53:55 +01:00
alonso.torres
c84faeaa72 🐛 Fixes change language 2021-01-29 09:53:52 +01:00
alonso.torres
81480f203d 🐛 Show lens icon in search dashboard 2021-01-28 18:06:49 +01:00
alonso.torres
fd620a858c 🐛 Fixed measurements showing with itself 2021-01-28 18:06:49 +01:00
Andrey Antukh
8f1b373c3d 📚 Update documentation. 2021-01-28 16:27:18 +01:00
Andrey Antukh
f72a09b698 Merge pull request #491 from penpot/fix/cursor-responsiveness
Cursor responsiveness
2021-01-28 14:05:33 +01:00
Andrey Antukh
11ff1994f3 📚 Update documentation. 2021-01-28 14:02:22 +01:00
alonso.torres
0a6db0ff9b Changes mouse behaviour 2021-01-28 13:33:53 +01:00
alonso.torres
c4e47a8169 Improved workspace refs 2021-01-28 13:08:56 +01:00
Andrey Antukh
fe67bf8fdb 🔥 Remove unused extension. 2021-01-28 12:30:55 +01:00
Andrés Moya
8d9d711ad8 Synchronize shape flags into components 2021-01-28 12:00:59 +01:00
Andrey Antukh
1a4f3f0e18 Merge pull request #490 from penpot/fixes/more-performance-fixes
Performance fixes
2021-01-28 11:56:50 +01:00
Andrey Antukh
ccafd3a293 minor changes on manage.sh 2021-01-28 11:56:05 +01:00
Andrey Antukh
2359abf8a5 📎 Minor docstring change. 2021-01-28 11:31:48 +01:00
Andrey Antukh
2c89b611b5 🐛 Make the library persistence as separated operation. 2021-01-28 11:31:48 +01:00
Andrey Antukh
b6f359bcb8 🐛 Force persistence on go to dashboard. 2021-01-28 11:31:48 +01:00
alonso.torres
b966722899 Improved translate-to-frame performance 2021-01-27 21:52:55 +01:00
alonso.torres
4c5ef5ac8c Improved rules performance. Cleanup unused methods 2021-01-27 21:52:55 +01:00
alonso.torres
1273336622 Snaps depending on zoom level 2021-01-27 21:52:55 +01:00
alonso.torres
44eb961c27 Improved performance in workers 2021-01-27 21:52:55 +01:00
alonso.torres
385c7274a3 Improvements over cursor rendering 2021-01-27 21:52:55 +01:00
alonso.torres
00ca9755be Adds a debug FPS widget 2021-01-27 21:52:55 +01:00
Andrés Moya
3348370138 🌐 Add missing spanish translations 2021-01-27 17:13:39 +01:00
Andrés Moya
4b9ac6f1e5 🐛 Fix when trying to relocate a shape and their children 2021-01-27 16:49:09 +01:00
Andrey Antukh
1c098d9b04 Parse bigints as integers. 2021-01-27 15:21:44 +01:00
Andrey Antukh
af478c83cd 🐛 Ensure float on rect-center operation. 2021-01-27 15:21:44 +01:00
Andrés Moya
bd3921b91b Hide update library update notification on WS exit 2021-01-27 15:04:39 +01:00
alonso.torres
849eb7714c 🐛 Fixes problems with group options 2021-01-27 15:02:02 +01:00
Andrés Moya
4da1b46b05 🐛 Fix mini bug 2021-01-27 11:39:51 +01:00
alonso.torres
ba12a2bc6d 🐛 Fixes problem with svg root fill color 2021-01-27 10:59:35 +01:00
Andrey Antukh
fac6dd81b9 Minor chantes on async tasks scheduling. 2021-01-27 10:55:26 +01:00
Andrey Antukh
03d8bcaea2 Update docker-compose file. 2021-01-27 10:54:37 +01:00
Andrés Moya
686814f537 🎉 Add frontend tests for files and events that manage shapes 2021-01-27 10:27:08 +01:00
Andrés Moya
0cfb66ae16 🐛 Preserve added or removed shapes on a component normal update 2021-01-27 10:25:26 +01:00
Andrey Antukh
1ce68cb1cf Merge pull request #483 from penpot/fixes/performance-improvements
Performance improvements
2021-01-26 22:56:55 +01:00
Andrey Antukh
36eb48c649 📚 Update documentation. 2021-01-26 22:14:27 +01:00
alonso.torres
897b3d3f39 ♻️ Removed unused code. Fixed problem with alt key 2021-01-26 21:27:24 +01:00
Andrey Antukh
b1b1f1f579 🐛 Minor fix on manage.sh. 2021-01-26 18:55:53 +01:00
Andrey Antukh
b9fe8e4b33 🔥 Remove unused config. 2021-01-26 18:45:19 +01:00
Andrey Antukh
f7a4f9906c Fix middleware order. 2021-01-26 18:13:28 +01:00
alonso.torres
fb05999e9e Changes memoization policies 2021-01-26 17:35:49 +01:00
alonso.torres
60eae40006 ♻️ Refactor SVG raw shape 2021-01-26 17:35:49 +01:00
alonso.torres
815d1a906f Improved process-changes performance 2021-01-26 17:35:47 +01:00
alonso.torres
cf77ebde6a More performance improvements 2021-01-26 17:33:02 +01:00
alonso.torres
07d552c86b Improved text handling 2021-01-26 17:33:02 +01:00
alonso.torres
4513033634 Changed grid render for performance 2021-01-26 17:33:02 +01:00
alonso.torres
6a077c967a Performance improvements 2021-01-26 17:33:02 +01:00
Andrey Antukh
ea03477e8e Replace Error with Throwable (revert prev commit).
This reverts commit d218d70b8d.
2021-01-26 17:15:06 +01:00
Andrey Antukh
d218d70b8d Replace Throwable with Error. 2021-01-26 16:57:57 +01:00
Andrey Antukh
bc655ed9ef 🐛 Prevent to group with circular deps. 2021-01-26 16:57:57 +01:00
Andrey Antukh
1c42ace096 🐛 Properly capture stack overflow errors. 2021-01-26 16:57:57 +01:00
elhombretecla
7ec28c9481 add new mail date 2021-01-26 14:06:30 +01:00
elhombretecla
09c63c636f add ui fixes 2021-01-26 14:06:30 +01:00
Andrés Moya
a42d87742f 💄 Cosmetic changes 2021-01-26 13:27:35 +01:00
Andrés Moya
870eff5826 🎉 Update component in a shared library 2021-01-26 13:27:35 +01:00
Andrey Antukh
7f3ef7bb82 Minor improvements on docker images. 2021-01-26 12:57:21 +01:00
Andrey Antukh
c0fb108e06 Minor improvements on error reporting. 2021-01-26 12:56:57 +01:00
Andrey Antukh
7759418f5d 🎉 Start using ubuntu 20.04 LTS as a base distro for devenv. 2021-01-26 11:34:36 +01:00
Andrey Antukh
884bf57193 📎 Comment some debug log entries on notifications module. 2021-01-26 11:13:21 +01:00
Andrey Antukh
8236d84dfa Improve websocket notifications metrics. 2021-01-26 11:13:21 +01:00
Andrey Antukh
f8b349814c ♻️ Add labels support to metrics module.
And improve the rpc metrics using labels.
2021-01-26 11:13:21 +01:00
Andrey Antukh
9f581ed10b 🐛 Remove not necessary state cleaning. 2021-01-26 11:13:21 +01:00
Andrey Antukh
a3ffbeccd0 Add server timing. 2021-01-26 11:13:21 +01:00
Andrey Antukh
404fae9c7c Improve loading state on dashboard. 2021-01-26 11:13:21 +01:00
Andrey Antukh
b2bd4bd694 🐛 Properly handle temporal files on user uploads. 2021-01-26 11:13:21 +01:00
Andrey Antukh
a69a35a0b6 Improve storage recheck task and add more specs. 2021-01-26 11:13:21 +01:00
Andrey Antukh
340d1d43be Improve url resolution on assets handlers. 2021-01-26 11:13:21 +01:00
Andrey Antukh
d68286821b Add the notion of temporal files on the storage. 2021-01-26 11:13:21 +01:00
Andrey Antukh
5d0ad1ada2 🐛 Include error-report.tmpl in the backend bundle. 2021-01-26 11:13:21 +01:00
Andrey Antukh
9d7a814180 🎉 Add proper pprint for matrix and point types. 2021-01-26 11:13:21 +01:00
Andrey Antukh
33c25bfe6d 🐛 Add missing statements on migrations. 2021-01-25 11:51:15 +01:00
Andrey Antukh
c42949b61e ⬆️ Update frontend npm dependencies. 2021-01-25 11:51:15 +01:00
Andrey Antukh
3e84c9b70f 📎 Minor cosmetic changes. 2021-01-25 11:51:15 +01:00
Andrey Antukh
592153f968 🎉 Add resource usage limits. 2021-01-25 11:51:15 +01:00
Andrey Antukh
3c7fbb8fd6 🔥 Remove unused operation on coords component. 2021-01-25 11:51:15 +01:00
Andrey Antukh
0bbc006b98 Minor improvements on error reporter. 2021-01-25 11:51:15 +01:00
Andrey Antukh
5518f561f0 Make postgresql TOAST storage more friendly to ZFS. 2021-01-25 11:51:15 +01:00
Andrey Antukh
7cfe768dbd Add helper for access file data on server repl. 2021-01-25 11:51:15 +01:00
Andrey Antukh
04b0cf6330 🎉 Add better error reporting. 2021-01-25 11:51:15 +01:00
Andrey Antukh
1b70283c3a 🐛 Fix file-xlog-gc task.
And decrease the execution interval of the task to every 2 hours.
2021-01-25 11:51:15 +01:00
Andrey Antukh
5c1290d5b3 🐛 Properly deselect all shapes on posible error on saving. 2021-01-25 11:51:15 +01:00
Andrey Antukh
4ee1f9cf2c Minor improvements on error handling on frontend. 2021-01-25 11:51:15 +01:00
Andrey Antukh
594bceff77 📎 Minor change on error reporter. 2021-01-25 11:51:15 +01:00
Andrey Antukh
4e271603c2 🎉 Add helper to devenv for properly reset passwords. 2021-01-25 11:51:15 +01:00
Andrey Antukh
47a77ae1e2 🎉 Add helper script to run collect on messages from npm. 2021-01-25 11:51:15 +01:00
Andrey Antukh
bea093e8da ♻️ Refactor error handling. 2021-01-25 11:51:15 +01:00
Andrey Antukh
b4ba9d4375 Normalize permission checks. 2021-01-25 11:51:15 +01:00
alonso.torres
66fe0048a5 Adds system to load initial project data 2021-01-25 11:27:29 +01:00
alonso.torres
dfc6ebfeb0 Snap distances performance improvements 2021-01-22 15:35:59 +01:00
Andrés Moya
b0ea9d3096 🐛 Protect against syncing with a not existing component 2021-01-22 14:36:22 +01:00
Andrey Antukh
e4eaa74b51 🐛 Fix incorrect use of log/errorf. 2021-01-22 11:36:17 +01:00
Andrey Antukh
716490be26 🎉 Add global exception handler. 2021-01-22 11:19:59 +01:00
alonso.torres
86936a66e0 🐛 Fixed issues with text selection and edition 2021-01-21 17:03:23 +01:00
Andrey Antukh
40e54dbbd4 🐛 Fix file renaming on dashboard. 2021-01-20 22:50:18 +01:00
Andrey Antukh
f0b9837407 🐛 Fix profile images on workspace. 2021-01-20 22:14:56 +01:00
Andrés Moya
11418501a4 🐛 Manage correctly when components are dragged and dropped 2021-01-20 18:03:38 +01:00
Andrey Antukh
e240525a35 🐛 Avoid exception on insert duplicates on user invitations. 2021-01-20 17:33:54 +01:00
Andrey Antukh
1467fd5dbf 🎉 Add sql helpers wrappers with proper defaults. 2021-01-20 17:33:54 +01:00
Andrey Antukh
5d67a6f427 🐛 Hide invitation modal on success. 2021-01-20 17:33:54 +01:00
Andrey Antukh
d7a5cddcb3 Merge pull request #471 from penpot/fixes/performance
Performance improvements
2021-01-20 11:20:23 +01:00
alonso.torres
83f84e5b6a 🐛 Fixes transient implementation 2021-01-20 11:19:29 +01:00
alonso.torres
d19dc1cf56 Improved snap performance 2021-01-19 23:02:51 +01:00
alonso.torres
27e83342f9 Improvements to performance 2021-01-19 18:44:32 +01:00
Andrey Antukh
9cfefbdb86 Make metrics optional on http server. 2021-01-19 16:48:30 +01:00
Andrey Antukh
412a3c923b 🐛 Fix unexpected exception on pprint error. 2021-01-19 16:33:32 +01:00
Andrey Antukh
4e43bf5f78 Improve version parsing. 2021-01-19 16:28:53 +01:00
Andrey Antukh
ef25f8a721 Avoid reflection on s3 storage backend. 2021-01-19 15:37:26 +01:00
Andrey Antukh
34e5e5c513 🎉 Add jetty metrics. 2021-01-19 15:37:26 +01:00
Andrey Antukh
d8ee07d1e4 🎉 Add metrics to notification service. 2021-01-19 15:01:33 +01:00
Andrey Antukh
d494e44df3 🎉 Add builtin copy fast path operation for storage. 2021-01-19 15:01:33 +01:00
Andrey Antukh
15edabc977 🐛 Set proper permission check on retrieving team users. 2021-01-19 15:01:33 +01:00
Andrey Antukh
4fbd2e6caa 🐛 Fix unexpected unauthorized exception on read team members. 2021-01-19 15:01:33 +01:00
Andrey Antukh
b7a90eb4e4 Minor changes on email sending internals. 2021-01-19 15:01:33 +01:00
Andrey Antukh
af310854fc 🐛 Set proper exception type on notauthorized requests. 2021-01-19 15:01:33 +01:00
Andrés Moya
9805f8b9f2 🎉 Rename shapes inside components 2021-01-19 11:23:06 +01:00
alonso.torres
dd283381a1 Duplicate pages 2021-01-19 11:22:41 +01:00
Andrey Antukh
c775f5aba0 Minor change on shadow-cljs config. 2021-01-19 09:47:19 +01:00
Andrey Antukh
6df976d1f3 🐛 Fix advanced compilation of util.globals ns. 2021-01-18 23:53:24 +01:00
Andrey Antukh
43d32af540 Minor fix on telemetry http handler. 2021-01-18 23:27:30 +01:00
Andrey Antukh
43ac9a9a22 Remove unused param on backend build script. 2021-01-18 23:18:39 +01:00
alonso.torres
91db8a9247 🐛 Fixed problem in handoff with images 2021-01-18 21:36:17 +01:00
Andrés Moya
e69d402b4f Change behavior of select-all command 2021-01-18 18:13:06 +01:00
Andrés Moya
f3d5515795 🐛 Detach a shape when moving it out of a component 2021-01-18 17:06:32 +01:00
Andrés Moya
bde62473a4 ✔️ Allow for tests of data module at frontend 2021-01-18 17:05:31 +01:00
Andrey Antukh
87cf91a044 🐛 Increase idle_in_transaction timeout to 120s. 2021-01-18 15:29:07 +01:00
Andrey Antukh
0f7372bfb4 🐛 Fix NPE on notifications module (on abrupt disconnect). 2021-01-18 15:28:46 +01:00
alonso.torres
76b7272a72 🐛 Fixed paste components from other files 2021-01-18 12:30:09 +01:00
alonso.torres
b3abc9fd6a 🐛 Fixes download image in handoff 2021-01-18 10:19:41 +01:00
alonso.torres
20731be1a4 Adding shapes over the selected shapes 2021-01-18 10:19:41 +01:00
Andrey Antukh
8f57ab343c Add jvm metrics. 2021-01-16 00:31:38 +01:00
Andrey Antukh
83f43af36e 🐛 Proper prefix rpc metrics. 2021-01-15 15:39:27 +01:00
Andrey Antukh
32de3d9f1d Minor changes on default config. 2021-01-15 14:29:56 +01:00
Andrés Moya
c04af27bf3 💄 Enhance traces of changes 2021-01-15 11:01:27 +01:00
Andrés Moya
091ea785e5 ♻️ Simplify add container id to changes 2021-01-15 11:01:27 +01:00
Andrés Moya
fe7faf0d0d Rework changes detection 2021-01-15 11:01:27 +01:00
Andrés Moya
43b1d3ca43 🐛 Regenerate components after resize in sync 2021-01-15 11:01:27 +01:00
Andrés Moya
6453cb9d11 :bug Fix calculate position of subcomponents on sync 2021-01-15 11:01:27 +01:00
Andrés Moya
bb5d0b63ef Enable touched detection in width and height changes 2021-01-15 11:01:27 +01:00
alonso.torres
999e2f6633 🐛 Fixes problems with svg imports 2021-01-15 09:22:32 +01:00
Andrey Antukh
fd4c61ece7 Merge pull request #456 from penpot/bugfixing
Bugfixing
2021-01-14 14:45:54 +01:00
alonso.torres
767f1c7b3d Center content on load 2021-01-14 14:14:55 +01:00
alonso.torres
a3d8af9a96 🐛 Fixes measurements with with scroll 2021-01-14 12:47:09 +01:00
alonso.torres
9ee54d6267 🐛 Fixes issue with showing interactions on click 2021-01-14 12:33:43 +01:00
alonso.torres
cf4a4b2b25 🐛 Fixed search that displays deprecated materials 2021-01-14 12:16:30 +01:00
alonso.torres
3b6c9f9511 🐛 Fixes issues with horizontal scroll with trackpad 2021-01-14 11:48:32 +01:00
alonso.torres
356572c21b 🐛 Copy for delete page dialog 2021-01-14 11:48:06 +01:00
alonso.torres
cb7499c10a 🐛 Fixes path/curve position for frame 2021-01-14 11:19:59 +01:00
alonso.torres
28658cae73 🐛 Fixed remove fill to transparent color 2021-01-14 08:21:33 +01:00
alonso.torres
ba7b2fd270 🐛 Fixed problems with lines selrect 2021-01-14 08:21:33 +01:00
alonso.torres
a14686c9f3 🐛 Hides grid when moving a frame 2021-01-14 08:21:33 +01:00
alonso.torres
a450dee7cf 🐛 New paths over shapes 2021-01-14 08:21:33 +01:00
alonso.torres
55a7a34a1d 🐛 Scroll in pages list when more than 4 elements 2021-01-14 08:21:33 +01:00
alonso.torres
4e7a3c09a6 🐛 Fixed problem with filters clipping 2021-01-14 08:21:33 +01:00
alonso.torres
292faec46f 🐛 Fixes paste in workspace inputs 2021-01-14 08:21:33 +01:00
alonso.torres
b616efd75c 🐛 Fixes comments styles 2021-01-14 08:21:33 +01:00
Andrey Antukh
ee147612a3 Minor change on manage.sh. 2021-01-13 17:25:41 +01:00
Andrey Antukh
69ead3348f 🐛 Fix backend dist build script.
Add svgclean.js to the dist.
2021-01-13 15:15:35 +01:00
Andrey Antukh
f66ddcaa2d 🎉 Integrate exporter with svgclean. 2021-01-13 15:15:35 +01:00
alonso.torres
70d464189f 🐛 Fixes scroll speed on firefox 2021-01-13 13:08:55 +01:00
alonso.torres
60e2abde1b 🐛 Fixes masks in Firefox 2021-01-13 13:08:55 +01:00
alonso.torres
79fc3cbf12 🐛 Fixed paste with middle button in firefox 2021-01-13 13:08:55 +01:00
Andrey Antukh
ad2d8c8ee0 More improvements on media uploading. 2021-01-13 11:52:39 +01:00
Andrey Antukh
6a32428ca1 Update svgclean bundle. 2021-01-13 11:52:39 +01:00
Andrey Antukh
f8f90f308e Increase default docker compose version to 3.5. 2021-01-13 11:52:39 +01:00
Andrey Antukh
678fe3d63e 🐛 Fix svg assets uploading. 2021-01-13 11:52:39 +01:00
Andrey Antukh
f06264ea0a 🐛 fix fime-media-gc task. 2021-01-13 11:52:39 +01:00
alonso.torres
25824629f2 ♻️ Refactor svg uploads 2021-01-13 11:52:39 +01:00
alonso.torres
b999c05d1e Allows change colors from root 2021-01-13 11:52:39 +01:00
alonso.torres
5f0020a95c Changes to the selection in workspace and layers 2021-01-12 12:10:32 +01:00
alonso.torres
bb07c4b3b7 🐛 Fixes problems with raw-svg 2021-01-11 16:03:34 +01:00
Andrey Antukh
9043d2574b Minor improvements on docker images and compose file. 2021-01-11 14:29:38 +01:00
Andrey Antukh
031123b2ca Make svgclean behave exactly as svgo. 2021-01-11 11:08:40 +01:00
Andrey Antukh
3135de3eb3 Adjust default svgclean bundle config. 2021-01-11 09:21:09 +01:00
Andrey Antukh
64828c918d 🔥 Remove commented code. 2021-01-11 08:06:02 +01:00
Andrey Antukh
7aa7257d29 Integrate svgclean and graal-js to svgparse service. 2021-01-11 08:06:02 +01:00
Andrey Antukh
c648add963 🎉 Add svgclean (svgo graalvm/browser ready fork). 2021-01-11 08:06:02 +01:00
Andrey Antukh
16469daff3 Many improvements to the database layer.
- Proper handling of referenced tables deletion.
- Proper handling of storage referenced tables deletion.
- Remove of obsolete tables and triggers.
2021-01-11 08:06:02 +01:00
Andrey Antukh
d32cacf1da Minor improvements on storage http handlers. 2021-01-11 08:06:02 +01:00
Andrey Antukh
77c1163591 Merge pull request #447 from penpot/improve-component-sync
 Improve some cases of nested components sync
2021-01-08 15:35:23 +01:00
Andrés Moya
261cb249d2 Improve some cases of nested components sync 2021-01-08 15:17:43 +01:00
Andrey Antukh
0c3184ed83 🐛 Add missing spec. 2021-01-08 14:41:14 +01:00
Andrey Antukh
f909b316c7 🐛 Fix syntax error introduced in previous commit. 2021-01-08 14:31:24 +01:00
andrés gonzález
4768b023a4 🎉 Add missing spanish translations. 2021-01-08 14:21:15 +01:00
Andrey Antukh
d188ac2df4 Merge pull request #446 from penpot/fix/problems_with_text
:Fixes problems with texts options
2021-01-08 14:17:01 +01:00
Andrey Antukh
fdd36d48bc 🐛 Disable authentication for :login-or-register. 2021-01-08 14:12:56 +01:00
Andrey Antukh
6f5b18de3a 🐛 More fixes on github and google provider. 2021-01-08 13:39:36 +01:00
Andrey Antukh
df4adfe717 🐛 Fix inconsistent naming on rpc call on github and google auth provider. 2021-01-08 13:30:52 +01:00
Andrey Antukh
ff7330048b 🐛 Fix wrong params on google auth functions. 2021-01-08 13:22:00 +01:00
Andrey Antukh
afabd179fb 🐛 Use proper spec for profile photo upload. 2021-01-08 12:46:26 +01:00
Andrey Antukh
0c30d53d95 🐛 Fix wrong conn handling on some function on storage. 2021-01-08 12:37:32 +01:00
Andrey Antukh
151e36df0e 🐛 Fix wrong import on error reporter. 2021-01-08 12:37:00 +01:00
alonso.torres
2ece527f9b 🐛 Fixes problems with texts options 2021-01-08 11:49:36 +01:00
Andrey Antukh
d12b78985e Merge pull request #445 from penpot/issue/848/detach-colors
Issue/848/detach colors
2021-01-08 11:30:19 +01:00
Andrey Antukh
2d07df2541 Merge pull request #443 from penpot/feature/paste-svg
Upload SVG as shapes
2021-01-08 11:27:51 +01:00
alonso.torres
27a85ce0da ♻️ Refactor files upload effects 2021-01-08 11:25:38 +01:00
Andrés Moya
f75ec43b71 ♻️ Refactor frame grid options 2021-01-08 11:25:02 +01:00
Andrés Moya
b9e4861f16 🐛 Allow to detach color styles 2021-01-08 11:25:02 +01:00
alonso.torres
802f19453d Upload SVG as shapes 2021-01-07 19:07:52 +01:00
Andrey Antukh
5b79928590 Change default migration module name. 2021-01-07 17:07:36 +01:00
Andrey Antukh
860a97a769 🐛 Add missing files. 2021-01-07 12:04:12 +01:00
Andrey Antukh
25177898e1 🐛 Fix prefix bug on s3 storage backend. 2021-01-07 11:29:57 +01:00
Andrey Antukh
195fb3b29d 📎 Add exception hint on db not found exception. 2021-01-07 11:29:57 +01:00
Andrey Antukh
234b2c9427 🐛 Fix licence headers. 2021-01-07 11:29:57 +01:00
Vitaly Kornilov
f3b5b07796 🎉 Add github auth provider. 2021-01-07 11:29:57 +01:00
Andrey Antukh
63cc6aecaf 🐛 Add missing ref-deps on fixtures cli. 2021-01-07 11:29:57 +01:00
Andrey Antukh
8aedb0b881 🔥 Remove unused and commented code. 2021-01-07 11:29:57 +01:00
Andrey Antukh
8487859fc2 🐛 Remove obsolete spec-attr on user spec. 2021-01-07 11:29:57 +01:00
Andrey Antukh
20ecc79cd1 🐛 Fix label visualization on team leave modal. 2021-01-07 11:29:57 +01:00
Andrey Antukh
f83c8d4523 ♻️ Add missing svgparse http handler. 2021-01-07 11:29:57 +01:00
Andrey Antukh
33c8743215 🐛 Fix non-repl app start. 2021-01-07 11:29:57 +01:00
Andrey Antukh
ab944fb9ae ♻️ Integrate new storage subsystem. 2021-01-07 11:29:57 +01:00
Andrey Antukh
3d88749976 📎 Update .gitignore file. 2021-01-07 11:29:57 +01:00
Andrey Antukh
7d0cf6e8cc 🔥 Remove static directory. 2021-01-07 11:29:57 +01:00
Andrey Antukh
6fd7feffee Increase default max database poolsize to 20. 2021-01-07 11:29:57 +01:00
Andrey Antukh
760eb926bf 🎉 Add plugable storages abstraction layer (with support for fs, s3 and db). 2021-01-07 11:29:57 +01:00
Andrey Antukh
9146642947 🔥 Remove the mount dependency. 2021-01-07 11:29:57 +01:00
Andrey Antukh
6c1e2b8eab 🐛 Fix inconsistencies on error reporter module. 2021-01-07 11:29:57 +01:00
Andrey Antukh
ff6482fa29 🎉 Add telemetry client. 2021-01-07 11:29:57 +01:00
Andrey Antukh
c99f571296 Add more parameters to the http server module. 2021-01-07 11:29:57 +01:00
Andrey Antukh
9688bd8408 Minor changes on deps.edn file. 2021-01-07 11:29:57 +01:00
Andrey Antukh
707fa160e8 🎉 Add simple telemetry server module. 2021-01-07 11:29:57 +01:00
Andrey Antukh
4d9418e620 ⬆️ Update backend dependencies. 2021-01-07 11:29:57 +01:00
Andrey Antukh
9f12456456 ♻️ Replace mount with integrant. 2021-01-07 11:29:57 +01:00
Andrey Antukh
31d7aacec1 Merge pull request #442 from penpot/enhancement/open-container-on-drop
 Open container on layers sidebar on drop inside
2021-01-07 09:34:12 +01:00
Andrés Moya
c4720edda7 Open container on layers sidebar on drop inside 2021-01-07 09:31:30 +01:00
alonso.torres
2f0fcaf5d3 🐛 Fixes problems with top-level shape selection 2021-01-05 15:19:00 +01:00
Andrey Antukh
66606b7309 Merge pull request #440 from penpot/fix/numeric-inputs
Bug fixes and improvements
2021-01-04 09:16:53 +01:00
alonso.torres
6d328e852d 🐛 Selection tool not selected when editing shapes 2020-12-23 12:33:20 +01:00
alonso.torres
3f887f20e9 🐛 When creating a frame moves the top-level shapes inside 2020-12-23 12:29:36 +01:00
alonso.torres
9ae9da8256 🐛 Fixes problems with handoff and text shapes 2020-12-23 10:44:04 +01:00
alonso.torres
33b6df01ba 🐛 Fixes when blocking an object deselects it 2020-12-23 10:22:52 +01:00
alonso.torres
6af3824293 🐛 Fixed avatar on sessions in workspace 2020-12-23 10:16:46 +01:00
alonso.torres
507550edad 🐛 Fixes problem with image in profile 2020-12-23 10:11:31 +01:00
alonso.torres
b53fceefb9 🐛 Fixed problem with opacity in stroke 2020-12-23 10:04:33 +01:00
alonso.torres
c1c01aab02 🐛 Fixes problems with gradients when rotation 2020-12-23 09:58:43 +01:00
alonso.torres
e1923468a4 🐛 Fixes issues with empty input in options 2020-12-22 18:05:37 +01:00
alonso.torres
84007e6ad1 Allows rotation for shapes 2020-12-22 17:44:51 +01:00
Andrey Antukh
5636881463 🐛 Fix all the time redirect to login. 2020-12-22 16:23:23 +01:00
Andrey Antukh
7f8f8ecd62 Fix incompatibilities. 2020-12-22 15:33:15 +01:00
Andrey Antukh
88c0beddc6 🐛 Fix unexpected behavior of potok with native atom and symbols. 2020-12-22 15:21:34 +01:00
Andrey Antukh
37bd43a19f ⬆️ Update exporter dependencies. 2020-12-22 08:06:33 +01:00
Andrey Antukh
9b02889ea5 📎 Minor adaptations on manage.sh. 2020-12-22 08:00:44 +01:00
Andrey Antukh
f4cb7d1862 🐛 Fix login with google. 2020-12-21 17:45:30 +01:00
Andrey Antukh
4dd9767590 ⬆️ Update dependencies. 2020-12-21 16:55:54 +01:00
Andrey Antukh
dea5cf4b5d 🐛 Fix exception on copy action from context menu. 2020-12-21 16:55:54 +01:00
Andrey Antukh
b4b88bde0b 🐛 Prevent memory leak warning on deffered component. 2020-12-21 16:55:54 +01:00
Andrey Antukh
9c73444102 🐛 Minor fix on error reporting. 2020-12-21 16:55:54 +01:00
Andrey Antukh
c5f4ae2242 Mainly cosmetic and performance improvements on shape render. 2020-12-21 16:55:54 +01:00
Andrey Antukh
a3c583af1d 🐛 Don't allow bitints on ::safe-number spec. 2020-12-21 16:55:54 +01:00
Andrey Antukh
84e95ab4c2 Minor changes on http middleware. 2020-12-21 16:55:54 +01:00
Andrey Antukh
f12ade3b67 ♻️ Move the ghost rendering to separate component. 2020-12-21 16:55:54 +01:00
Andrey Antukh
dbb1e6a890 Revisit render flow of toplevel workspace components. 2020-12-21 16:55:54 +01:00
Andrey Antukh
38a645ad49 🔥 Remove unused code. 2020-12-21 16:55:54 +01:00
Andrey Antukh
4a5e27e641 ⬆️ Update potok to 3.0.0. 2020-12-21 12:15:53 +01:00
Andrey Antukh
b7353db14e Many improvements on error reporting. 2020-12-21 12:15:53 +01:00
Andrey Antukh
0f37c8ecbd 📎 Minor changes on manage.sh script. 2020-12-21 12:15:53 +01:00
Andrey Antukh
2c0a2ce750 🔥 Remove commented code. 2020-12-21 12:15:53 +01:00
Andrey Antukh
c0bc7553a9 ⬆️ Update devenv. 2020-12-21 12:15:53 +01:00
Andrey Antukh
067aece437 🎉 Add first helpers for manipulate the file data from server repl. 2020-12-21 12:15:53 +01:00
Andrey Antukh
a14a71c222 🔥 Remove unused code. 2020-12-21 12:15:53 +01:00
Andrey Antukh
4f6f4eea4c 🎉 Add basic code for svg parsing to clj data structure.
Usage example:

curl -X POST http://localhost:6060/api/svg -H "content-type: image/svg+xml" -d "@example2.svg" |jq
2020-12-21 12:15:53 +01:00
Andrey Antukh
f84d0f34e6 ♻️ Minor task naming and directory structure refactor. 2020-12-21 12:15:53 +01:00
Andrey Antukh
4849904b0b ♻️ Refactor file-media-gc task (mainly add more traces). 2020-12-21 12:15:53 +01:00
Andrey Antukh
9ed01cc0df Don't duplicate images when copy and paste in the same file. 2020-12-21 12:15:53 +01:00
Andrey Antukh
ea2079f36f Only print version on browser execution context. 2020-12-21 12:15:53 +01:00
Andrey Antukh
6fc90e20e9 🐛 Refactor copy/paste for proper handle image shape copying. 2020-12-21 12:15:53 +01:00
Andrey Antukh
01edf49de0 🐛 Fix incorrect erorr reporting. 2020-12-21 12:15:53 +01:00
Andrey Antukh
8f37f74d29 🐛 Avoid unexpected error when a cookie is expired. 2020-12-21 12:15:53 +01:00
Andrey Antukh
7e020f967b Increase heap memory on devenv repl script. 2020-12-21 12:15:53 +01:00
Andrey Antukh
99d3b80033 🐛 Show onboarding just after logging. 2020-12-21 12:15:53 +01:00
alonso.torres
b80332b9b3 🐛 Fixed problem with import SVG image size 2020-12-21 12:15:53 +01:00
Andrey Antukh
4ef471919c 🐛 Remove duplicated translation string. 2020-12-21 12:15:53 +01:00
elhombretecla
3c336cd8f6 Fix sidebar css 2020-12-21 12:15:53 +01:00
elhombretecla
4a2db204f1 🎉 Add feedback link to workspace 2020-12-21 12:15:53 +01:00
elhombretecla
7b458daa98 Add link to feedback dashboard 2020-12-21 12:15:53 +01:00
elhombretecla
dbf67dc47b 🎉 Add search section title 2020-12-21 12:15:53 +01:00
Andrey Antukh
686e9b64ef 🎉 Add navigation to feature slides on the onboarding modal. 2020-12-21 12:15:53 +01:00
alonso.torres
c674a300c6 🐛 Fixed problem with typographies and groups 2020-12-21 11:41:32 +01:00
alonso.torres
09bce9c285 🐛 Fixes problems with multiple selection and groups 2020-12-21 11:12:58 +01:00
alonso.torres
e26ece57d1 🐛 Fixed several issues with groups and multiple selection 2020-12-21 11:12:58 +01:00
Andrés Moya
9822c52573 Allow select multiple frames and extend selrect with shift 2020-12-21 10:24:55 +01:00
Andrés Moya
6ed470ed5f 🐛 Clear touched flags when detaching a component 2020-12-21 10:24:55 +01:00
Andrés Moya
4e48b78e03 🐛 Show correctly context menu when the shape was not selected 2020-12-21 10:24:55 +01:00
Andrés Moya
baec7838b4 ♻️ Always set component-file-id, even in local file 2020-12-21 10:23:19 +01:00
alonso.torres
53b5d78cdc 🐛 Fixes infinite loop when nil entry in objects 2020-12-15 20:13:12 +01:00
Andrey Antukh
f4157ba0e5 Improvements on image building. 2020-12-12 13:49:39 +01:00
Andrey Antukh
4903d26038 Merge remote-tracking branch 'origin/develop' into main 2020-12-11 15:46:01 +01:00
alonso.torres
574e8a92a8 🐛 Fixed problem with groups 2020-12-11 08:27:51 +01:00
alonso.torres
45882ba6a1 ♻️ Refactor pages namespaces 2020-12-10 14:41:05 +01:00
alonso.torres
83519e8513 🐛 Fixes scroll and others 2020-12-10 11:35:27 +01:00
Andrey Antukh
6cb2f1663e 🔥 Remove unused code. 2020-12-10 11:09:39 +01:00
Andrey Antukh
05563168c3 🎉 Add onboarding modal. 2020-12-10 11:09:39 +01:00
Andrey Antukh
2907dd1a50 🐛 Add missing require. 2020-12-09 16:48:26 +01:00
Andrey Antukh
419eecbe72 🐛 Fix wrong volume name on devenv and build scripts. 2020-12-09 14:38:33 +01:00
Andrey Antukh
1c8de910a6 🐛 Add missing license header on version ns. 2020-12-09 14:38:33 +01:00
Andrey Antukh
a674b3ab94 🐛 Fix unexpected exception on faster merge function. 2020-12-09 14:38:33 +01:00
Andrey Antukh
4d7a34a998 🎉 Add better error reporting. 2020-12-09 14:38:33 +01:00
alonso.torres
a881d86637 Rename graphic assets 2020-12-09 11:27:04 +01:00
alonso.torres
20a7366432 🐛 Fixes problems with hover on elements 2020-12-09 11:27:04 +01:00
alonso.torres
4b22615f97 🐛 Fixed issues with masks when coloring 2020-12-09 11:27:04 +01:00
alonso.torres
07d77c1320 🐛 Fixed dashboard edition on new project 2020-12-09 11:27:04 +01:00
alonso.torres
07e0c02d11 🐛 Fixed arrow style when mask with only one element 2020-12-09 11:27:04 +01:00
elhombretecla
c7e33929db 🎉 Add move icon 2020-12-09 11:27:04 +01:00
alonso.torres
3a8a212432 🐛 Fixes problems with masks rotation and some clipping problems 2020-12-09 11:27:04 +01:00
alonso.torres
34af5e4563 🐛 Fixed right click context menu 2020-12-09 11:27:04 +01:00
alonso.torres
60e6dd7822 🐛 Fixed count projects in dashboard when deleting file 2020-12-09 11:27:04 +01:00
alonso.torres
621545cc74 🐛 Allows remove fill in text shapes 2020-12-09 11:27:04 +01:00
alonso.torres
2f1b72e105 🐛 Disallowing negative border radius 2020-12-09 11:27:04 +01:00
alonso.torres
266d4c837c 🐛 Fixes problem with create shape on a snap point 2020-12-09 11:27:04 +01:00
alonso.torres
24e998ca2e 🐛 Fixed problem with center shapes 2020-12-07 15:05:51 +01:00
alonso.torres
1b9aae3bbd ⬆️ Upgrades highlight.js 2020-12-07 14:24:50 +01:00
alonso.torres
86dc2379a3 🐛 Fixed problems with groups selrect 2020-12-07 14:24:50 +01:00
alonso.torres
1b5efa6ba2 🐛 Fixed issue with shared token for logged users 2020-12-07 14:24:50 +01:00
elhombretecla
489dc521e3 🎉 Fix project name edit field 2020-12-07 12:10:05 +01:00
alonso.torres
4d4e7c75da Changes image shortcut to K 2020-12-07 10:15:44 +01:00
alonso.torres
2aaa82a5c4 🐛 Fixed thumbnail to change color 2020-12-07 10:15:44 +01:00
alonso.torres
c30aa7346b Removed slider for shapes rotation 2020-12-07 10:15:44 +01:00
alonso.torres
d0306ac92c 🐛 Fixes some issues with text shape 2020-12-07 10:15:44 +01:00
alonso.torres
62d98ad265 🐛 Fixed styles for typography advanced options 2020-12-07 10:15:44 +01:00
Andrey Antukh
0da16c7219 Make all background task execute daily (instead of hourly). 2020-12-04 16:11:26 +01:00
Andrey Antukh
28a2df96ff 🎉 Add version string parsing. 2020-12-04 16:11:26 +01:00
Andrey Antukh
ac2310f71f Merge pull request #423 from penpot/bug-fixing
Bug fixing
2020-12-04 14:02:32 +01:00
alonso.torres
ab5323d873 Improves resize observer 2020-12-04 13:58:48 +01:00
alonso.torres
e1ccde6533 🐛 Fixed problem with texts inside groups 2020-12-04 13:26:23 +01:00
alonso.torres
a71a7d6951 🐛 Fixed problems with resize texts 2020-12-04 13:26:23 +01:00
alonso.torres
4a5a5b1081 🐛 Fixes problem with layer visibility 2020-12-04 13:26:23 +01:00
Andrés Moya
e375c1e7d8 Synchronize border radius independently of other geometry 2020-12-04 12:03:34 +01:00
Andrés Moya
3ddf04fa31 🐛 Disallow creating a component for an artboard 2020-12-04 12:03:34 +01:00
Andrés Moya
976dab90c8 🐛 Synchronize well al color and special attributes 2020-12-04 12:03:34 +01:00
Andrés Moya
e9714c4fd0 🐛 Fix synchronization when adding a subcomponent to a instance 2020-12-04 12:03:34 +01:00
Andrey Antukh
b4246c2869 🐛 Fix wrong spec reference on messages. 2020-12-04 09:46:25 +01:00
Andrey Antukh
9b8ec1ac02 🐛 Fix text exportation on svg with colors. 2020-12-04 09:46:25 +01:00
Andrey Antukh
43bd98151a 🐛 Fix text exportation on svg. 2020-12-04 09:46:25 +01:00
Andrey Antukh
6d2e2489bb ⬆️ Update deps on exporter. 2020-12-04 09:46:25 +01:00
Andrey Antukh
03639cb9ac 🐛 Don't count draft as a project. 2020-12-04 09:46:25 +01:00
Andrey Antukh
2bd89c94d9 🐛 Adapt trim-file task to page/file data model changes. 2020-12-04 09:46:25 +01:00
Andrey Antukh
c21dc7ea7f Update default hasher to argon2id. 2020-12-04 09:46:25 +01:00
Andrey Antukh
b92045f905 🐛 Properly disable asserts on production code. 2020-12-04 09:46:25 +01:00
Andrey Antukh
6b9d91e2be 💄 Update code style and add more coments to :mov-objects change impl. 2020-12-04 09:46:25 +01:00
alonso.torres
718a187c1e Reduces the snap-distances feedback 2020-12-03 13:31:45 +01:00
alonso.torres
0f62bcf25f 🐛 Fixed problem with mouse wheel button 2020-12-03 10:47:58 +01:00
Andrés Moya
e581cf8aeb ♻️ Refactor paste function 2020-12-03 10:11:57 +01:00
Andrés Moya
6186d82151 ♻️ Change paste implementation to work with more browsers 2020-12-03 10:11:57 +01:00
alonso.torres
264811c5ee 🐛 Fixes problems with the picker for Safari and Firefox 2020-12-03 10:10:35 +01:00
Andrey Antukh
ba529b9fd6 📎 Temprary comment some assertions. 2020-12-03 09:04:43 +01:00
Andrey Antukh
34d15e4192 📚 Update documentation. 2020-12-02 23:31:25 +01:00
Andrey Antukh
8caa5c6a65 Add missing environment var on frontend build. 2020-12-02 17:48:47 +01:00
Andrey Antukh
1f5050eb01 💄 Minor fixes on manage.sh 2020-12-02 17:06:07 +01:00
Andrey Antukh
e165ca7c3b Add improvements to manage.sh and devenv related to deployment. 2020-12-02 16:45:08 +01:00
Andrés Moya
590c57c18d :bugfix: Add require macros 2020-12-02 15:35:14 +01:00
Andrey Antukh
7b1f84f509 💄 Minor cosmetic changes on shapes related namespaces. 2020-12-02 15:35:14 +01:00
Andrey Antukh
247273631c Minor change on devenv nginx config. 2020-12-02 15:35:14 +01:00
Andrey Antukh
e0cc0a7f3a 🐛 Don't allow create frames inside frames. 2020-12-02 15:35:14 +01:00
Andrey Antukh
44a21de783 Fix all linter issues on backend code. 2020-12-02 15:35:14 +01:00
Andrey Antukh
6881e3d795 Fix linter issues on backend tasks ns directory. 2020-12-02 15:35:14 +01:00
Andrey Antukh
ce3c055819 Fix linter issues on backend util namespace directory. 2020-12-02 15:35:14 +01:00
Andrey Antukh
74077a0ead Improve clj-kondo configuration. 2020-12-02 15:35:14 +01:00
Andrey Antukh
deb39c2291 Add updated clj-kondo to devenv. 2020-12-02 15:35:14 +01:00
alonso.torres
1fb5ffb59b Improved tests for geom transforms 2020-12-02 14:40:31 +01:00
Andrey Antukh
8bc37416a0 🎉 Add initial clj-kondo config. 2020-12-02 10:29:55 +01:00
Andrey Antukh
7f1a436f30 ♻️ Refactor docker devenv and image building. 2020-12-02 10:29:55 +01:00
alonso.torres
f37a85fd82 Fixes tests and linter for commons 2020-12-02 08:53:38 +01:00
alonso.torres
b180d9e878 🐛 Fixed persistent outline after editing 2020-12-01 14:58:19 +01:00
alonso.torres
001f90a540 🐛 Safari compatibility fixes 2020-12-01 14:46:51 +01:00
Andrey Antukh
9260c59afb 🎉 Add improved export macro.
This reverts commit 7ec30d1f5e.
2020-12-01 13:53:36 +01:00
Andrey Antukh
7ec30d1f5e Temporary revert previous commit.
This reverts commit 497c174d63.
2020-12-01 13:23:37 +01:00
Andrey Antukh
497c174d63 Add export macro helper for properly reexport vars.
This reverts commit 45da7df4b4.

Now with JVM/Clojure support.
2020-12-01 12:30:58 +01:00
Andrey Antukh
45da7df4b4 Revert " Add export macro helper for properly reexpor vars."
This reverts commit 9ca6830267.
2020-12-01 11:34:08 +01:00
Andrey Antukh
9ca6830267 Add export macro helper for properly reexpor vars. 2020-12-01 10:39:06 +01:00
Andrey Antukh
f4124b28d8 🐛 Fix wrong argument number on recursive delete operation (shapes). 2020-12-01 10:39:06 +01:00
Andrey Antukh
6f64053dd5 Discard wrong queued change if back fails. 2020-12-01 10:39:06 +01:00
Andrey Antukh
39fb611160 🐛 Fix typografy preloading. 2020-12-01 10:39:06 +01:00
Andrey Antukh
e73a8a2f7e 🐛 Make the width and height min value to 1px. 2020-12-01 10:39:06 +01:00
Andrey Antukh
3db9907c25 Prevent leave stream broken on spec failed on commit-changes. 2020-12-01 10:39:06 +01:00
Andrey Antukh
8ae6176242 Add better default for messages timeout. 2020-12-01 10:39:06 +01:00
Andrés Moya
64a53a68c1 Allow to increment number inputs by 10 2020-11-30 15:56:29 +01:00
Andrés Moya
3835e0ea74 🐛 Select and deselect shapes correctly inside an artboard 2020-11-30 14:33:58 +01:00
Andrey Antukh
4a7b5618ff 🐛 Fix unauthorized error on handoff on share-link. 2020-11-30 13:44:40 +01:00
Andrey Antukh
39db88c533 Reduce the max and min safe-int values to 1m. 2020-11-30 13:44:40 +01:00
Andrey Antukh
0416ce8da6 Add workaround to broken texts exception. 2020-11-30 13:44:40 +01:00
Andrey Antukh
357e779013 💄 Cosmetic changes on pages helpers namespace. 2020-11-30 13:44:40 +01:00
Andrés Moya
9445e3abb8 Restore russian 2020-11-30 13:24:34 +01:00
Andrés Moya
6390af0827 Change tool names and shortcuts 2020-11-30 13:17:13 +01:00
Andrés Moya
df95bd7010 🎉 Select all elements tool and shortcut 2020-11-30 13:16:21 +01:00
Andrey Antukh
53297ec9d9 Merge pull request #405 from penpot/issues/text-shape
Refactor the text size calculations
2020-11-27 16:19:46 +01:00
Andrey Antukh
420d98c0f9 🐛 Fix unauthorized error handling on viewer with token. 2020-11-27 16:19:15 +01:00
Andrey Antukh
a976a826a5 🐛 Fix inconsistences on messages specs. 2020-11-27 16:19:04 +01:00
Andrey Antukh
b4341cba18 🔥 Temporary comment undo validation. 2020-11-27 16:15:44 +01:00
Andrey Antukh
becd0d9cbf 🐛 Add strict spec verify on operations result. 2020-11-27 16:08:45 +01:00
alonso.torres
0046b60c93 🐛 Fixes problem with flipped texts 2020-11-27 15:46:24 +01:00
alonso.torres
2a17f0e507 ♻️ Refactor the text size calculations 2020-11-27 12:28:49 +01:00
Andrés Moya
b67b3243bb Open library by cliking in the whole selector 2020-11-27 09:07:36 +01:00
Andrés Moya
1f92237b19 🔥 Remove some unused code 2020-11-27 07:55:54 +01:00
Andrés Moya
ddf0e75a11 Open artboard at the sidebar when dropping shapes into it 2020-11-26 15:38:24 +01:00
Andrés Moya
4c1150bf78 Switch team clicking in the whole selector 2020-11-26 15:37:45 +01:00
Andrés Moya
40240d294a 🐛 Fix synchronization of geometry changes 2020-11-26 14:16:10 +01:00
elhombretecla
56861e8d01 🎉 Create placeholder at comments sidebar 2020-11-26 14:14:56 +01:00
elhombretecla
62c727e253 Add new comments placeholder 2020-11-26 14:14:56 +01:00
elhombretecla
1e30d00189 Change email rrss accounts 2020-11-26 14:14:56 +01:00
elhombretecla
cd97735c3f 🎉 Fix comments visual issues 2020-11-26 14:14:56 +01:00
Andrey Antukh
24ea6a63c6 Merge pull request #399 from penpot/bezier-fixes
Bezier improvements
2020-11-26 14:12:19 +01:00
Andrey Antukh
55d8afd985 🐛 Fix wrong undo handling on masking objects.
On undo a mask operation the created group does not
disappear; this commit fixes this.
2020-11-26 11:57:36 +01:00
Andrey Antukh
1e49ddab8b 🔥 Remove unused code. 2020-11-26 11:57:36 +01:00
Andrey Antukh
78a8d20e04 Prevent unexpected alt? state persistence on window blur.
Caused by using `ctrl+alt` kind of shortcuts that makes keyboard-alt
stream registring the key pressed but on bluring the window (unfocus)
the key down is never arrived.
2020-11-26 11:57:36 +01:00
Andrey Antukh
29669b8b0f 🐛 Don't navigate when no frame/index found on viewer. 2020-11-26 11:57:36 +01:00
Andrey Antukh
b0fbc86ca7 🐛 Don't show pointer when no interactions on viewer. 2020-11-26 11:57:36 +01:00
Andrey Antukh
1d08bac493 Remove cl-format usage from cursors. 2020-11-26 11:57:36 +01:00
Andrey Antukh
5a17237015 📎 Minor cosmetic fixes on workspace shape wrapper component. 2020-11-26 11:57:36 +01:00
Andrey Antukh
76d8ca1e72 📎 Cosmetic changes on text shape component. 2020-11-26 11:57:36 +01:00
Andrey Antukh
6c07cfcd25 Reuse transducers on points->rect transformation. 2020-11-26 11:57:36 +01:00
Andrey Antukh
be24e1fb71 Improve specs usage on messages. 2020-11-26 11:57:36 +01:00
Andrey Antukh
81e909b961 Create frames in reverse order of other shapes. 2020-11-26 11:57:36 +01:00
Andrey Antukh
f314efdfdc 🐛 Fix shared token link creation. 2020-11-26 11:57:36 +01:00
alonso.torres
f8cf7103ca Improved opposite handler management 2020-11-26 11:34:32 +01:00
alonso.torres
89f0f24707 Fixed angle with shift in paths 2020-11-25 22:08:04 +01:00
alonso.torres
5c71601fcf Improves path drawing 2020-11-25 17:10:39 +01:00
Andrey Antukh
7ceb9b4009 Merge pull request #391 from penpot/737/add-or-remove-shapes-to-components
 Synchronize add/delete/move shapes in componentes
2020-11-25 14:09:54 +01:00
Andrés Moya
02b3c6ac28 🐛 Ignore touched when duplicating shape 2020-11-25 13:44:06 +01:00
Andrés Moya
6db1a907c8 Use touched flags when adding/deleting/moving shapes 2020-11-25 11:21:22 +01:00
Andrés Moya
830d932eec ♻️ Add more debugging traces 2020-11-25 11:21:22 +01:00
Andrés Moya
2582766a89 ♻️ Simplify container type management 2020-11-25 11:21:22 +01:00
Andrés Moya
ebb7410e5b Synchronize add/delete/move shapes in componentes 2020-11-25 11:21:22 +01:00
alonso.torres
912be76400 🐛 Fixed problem with divide by zero 2020-11-25 09:57:52 +01:00
alonso.torres
3543acbac7 🐛 Fixed schema for shapes 2020-11-24 18:01:50 +01:00
alonso.torres
d2806fd9ba 🐛 Fixes problem with schema and parameters 2020-11-24 17:31:22 +01:00
alonso.torres
0fcfd30535 🐛 Fixes problems with previous migration 2020-11-24 17:13:44 +01:00
Andrey Antukh
ef9b0062dd Merge pull request #396 from penpot/feature/beziers
Bezier curves
2020-11-24 13:56:23 +01:00
alonso.torres
25fe4f1269 ♻️ Fixes after review 2020-11-24 13:52:59 +01:00
alonso.torres
b37ee0fcac Adds comments cursor 2020-11-24 08:35:01 +01:00
alonso.torres
b66b0cb431 Close paths and internals refactor 2020-11-24 08:15:54 +01:00
alonso.torres
f339f1ee98 Migrates model to the new paths 2020-11-23 17:44:02 +01:00
alonso.torres
e2593c2dad ♻️ Removed curves shapes 2020-11-23 17:44:02 +01:00
alonso.torres
55b71a111b 🐛 Fixes problems with transforms 2020-11-23 17:44:02 +01:00
alonso.torres
b1c786077b Path create-edit workflow 2020-11-23 17:44:02 +01:00
alonso.torres
8db7078ce8 Path edition mode 2020-11-23 17:44:01 +01:00
alonso.torres
275f6e3dc2 🎉 Improved reusability of drawing functions 2020-11-23 17:44:01 +01:00
alonso.torres
05366eac6f Snap for beziers 2020-11-23 17:44:01 +01:00
alonso.torres
d8ab3473bf Calculate selrect for bezier curves 2020-11-23 17:44:01 +01:00
alonso.torres
f3cce1904c First version drawing beziers 2020-11-23 17:44:01 +01:00
alonso.torres
af68c26aea ♻️ Refactor transforms 2020-11-23 17:44:01 +01:00
alonso.torres
2c50bb16dc ♻️ Refactor geom/shapes.cljc 2020-11-23 17:44:01 +01:00
alonso.torres
10a24d68c9 ♻️ Refactor drawing effects 2020-11-23 17:44:01 +01:00
alonso.torres
67ed1d89ac Adds path parser 2020-11-23 17:44:01 +01:00
alonso.torres
d25dbfb09b ♻️ Refactor drawing actions 2020-11-23 17:44:01 +01:00
Andrey Antukh
f170c7546b 🐛 Fix other unexpected memoization on viewer header. 2020-11-23 17:43:06 +01:00
Andrey Antukh
76df21083e 🐛 Fix unexpected memoization on viewer header. 2020-11-23 17:43:06 +01:00
Andrey Antukh
cc667d63cd 🐛 Add autofocus on comment creation input. 2020-11-23 17:43:06 +01:00
Andrey Antukh
061fdcd5bd 🐛 Fix many issues relted to comments on viewer. 2020-11-23 17:43:06 +01:00
Andrey Antukh
013c866137 Simplify users loading on dashboard and workspace.
And fix some issues on teams settings page.
2020-11-23 17:43:06 +01:00
Andrey Antukh
2dafbeddb0 📎 Minor code cleaning on workspace header components. 2020-11-23 17:43:06 +01:00
Andrey Antukh
45f17f78f3 🐛 Force persist operation on go-viewer clicked. 2020-11-23 17:43:06 +01:00
Andrey Antukh
686f96eb27 🐛 Properly pass users to comments component on workspace. 2020-11-23 17:43:06 +01:00
Andrey Antukh
9f9f146444 📎 Minor cosmetic changes on comments ui code. 2020-11-23 17:43:06 +01:00
Andrey Antukh
d862406b44 🐛 Don't show/allow update or delete comments to not owners. 2020-11-23 17:43:06 +01:00
Andrey Antukh
17de1414ef 🔥 Remove prn traces. 2020-11-23 17:43:06 +01:00
Andrey Antukh
0e43fb3f06 📎 Minor cosmetic changes. 2020-11-23 17:43:06 +01:00
Andrey Antukh
742af4e066 🎉 Add comments to dashboard. 2020-11-23 17:43:06 +01:00
Andrey Antukh
420294aef4 🐛 Properly redirect to login on unauthorized request. 2020-11-23 17:43:06 +01:00
Andrey Antukh
fa0e0af5b9 Simplify trim-file task implementation. 2020-11-23 17:43:06 +01:00
Andrey Antukh
6800adfaa4 📚 Add some documentation comments to some tasks. 2020-11-23 17:43:06 +01:00
Andrey Antukh
f5967c3c0a 🔥 Add a migration for remove unused tables. 2020-11-23 17:43:06 +01:00
Andrey Antukh
fca48e39ee Make file to library link idempotent.
And remove unused api calls.
2020-11-23 17:43:06 +01:00
Andrey Antukh
b2957c5f35 🔥 Remove unused media related api. 2020-11-23 17:43:06 +01:00
Andrey Antukh
b71d5d26a6 🐛 Fix logout. 2020-11-23 17:43:06 +01:00
Andrey Antukh
64a6ba1949 🎉 Add comments to viewer. 2020-11-23 17:43:06 +01:00
Andrey Antukh
e1db6d3a37 Merge pull request #392 from penpot/text-options-ui
Text options ui & bug fixing
2020-11-23 15:17:14 +01:00
elhombretecla
ceed926274 🐛 Fix visual bugs 2020-11-18 15:41:05 +01:00
elhombretecla
a22ec43cf2 🎉 Text design new layout 2020-11-18 15:25:03 +01:00
alonso.torres
08589889fd Layout changes 2020-11-18 13:36:37 +01:00
Andrey Antukh
6e57d93f74 🎉 Add polyfill to requestIdleCallback (not supported on safari). 2020-11-16 11:30:59 +01:00
Andrey Antukh
9bd393c159 Merge pull request #390 from penpot/ui-polishing
🎉 UI polishing
2020-11-13 16:21:54 +01:00
elhombretecla
5f4d1b9e10 📎 Just wording 2020-11-13 16:21:18 +01:00
elhombretecla
a90f3f2176 🎉 Add new libraries assets icon 2020-11-13 16:21:13 +01:00
elhombretecla
ac9622ac07 🐛 Fix firefox flex bugs 2020-11-13 16:21:08 +01:00
elhombretecla
619e51d258 🎉 Change status new style. 2020-11-13 16:20:48 +01:00
elhombretecla
6f9cf454a2 🐛 Fix dashboard options item icon. 2020-11-13 16:20:39 +01:00
elhombretecla
385616f3df 🎉 Add new visual changes 2020-11-13 16:20:32 +01:00
elhombretecla
5dc646e44e Add color bullet changes 2020-11-13 16:20:18 +01:00
elhombretecla
447293bc4e 🐛 Fix tooltips and modals. 2020-11-13 16:19:53 +01:00
Andrey Antukh
e9dba06600 Merge branch 'ryfow-patch-1' into develop 2020-11-13 16:02:39 +01:00
Ryan Fowler
0f7773882a 📚 Fix typo in readme. 2020-11-13 16:01:57 +01:00
Andrey Antukh
1ffdb41cfc 🐛 Add data migration for ensure proper types on group like shapes.
Becuse of a bug, the `:shapes` attribute on group like objects
had become to seq when they should be a vector. The real fix is already
in other commit. This commit adds a migration for address the old
data already stored in the database.
2020-11-13 14:47:34 +01:00
Andrey Antukh
24f0a3945d 🐛 Temporal workaround. 2020-11-13 12:44:35 +01:00
Andrey Antukh
bf7cfef355 🐛 Fix unaligned share-token dropdown. 2020-11-13 12:11:49 +01:00
Andrey Antukh
48663eacdc 🐛 Fix incorrect type handling on group operation.
And improve specs related to group attrs.
2020-11-13 11:55:28 +01:00
Andrey Antukh
388d255243 🐛 Properly handle share-tokens on viewer. 2020-11-13 11:55:28 +01:00
alonso.torres
51f9dfbc4f 🐛 Fixed port problem 2020-11-13 09:30:05 +01:00
Andrey Antukh
e5ea8bf302 🎉 Include sprite inline in a template. 2020-11-12 14:00:50 +01:00
Andrey Antukh
4ad08a7449 🎉 Add socket repl. 2020-11-12 14:00:50 +01:00
alonso.torres
29180e4196 🐛 Fixed measurement problem in handoff 2020-11-12 13:14:06 +01:00
Andrey Antukh
3dc4893cf1 Merge branch 'develop' 2020-11-11 16:53:41 +01:00
Andrey Antukh
c05e377d16 🐛 Fix unexpected issues on gulpfile. 2020-11-11 16:37:47 +01:00
Andrey Antukh
58585a6521 🐛 Remove unused config generation on gulpfile. 2020-11-11 16:09:19 +01:00
Andrey Antukh
0221cc06f8 🐛 Set proper order of email parts. 2020-11-11 14:48:01 +01:00
Andrey Antukh
1db1bd03f5 🐛 Fix incorrect env vars parsing on config module. 2020-11-11 14:17:59 +01:00
Andrey Antukh
b22b77a39e 🐛 Properly include emails on the bundle. 2020-11-11 13:52:31 +01:00
Andrey Antukh
ef01caf829 🐛 Fix sendmail to console unexpected exception. 2020-11-11 13:34:06 +01:00
Andrey Antukh
c3ca59ac93 🐛 Fix devenv nginx config. 2020-11-11 12:55:59 +01:00
Andrey Antukh
10f146883a 🐛 Add missing ::redis-uri to config spec. 2020-11-11 12:39:45 +01:00
Andrey Antukh
bdfd0d38b8 🐛 Fix default redis uri on config module. 2020-11-11 12:37:53 +01:00
Andrey Antukh
1061d96fde 🐛 Fix default config values and config loading. 2020-11-11 12:28:39 +01:00
Andrey Antukh
15545d0b2f Minor fixes. 2020-11-11 11:04:10 +01:00
Andrey Antukh
5b9c596170 ♻️ Refactor email sending subsystem. 2020-11-11 11:04:10 +01:00
Andrey Antukh
132e99ab71 🎉 Rename to penpot all devenv docker related files. 2020-11-11 11:04:10 +01:00
Andrey Antukh
3cd0d9636f 🎉 Rename fixture usernames. 2020-11-11 11:04:10 +01:00
Andrés Moya
96e6ba77be Rename component root when renaming a component 2020-11-06 09:29:13 +01:00
elhombretecla
47b166536e Fix Components grid and text-size input 2020-11-06 08:03:03 +01:00
Andrés Moya
f4374c5046 🐛 Take into account indirect libraries 2020-11-05 17:50:26 +01:00
elhombretecla
715b7ba13e New login img 2020-11-05 11:40:59 +01:00
alonso.torres
a947a53aa2 Merge branch 'polishing' 2020-11-05 10:19:01 +01:00
elhombretecla
692f84bd14 Review profile dropdown 2020-11-05 09:55:35 +01:00
elhombretecla
75b34c9b98 Fix UI icons 2020-11-05 09:07:17 +01:00
Andrés Moya
1823ecda40 🎉 Allow to rename a component in the library 2020-11-04 17:14:52 +01:00
Andrés Moya
fd1f42dc94 🐛 Fix initialize layout 2020-11-04 14:56:58 +01:00
elhombretecla
1bb4511dd3 Add new workspace icons 2020-11-04 13:10:43 +01:00
alonso.torres
b3fee39433 Show measures on workspace when pressed "ALT" 2020-11-04 11:37:00 +01:00
alonso.torres
3ccb52735f Adds exports to handoff 2020-11-04 11:37:00 +01:00
elhombretecla
9d095d2acb Change email templates to Penpot 2020-11-04 11:13:02 +01:00
elhombretecla
2588edf88c Add new mail icon 2020-11-04 09:36:20 +01:00
elhombretecla
9bd042dee0 Chanage dashboard sidebar 2020-11-04 08:59:55 +01:00
elhombretecla
fd1d564f03 Fix grid gaps 2020-11-03 19:44:01 +01:00
elhombretecla
444491f577 Fix dropdowns size 2020-11-03 19:15:39 +01:00
elhombretecla
a2ecc1bdb6 Fix Components grid and text-size input 2020-11-03 19:04:09 +01:00
Andrés Moya
75202fdcba 🐛 Fix layout initialization 2020-11-03 14:05:25 +01:00
Andrés Moya
d847c607e3 🎉 Allow to show master component in assets panel 2020-11-03 14:05:25 +01:00
Andrés Moya
02207dedf3 🎉 Show master component in options 2020-11-03 14:05:25 +01:00
alonso.torres
8ae52be773 Add library names to handoff views 2020-11-03 11:54:54 +01:00
alonso.torres
833a53f131 Improvements in the handoff 2020-11-03 11:54:54 +01:00
Andrés Moya
7a80297d31 🐛 Fix position bug when syncing component with several nested 2020-10-30 09:47:24 +01:00
alonso.torres
6feccd5e36 🐛 Fixes problem with css generation. 2020-10-30 09:45:52 +01:00
alonso.torres
96098be5ae SVG generation first version 2020-10-30 09:45:52 +01:00
alonso.torres
28f90da70e CSS code generation first draft 2020-10-30 09:45:52 +01:00
alonso.torres
5d6b07f2a7 Adds highlightjs dependency. 2020-10-30 09:45:52 +01:00
Andrés Moya
486f2b6ba5 Allow create nested component directly 2020-10-30 09:42:06 +01:00
Andrés Moya
8165fec50e 🎉 Allow to duplicate a component 2020-10-29 16:16:47 +01:00
alonso.torres
03c8b42296 Adjustments to measurement guides 2020-10-29 13:42:21 +01:00
Andrés Moya
8afe037def 📚 Add logger comments to component synchronization 2020-10-29 11:33:41 +01:00
Andrés Moya
c38d0e3211 Rework nested components to avoid indirect references 2020-10-29 11:33:41 +01:00
alonso.torres
14d10af9b8 Measurements in handoff mode 2020-10-29 09:37:43 +01:00
elhombretecla
25686eeba1 New logo and bg at login 2020-10-28 15:10:03 +01:00
elhombretecla
2960908109 Update README.md 2020-10-28 12:11:25 +01:00
alonso.torres
c2aa0b97ee 🐛 Fixes minor problems with team settings 2020-10-28 11:08:42 +01:00
alonso.torres
34a9b852ef 🐛 Fixes problems with collaboration cursors 2020-10-28 11:08:42 +01:00
alonso.torres
a6f9678d63 ⬆️ Change Penpot in html title 2020-10-28 10:46:21 +01:00
alonso.torres
5d2b8ba2ac 🐛 Fixes problem with palette. 2020-10-28 10:46:21 +01:00
alonso.torres
1706d13448 🎉 Adds context menus texts into translations 2020-10-28 10:46:21 +01:00
alonso.torres
33908413d6 🐛 Fixes problem with scrollIntoView 2020-10-28 10:46:21 +01:00
alonso.torres
f4af0b0420 🐛 Removes outline for blocked shapes 2020-10-28 10:46:21 +01:00
alonso.torres
48ae26d08a 🐛 Fixes whitespaces not showing in text shape 2020-10-28 10:46:21 +01:00
alonso.torres
104ce0967c Keeps position when paste in selected frame 2020-10-28 10:46:21 +01:00
alonso.torres
d1437997d2 🐛 Fixes problem with inside-frame calculations 2020-10-28 10:46:21 +01:00
alonso.torres
4adb79e869 🐛 Fixes problem with colorpicker libraries 2020-10-28 10:46:21 +01:00
alonso.torres
d01921cd61 Allow enter to confirm dialog. 2020-10-28 10:46:21 +01:00
alonso.torres
dc6b476c57 🐛 Fixes problem when editing projects in dashboard. 2020-10-28 10:46:21 +01:00
alonso.torres
db9364a57b Adds cut shortcut. 2020-10-28 10:46:21 +01:00
alonso.torres
198bc8f9a1 🐛 Fixed create file in project page. 2020-10-28 10:46:21 +01:00
alonso.torres
8fa0a039c4 📚 Updated docs to Penpot 2020-10-28 09:36:20 +01:00
alonso.torres
154b58057a ⬆️ Rename to Penpot. 2020-10-28 07:42:43 +01:00
alonso.torres
ffbbc52460 🎉 Fixes after review. 2020-10-27 11:29:08 +01:00
alonso.torres
f1ee1b55b7 Formated locales.json. 2020-10-27 11:29:08 +01:00
alonso.torres
27322bcad6 Selection rect for shapes. 2020-10-27 11:29:08 +01:00
alonso.torres
b52289860f Adds multiselection attributes 2020-10-27 11:29:08 +01:00
alonso.torres
d6573c2bcc Adds copy properties. 2020-10-27 11:29:08 +01:00
alonso.torres
1e48221d7b Information panels 2020-10-27 11:29:08 +01:00
alonso.torres
04f620ec00 Handsoff mode basic structure. 2020-10-27 11:29:08 +01:00
alonso.torres
aaaf099a3f 🐛 Fixes problems with pages in workspace. 2020-10-27 11:20:24 +01:00
alonso.torres
c5e617271c ⬆️ Upgrades to react 17.0.1 2020-10-27 08:43:05 +01:00
alonso.torres
556061ff52 ⬇️ Reverting upgrade to react 17 2020-10-26 11:08:33 +01:00
Andrey Antukh
03fec6056f ⬆️ Update dockerfile. 2020-10-23 15:17:18 +02:00
Andrey Antukh
d59622cd5f ♻️ Refactor workspace initialization.
And fix comment positioning when coment is
in a different page.
2020-10-23 15:17:18 +02:00
Andrey Antukh
3379eed38e ♻️ Refactor layout flags handling. 2020-10-23 15:17:18 +02:00
Andrey Antukh
560ad5b280 🐛 Minor unexpected exception fix on logging module. 2020-10-23 15:17:18 +02:00
Andrey Antukh
ff9345b1db 🐛 Unselect drawing tool on clicking on comments. 2020-10-23 15:17:18 +02:00
Andrey Antukh
a86f198406 🐛 Fix scrollbar on comment thread. 2020-10-23 15:17:18 +02:00
Andrey Antukh
bf8e61b9bb 🐛 Deactivate comments on drawing. 2020-10-23 15:17:18 +02:00
Andrey Antukh
52532253c3 📚 Add documentation for logging framework. 2020-10-23 15:17:18 +02:00
Andrey Antukh
21a6de02d8 🎉 Add logging framework to frontend. 2020-10-23 15:17:18 +02:00
Andrey Antukh
ded42707ab Improve backend bundle start script. 2020-10-23 15:17:18 +02:00
Andrey Antukh
919a045088 ⬆️ Upgrade devenv. 2020-10-23 15:17:18 +02:00
elhombretecla
c2b6e8610b Fix comments font-size and gaps 2020-10-22 11:00:09 +02:00
Andrey Antukh
7d074678bf Update 01-Development-Environment.md 2020-10-21 18:23:47 +02:00
alonso.torres
6b240da892 Adds blur effect for shapes 2020-10-21 14:29:41 +02:00
Andrey Antukh
ca83e13802 🎉 Initial work on comments subsystem.
Only workspace part; missing viewer and dashboard.
2020-10-21 13:18:26 +02:00
Andrey Antukh
36abc4646a 🐛 Properly use RAF scheduler on ResizeObsever. 2020-10-21 13:18:26 +02:00
Andrey Antukh
6448592929 Improve error reporting on frontend. 2020-10-21 13:18:26 +02:00
Andrey Antukh
046ee7e475 🎉 Add neested transaction handling helpers (savepoints). 2020-10-21 13:18:26 +02:00
Andrey Antukh
a783a77404 🎉 Add pgarray and pgpoint helpers to db namespace. 2020-10-21 13:18:26 +02:00
Andrey Antukh
4705656d29 📎 Minor changes on scss code style on framework.scss. 2020-10-21 13:18:26 +02:00
Andrey Antukh
9f917603d8 ⬆️ Update frontend deps. 2020-10-21 13:18:26 +02:00
Andrey Antukh
5876927505 🎉 Add function instrumentation helper and improve assertion exceptions. 2020-10-21 13:18:26 +02:00
Andrey Antukh
f57941fd7c Add better exception macros (ignoring and try). 2020-10-21 13:18:26 +02:00
Andrés Moya
823aa426ed Expand mask when selected in workspace 2020-10-21 09:41:35 +02:00
Andrés Moya
0ddf6d30b8 Make selection rect only for the mask shape 2020-10-20 16:02:51 +02:00
Andrés Moya
b2ec9aa83a Make opaque masks by default 2020-10-20 16:02:51 +02:00
Andrés Moya
ccba95f541 🐛 Fix masking of texts shapes (within a foreignObject element) 2020-10-20 16:02:51 +02:00
Andrés Moya
4be7f054b7 🎉 Control when the mask of a group is moved or deleted 2020-10-20 16:02:51 +02:00
Andrés Moya
f9c45849c8 Enhance display of mask at layers panel 2020-10-20 16:02:51 +02:00
Andrés Moya
ee89b2e7f4 🎉 Allow masked groups 2020-10-20 16:02:51 +02:00
Andrés Moya
ad66955a54 🐛 Fix selection inside group with double click 2020-10-20 14:56:40 +02:00
elhombretecla
fd12724108 add new UI changes 2020-10-20 13:21:32 +02:00
alonso.torres
b8e47c87ba Visual redesign for undo history 2020-10-20 12:10:33 +02:00
elhombretecla
0e3c3ebfbd WIP UI dashboard changes 2020-10-20 11:48:17 +02:00
elhombretecla
6f58899f90 WIP UI changes 2020-10-20 11:31:24 +02:00
elhombretecla
65512d46c2 fix colopicker position 2020-10-19 14:28:11 +02:00
elhombretecla
c94d7f712a WIP ui changes 2020-10-19 14:22:28 +02:00
elhombretecla
49e678340b WIP ui grid changes 2020-10-19 14:07:59 +02:00
elhombretecla
80c1382593 fix text sizes 2020-10-19 13:33:34 +02:00
elhombretecla
5b56bdf94a add new font face 2020-10-19 13:19:30 +02:00
alonso.torres
9b2b16c066 Synchronize gradient colors libraries 2020-10-16 14:38:59 +02:00
Andrey Antukh
567e177699 Merge pull request #358 from uxbox/560/gradients
560/gradients
2020-10-16 11:47:11 +02:00
alonso.torres
57c93f80e2 Reusable shape container refactor 2020-10-16 11:40:49 +02:00
alonso.torres
447bb5204d Typographic styles enhancements and fixes 2020-10-16 11:01:22 +02:00
alonso.torres
5e299551b7 🐛 Fixes problem with library and colors 2020-10-16 08:25:11 +02:00
alonso.torres
f992c740d5 🐛 Fixed problem with recursive color changes for frames 2020-10-16 07:32:22 +02:00
alonso.torres
f8abcc1b9c Adds locale to new strings 2020-10-15 16:19:36 +02:00
alonso.torres
929d620c60 Fixes exports and preview 2020-10-15 15:48:57 +02:00
alonso.torres
e961492192 Improved handlers behaviour 2020-10-15 15:48:39 +02:00
alonso.torres
4bb832b597 Fixes issues with some shapes 2020-10-15 15:48:16 +02:00
alonso.torres
9f0a443b5c Fixes problems with pixel picker 2020-10-15 15:47:57 +02:00
alonso.torres
245c39b1f6 Integration with library new colors 2020-10-15 15:47:09 +02:00
alonso.torres
7d7008d405 Styles changes to color picker 2020-10-15 15:46:47 +02:00
alonso.torres
69fb1426d4 Changes to library model 2020-10-15 15:46:20 +02:00
alonso.torres
a412fc113d Color picker refactor 2020-10-15 15:46:00 +02:00
alonso.torres
c266f78d1e Gradients support in shapes 2020-10-15 15:45:35 +02:00
alonso.torres
381aef77ee Changes to the colorpicker to support gradients 2020-10-15 15:45:05 +02:00
Andrés Moya
a7335533bb 🐛 Fix stupid parenthesis :> 2020-10-15 11:54:29 +02:00
Andrés Moya
fcbcc6de95 Enhance confirm dialog cancel options 2020-10-15 11:32:14 +02:00
Andrés Moya
ef0126a6ae 🐛 Fix two copy bugs 2020-10-15 11:32:14 +02:00
Andrés Moya
3064000a2c Change copy texts and style of library dialogs 2020-10-15 11:32:14 +02:00
Andrey Antukh
3e14393c97 Merge pull request #354 from uxbox/task/732/update-subcomponent
Task/732/update subcomponent
2020-10-15 11:20:40 +02:00
Andrés Moya
a6d47cca10 Make some small fixes 2020-10-15 11:15:35 +02:00
Andrés Moya
68ca44188c Enhance synchronization of a component with subcomponents 2020-10-14 09:25:57 +02:00
Andrés Moya
7c75b75f5b ♻️ Refactor update master component function 2020-10-14 09:25:57 +02:00
Andrés Moya
a3eb634740 Preserve origin component in nested instances 2020-10-14 09:25:57 +02:00
Andrés Moya
42ba0d7b7a Fix default banner message position 2020-10-13 15:02:08 +02:00
Andrey Antukh
3f627cb132 Merge pull request #353 from uxbox/560/gradients
Gradients infrastructure, color picker with harmony and HSV sliders
2020-10-08 10:33:30 +02:00
Andrey Antukh
dad11ff490 Improve node version handling on testenv dockerfile. 2020-10-08 10:28:57 +02:00
Andrey Antukh
174952430e 🐛 Set proper style to settings header. 2020-10-08 10:28:57 +02:00
Andrey Antukh
d914ab1390 Update translation strings. 2020-10-08 10:28:57 +02:00
Andrey Antukh
2765883152 🐛 Fix styles on shared libraries section. 2020-10-08 10:28:57 +02:00
Andrey Antukh
41cb5196d1 Minor tweaks and updates on testenv. 2020-10-08 10:28:57 +02:00
Andrey Antukh
58db899a29 Minor tweaks on devenv. 2020-10-08 10:28:57 +02:00
alonso.torres
2c31b074c8 New options in color picker (harmony & hsv) 2020-10-08 08:04:46 +02:00
alonso.torres
08b537a158 Linear and radial gradient handlers 2020-10-07 14:23:46 +02:00
Andrey Antukh
8466c1c54d ⬆️ Update deps (performance improvements). 2020-10-06 13:34:23 +02:00
Andrey Antukh
142036891a 🎉 Add full teams administration. 2020-10-06 13:25:13 +02:00
Andrey Antukh
f6830b4b85 📎 Minor changes on devenv entrypoint script. 2020-10-06 13:25:13 +02:00
Andrey Antukh
e757c1b2d9 🐛 Fix uuid and keyword base specs. 2020-10-06 13:25:13 +02:00
Andrey Antukh
0a34aa6231 🎉 Add ex/ignoring macro. 2020-10-06 13:25:13 +02:00
Andrey Antukh
c85ae7dbdf 🔥 Remove unused code. 2020-10-06 13:25:13 +02:00
Andrey Antukh
03981628b8 Add additional impl for teams administration. 2020-10-06 13:25:13 +02:00
Andrey Antukh
f427c6f8b6 🎉 Add new approach to update http response from services. 2020-10-06 13:25:13 +02:00
Andrey Antukh
d4cb868503 🎉 Add invite to team email. 2020-10-06 13:25:13 +02:00
Andrey Antukh
8ea4ea23cc 🔥 Remove broken imports. 2020-10-06 13:25:13 +02:00
alonso.torres
12b4951994 Improved performance on moving and zooming 2020-10-06 12:07:43 +02:00
alonso.torres
96fbc83a0a Updating a library color updates texts that uses it 2020-10-05 11:07:12 +02:00
alonso.torres
e01e689f69 🐛 Fixed issues when asigning a color to a part of the text 2020-10-05 11:07:12 +02:00
alonso.torres
6f56a19390 🐛 Fixed problem when using colors from shared libs 2020-10-02 21:58:39 +02:00
Andrés Moya
272d023f3c Update colors and typographies inside components 2020-10-02 21:58:39 +02:00
alonso.torres
b97bbd10f0 🐛 Fix incorrect css 2020-10-02 14:41:04 +02:00
alonso.torres
59ae0b0f55 Scroll selected layer into view 2020-10-02 14:05:19 +02:00
alonso.torres
6d9155032f 🐛 Makes esc exit text edition and drawing shape at the same time 2020-10-02 14:05:19 +02:00
alonso.torres
d8e0bab4ad 🐛 Fixed problem when selecting groups 2020-10-02 12:41:36 +02:00
alonso.torres
e9bf3624b7 Review changes 2020-10-02 11:54:17 +02:00
alonso.torres
55c92da286 🐛 Fixes distance alignment 2020-10-02 11:54:17 +02:00
alonso.torres
3bb4fcb28f Improved dynaic alignment 2020-10-02 11:54:17 +02:00
Andrés Moya
f45d3f9c65 🐛 Fix assets search for typographies 2020-10-02 11:17:23 +02:00
alonso.torres
2c23b0e7f4 Changes name to typography collection 2020-10-02 11:14:39 +02:00
alonso.torres
f45845cf85 Adds internationalization to typography 2020-10-02 11:14:39 +02:00
alonso.torres
bd92936a64 Allows renaming when new typography and context menu 2020-10-02 11:14:39 +02:00
alonso.torres
5f650832e6 Adds multiple edition 2020-10-02 11:14:39 +02:00
alonso.torres
c28fce58f1 Mixed typographies for texts 2020-10-02 11:14:39 +02:00
alonso.torres
7248b168fa Adds synchronization for typography 2020-10-02 11:14:39 +02:00
alonso.torres
718a676fa8 Adds typography to libraries 2020-10-02 11:14:39 +02:00
Andrés Moya
4a4cff74e8 🐛 Do not activate viewport panning with space key on inputs 2020-10-01 14:07:13 +02:00
Andrey Antukh
4af113b133 🐛 Fix issue with google login. 2020-10-01 13:29:34 +02:00
Andrey Antukh
caa92ea413 🐛 Fix issue with google login. 2020-10-01 13:21:14 +02:00
Andrés Moya
c4ef2eaab3 🐛 Fix positioning a component instance after drag&drop 2020-09-30 18:19:53 +02:00
Andrés Moya
d5e70e51ba 📎 Allow to debug touched attibute 2020-09-30 18:19:53 +02:00
Andrés Moya
e26ba1fabd 🐛 Hide notification message when syncing a library 2020-09-30 18:19:53 +02:00
Andrés Moya
2cf15677cc ♻️ Use optimized concat function 2020-09-30 18:19:53 +02:00
Andrés Moya
483401f328 🎉 Allow nested components 2020-09-30 18:19:53 +02:00
Andrés Moya
736c9e7e8c 🐛 Fix working of undo when more than 50 entries 2020-09-30 18:05:01 +02:00
alonso.torres
20952e30da Update README 2020-09-30 11:00:58 +02:00
Andrey Antukh
4355d5ae80 🎉 Add nil-free hashmap factory macros. 2020-09-29 11:06:52 +02:00
Andrey Antukh
a4d6524cb6 Fix review issues. 2020-09-28 12:28:29 +02:00
Andrey Antukh
b3252ec2b2 ♻️ Refactor dashboard (add teams) 2020-09-28 12:28:29 +02:00
Andrés Moya
47d347f357 🐛 Fix behavior when an image upload fails 2020-09-28 11:04:33 +02:00
Andrés Moya
51a4232cf2 🎉 Synchronize library colors 2020-09-28 10:50:42 +02:00
Andrés Moya
880091a4f7 🎉 Update components leaving touched attrs 2020-09-28 10:23:14 +02:00
alonso.torres
5e73da4bca Adds shadows to texts 2020-09-28 10:02:29 +02:00
alonso.torres
b8fbe65d36 🐛 Fixes problem with export SVG 2020-09-25 10:38:47 +02:00
Andrey Antukh
f78bd11cec Merge pull request #337 from uxbox/327/shadow_filters
327/shadow filters
2020-09-25 09:15:38 +02:00
alonso.torres
f6870a2fee Review improvements 2020-09-25 09:13:50 +02:00
alonso.torres
7950cc07c1 🐛 Fix shift+click on the palette 2020-09-24 21:42:30 +02:00
alonso.torres
92db554ae7 Adds i18n for shadow options menu 2020-09-24 21:30:36 +02:00
alonso.torres
091de20934 🐛 Fixes problem with width/height 2020-09-24 21:16:03 +02:00
alonso.torres
215c4fdb56 Adds inner shadow filter 2020-09-24 21:16:03 +02:00
alonso.torres
64c0884eb9 Adds support for drop shadow 2020-09-24 21:16:03 +02:00
Andrés Moya
23b53faac7 🐛 Fix standard notification messages 2020-09-24 15:39:04 +02:00
Andrés Moya
e55f33d48d 🐛 Fix error when updating a library without components 2020-09-24 10:23:50 +02:00
alonso.torres
747b4e9600 🐛 Fixes color picker when SVG contained special characters 2020-09-23 23:59:13 +02:00
alonso.torres
e1ff33f84e 🐛 Fixes problems with color picker texts 2020-09-23 23:59:13 +02:00
alonso.torres
94470dd1fe 🐛 Fixed image upload problems 2020-09-23 16:45:43 +02:00
alonso.torres
d5545fadaf 🐛 Fixes small problem with palette styles 2020-09-23 13:07:42 +02:00
alonso.torres
380f069822 Add rename to workspace files and navigation to project 2020-09-23 13:06:22 +02:00
Andrés Moya
9873ac9104 🎉 Allow to ignore updates, and do it later in libraries dialog 2020-09-23 11:03:45 +02:00
Andrés Moya
ae61ce05c9 🎉 Refactor notifications and ask user for updates 2020-09-23 11:03:45 +02:00
Andrés Moya
3b516aa139 🎉 Notify shared files clients for update 2020-09-23 11:03:45 +02:00
alonso.torres
494cd1e96c Review fixes 2020-09-23 10:51:06 +02:00
alonso.torres
cd151db5ee 🐛 Fixed problem with zoom and with value = 0 2020-09-23 10:51:06 +02:00
alonso.torres
d17c6d8fce 🐛 Problem with resize 0 2020-09-23 10:51:06 +02:00
alonso.torres
0545e7cb28 Fixed undo/redo for automatic text adjustments 2020-09-23 10:51:06 +02:00
alonso.torres
a227a0fe21 Allows paste plain text into worskpace 2020-09-23 10:51:06 +02:00
alonso.torres
bd31e5742f 🐛 Fixed problem with selrect 2020-09-23 10:51:06 +02:00
alonso.torres
df70cd5c50 Improvements over text shape 2020-09-23 10:51:06 +02:00
alonso.torres
62a2713c03 Calculate resize when a text property changes 2020-09-23 10:51:06 +02:00
alonso.torres
abdd4d68d5 Allows auto-width and auto-height for text layouts 2020-09-23 10:51:06 +02:00
Andrés Moya
9c61c52dc5 📚 Improve frontend debugging documentation 2020-09-23 09:40:30 +02:00
Andrey Antukh
55cfe10fd8 🐛 Fix fixtures loading. 2020-09-22 11:52:09 +02:00
Andrey Antukh
3e0b0ee069 ⬆️ Update dependencies and devenv. 2020-09-21 17:05:55 +02:00
Andrey Antukh
7d9fdc34be ♻️ Refactor email validations & tokens service. 2020-09-21 17:05:55 +02:00
Andrey Antukh
dda6a96407 ♻️ Refactor migrations. 2020-09-21 17:05:55 +02:00
Andrey Antukh
1b598e2f6d 🎉 Add save indicator.
And improve persistence loop error handling.
2020-09-18 09:06:05 +02:00
alonso.torres
9755516178 🐛 Improvements over grid precision 2020-09-17 18:44:59 +02:00
alonso.torres
3a1618451c 🐛 Fixes counters in libraries popup 2020-09-17 18:44:59 +02:00
alonso.torres
51697c63dd 🐛 Fixes zoom when left sidebar collapsed 2020-09-17 18:44:59 +02:00
alonso.torres
609eb4f342 🐛 Fixes dashboard file search 2020-09-17 16:12:04 +02:00
alonso.torres
558bcc07b2 🐛 Fixed problem when create a shape with click 2020-09-17 16:12:04 +02:00
alonso.torres
e860f9d62b 🐛 Minor typos in menu 2020-09-17 16:12:04 +02:00
alonso.torres
f3477fefa5 🐛 Fixed problems with preview 2020-09-17 16:12:04 +02:00
alonso.torres
432a139f35 🐛 Fixes problem with picker data 2020-09-17 16:12:04 +02:00
Andrey Antukh
d0f403e7df Reduce jvm heap usage on frontend and exporter. 2020-09-17 10:43:05 +02:00
alonso.torres
50ef7a8c73 :fix: Problem with opacity fill 2020-09-17 10:30:15 +02:00
Andrey Antukh
0f5ce3b836 Merge pull request #311 from uxbox/us/447/components
Us/447/components
2020-09-16 16:29:34 +02:00
alonso.torres
ff00550372 🐛 Fixes interactions in groups 2020-09-16 16:26:38 +02:00
alonso.torres
09c8920293 🐛 Fixes problem with left sidebar 2020-09-16 16:26:38 +02:00
Andrés Moya
e2dec81699 ♻️ Fix some comments 2020-09-16 16:23:48 +02:00
Andrés Moya
63c9e80ed4 🎉 Update relative position of shapes inside component 2020-09-16 16:09:42 +02:00
Andrés Moya
47a8da43dc 🎉 Display selection and controls in color for components 2020-09-16 16:09:42 +02:00
Andrés Moya
1ad9a7f82f 🎉 Link with components of other files 2020-09-16 16:09:42 +02:00
Andrés Moya
f837bad894 🎉 Update master component 2020-09-16 16:09:42 +02:00
Andrés Moya
917643489f 🎉 Synchronize page with a library 2020-09-16 16:09:41 +02:00
Andrés Moya
5e585201d3 🎉 Create reusable components 2020-09-16 16:09:41 +02:00
Andrey Antukh
8396357f36 💄 Cosmetic changes on snap-points ns. 2020-09-16 14:05:04 +02:00
Andrey Antukh
da1179f628 Minor performance changes on snap-distances ns. 2020-09-16 14:04:38 +02:00
Andrey Antukh
2976bc4e5c Minor cosmetic changes in ref definition. 2020-09-16 14:04:11 +02:00
alonso.torres
9bb3e68d05 🐛 Fixed performance problem 2020-09-16 13:54:15 +02:00
alonso.torres
2660e914fc 🐛 Fixes problem with picker 2020-09-16 13:54:15 +02:00
alonso.torres
8732407a7f 🐛 Fixes problem when picker is outside screen bounds 2020-09-16 13:54:15 +02:00
Andrey Antukh
43fccd17b4 🐛 Fix wrong limit handling on undo. 2020-09-16 12:17:00 +02:00
alonso.torres
0b5ae3632e Undo transactions to batch changes 2020-09-16 11:04:53 +02:00
alonso.torres
a70e4eeb01 🐛 Fixed problem with picker delay 2020-09-16 10:52:57 +02:00
Andrey Antukh
3a135c626d 🐛 Adapt file specs. 2020-09-16 10:51:11 +02:00
Andrey Antukh
bdefe0d04e ⬆️ Adapt some changes to latest version of buddy-hashers. 2020-09-16 10:51:11 +02:00
Andrey Antukh
d80c1f2bfb Set default email backend to console on devenv. 2020-09-16 10:51:11 +02:00
Andrey Antukh
b879860833 Normalize password derivation. 2020-09-16 10:51:11 +02:00
Andrey Antukh
7c068621cf ♻️ Replace internal crypto/pbkd with buddy. 2020-09-16 10:51:11 +02:00
alonso.torres
28da2406d3 🐛 Fixes problem with undo/redo 2020-09-15 11:57:57 +02:00
Andrey Antukh
50321895e5 🐛 Fix proportion locking. 2020-09-14 17:16:50 +02:00
Andrey Antukh
a33689cbae 🔥 Remove deprecated code. 2020-09-14 17:16:50 +02:00
Andrey Antukh
51541303a6 🔥 Remove unused code. 2020-09-14 17:16:50 +02:00
Andrey Antukh
65b579c6b6 🔥 Remove unused code. 2020-09-14 17:16:50 +02:00
Andrey Antukh
1bde48730c 🐛 Only add undo entry when undo changes is not empty. 2020-09-14 17:16:50 +02:00
Andrey Antukh
a1b709a9fd 🎉 Add maintenance tasks. 2020-09-14 17:16:50 +02:00
alonso.torres
8dc3165e54 🐛 Fixes problems with saved grids 2020-09-14 16:15:55 +02:00
alonso.torres
0b4887ed96 Fixes picker for groups 2020-09-14 15:22:51 +02:00
Andrey Antukh
3a4ef73f06 🐛 Fix text shape impl (unexpected exception on prod build). 2020-09-14 13:09:51 +02:00
alonso.torres
88763d236a Restores border radius to color elements 2020-09-14 12:46:46 +02:00
alonso.torres
a3419312d7 Improves assets sidebar scroll 2020-09-14 12:41:03 +02:00
alonso.torres
4f7603a0a4 Improved colorpicker handling 2020-09-14 11:27:31 +02:00
Andrey Antukh
c036543487 🐛 Add proper constraint to integer values on file specs. 2020-09-14 11:26:24 +02:00
Andrey Antukh
065fc157bf 🎉 Add team-id channel subscriptions. 2020-09-14 11:26:24 +02:00
Andrey Antukh
60b241e867 🔥 Remove unused code. 2020-09-14 11:26:24 +02:00
alonso.torres
0dbcfcbc0b Improves the text-size input 2020-09-14 11:16:18 +02:00
alonso.torres
7c1b3d1b85 Click on library to change color 2020-09-14 11:16:18 +02:00
alonso.torres
01f38d5cea 🐛 Fixes problem with picker 2020-09-11 13:01:52 +02:00
alonso.torres
1bb056cbdb 🐛 Fixes add fill to text shapes 2020-09-11 12:44:07 +02:00
alonso.torres
5abc6e3252 🐛 Fixes problem with thumbnails in preview 2020-09-11 12:24:54 +02:00
alonso.torres
aa2a09e073 🐛 Fixes paste images to viewport 2020-09-11 12:08:00 +02:00
alonso.torres
e0b6e74e5d 🐛 Fixed interactions 2020-09-11 11:25:55 +02:00
alonso.torres
549370e5f5 🐛 Fixes hover on color palette 2020-09-11 10:58:29 +02:00
alonso.torres
a4bb162090 🐛 Fixes error with colorpicker 2020-09-11 10:54:23 +02:00
alonso.torres
147ccd176a 🐛 Fixes problem with context-menu on colors 2020-09-11 10:54:10 +02:00
alonso.torres
b5a875c03b 🐛 Fixes problem when adding stroke 2020-09-11 10:53:14 +02:00
alonso.torres
d6fc98c70b Changes after review 2020-09-11 09:54:15 +02:00
alonso.torres
e737ec0311 🎉 Refactor, performance improvements 2020-09-11 09:54:15 +02:00
alonso.torres
726cdb9a27 🎉 Picker shortcut 2020-09-11 09:54:15 +02:00
alonso.torres
f8b3baef3f 🎉 Pixel picker 2020-09-11 09:54:15 +02:00
Andrey Antukh
8aad43883f Minor code fixes. 2020-09-11 09:42:53 +02:00
Andrey Antukh
91aa8862ff 🎉 Add testenv. 2020-09-11 09:42:53 +02:00
Andrey Antukh
ab35716ba2 🐛 Fix many issues on dev environment. 2020-09-11 09:42:53 +02:00
alonso.torres
a0627efffe 🎉 Picker color palettes interactions 2020-09-08 13:14:49 +02:00
alonso.torres
568f7f5b3d 🐛 Review fixes 2020-09-07 12:25:38 +02:00
alonso.torres
73dbad9c58 🎉 Changes options to display the color name 2020-09-07 12:25:38 +02:00
alonso.torres
6c74f74bb5 ♻️ Removes react-color dependency 2020-09-07 12:25:38 +02:00
alonso.torres
ab7fee50ea 🎉 Color picker integration with library 2020-09-07 12:25:38 +02:00
alonso.torres
12a2b35b28 🎉 New colorpicker 2020-09-07 12:25:38 +02:00
Andrey Antukh
4e694ff194 ♻️ Refactor file persistence layer. 2020-09-07 11:39:57 +02:00
Mathieu Brunot
182afedc54 ✏️ Fix 'tooken' typo 2020-09-07 09:55:11 +02:00
Vitaly Kornilov
e926dc2918 ✏️ Log message typo)
Co-authored-by: Mathieu Brunot <mathieu.brunot@monogramm.io>
2020-09-07 09:52:54 +02:00
Vitaly Kornilov
7b4abe4b67 ✏️ Log message typo
Co-authored-by: Mathieu Brunot <mathieu.brunot@monogramm.io>
2020-09-07 09:52:54 +02:00
Vitaly Kornilov
da0a63a449 🌐 Login with Gitlab button label 2020-09-07 09:52:54 +02:00
Vitaly Kornilov
3a430a749e 📝 Login with Gitlab env variables guide 2020-09-07 09:52:54 +02:00
Vitaly Kornilov
cc1353300e Login with Gitlab 2020-09-07 09:52:54 +02:00
elhombretecla
dcd7e0b3cc Change library icon 2020-08-26 10:30:26 +02:00
Andrey Antukh
b57c20ebb6 🐛 Minor fixes on testing config.
Related to renaming.
2020-08-24 12:51:05 +02:00
Andrey Antukh
51e7ffb959 Minor changes on worker code. 2020-08-21 11:03:38 +02:00
Andrey Antukh
5f338921cf 🐛 Fix single text shape rendering. 2020-08-19 17:26:16 +02:00
Andrey Antukh
5440778957 🐛 Fix text rendering on svg export. 2020-08-19 17:22:37 +02:00
Andrey Antukh
27b4e483f0 🐛 Handle NaN on shape transformations. 2020-08-19 17:22:03 +02:00
Andrey Antukh
271ba51951 :fix: Add pointer cursor to buttons on libraries modal. 2020-08-19 13:08:16 +02:00
Andrey Antukh
7ab7a87a88 Adapt frontend code to backend changes. 2020-08-19 13:06:03 +02:00
Andrey Antukh
e3faddeb6b ⬆️ Update potok dependency. 2020-08-19 13:05:38 +02:00
Andrey Antukh
5ae1b72943 🐛 Fix files, projects and shared-files queries. 2020-08-19 13:04:37 +02:00
Andrey Antukh
fc01690315 Improve internal error response data structure. 2020-08-19 13:04:02 +02:00
Andrey Antukh
56237671ed 🐛 Properly raise not found exception on get-by-id helper. 2020-08-19 13:03:37 +02:00
Andrey Antukh
5a2ba515b8 🐛 Fix bug in fixtures (intoduced in renaming). 2020-08-19 13:03:13 +02:00
Andrey Antukh
3789adde80 🔥 Remove unused lines from manage.sh script. 2020-08-19 11:19:52 +02:00
Andrey Antukh
6f90abbf52 🐛 Fix wrong reference to uxbox icon. 2020-08-19 11:19:34 +02:00
Andrey Antukh
9159f18982 🐛 Fix fixtures loading on start-dev script. 2020-08-18 19:46:28 +02:00
Andrey Antukh
c2fe4b0ccc 📚 Update documentation. 2020-08-18 19:40:49 +02:00
Andrey Antukh
6c67c3c71b ♻️ Make the namespacing independent of the branding. 2020-08-18 19:32:11 +02:00
Andrey Antukh
aaf8b71837 🔥 Fix incorrect deps.edn 2020-08-18 18:48:52 +02:00
Andrey Antukh
9d8282e1be Minor change on backend initialization. 2020-08-18 18:46:39 +02:00
Andrey Antukh
7dd9e8763b Minor improvements on logging. 2020-08-18 18:38:49 +02:00
Andrey Antukh
1118a995e2 Improve dynamic configuration handling. 2020-08-18 17:16:23 +02:00
Andrey Antukh
fb910a24e1 🔥 Remove the need of static (build time) configuration. 2020-08-18 16:33:12 +02:00
Andrey Antukh
2746d598b0 Improve command line helpers. 2020-08-17 15:15:23 +02:00
Andrey Antukh
c0cd0d4a23 🎉 Add media-object lifecycle handling. 2020-08-17 14:28:35 +02:00
mathieu.brunot
93aaa52e73 📚 Add GitHub PR template
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-08-17 09:36:27 +02:00
Andrés Moya
8fbc54e03c 🐛 Fix issue in workspace sidebar scroll (check it in assets) 2020-08-17 09:35:25 +02:00
Andrés Moya
9d416cae4c 🐛 Fix several issues in dashboard screens scroll 2020-08-17 09:35:25 +02:00
Andrés Moya
752038039c 🎉 Link files to libraries 2020-08-17 09:35:25 +02:00
Andrés Moya
5ff0a723d5 🎉 Accept (animated) gif as a valid image format 2020-08-13 14:38:50 +02:00
Andrés Moya
91899be423 ♻️ Move some more duplicated code to common module 2020-08-13 14:38:50 +02:00
Andrey Antukh
62e2c1cc14 Make shape transparent when no fill-color is assigned. 2020-08-11 12:48:35 +02:00
Andrey Antukh
fee5b001e8 🔥 Remove unused comment. 2020-08-11 12:48:35 +02:00
Andrey Antukh
5289268156 🐛 Fix unwanted warnings on first shape drawing. 2020-08-11 12:48:35 +02:00
Andrey Antukh
b29aac5d5f 🐛 Remove a bigger rect on resize handlers. 2020-08-11 12:48:35 +02:00
Andrey Antukh
54be06ff18 Add the ability to remove the default fill from elements. 2020-08-11 12:48:35 +02:00
Andrés Moya
93bde62581 ♻️ Remove duplicated code 2020-08-11 10:11:23 +02:00
Andrés Moya
d349e46cd8 🔥 Remove a lot of obsolete code 2020-08-11 10:11:23 +02:00
Andrey Antukh
b1b3ad61a5 ♻️ Refactor task worker. 2020-08-11 10:09:45 +02:00
Andrey Antukh
bda9cad3c2 🐛 Fix warning on kondo dep. 2020-08-10 10:56:02 +02:00
Andrey Antukh
b0fa8c3bfc Merge branch 'other/ldap' into develop 2020-08-10 10:52:45 +02:00
mathieu.brunot
89f4fbfbb1 🔧 Clean unused LDAP var
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-08-10 09:24:42 +02:00
Vitaly Kornilov
712563a984 ⬆️ Replace outdated org.clojars.pntblnk/clj-ldap with puppetlabs/clj-ldap 2020-08-10 09:24:37 +02:00
Vitaly Kornilov
b475853922 🔧 Remove unused LDAP config spec
Co-authored-by: Mathieu Brunot <mathieu.brunot@monogramm.io>
2020-08-10 09:24:37 +02:00
Vitaly Kornilov
055504ba9a 🌐 Sign in with LDAP label for fr, es locales
Co-authored-by: Mathieu Brunot <mathieu.brunot@monogramm.io>
2020-08-10 09:24:37 +02:00
Vitaly Kornilov
2d60ec9dee 🔧 LDAP authentication config with better default values
Co-authored-by: Mathieu Brunot <mathieu.brunot@monogramm.io>
2020-08-10 09:24:37 +02:00
mathieu.brunot
d1c409ce90 📚 Update available env config
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-08-10 09:24:37 +02:00
Vitaly Kornilov
f2c4ff7518 🐛 System start and stop without LDAP connection 2020-08-10 09:24:37 +02:00
Vitaly Kornilov
272c27061d auth with LDAP handler and config 2020-08-10 09:24:30 +02:00
Vitaly Kornilov
6fd7a23690 🔧 ldap frontend config, locales, gulp config 2020-08-10 09:23:54 +02:00
Vitaly Kornilov
005f70ed19 🎉 login with LDAP form and event 2020-08-10 09:23:54 +02:00
mathieu.brunot
764bc2074c 🐛 Pass whitelist domain to config
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-08-10 09:21:33 +02:00
Andrés Moya
05d54e4bea ♻️ The big media refactor (frontend) 2020-08-10 09:13:15 +02:00
Andrés Moya
bd7114182f ♻️ The big media refactor (backend) 2020-08-10 09:13:15 +02:00
Andrey Antukh
8b1ba8c020 🐛 Add missing svgcleaner dep on the devenv docker. 2020-08-05 15:59:26 +02:00
Andrey Antukh
eb02f420ec 🐛 Assign the default color on rendering text object. 2020-08-05 15:45:23 +02:00
Andrey Antukh
313723cfe1 🐛 Fix many warnings. 2020-08-05 15:17:22 +02:00
Andrey Antukh
9b4cc30d3f ⬆️ Update deps. 2020-08-05 15:06:39 +02:00
Andrey Antukh
1b6753932f Merge pull request #289 from uxbox/us/446/shared-libraries
Us/446/shared libraries
2020-08-05 13:25:40 +02:00
Andrés Moya
1dfab78686 🎉 Add shared libraries screen in dashboard 2020-08-05 12:50:35 +02:00
Andrés Moya
9fb821d6e0 🎉 Set files as shared libraries 2020-08-05 12:50:33 +02:00
Andrey Antukh
69ae893bd0 ♻️ Minor lightbox refactor. 2020-08-05 12:45:26 +02:00
Andrey Antukh
a38430fb80 Merge pull request #287 from uxbox/453/assets-panel
453/assets panel
2020-08-05 12:33:26 +02:00
Andrés Moya
d40f27e18c 🎉 Edit assets 2020-08-05 12:12:00 +02:00
Andrés Moya
af2c49dd16 Add images to libraries, and to files 2020-08-05 12:12:00 +02:00
Andrés Moya
49c57be84a 🎉 Convert libraries to file libraries 2020-08-05 12:12:00 +02:00
Andrés Moya
8c8b5887d6 🎉 Manage file images as assets 2020-08-05 11:20:21 +02:00
Andrés Moya
8f8dc80cad ♻️ Refactor layout flags 2020-08-05 11:20:20 +02:00
Andrey Antukh
17813e5090 🎉 Add svg export. 2020-08-05 11:19:34 +02:00
elhombretecla
17bea924b2 Fix sidebar scroll and grid issues 2020-07-30 12:40:04 +02:00
Andrey Antukh
d3c81822e8 Merge pull request #284 from Monogramm/docker/export
🐳 Expose exporter port
2020-07-28 10:04:36 +02:00
Andrés Moya
840c4af4be Show better error messages on invalid images uploading 2020-07-23 09:14:16 +02:00
mathieu.brunot
3e4432df8e 🐳 Expose exporter port
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-07-22 13:57:37 +02:00
Andrey Antukh
d170ff8456 Properly check text shape on auto edition mode entering. 2020-07-22 12:27:22 +02:00
Andrey Antukh
3040bcd6d4 🔥 Completly remove the IBatchedChange persistence method. 2020-07-22 12:27:22 +02:00
Andrey Antukh
4375c3eeff 🐛 Add missing page parameter on sidebar options. 2020-07-22 12:27:22 +02:00
Andrey Antukh
86b5ed48fd 🐛 Fix text shape edition mode after creation. 2020-07-22 12:27:22 +02:00
Andrey Antukh
36f4948ad1 Get rid of IUpdateGroup and IBatchedChange usage. 2020-07-22 12:27:22 +02:00
Andrey Antukh
2b461d5b08 Merge pull request #282 from uxbox/context-menu-position
🐛 Fix position of context menu off the screen
2020-07-22 09:51:41 +02:00
Andrés Moya
89394bba10 ♻️ Add js hints 2020-07-22 08:17:33 +02:00
Andrés Moya
3e92425779 🐛 Fix position of context menu off the screen 2020-07-21 14:08:13 +02:00
Andrey Antukh
02257c08bd Merge pull request #277 from Monogramm/tag-from-env-in-front-build-script
🔨 In frontend build script get TAG value from environment.
2020-07-21 12:26:38 +02:00
Andrey Antukh
c2a4dc6859 Merge pull request #278 from Monogramm/ru-locale
🌐 Russian localisation
2020-07-21 12:26:09 +02:00
Andrés Moya
835c958972 Change some keyboard shortcuts 2020-07-21 09:31:26 +02:00
Andrés Moya
37351744cd Hide "Copy link" until link is actually created 2020-07-20 15:19:06 +02:00
Andrés Moya
f33713912a Remove letter prefix in all new object names 2020-07-20 14:38:03 +02:00
Andrés Moya
06712bf1a5 Do not show radius option for shapes that do not have it 2020-07-20 14:24:52 +02:00
Andrés Moya
e4afda08d7 Navigate automatically to new created file 2020-07-20 14:18:17 +02:00
Andrés Moya
87fc2db78a Remove "p" in new project and file names 2020-07-20 13:37:49 +02:00
Andrés Moya
c6c5cc4e14 🐛 Ignore deleted files in dashboard search 2020-07-20 13:08:40 +02:00
Andrés Moya
bd34fc40b4 Type of confirmation message when editing user settings 2020-07-20 12:53:52 +02:00
Andrey Antukh
21b074c547 Merge pull request #279 from uxbox/trimming-input
 Trim spaces in profile input fields
2020-07-20 12:43:11 +02:00
Andrés Moya
92388df7f8 Trim spaces in profile input fields 2020-07-20 12:40:45 +02:00
Vitaly Kornilov
bf124fbe62 🔧 Add ru and es locales to date-fns 2020-07-16 21:08:18 +03:00
Vitaly Kornilov
af1e79cc9d 🔧 Add ru in translation options 2020-07-16 21:07:05 +03:00
Vitaly Kornilov
ff36a716b5 🌐 Add ru localisation strings 2020-07-16 21:05:27 +03:00
Vitaly Kornilov
c0b7c0ccaa 🔨 In frontend build script get TAG value from env 2020-07-14 20:44:50 +03:00
Andrés Moya
e3e148c569 🐛 Fix set border radius for groups 2020-07-10 11:23:49 +02:00
Andrés Moya
8de55ce054 🐛 Fix edit attrs of groups 2020-07-09 14:54:11 +02:00
Andrés Moya
cf108e110f 🐛 Fix edit rectangle radius 2020-07-08 15:01:27 +02:00
Andrés Moya
6020cc797d 🎉 Allow to edit text properties of multiple shapes 2020-07-08 13:50:58 +02:00
Andrés Moya
0951ba95f0 Manage options for a text with different styles 2020-07-08 12:37:09 +02:00
Andrés Moya
63eec77044 🐛 Handle fill when multi selecting texts and other shapes 2020-07-06 14:13:23 +02:00
Andrés Moya
87fa5547be 🐛 Fix locales 2020-07-06 09:45:57 +02:00
Andrés Moya
87161ae114 ♻️ Update locales 2020-07-06 09:18:58 +02:00
Andrés Moya
67923fca20 📚 Update docstring 2020-07-06 08:26:24 +02:00
Andrey Antukh
2ce4314bc3 🐛 Properly copy yarn.lock file on exporter build script. 2020-07-03 16:40:06 +02:00
Andrey Antukh
c4525030da 🐛 Minor fix on exporte build script. 2020-07-03 16:29:26 +02:00
Andrey Antukh
d1f6e9635c Merge pull request #276 from uxbox/304/edit-multi-properties
🎉 Display properly multiple text properties
2020-07-03 16:17:00 +02:00
Andrés Moya
29e6cdd8a4 🎉 Display properly multiple text properties 2020-07-03 15:52:51 +02:00
Andrey Antukh
1d30ea4923 🎉 Migrate to use yarn. 2020-07-03 15:47:41 +02:00
Andrey Antukh
e99ec58054 🎉 Add JPEG and naming handling. 2020-07-03 11:49:37 +02:00
Andrey Antukh
edbe049171 💄 Minor cosmetic fix on exports component. 2020-07-03 11:49:37 +02:00
Andrey Antukh
2fb4e72240 🎉 Add stacked exports. 2020-07-03 11:49:37 +02:00
Andrés Moya
a8d5cdc29f 🐛 Fix a mini bug 2020-07-03 11:46:33 +02:00
Andrey Antukh
a2abe6d882 Merge pull request #272 from uxbox/304/edit-multi-properties
🎉 Allow change fill color of multiple objects
2020-07-03 11:23:50 +02:00
Andrés Moya
ceaea9d679 🎉 Allow to edit measures of multiple and grouped objects 2020-07-03 11:19:42 +02:00
Andrés Moya
b640bc06ab 🎉 Allow to edit options of grouped objects 2020-07-02 13:53:09 +02:00
Andrés Moya
76178b4e71 🎉 Allow to change stroke of multiple objects 2020-07-02 13:53:09 +02:00
Andrés Moya
be9780be55 🎉 Allow change fill color of multiple objects 2020-07-02 13:53:09 +02:00
Andrey Antukh
ef0330502b Improve deployment related scripts on exporter. 2020-07-02 10:43:14 +02:00
Andrey Antukh
f8881b3c72 Adapt exporter app to deployment related chages. 2020-07-02 10:43:14 +02:00
Andrey Antukh
b8526c6e3b ♻️ Refactor uuid impl module.
Make it crossplatform (browser, nodejs, jvm).
2020-07-02 10:43:14 +02:00
Andrey Antukh
bcb2609b18 Adapt devenv docker to new exporter app. 2020-07-01 13:41:59 +02:00
Andrey Antukh
4679373e0e ⬆️ Update shadow-cljs deps on exporter app. 2020-07-01 13:41:59 +02:00
Andrey Antukh
516b8d9c64 ⬆️ Update frontend dependencies. 2020-07-01 13:41:59 +02:00
Andrey Antukh
34f690d057 ⬆️ Update main dependencies on devenv docker. 2020-07-01 13:41:59 +02:00
Andrey Antukh
5aad9ca5e0 ⬆️ Update backend dependencies. 2020-07-01 13:41:59 +02:00
Andrey Antukh
73adfadcce 🐛 Fix backend tests. 2020-07-01 13:41:59 +02:00
Andrey Antukh
a1f0625bec 🎉 Add basic error handling to exporter app. 2020-07-01 13:41:59 +02:00
Andrey Antukh
20c4b46930 💄 Minor fixes on package.json files. 2020-07-01 13:41:59 +02:00
Andrey Antukh
b97dc09e26 🎉 Add export button to right sidebar (frontend). 2020-07-01 13:41:59 +02:00
Andrey Antukh
c2db6d4f35 🎉 Add initial exporter (nodejs) application. 2020-07-01 13:41:59 +02:00
Andrey Antukh
d521416329 🎉 Add initial render object uri to frontend application. 2020-07-01 13:41:59 +02:00
mathieu.brunot
45a67c57af 🌐 Completed French translations
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-06-30 12:03:51 +02:00
Andrey Antukh
db7f17abdf ♻️ Minor refactor of persistence layer. 2020-06-26 15:31:01 +02:00
Andrey Antukh
bc672932ad ♻️ Reimplement recursive shape update event. 2020-06-26 15:31:01 +02:00
Andrey Antukh
0f99b1ab90 Minor improvement on http client. 2020-06-25 09:41:58 +02:00
Andrés Moya
85c8d544ed 🎉 Allow to drag images from browser to workspace 2020-06-25 09:20:40 +02:00
Andrés Moya
72c36660b9 🎉 Create add-file-image-from-url service 2020-06-25 09:20:40 +02:00
Andrés Moya
85bae6cf26 🎉 Create add-image-from-url service 2020-06-25 09:20:40 +02:00
Andrey Antukh
c0cbb5877b 🐛 Fix color palette exception. 2020-06-23 16:37:10 +02:00
Andrey Antukh
6b49479ef7 🎉 Add debugging reader macro #p. 2020-06-23 16:37:10 +02:00
Andrey Antukh
41c6917260 📚 Minor update on docs. 2020-06-23 14:00:16 +02:00
Andrey Antukh
cfaf09a5c1 🐛 Fix ordering on grouping multiple shapes. 2020-06-22 15:31:53 +02:00
Andrés Moya
84bf0e26b2 Fix viewport position when collapsing left sidebar 2020-06-22 15:08:02 +02:00
Andrés Moya
06c301c7d6 ♻️ Move sidebar logic to data functions 2020-06-22 15:08:02 +02:00
Andrey Antukh
8330a001ae 🐛 Add missing require on prod app start. 2020-06-19 17:00:39 +02:00
Andrey Antukh
33f3431dfe Minor changes on gulpfile. 2020-06-19 16:53:22 +02:00
Andrés Moya
f489accf57 Improve a bit more dnd sortable trees: 2020-06-19 15:20:51 +02:00
elhombretecla
bbd06972ad Fix grid sidebar icons 2020-06-19 14:16:15 +02:00
Andrey Antukh
632d534594 📚 Update setup devenv environment docs. 2020-06-19 14:03:04 +02:00
Andrés Moya
763f1ee13d 🐛 Fixes more glitches of dnd sortable trees 2020-06-19 14:02:53 +02:00
Andrey Antukh
1119ffffcf 💄 Add articles links to tracebitmap.txt file. 2020-06-19 09:53:56 +02:00
Andrey Antukh
96d4c1e2fd Add experiments directory. 2020-06-18 20:08:46 +02:00
Andrés Moya
dff038f4d7 💄 Improve copy of validation email 2020-06-18 09:50:10 +02:00
Andrés Moya
b7bf7c8baf 💄 Refactor usability of input fields 2020-06-17 13:52:36 +02:00
Andrés Moya
8c49d11026 Disable text selection only in workspace and viewer 2020-06-17 09:54:56 +02:00
Andrés Moya
4fb8a3dc8d 🐛 Fix email fonts 2020-06-17 09:38:52 +02:00
Andrés Moya
5cfad9ca9f Change email font to be more compatible 2020-06-16 17:10:16 +02:00
Hirunatan
249a9558f8 Merge pull request #262 from uxbox/other/coll-of-issues
Fixes
2020-06-16 15:51:47 +02:00
Andrey Antukh
d3951f7f8f 🐛 Fix snap imprecission. 2020-06-16 15:51:01 +02:00
Andrey Antukh
1dfc604cf0 🐛 Fix vertical positioning. 2020-06-16 15:51:01 +02:00
Andrés Moya
65c9c46a22 🎉 Format all email messages with mjml 2020-06-16 15:40:13 +02:00
Andrés Moya
b058b5d56a Adjust some details in email template 2020-06-16 13:28:40 +02:00
Andrés Moya
dd9d83cdab 🎉 Introduce mjml to format email messages 2020-06-16 12:52:49 +02:00
Andrey Antukh
828455ac27 🐛 Fix parent handling on duplicate. 2020-06-15 12:40:04 +02:00
Andrey Antukh
df7092e2d4 🐛 Fix inconsistent handing of shape relocation. 2020-06-15 12:40:04 +02:00
Andrey Antukh
1dd1b9d987 🎉 Introduce ordered-set type and use it for workspace selected. 2020-06-15 12:40:04 +02:00
Andrés Moya
778bfbab59 🐛 Fix tooltips of alignment options 2020-06-15 12:07:10 +02:00
Andrés Moya
beb6048bf9 Auto select input when editing layers and pages name 2020-06-15 12:07:10 +02:00
Andrés Moya
39364853b8 Navigate to home when click on main icon at dashboard 2020-06-15 12:07:10 +02:00
Andrés Moya
5266a33bc2 Auto edit the new project created 2020-06-15 11:24:42 +02:00
Hirunatan
c41b98e914 Merge pull request #257 from uxbox/other/coll-of-issues
Bugfixes
2020-06-15 10:13:01 +02:00
Andrey Antukh
7b0061c038 🐛 Fix ordering on delete shape undo operation. 2020-06-15 10:12:33 +02:00
Andrey Antukh
8874f0b0c8 🐛 Fix outline leaking on grouping shapes. 2020-06-15 10:12:33 +02:00
Andrey Antukh
91c07d5573 🐛 Properly handle grouping from multiple frames. 2020-06-15 10:12:33 +02:00
Andrey Antukh
861150ff46 🐛 Fix positioning on group and ungroup. 2020-06-15 10:12:33 +02:00
Andrey Antukh
9ed6d23041 🐛 Group shapes in the correct parent. 2020-06-15 10:12:33 +02:00
Andrey Antukh
a1ff567b30 💄 Minor improvements on outlines component. 2020-06-15 10:12:33 +02:00
Andrey Antukh
b68a076e57 🐛 Fix critical inconsistencies on group handling. 2020-06-15 10:12:33 +02:00
Andrey Antukh
93a967ed8f 💄 Remove unused operation on page update mutation. 2020-06-15 10:12:33 +02:00
Andrey Antukh
3e00d67504 Improve page data migrations. 2020-06-15 10:12:33 +02:00
Andrés Moya
ef42ffee65 🐛 Fix display of size presets in artboards 2020-06-12 08:53:57 +02:00
Andrés Moya
ff5ec11bac 🐛 Fix two runtime errors when creating shapes from library 2020-06-12 07:58:56 +02:00
Andrés Moya
200983fb7c 🐛 Remove react error about usage of select options 2020-06-12 07:58:56 +02:00
Andrés Moya
5791a98c1c 🐛 Fix broken layout in some form fields 2020-06-12 07:58:56 +02:00
Andrés Moya
7b44f34b32 💄 Add visible padding to color picker 2020-06-12 07:58:56 +02:00
Andrés Moya
0b2074c254 🐛 Fix rename pages in workspace 2020-06-12 07:58:56 +02:00
Andrés Moya
f63657509f 🐛 Add undo to set default grid options operation 2020-06-12 07:58:56 +02:00
Hirunatan
51acd2b529 Merge pull request #254 from uxbox/other/coll-of-issues
Issues related to groups & layers
2020-06-10 11:07:26 +02:00
Andrey Antukh
e25da8c6d3 🐛 Fix unexpected internal error on frame hidding.
Because of incorrect use of hooks.
2020-06-10 09:35:40 +02:00
Andrey Antukh
1e709ee166 💄 Minor naming changes on common pages tests file. 2020-06-10 09:11:13 +02:00
Andrey Antukh
82f05f108f Minor changes on clojure transit handlers. 2020-06-10 09:10:30 +02:00
Andrey Antukh
bab73cf4eb 🐛 Fix internal error on ws connect on notification with not existing file. 2020-06-10 09:09:54 +02:00
Andrey Antukh
7fb897a7ad 🐛 Fix shape leaking on deletion when is grouped. 2020-06-10 08:29:13 +02:00
Andrey Antukh
2d4e76619f 🐛 Fix group and upgroup events naming. 2020-06-09 16:16:15 +02:00
Andrey Antukh
45476eff0b 🐛 Fix backend tests related to images. 2020-06-09 16:16:15 +02:00
Andrey Antukh
b8dab7253e 🐛 Properly setup group on creation. 2020-06-09 16:16:15 +02:00
Andrey Antukh
4bdaab637c 🐛 Remove leaks of selrect attrs in the root shape object. 2020-06-09 16:16:15 +02:00
Hirunatan
fd91a7b1f4 Merge pull request #253 from uxbox/issue/482/improve-thumbnail-handling
♻️ Refactor thumbnail generation.
2020-06-09 16:08:27 +02:00
Andrey Antukh
3f554df687 ♻️ Refactor thumbnail generation. 2020-06-09 15:56:15 +02:00
Andrés Moya
60ec32f7cc 🎉 Add spanish language (and disable french) 2020-06-09 14:11:10 +02:00
Andrés Moya
b915ba51aa 🐛 Fix bug when uploading the same image twice 2020-06-09 11:30:57 +02:00
Andrés Moya
3e5f9a01ad 💄 Hide Teams tab in user settings 2020-06-09 10:43:21 +02:00
Andrés Moya
5f373df569 🐛 Fix viewport size when collapsing sidebar 2020-06-09 09:30:01 +02:00
Andrey Antukh
006bacfef0 🐛 Fix worker uri handling on release builds. 2020-06-08 19:07:13 +02:00
Andrés Moya
a4c7215fa8 Validate confirmation email 2020-06-08 12:23:18 +02:00
Andrés Moya
68798522af 🐛 Check data type when reading d&d data 2020-06-08 11:50:41 +02:00
Hirunatan
04f829eba3 Merge pull request #249 from uxbox/484/dynamic_alignment_fixes
Fixes some issues with dynamic alignment
2020-06-08 09:00:58 +02:00
alonso.torres
2ac8a32986 🐛 Fixes some issues with dynamic alignment 2020-06-05 15:33:00 +02:00
Andrey Antukh
69f0f16085 🐛 Add missing inline banner. 2020-06-05 14:15:30 +02:00
Andrey Antukh
5f9d3606f6 🐛 Restore css hot-reloading. 2020-06-05 14:15:30 +02:00
Andrés Moya
49beffa2c8 Add validations when updating profile photo 2020-06-05 13:53:20 +02:00
Andrés Moya
a6a57ec0bb 🐛 Fix message about confirmation password 2020-06-05 13:52:26 +02:00
Andrey Antukh
aed3113a7a Merge pull request #247 from uxbox/488/snap_grid_imprecision
Fixes problem with snap imprecisions
2020-06-05 13:52:01 +02:00
alonso.torres
8cc97d181b 🐛 Fixes problem with snap imprecisions 2020-06-05 13:31:17 +02:00
Andrey Antukh
c19b289ac8 💄 Minor cosmetic fixes. 2020-06-04 22:35:26 +02:00
Andrés Moya
7efee0f0a9 🎉 Upload several images at once 2020-06-04 16:34:33 +02:00
Andrey Antukh
a8e8c9990d 🐛 Add missing links on base email template. 2020-06-04 16:00:35 +02:00
Andrey Antukh
e0a567551f Start use jpeg instead of webp for thumbnails.
Because Safari still does not supports WEBP :(
2020-06-04 16:00:35 +02:00
Andrey Antukh
c6581a91e4 Merge pull request #245 from uxbox/bug_fixing
Bug fixing
2020-06-04 15:58:43 +02:00
alonso.torres
8d789a4d7d Selects all text when clicking in an input 2020-06-04 15:38:22 +02:00
alonso.torres
6e696f2fc2 🐛 Fixes style inconsistency 2020-06-04 15:25:15 +02:00
alonso.torres
9fb6744ee8 🐛 Fixes problem with outline and zoom 2020-06-04 15:24:56 +02:00
Andrey Antukh
d10863d928 🐛 Fix email icons. 2020-06-04 15:15:06 +02:00
Andrey Antukh
2bc1523496 Merge pull request #244 from uxbox/bug_fixing
🐛 Fixes problems with paths
2020-06-04 15:14:22 +02:00
alonso.torres
1c6bdb5060 🐛 Fixes problems with paths 2020-06-04 15:07:43 +02:00
Andrey Antukh
d33e3de8f1 Merge pull request #243 from uxbox/bug_fixing
Bug fixing
2020-06-04 13:35:52 +02:00
alonso.torres
6e8cdd764a 🐛 Fixes problem with closing paths 2020-06-04 13:33:22 +02:00
alonso.torres
e17ab24e66 🐛 Change absolute position to elements 2020-06-04 13:14:12 +02:00
alonso.torres
75f8b04fa8 🐛 Grid options disalignment 2020-06-04 13:14:00 +02:00
Hirunatan
9acf6adf0c Merge pull request #242 from uxbox/391/interactions_feedback
Adds feedback when dragging interactions
2020-06-04 12:52:43 +02:00
alonso.torres
353e86c49d 🎉 Adds feedback when dragging interactions 2020-06-04 12:43:39 +02:00
Andrey Antukh
3b0ea9b7fd 🐛 Fix unexpected internal error on password recovery request. 2020-06-04 11:57:15 +02:00
Andrés Moya
dfc938b804 🐛 Fix image paste in production build 2020-06-04 09:43:25 +02:00
alonso.torres
07ba79a64c 🐛 Improvements over snap distances 2020-06-04 08:38:17 +02:00
Hirunatan
636e66943b Merge pull request #241 from uxbox/fixes_hover_shapes
Fixes hover on shapes
2020-06-04 08:33:26 +02:00
alonso.torres
f7e30aed8b 🐛 Fixes hover on shapes 2020-06-04 08:30:47 +02:00
Hirunatan
2447375925 Merge pull request #240 from uxbox/460/canvas_background_color
Allows user to change canvas background color
2020-06-04 08:30:13 +02:00
alonso.torres
b441ac64d0 🎉 Allows user to change canvas background color 2020-06-04 07:08:34 +02:00
Hirunatan
8989591b04 Merge pull request #238 from uxbox/393/hover_feedback
Hover feedback on shapes
2020-06-03 15:59:25 +02:00
alonso.torres
67baeff5af 🎉 Make outline shows when selected 2020-06-03 15:46:28 +02:00
alonso.torres
e5619672d3 🎉 Hover feedback on shapes 2020-06-03 15:46:28 +02:00
Andrey Antukh
13133badf3 Merge pull request #239 from uxbox/438/images-security-checks
438/images security checks
2020-06-03 14:37:26 +02:00
Andrés Moya
1ecb7c9178 🐛 Fix error messages 2020-06-03 14:29:41 +02:00
Andrés Moya
bd2ee2fd11 🐛 Fix paste image in prod mode 2020-06-03 13:57:31 +02:00
Andrés Moya
a3490ea36d Check actual image content for valid mime type 2020-06-03 13:24:36 +02:00
Andrey Antukh
700e99a25d Merge pull request #234 from uxbox/308/paste-and-drop-image
308/paste and drop image
2020-06-03 11:41:51 +02:00
Andrés Moya
a83c2ff669 ♻️ Move drawing events to data module 2020-06-03 11:05:03 +02:00
Andrés Moya
7bf06353ad 🎉 Copy & paste images onto the workspace 2020-06-03 11:05:03 +02:00
Andrés Moya
94959ffff8 🎉 Drag and drop images onto the workspace 2020-06-03 11:05:03 +02:00
Andrés Moya
f5f7607ce3 ♻️ Refactor drag'n drop code 2020-06-03 11:05:03 +02:00
Andrey Antukh
9901f0a52b Remove backend-uri from all the codebase. 2020-06-03 10:50:40 +02:00
Hirunatan
e1ae3da41e Merge pull request #237 from uxbox/bug-fixing
Bug fixing
2020-06-03 10:22:40 +02:00
alonso.torres
1f82c0f1e1 🐛 Fixed selection behaviour 2020-06-03 09:04:49 +02:00
alonso.torres
ccbe50b042 🐛 Fixed Firefox behaviour 2020-06-03 08:48:21 +02:00
alonso.torres
8077f2704e 🐛 Fixes scroll in dashboard sidebar 2020-06-03 08:25:28 +02:00
alonso.torres
7861c81538 🐛 Fixes issue with context menu 2020-06-03 07:57:14 +02:00
alonso.torres
2f79e79498 🐛 Shortcuts in context menu were wrong 2020-06-03 07:49:35 +02:00
alonso.torres
396a2b0e44 🐛 Makes autocomplete background white 2020-06-03 07:47:17 +02:00
Andrey Antukh
8c18e9bfbf Improve cache handling.
And make the devenv http server behave similar to a production
environment (related to cache handling).
2020-06-02 16:31:43 +02:00
Andrey Antukh
935b835853 Merge pull request #235 from uxbox/456/duplicate_move
Duplicate move
2020-06-02 16:11:59 +02:00
alonso.torres
174b9db1d2 🎉 Duplicate move 2020-06-02 16:10:30 +02:00
Andrey Antukh
d6c97f9d19 Merge pull request #233 from uxbox/253/custom_cursors
Custom cursors
2020-06-02 14:23:26 +02:00
alonso.torres
bedd244f44 🎉 New cursors in viewport 2020-06-02 12:10:10 +02:00
alonso.torres
b3237524bd 🎉 Adds infrastructure to add cursors 2020-06-02 12:10:10 +02:00
alonso.torres
c4664ab7f9 🎉 Custom cursors files 2020-06-02 12:10:10 +02:00
Andrés Moya
56763e9aa8 Automatic placement of uploaded image 2020-06-02 12:09:12 +02:00
Andrés Moya
bac35853d3 Show info while loading images 2020-06-02 12:09:12 +02:00
Andrés Moya
e3e8180b7a Improve error checking and notification 2020-06-02 12:09:12 +02:00
Andrés Moya
bbf3bc7909 Remove add image modal, upload image directly 2020-06-02 12:09:12 +02:00
Andrey Antukh
bee4e5177c 🐛 Fix initial auto-fit of viewport. 2020-06-02 12:08:19 +02:00
Andrey Antukh
fbd6e395a4 🎉 Add html emails. 2020-06-02 10:43:02 +02:00
alonso.torres
721879aaa8 🐛 Fixes problems with preview 2020-05-29 12:01:20 +02:00
alonso.torres
738a791a27 🐛 Fixed problem when snapping distance outside frame 2020-05-29 09:20:33 +02:00
alonso.torres
21613e6614 Adds rectangle around distance texts 2020-05-29 08:41:44 +02:00
Andrey Antukh
751bd5e3d6 Merge pull request #229 from uxbox/243/advanced_dynamic_alignment
Adds snap to distance
2020-05-28 15:33:29 +02:00
alonso.torres
b5317782e9 🎉 Adds snaps to distance 2020-05-28 15:00:36 +02:00
Juan de la Cruz
b7f6c72981 Fix login UI 2020-05-27 17:06:39 +02:00
Andrey Antukh
117744f3f7 🐛 Fix color palettes displacement. 2020-05-27 14:16:52 +02:00
Andrey Antukh
8fb70e9f8d 🐛 Reject anonymous user on websocket connections. 2020-05-27 12:43:44 +02:00
Andrey Antukh
2588260f6c 🐛 Forward many env vars on build script. 2020-05-27 12:27:55 +02:00
Andrey Antukh
ff701ecf13 🐛 Fix unexpected error on calculating thumnail size. 2020-05-27 12:27:14 +02:00
Hirunatan
dc135aa890 Merge pull request #228 from uxbox/wip/notifications
Notifications
2020-05-27 11:47:41 +02:00
Andrey Antukh
5a41d1b4da 🔥 Remove unused code. 2020-05-27 10:09:31 +02:00
Andrey Antukh
0536b64ae5 💄 Fix backend tests. 2020-05-27 10:09:31 +02:00
Andrey Antukh
a27828ed79 ♻️ Refactor frontend code for adapt to new banners. 2020-05-27 10:09:31 +02:00
Juan de la Cruz
b331489741 🎉 Add new styles for banners. 2020-05-27 09:22:09 +02:00
Hirunatan
288e8e061c Merge pull request #225 from uxbox/23/user-profile
23/user profile
2020-05-26 13:05:19 +02:00
Andrey Antukh
17bdf4c6bf 🐛 Add missing link on auth sidebar. 2020-05-26 13:03:54 +02:00
Andrey Antukh
550ca7e4b2 Enable google auth button only when is enabled. 2020-05-26 13:03:54 +02:00
Andrey Antukh
5983155680 💄 Fix naming inconsistencies on uri prop. 2020-05-26 13:03:54 +02:00
Andrey Antukh
19cd84597d 🎉 Add authentication with google. 2020-05-26 13:03:54 +02:00
Andrey Antukh
5268a7663f 🐛 Add missing sql sentence on migration 0009. 2020-05-26 13:03:54 +02:00
Andrey Antukh
7bda554889 Fix naming inconsistencies on migrations. 2020-05-26 13:03:54 +02:00
Andrey Antukh
7d5f9c1078 ♻️ Initial profile and auth refactor. 2020-05-26 13:03:54 +02:00
Andrey Antukh
d0defe5d93 Merge pull request #227 from uxbox/331/auto-open-layers
331/auto open layers
2020-05-25 13:50:44 +02:00
Andrés Moya
47901870bd Allow dropping only objects of the same type 2020-05-25 12:17:01 +02:00
Andrés Moya
da77aa558e Auto open layer when hovering over it for a moment 2020-05-25 12:17:01 +02:00
Andrés Moya
25518a4ac0 🐛 Implement undo in layer move operation 2020-05-25 12:17:01 +02:00
Andrey Antukh
a050a45424 Merge pull request #226 from uxbox/refactor_shapes
Refactor shapes
2020-05-25 11:35:58 +02:00
alonso.torres
593d1cdd39 Migrate pages in the backend 2020-05-25 11:19:08 +02:00
alonso.torres
e06d8e754f ♻️ Adds new properties to shapes 2020-05-25 07:51:44 +02:00
Andrey Antukh
b5a6d9981d 🐛 Fix backend incompatibilities on common module. 2020-05-25 07:47:31 +02:00
Andrey Antukh
524089e051 Merge pull request #224 from uxbox/refactor_shapes
Moved math and some geom namespaces to common
2020-05-21 15:38:45 +02:00
alonso.torres
7d464c14c0 ♻️ Moved math and some geom namespaces to common 2020-05-21 15:27:33 +02:00
Hirunatan
d21a3e7ca2 Merge pull request #223 from uxbox/315/improved_handlers
Improved selection handlers
2020-05-21 12:23:55 +02:00
alonso.torres
f199317f47 Improved selection handlers 2020-05-21 12:13:33 +02:00
Andrey Antukh
ca5091d8b0 Merge pull request #222 from uxbox/random_fixes
Random fixes
2020-05-20 15:42:05 +02:00
alonso.torres
b205e4ab50 Show auto placeholder on some elements 2020-05-20 15:38:04 +02:00
alonso.torres
0611ce98a3 🐛 Fixed some corner cases with grid parameters 2020-05-20 15:38:04 +02:00
alonso.torres
cbfa60f2e7 Snap on shape creating 2020-05-20 15:38:04 +02:00
alonso.torres
283a13acc1 Adds shortcuts to header menu 2020-05-20 15:38:04 +02:00
alonso.torres
e3f7e352d4 Color picker improvements 2020-05-20 15:38:04 +02:00
Andrey Antukh
9b4ffbaf0c Merge pull request #221 from uxbox/331/drop-element-into-artboard
 Allow to drop shape inside frames or groups in layers panel
2020-05-20 15:15:11 +02:00
Andrés Moya
6cb4822842 Allow to drop shape inside frames or groups in layers panel 2020-05-20 14:09:15 +02:00
Andrey Antukh
0f7b33837c Merge pull request #220 from uxbox/408/color_picker_fixes
Color picker fixes
2020-05-20 13:32:17 +02:00
alonso.torres
6ebce57abc 🐛 Fixes problem when changing type 2020-05-20 11:48:17 +02:00
alonso.torres
bcd755c9e4 🐛 Fixes some problems with texts not displaying correctly 2020-05-20 11:48:17 +02:00
alonso.torres
fd18a6a6d0 ♻️ Refactor in color picker and options 2020-05-20 11:48:17 +02:00
Hirunatan
fe08810340 Merge pull request #219 from uxbox/256/grids
Grids
2020-05-19 16:17:08 +02:00
alonso.torres
9681a4b32e Fixed tab space 2020-05-19 16:13:20 +02:00
alonso.torres
2a4573842d Small change to frame labels 2020-05-19 16:13:20 +02:00
alonso.torres
4c36d83e38 Add locales for grid options 2020-05-19 16:13:20 +02:00
alonso.torres
23ca77fe3a ♻️ Renamed layout to grid and some refactors 2020-05-19 16:13:20 +02:00
alonso.torres
235e196094 Fixes problem with snap keys 2020-05-19 16:13:20 +02:00
alonso.torres
ad99e6df9d 🎉 Adds support for auto 2020-05-19 16:13:20 +02:00
alonso.torres
1d2ae6d5eb 🎉 Add option to save the layouts 2020-05-19 16:13:20 +02:00
alonso.torres
8d9e772dca Removed some logs 2020-05-19 16:13:20 +02:00
alonso.torres
d2229f43c7 Snap to square grid 2020-05-19 16:13:20 +02:00
alonso.torres
3308d762f1 🎉 Snap to grid 2020-05-19 16:13:20 +02:00
alonso.torres
0b4996b31a 🎉 Grid and layout UI 2020-05-19 16:13:20 +02:00
Juan de la Cruz
8c77ea463d Quick visual fixes 2020-05-19 14:37:53 +02:00
Andrés Moya
ff2c437531 Improve workspace sidebar show/hide (II) 2020-05-19 12:37:47 +02:00
Andrés Moya
d9c1454893 Improve workspace sidebar show/hide 2020-05-19 12:08:21 +02:00
Andrey Antukh
de21b3df88 Merge pull request #218 from uxbox/407/show-icons-in-layers-panel
🐛 Show icons in layers panel
2020-05-19 10:54:55 +02:00
Andrés Moya
d103488b07 🐛 Show icons in layers panel 2020-05-19 10:49:50 +02:00
Andrey Antukh
c34a6b10d5 Merge pull request #217 from uxbox/404/fixed-size-interaction-handler
 Make interaction paths size independent of zoom
2020-05-19 09:42:10 +02:00
Andrés Moya
bbcff7f7c8 Make interaction paths size independent of zoom 2020-05-19 09:25:47 +02:00
Hirunatan
d54b5509bd Merge pull request #216 from uxbox/397/fixes_rotation
🐛 Fixes problem with rotation input
2020-05-19 09:21:52 +02:00
alonso.torres
06cebbc527 🐛 Fixes problem with rotation input 2020-05-18 15:32:34 +02:00
Andrey Antukh
82baaae593 Adapt devenv to production versions. 2020-05-18 15:03:51 +02:00
Andrey Antukh
a68cdde584 Merge pull request #215 from uxbox/324/auto-open-layer
 Expand containing layer when selecting a shape
2020-05-18 14:37:19 +02:00
Andrés Moya
adde1d3d63 Expand containing layer when selecting a shape 2020-05-18 14:34:44 +02:00
Andrey Antukh
7917370136 🐛 Add missing import on tests. 2020-05-18 14:29:24 +02:00
Andrey Antukh
c8e1925065 👷 Fix backend tests. 2020-05-18 14:20:33 +02:00
Andrey Antukh
7a3616d542 Minor fixes on color palette. 2020-05-18 14:20:33 +02:00
Hirunatan
1fb6a6c8a5 Merge pull request #214 from uxbox/other/backend-improvements
Other/backend improvements
2020-05-18 13:46:32 +02:00
Andrey Antukh
1fd9a09e46 🎉 Add new color palettes. 2020-05-18 12:22:23 +02:00
Andrey Antukh
b532e74310 🎉 Add prometheus metrics. 2020-05-18 10:34:56 +02:00
Andrey Antukh
ccb79f7188 Deselect shapes after deletion. 2020-05-18 10:34:56 +02:00
Andrey Antukh
f64d1fb8f6 Update page indices on change notifications. 2020-05-18 10:34:56 +02:00
Andrey Antukh
6df0d34e2a 🔥 Remove commented code. 2020-05-18 10:34:56 +02:00
Andrey Antukh
b8cc4314ce Minor improvements on notifications module. 2020-05-18 10:34:51 +02:00
Andrey Antukh
4bfa70853c ♻️ Improve tasks implementation. 2020-05-15 17:42:14 +02:00
Andrey Antukh
27181bf863 Minor improvements on internal scripts. 2020-05-15 17:42:14 +02:00
Juan de la Cruz
05595541fa Fix tooltip shortcuts 2020-05-15 09:26:16 +02:00
Juan de la Cruz
b87b12adfe Fix edit btn preview mode 2020-05-15 09:15:16 +02:00
alonso.torres
fe9913dd3f 🐛 Fixed problem with selection 2020-05-15 08:11:29 +02:00
Andrey Antukh
6356755f06 🎉 Add priority field to tasks table. 2020-05-15 08:09:20 +02:00
Andrey Antukh
817c22dc3c 🎉 Add more reliable presence mechanism. 2020-05-15 08:09:20 +02:00
Andrey Antukh
4b31a147a9 💄 Minor cosmetic changes. 2020-05-15 08:09:20 +02:00
Andrey Antukh
5a03c13731 ♻️ Refactor backend.
Move from custom vertx to jetty9.
2020-05-15 08:09:20 +02:00
Andrey Antukh
1639e15975 Merge pull request #213 from uxbox/388-mouse-move-outside-viewport
 Handle mouse movement outside viewport
2020-05-14 14:11:17 +02:00
Andrés Moya
c6403637ea Handle mouse movement outside viewport 2020-05-14 14:01:40 +02:00
Andrey Antukh
1487809c6d Merge pull request #212 from uxbox/interactions-enhancements
 Add some enhancements in create interactions
2020-05-14 13:36:13 +02:00
Andrés Moya
4be9606341 Add some enhancements in create interactions 2020-05-14 11:00:58 +02:00
Andrey Antukh
cd17eccd43 Merge pull request #210 from uxbox/390/bug-fill-options
🐛 Fix refresh of options menu
2020-05-13 15:56:57 +02:00
Andrés Moya
0e7809a8f1 🐛 Fix refresh of options menu 2020-05-13 15:51:33 +02:00
Andrey Antukh
d067ff644d Merge pull request #209 from uxbox/347-change-shortcuts
 Change some workspace shortcuts
2020-05-13 13:46:30 +02:00
Andrés Moya
cf5a2dcaae Change some workspace shortcuts 2020-05-13 13:42:52 +02:00
Andrey Antukh
9a5387fa1c Merge pull request #208 from uxbox/381/delete-library-items
🐛 Fix some bugs when deleting library items in dashboard
2020-05-13 13:17:58 +02:00
Andrés Moya
481a43096e 🐛 Fix increase and decrease zoom 2020-05-13 13:17:05 +02:00
Andrés Moya
c4c7fc71a0 🐛 Fix some bugs when deleting library items in dashboard 2020-05-13 11:25:39 +02:00
Andrey Antukh
0c12d7b0d2 Merge pull request #207 from uxbox/389+394/qa_enhancements
Minor enhancements in selection and movement
2020-05-13 09:30:01 +02:00
alonso.torres
e9c97ef5d0 Minor enhancements in selection and movement 2020-05-13 09:28:37 +02:00
Andrés Moya
27810c9df8 Do not show time for empty projects at dashboard 2020-05-13 09:02:39 +02:00
Andrés Moya
fa3445edfb 🐛 Fix custom stroke on rotated shapes 2020-05-12 14:25:05 +02:00
Hirunatan
0befd25ab7 Merge pull request #206 from uxbox/238/infinite-viewport-3
Viewport Improvements and Fixes
2020-05-12 13:51:35 +02:00
Andrey Antukh
bd8123d475 More fixes and improvements to viewport sizing and positioning. 2020-05-12 13:49:54 +02:00
Andrey Antukh
d67dbcf2aa 🐛 Fix worker configuration initialization. 2020-05-12 13:14:19 +02:00
Andrey Antukh
c3a5156a6c 🐛 Fix rules font family. 2020-05-12 13:14:19 +02:00
Andrey Antukh
f3e1d35f3d Improve ruler scale calculation. 2020-05-12 13:14:19 +02:00
Andrey Antukh
994a1fa144 Merge pull request #205 from uxbox/376/add-interaction-with-dnd
🎉 Add interactions with the mouse
2020-05-12 13:14:00 +02:00
Andrés Moya
225b6a8f1c 📚 Update documentation of frontend debug utils 2020-05-12 12:50:23 +02:00
Andrés Moya
e602a8cc36 🎉 Add interactions with the mouse 2020-05-12 11:29:06 +02:00
Andrey Antukh
b2b84de10e 🐛 Revert db pool size. 2020-05-12 08:20:07 +02:00
Juan de la Cruz
23ba635aab Add quick visual fixes to dashboard 2020-05-11 13:05:06 +02:00
Juan de la Cruz
5dddd8788a Fix color data input 2020-05-11 11:57:43 +02:00
Andrey Antukh
adac603465 Merge pull request #203 from uxbox/231/interactions-lines
🎉 Show interactions lines in workspace
2020-05-11 11:22:51 +02:00
Andrés Moya
9309c76162 🎉 Show interactions lines in workspace 2020-05-11 11:03:16 +02:00
Andrey Antukh
3230c5c2ed Merge pull request #204 from uxbox/201/dynamic_alignment
Refactor snap files
2020-05-11 10:53:17 +02:00
Juan de la Cruz
35c172a06b Add new favicon 2020-05-11 09:59:29 +02:00
alonso.torres
590f9956ad ♻️ Refactor snap files 2020-05-11 09:58:39 +02:00
Juan de la Cruz
a10dcdcff7 Make sidebar text icon area bigger 2020-05-11 09:48:07 +02:00
Andrey Antukh
69bd4cf4bb 💄 Minor cosmetic changes. 2020-05-11 08:58:31 +02:00
Andrey Antukh
16c3520587 Minor improvements on worker impl. 2020-05-11 08:58:31 +02:00
Andrey Antukh
d9c459e877 Improve (and fix many bugs) routing handling. 2020-05-11 08:58:31 +02:00
Andrey Antukh
1e6ed35c77 Fetch page data from backend (for thumbnails generation). 2020-05-11 08:58:31 +02:00
Andrey Antukh
6a6ead0d63 Minor improvement of http client api.
Make it more compatible to be executed in worker.
2020-05-11 08:58:31 +02:00
Andrey Antukh
22975f4f7d More work on viewpoer sizing handling. 2020-05-11 08:58:31 +02:00
Andrey Antukh
1af87b9140 🐛 Fix bug on body decoding (backend). 2020-05-11 08:58:31 +02:00
Andrey Antukh
ba618eb51d 🐛 Fix strange bug on db connection handling.
This need investigation.
2020-05-11 08:58:31 +02:00
Andrey Antukh
22f8285e0b Merge pull request #201 from uxbox/201/dynamic_alignment
Move dynamic alignment calculations to web-worker
2020-05-09 18:29:35 +02:00
alonso.torres
80a86b14b8 ♻️ Moved snap calculations to web-worker 2020-05-08 16:25:20 +02:00
Andrey Antukh
c73a2014c3 Add more zoom levels. 2020-05-08 16:14:32 +02:00
Andrey Antukh
51356c10f5 ♻️ Refactor viewport sizing. 2020-05-08 16:14:32 +02:00
Juan de la Cruz
581b1912ae Fix measures placeholder 2020-05-07 15:27:10 +02:00
Hirunatan
b7815f137d Merge pull request #199 from uxbox/201/dynamic_alignment
Dynamic Alignment - Range tree and some fixes
2020-05-07 13:40:02 +02:00
alonso.torres
b8d30466bb 🐛 Fixes problems with snaps 2020-05-07 12:26:11 +02:00
alonso.torres
dc97056fcf Integration of the range-tree into the application 2020-05-07 12:26:11 +02:00
alonso.torres
e596555932 Range tree implemented as Red-Black tree 2020-05-07 12:26:07 +02:00
alonso.torres
a7bdb02dbf Adds range tree data structure 2020-05-07 12:23:00 +02:00
Andrey Antukh
02e438eb28 Merge pull request #198 from uxbox/300/button-system
300/button system
2020-05-07 07:53:03 +02:00
Juan de la Cruz
c4a21907bd Apply all btn changes 2020-05-06 15:31:44 +02:00
Andrey Antukh
02efe42a29 🔥 Remove unused requires. 2020-05-06 11:35:38 +02:00
Andrey Antukh
8a7a02532c Move uxbox.builtins.icons to uxbox.main.ui.icons. 2020-05-06 11:35:38 +02:00
Andrey Antukh
525b3f640f 🔥 Remove unused code. 2020-05-06 11:35:38 +02:00
Andrey Antukh
adfa117dc0 🎉 Render dashbaord thumbnails on webworker. 2020-05-06 11:35:38 +02:00
Andrey Antukh
f2274d8617 Improve refs usage on interactions. 2020-05-06 11:35:38 +02:00
Andrey Antukh
a2fbf99f3b 💄 Minor naming consistency fix. 2020-05-06 11:35:38 +02:00
Andrey Antukh
9d827d4b30 ♻️ Refactor shapes structure. 2020-05-06 11:35:38 +02:00
Andrey Antukh
0cf0413ac4 ♻️ Move uxbox.main.websockets to uxbox/util directory. 2020-05-06 11:35:38 +02:00
Juan de la Cruz
323832da63 Add btn icon styles 2020-05-06 09:35:28 +02:00
Juan de la Cruz
e6aaf65d03 changing btn styles 2020-05-06 08:45:15 +02:00
Juan de la Cruz
9951ec691e Fix minor dashboard bugs 2020-05-05 20:42:53 +02:00
Andrés Moya
54b7d04639 Use bounding box when showing interactions 2020-05-05 16:00:08 +02:00
Andrey Antukh
0aeb966b11 Merge pull request #195 from uxbox/231/interactions
231/interactions
2020-05-05 15:53:52 +02:00
Andrés Moya
1e898f94f3 🎉 Add basic interaction to shapes 2020-05-05 15:41:56 +02:00
Andrey Antukh
49023117c3 ♻️ Move data.helpers to uxbox.common.pages ns. 2020-05-05 15:18:59 +02:00
Andrey Antukh
85d7617143 ⬆️ Update shadow-cljs.
And remove the need of externs.
2020-05-05 15:18:59 +02:00
Andrey Antukh
fdb6d05826 Perform change generation on idle callback. 2020-05-05 15:18:59 +02:00
Andrey Antukh
acd646bcdf 🐛 Don't define constant on presence ns. 2020-05-05 15:18:59 +02:00
Andrey Antukh
c97b119998 🐛 Fix routing unresponsivenes in some conditions. 2020-05-05 15:18:59 +02:00
Andrey Antukh
598a235bb8 💄 Minor whitespace cleaning. 2020-05-05 15:18:59 +02:00
Andrey Antukh
894cf3f0ed 🐛 Fix wrong arity call on dashboard data ns. 2020-05-05 15:18:59 +02:00
Andrey Antukh
f5e277269c Improve performance of shape-to-frame relationship calc. 2020-05-05 15:18:59 +02:00
Andrey Antukh
6b9ed0c5a3 Autoselect all text on enter edition mode. 2020-05-05 15:18:59 +02:00
Andrey Antukh
cf05980dae ⬆️ Update dependencies. 2020-05-05 15:18:59 +02:00
Andrey Antukh
76cf9e1bb0 🐛 Fix util object impl. 2020-05-05 12:34:51 +02:00
Andrey Antukh
bee543da74 🐛 Fix config loading. 2020-05-05 12:03:34 +02:00
Andrey Antukh
e92688f37e Merge pull request #194 from uxbox/201/dynamic_alignment
Dynamic alignment (brute force)
2020-05-05 11:23:36 +02:00
alonso.torres
c5dce559cd First dynamic alignment version 2020-05-05 11:18:20 +02:00
alonso.torres
8cbc12ef94 More functionality to dynamic alignment 2020-05-05 10:45:19 +02:00
alonso.torres
ffd0c95760 🎉 Dynamic alignment brute-force method 2020-05-05 10:40:26 +02:00
Hirunatan
37d0f20b7e Merge pull request #193 from uxbox/other/fixes-and-performance-improvements
Other/fixes and performance improvements
2020-05-04 13:17:24 +02:00
Andrey Antukh
0a79372305 🔥 Remove unused prn. 2020-05-04 12:36:56 +02:00
Andrey Antukh
af43eca399 🐛 Remove not necessary use-callback usage. 2020-05-04 10:42:43 +02:00
Andrey Antukh
80dcf587bf ⬆️ Update to the latest version of rumext. 2020-05-04 09:38:41 +02:00
Andrey Antukh
df8451c4e3 Throttle layers rendering. 2020-05-01 18:57:09 +02:00
Andrey Antukh
2ac8d68e01 ⬆️ Update npm deps. 2020-05-01 18:56:51 +02:00
Andrey Antukh
7e643abc15 🔥 Remove obsolete code. 2020-05-01 18:17:49 +02:00
Andrey Antukh
c2f91097bb Improve performance of recents page rendering. 2020-05-01 18:15:40 +02:00
Andrey Antukh
2ac42d15b6 General performance improvements on workspace. 2020-05-01 18:15:40 +02:00
Andrey Antukh
00168d392b Performance improvements on selection handlers. 2020-05-01 18:15:40 +02:00
Andrey Antukh
a5592dfe04 🐛 Show proper profile photo just after login. 2020-05-01 18:15:40 +02:00
Andrey Antukh
8446ad13cb 🐛 Fix minor issues on browser history handling. 2020-05-01 18:15:40 +02:00
Andrey Antukh
7fe7c3da6c ♻️ Refactor html5 history. 2020-05-01 18:15:40 +02:00
Andrey Antukh
d856b9aae3 Make config module worker safe. 2020-05-01 18:11:12 +02:00
Andrey Antukh
e84a462dde 🐛 Refactor shape attrs updating. 2020-04-30 15:27:39 +02:00
Andrey Antukh
6d6e0ecd21 🐛 Fix focus losing on text selection. 2020-04-30 15:27:39 +02:00
Andrey Antukh
6cffaafe24 🐛 Start edition mode on adding text shape. 2020-04-30 15:27:39 +02:00
Andrey Antukh
d3fe0a8abd 🐛 Fix the color palette to work with texts and groups. 2020-04-30 15:27:39 +02:00
Andrey Antukh
d37a2766db 💄 Cosmetic fixes on storage ns. 2020-04-30 12:35:16 +02:00
alonso.torres
fac14be90a 🐛 Fixes broken test 2020-04-30 12:35:16 +02:00
Andrey Antukh
bf4b5eb56a 🐛 Fix unexpected exception on text drawing. 2020-04-30 12:35:16 +02:00
Andrey Antukh
e0453643d8 💄 Sort ns declarations related to data.workspace. 2020-04-30 12:35:16 +02:00
Andrey Antukh
40d6cd50fb ♻️ Reorganize uxbox.main.data.workspace. 2020-04-30 12:35:16 +02:00
Andrey Antukh
5d24e76b62 💄 Minor chages on workspace. 2020-04-30 12:35:16 +02:00
Andrey Antukh
ee0cda67c1 💄 Minor cosmetic changes on workspace. 2020-04-30 12:35:16 +02:00
Andrey Antukh
24f2f3b677 🎉 Add tests build. 2020-04-30 12:35:16 +02:00
Andrey Antukh
c2847bec4d Minor improvements on app initialization. 2020-04-30 12:35:16 +02:00
Andrey Antukh
e9d5eccd16 ♻️ Refactor storage and i18n internals. 2020-04-30 12:35:16 +02:00
Andrey Antukh
51c39d169f ♻️ Refactor texts. 2020-04-30 12:35:16 +02:00
Andrey Antukh
07981487bf 🐛 Fix variants naming and handling of gfonts variants. 2020-04-30 12:35:16 +02:00
Andrey Antukh
b9210d45f3 Merge pull request #190 from uxbox/310/change-coordinate-origin
Change coordinate origin
2020-04-29 11:43:37 +02:00
alonso.torres
6f7f7c4032 Review fixes 2020-04-29 11:38:42 +02:00
alonso.torres
fc1e28a3d8 🐛 Fixed problem with preview frames 2020-04-29 11:03:48 +02:00
alonso.torres
68164102d1 🐛 Fixes problem when moving shapes in group on layers 2020-04-29 10:04:27 +02:00
alonso.torres
71e30a1607 Fixes styles 2020-04-29 10:04:27 +02:00
alonso.torres
7ab3d86bc6 🎉 Changed the user origin for shapes to their corner 2020-04-29 10:04:27 +02:00
Juan de la Cruz
db4e0fc314 Add sidebar styles quick fixes 2020-04-28 22:13:18 +02:00
Hirunatan
cc5d0b8fbf 🐛 Syntax fixes 2020-04-28 11:58:33 +02:00
Andrés Moya
0512a8dc5f 📚 Document visual debug utlities 2020-04-28 11:54:10 +02:00
alonso.torres
85b17442de Changes to selection 2020-04-28 11:02:37 +02:00
Andrey Antukh
511335ba33 🎉 Add loader to workspace. 2020-04-28 10:50:40 +02:00
Andrey Antukh
9b3879b3cf Minor improvements on redis subscription management. 2020-04-28 10:50:40 +02:00
Andrey Antukh
8b6f72a09b 🐛 Peroper handle hot-reload on worker. 2020-04-28 10:50:40 +02:00
Andrey Antukh
0ee25b6f42 Improve color asignation to profile and sessions. 2020-04-28 10:50:40 +02:00
Andrey Antukh
f2e4417d87 Assign profile avatar on profile update. 2020-04-28 10:50:40 +02:00
Andrey Antukh
f4f79008a4 Remove the use of "self" as default team id. 2020-04-28 10:50:40 +02:00
Andrey Antukh
285735e35f ♻️ Refactor presence and realtime cursors handling. 2020-04-28 10:50:40 +02:00
Hirunatan
1c3664921d Merge pull request #189 from uxbox/312/fix-rotation-handlers
🐛 Fixes problems with rotation handlers
2020-04-28 10:26:53 +02:00
alonso.torres
2e54989357 🐛 Fixes problems with rotation handlers 2020-04-28 09:08:55 +02:00
Andrey Antukh
7a93a06770 🐛 Fix text edition mode. 2020-04-27 16:26:44 +02:00
Andrey Antukh
c8c4bec316 Merge pull request #186 from uxbox/286/stroke-alignment
🎉 Add stroke-alignment option
2020-04-27 14:53:05 +02:00
Andrés Moya
9e21d6ab9d 🎉 Add stroke-alignment option 2020-04-27 14:33:45 +02:00
Andrey Antukh
de826f606d Merge branch '219/text-shape' into develop 2020-04-27 14:31:14 +02:00
Andrey Antukh
0435954f32 Enable edition without edition mode. 2020-04-27 14:29:18 +02:00
Andrey Antukh
3d4cbe28f2 🎉 Add uxbox.util.object ns. 2020-04-27 14:29:18 +02:00
Andrey Antukh
009720696c Update translation strings on text shape options. 2020-04-27 14:29:18 +02:00
Andrey Antukh
c0173c499a 🎉 Add fill and opacity to texts. 2020-04-27 14:29:18 +02:00
Andrey Antukh
fe397f89de Remove runtime fetching of google fonts.
Make the fonts loading & transformation as a cljs
compile time process.
2020-04-27 14:29:18 +02:00
Andrey Antukh
38bbe89f60 🐛 Prevent font flickering on font change. 2020-04-27 14:29:18 +02:00
Andrey Antukh
9441b87d36 🔥 Remove debug info from worker. 2020-04-27 14:29:18 +02:00
Andrey Antukh
5ce741ba6d 🎉 Add support for store plain js objects in transit. 2020-04-27 14:29:18 +02:00
Andrey Antukh
aea7b9b6bf Add empty file for cljs.user ns. 2020-04-27 14:29:18 +02:00
Andrey Antukh
aca1959dd7 🎉 Add new text shape. 2020-04-27 14:29:18 +02:00
Andrey Antukh
beed68166e 🎉 Reoganize builtin fonts. 2020-04-27 14:29:18 +02:00
alonso.torres
91eebecb61 🐛 Fixes problem when drawing new shape 2020-04-27 14:28:09 +02:00
Andrey Antukh
a7cb90919f Merge pull request #187 from uxbox/245/shapes_transforms_improvements
245/shapes transforms improvements
2020-04-27 14:13:26 +02:00
alonso.torres
822b13ef75 🐛 Fixed issue with flipped shapes 2020-04-27 13:27:35 +02:00
alonso.torres
285be7f5ff Maintain proportions when control key is pressed 2020-04-27 07:55:30 +02:00
alonso.torres
9f351ef155 🐛 Fixes problem with localStorage in web worker 2020-04-27 07:54:55 +02:00
alonso.torres
6d1a676f2f 🐛 Fixes problems with options panel 2020-04-27 07:08:10 +02:00
alonso.torres
de476383bd 🐛 Fixes problems with groups 2020-04-27 07:08:10 +02:00
alonso.torres
b0318d3144 ♻️ Moved main.geom to util.geom.shapes 2020-04-27 07:08:10 +02:00
alonso.torres
e6855fd9b3 ♻️ Refactor to transforms actions 2020-04-27 07:08:10 +02:00
alonso.torres
8886db7453 🎉 New stretch method 2020-04-27 07:08:10 +02:00
alonso.torres
b73958efd0 🎉 Improved transformations 2020-04-27 07:08:10 +02:00
Juan de la Cruz
d050103f58 Fix workspace UI sizes 2020-04-25 18:26:17 +02:00
Hirunatan
338b5f3778 Merge pull request #184 from uxbox/other/redis-and-emails-refactor
Emails Sending Refactor & Redis base infrastructure.
2020-04-23 13:54:38 +02:00
Andrey Antukh
428bd42f15 ♻️ Add smtp backend for sendmail task. 2020-04-20 14:08:33 +02:00
Andrey Antukh
7fba483bf1 ♻️ Refactor email sending. 2020-04-20 13:48:34 +02:00
Andrey Antukh
6ba3a28143 🎉 Add initial redis client foundation. 2020-04-20 13:46:15 +02:00
Andrey Antukh
96472b6cd2 🎉 Add redis to devenv docker compose. 2020-04-20 13:46:15 +02:00
Andrey Antukh
04d364225c 🎉 Add page ordering (with d&d). 2020-04-20 11:56:10 +02:00
Andrey Antukh
11f54f51ea 🐛 Fix context menu handling on image shapes. 2020-04-20 11:56:10 +02:00
Andrey Antukh
e056da04c3 🐛 Fix shape hidden/blocked attrs handling. 2020-04-20 11:56:10 +02:00
Andrey Antukh
d6d38283e7 Improve layers performance. 2020-04-20 11:56:10 +02:00
Andrey Antukh
45bf06733f 🔥 Remove react-dnd dependency. 2020-04-20 11:56:10 +02:00
Andrey Antukh
77d555dbf2 ♻️ Refactor workspace initialization.
Enable selection indexation.
2020-04-20 11:56:10 +02:00
Andrey Antukh
7f7f28f871 Remove store dependency from geom ns. 2020-04-20 11:56:10 +02:00
Andrey Antukh
4030e43ac1 🎉 Add (web)worker impl with selection index. 2020-04-20 11:56:10 +02:00
Andrey Antukh
f7dce00c1f 🎉 Add QuadTree implementation. 2020-04-20 11:56:10 +02:00
Andrey Antukh
5d6d855562 💄 Set manifest in json format. 2020-04-20 11:56:10 +02:00
Andrey Antukh
6adb168ca4 Minor improvements on perf ns. 2020-04-20 11:56:10 +02:00
Andrey Antukh
484702527e 🎉 Add worker base implementation. 2020-04-20 11:56:10 +02:00
Andrey Antukh
517b50238e Add page-changes query. 2020-04-20 11:56:10 +02:00
Andrés Moya
f19a8e67e1 🐛 Fix behavior of search box in dashboard 2020-04-17 10:15:02 +02:00
Hirunatan
490949ebee Merge pull request #181 from uxbox/editable-rgb
Editable rgb
2020-04-16 15:37:13 +02:00
Andrey Antukh
284ee4b68f Enable color update when externaly changed. 2020-04-16 15:36:31 +02:00
Andrés Moya
7b5f780ac7 Allow to edit RGB values by hand 2020-04-16 15:30:52 +02:00
Hirunatan
5ea72630e8 Merge pull request #180 from uxbox/show-circle-diameter
🎉 Show circle diameter in options form instead of radius
2020-04-16 15:30:14 +02:00
Andrés Moya
e3d3751468 🎉 Show circle diameter in options form instead of radius 2020-04-16 15:24:57 +02:00
Hirunatan
f5e16eb469 Merge pull request #179 from uxbox/fixes-2020-04-15
Bugfixes
2020-04-16 11:25:41 +02:00
Andrey Antukh
4a4a0d0fd4 ⬆️ Update npm deps. 2020-04-16 10:40:30 +02:00
Andrey Antukh
e11d2033d2 🎉 Add integrated 403 page. 2020-04-16 10:19:36 +02:00
Andrey Antukh
331f698ca3 🔥 Remove unused code. 2020-04-16 10:09:11 +02:00
Andrey Antukh
9cd25d4fa0 🐛 Redirect to 404 page when file not found on workspace. 2020-04-16 10:08:00 +02:00
Andrey Antukh
953b3caf3d 🔥 Remove unused change event impl (:mov-obj). 2020-04-16 10:08:00 +02:00
Andrey Antukh
b3770963b0 🐛 Fix duplicate ids bug.
Caused by :mov-object bad frame-id assignation.
2020-04-16 10:08:00 +02:00
Andrey Antukh
9eed0eedeb 🔥 Remove commented code. 2020-04-16 10:08:00 +02:00
Andrey Antukh
668aa3ea93 💄 Fix naming of some functions on workspace data ns. 2020-04-16 10:08:00 +02:00
Andrey Antukh
a591e4539c ♻️ Refactor add-shape event.
And remove `add-frame` because `add-shape` is now
generic.
2020-04-16 10:08:00 +02:00
Andrey Antukh
3eb7cb0bb1 💄 Cosmetic changes to the group and ungroup events. 2020-04-16 10:08:00 +02:00
Andrey Antukh
cd72860ea0 ♻️ Refactor copy&paste and duplicate shape. 2020-04-16 10:08:00 +02:00
Andrey Antukh
63f43d917b Simplify shape deletion code. 2020-04-16 10:08:00 +02:00
Andrey Antukh
1d678acdd9 🐛 Prevent ghost state on change from one file to other. 2020-04-16 10:08:00 +02:00
Andrey Antukh
5fb0c5c312 🐛 Fix group undo/redo. 2020-04-16 10:08:00 +02:00
Andrey Antukh
527acac92e 🐛 Prevent out of order write on pages. 2020-04-16 10:08:00 +02:00
Andrey Antukh
a9253f5f51 Merge pull request #174 from Monogramm/lang-typo
Typo: land must be lang
2020-04-16 08:43:04 +02:00
Andrés Moya
065ab2aade Show correct kb shortcuts for zoom 2020-04-15 11:31:17 +02:00
Hirunatan
45422722c7 Merge pull request #178 from uxbox/fix-search
Fix search
2020-04-15 10:40:57 +02:00
Andrés Moya
43e91883d8 🚧 Quick patch to have search working (FIXME) 2020-04-15 10:26:13 +02:00
Andrés Moya
ce37b46de0 🐛 Retrieve complete information for files in dashboard search 2020-04-15 10:26:13 +02:00
alonso.torres
07fb644e07 🐛 problem with palettes 2020-04-15 09:42:34 +02:00
Andrey Antukh
55c85c0d5c Merge pull request #177 from uxbox/246/show-relative-pos-in-options
 Use relative coords in options panel
2020-04-15 09:26:52 +02:00
Andrey Antukh
e240f14a37 🐛 Add a workaround for duplicate ids. 2020-04-14 17:31:33 +02:00
Andrey Antukh
c2ed39a36d 🐛 More bugfixes. 2020-04-14 17:01:09 +02:00
Andrés Moya
f0478ffa01 Use relative coords in options panel 2020-04-14 15:34:02 +02:00
Andrey Antukh
b24307cf35 Merge pull request #176 from uxbox/239/select-with-zoom
🐛 Take into account zoom when selecting objects with rect
2020-04-14 12:59:24 +02:00
Andrés Moya
3fd1513128 🐛 Take into account zoom when selecting objects with rect 2020-04-14 12:36:32 +02:00
Andrey Antukh
41fc23f99b 🚧 Temporary disable okulary atoms. 2020-04-14 11:57:49 +02:00
Hirunatan
043cf27ace Merge pull request #175 from uxbox/250/review-color-variables
Change color variables
2020-04-14 11:20:49 +02:00
Juan de la Cruz
a739343df5 Change color variables 2020-04-14 11:20:14 +02:00
Juan de la Cruz
a4619376d1 Add Go back btn to error page 2020-04-14 10:45:35 +02:00
Juan de la Cruz
a97230f5cb Fix library tab scroll 2020-04-13 22:12:04 +02:00
Juan de la Cruz
d9d3adb3e2 New handlers colors 2020-04-13 22:07:54 +02:00
Juan de la Cruz
fcbcb55e53 New select option styles workspace 2020-04-13 21:50:17 +02:00
Andrey Antukh
ae7a7a3c6c 🐛 Add missing styles for viewer empty state. 2020-04-13 18:10:58 +02:00
Andrey Antukh
5ee25f827c Add better empty state for viewer. 2020-04-13 18:04:42 +02:00
Andrey Antukh
cf56614d87 ⬆️ Update okulary (bug fixes). 2020-04-13 15:47:45 +02:00
Andrés Moya
bb29bea207 📚 Add sample collections to backend document 2020-04-13 15:39:37 +02:00
Andrey Antukh
2abe95cfc2 ⬆️ Update okulary (bug fixes). 2020-04-13 15:03:32 +02:00
Juan de la Cruz
0dd8c66ce4 Add new error page design 2020-04-13 14:58:30 +02:00
Vitaly Kornilov
facd650e4c 🐛 Typo: land must be lang 2020-04-13 15:24:44 +03:00
Andrey Antukh
dd34907f5c 🐛 Fix themes issues. 2020-04-13 14:21:13 +02:00
Andrey Antukh
040dd73599 🐛 Fix text edition. 2020-04-13 14:07:05 +02:00
Andrey Antukh
26b2b89b69 🐛 Temporary disable memoization on layers. 2020-04-13 13:17:49 +02:00
Andrey Antukh
9734bc9325 🐛 Add missing key on viewport frames. 2020-04-13 13:09:45 +02:00
Andrey Antukh
317a39e76b 🐛 Add missing require. 2020-04-13 12:34:34 +02:00
Andrey Antukh
345b25f636 Merge branch '219/text-tool' into develop 2020-04-13 12:33:55 +02:00
Andrey Antukh
6731fa1e5e ♻️ Refactor all shapes to use the measures component. 2020-04-13 12:33:08 +02:00
alonso.torres
344a7cbebe Make measures menu as reusable component. 2020-04-13 12:32:49 +02:00
Juan de la Cruz
5c3499057e 🎉 Add new text options layout & styles. 2020-04-13 12:32:49 +02:00
Andrey Antukh
c1a2b3c868 Merge branch 'monogram/themes' into develop 2020-04-13 12:06:22 +02:00
Andrey Antukh
5aa97513de Unify the themes under 'default' theme.
Because right now we don't have a real dark and light
themes (right now workspace is dark and dashbaord is
light).
2020-04-13 12:03:56 +02:00
Vitaly Kornilov
ea3e17f7fe 🎉 Add themes infraestructure. 2020-04-13 11:49:26 +02:00
Andrey Antukh
cd61269cd5 ♻️ Replace lentes with okulary (performance). 2020-04-13 11:27:46 +02:00
Andrey Antukh
9649d67883 Unify uuid under uxbox.common.uuid. 2020-04-13 11:27:46 +02:00
Andrey Antukh
a91a8401d6 More improvements to perf namespace. 2020-04-13 11:27:46 +02:00
Andrey Antukh
032252469b Add more memoization hooks. 2020-04-13 11:27:46 +02:00
Andrey Antukh
162fe5219c 🎉 Add missing memoization to frame wrapper on viewer. 2020-04-13 11:27:46 +02:00
Andrey Antukh
a14073d170 Add proper memoization to the generic shape component. 2020-04-13 11:27:46 +02:00
Andrey Antukh
39807186df 🎉 Add hooks and memoization to group components. 2020-04-13 11:27:46 +02:00
Andrey Antukh
0b4365b3c3 Proper use of hooks on frame shape. 2020-04-13 11:27:46 +02:00
Andrey Antukh
5a6ccedf41 🔥 Remove unused wraper def. 2020-04-13 11:27:46 +02:00
Andrey Antukh
8a4a9d7df8 Set proper equality check for ref used in group.
This avoids rerender groups when only siblings changes.
2020-04-13 11:27:46 +02:00
Andrey Antukh
4a2b67c9d5 Set enable as true by default on profiler component. 2020-04-13 11:27:46 +02:00
Andrey Antukh
86e31e7e86 💄 Minor cosmetic changes on refs. 2020-04-13 11:27:46 +02:00
Andrey Antukh
51e4bf82f2 Properly memoize higher order components. 2020-04-13 11:27:46 +02:00
Andrey Antukh
d007bdf813 💄 Minor cosmetic change on frame memo equals func. 2020-04-13 11:27:46 +02:00
Andrey Antukh
7db2db96e1 🚧 Add ad-hoc d&d implementation.
React-Dnd is a very nice library but adds a lot of overhead. Causes
a lot of latency when a number of elements grows.
2020-04-13 11:27:46 +02:00
Andrey Antukh
274a85186e Make :mov-objects change more universal.
With additional exhaustive tests.
2020-04-13 11:27:46 +02:00
Andrey Antukh
c85fd20a58 Allow disable the profiler. 2020-04-13 11:27:46 +02:00
Andrey Antukh
340faa3a27 🎉 Add helper for create custom more easy to read uuids (for testing). 2020-04-13 11:27:46 +02:00
Hirunatan
c1c661c2a9 Merge pull request #172 from uxbox/fix_copy_paste_groups
Fixes copy/paste with groups
2020-04-10 15:05:41 +02:00
alonso.torres
815320cd24 🐛 Fixes copy/paste with groups 2020-04-10 15:04:44 +02:00
Andrés Moya
43550af175 🐛 Fix align and distribute grouped objects 2020-04-10 13:01:18 +02:00
Andrés Moya
e9d60913d0 🎉 Add space distribution of shapes 2020-04-10 13:01:18 +02:00
Hirunatan
a0c5f32a42 Merge pull request #171 from uxbox/fix_dashboard_preview
Fixes problem with dashboard preview
2020-04-10 11:39:50 +02:00
alonso.torres
2ab803cebc 🐛 Fixes problem with dashboard preview 2020-04-10 11:00:11 +02:00
Andrey Antukh
1978c6860b Merge pull request #168 from uxbox/214/multiple_selection_rotation
Multiple selection rotation
2020-04-10 09:04:21 +02:00
alonso.torres
d86b5237c1 🎉 Multiple selection rotation 2020-04-10 07:54:14 +02:00
alonso.torres
e59b20fb6e 🐛 Fixed scroll bar in layers 2020-04-09 16:02:03 +02:00
Juan de la Cruz
ac6aa427a3 New login img 2020-04-09 11:05:43 +02:00
Juan de la Cruz
4cc8f73aa8 Change login bg image 2020-04-09 11:04:18 +02:00
Juan de la Cruz
34ce86aba0 Add new login screen styles 2020-04-09 10:58:32 +02:00
Andrey Antukh
ebc9d7aa63 Merge pull request #167 from uxbox/195/alignment
195/alignment
2020-04-09 10:53:40 +02:00
Andrés Moya
8e573abf9e 🎉 Implement actual object alignment 2020-04-09 10:51:27 +02:00
Andrés Moya
b798f7a988 ♻️ Rename text align icons for consistency 2020-04-09 10:51:27 +02:00
Andrés Moya
a4ed1f30a4 🎉 Add shape alignment buttons 2020-04-09 10:51:27 +02:00
Juan de la Cruz
b241e26285 Add styles to stroke options 2020-04-09 09:43:04 +02:00
Andrey Antukh
4073b3a981 🐛 Fix compilation error related to perf ns. 2020-04-09 08:54:46 +02:00
Andrey Antukh
bbbd7b704e 🎉 Add better profiling helpers. 2020-04-08 23:24:14 +02:00
Andrey Antukh
9db6be2047 🎉 Add tdigest dependency (for performance measure). 2020-04-08 22:48:29 +02:00
Andrey Antukh
92bda9675f 💄 Minor cosmetic changes. 2020-04-08 19:20:37 +02:00
Andrey Antukh
14ff64d3d7 🐛 Fix mouse zoom on viewer and workspace. 2020-04-08 19:18:48 +02:00
Andrey Antukh
3f925690ee ⬆️ Update rumext dependency (fix component naming issues). 2020-04-08 18:09:20 +02:00
Andrey Antukh
15026c900b 🔥 Remove some prn's lines. 2020-04-08 16:55:12 +02:00
Andrey Antukh
7068a49e00 🔧 Update anon fn naming policy. 2020-04-08 16:54:44 +02:00
Andrey Antukh
6f9b304a40 🐛 Add missing events. 2020-04-08 16:43:06 +02:00
Andrey Antukh
43de705308 Update locales file. 2020-04-08 16:40:22 +02:00
Andrey Antukh
02170a156e ♻️ Refactor messages component. 2020-04-08 16:40:10 +02:00
Andrey Antukh
a0b70b7bbd Make clipboard api more generic. 2020-04-08 16:37:32 +02:00
Andrey Antukh
7e7c0dad7f Merge pull request #166 from uxbox/group_shape
Groups improvements
2020-04-08 14:21:55 +02:00
alonso.torres
e6200aae4c Adds new method to move objects 2020-04-08 14:11:33 +02:00
alonso.torres
20c6ae867b 🐛 Fixes problem when moving child 2020-04-08 14:11:33 +02:00
alonso.torres
185b1f9ee1 Allows selection of inside items with double click 2020-04-08 14:11:33 +02:00
alonso.torres
f99b3bfdb8 Adds options menu for groups 2020-04-08 14:11:33 +02:00
alonso.torres
9d0b71a36c Allow selection of elements inside group 2020-04-08 14:11:33 +02:00
alonso.torres
57b2141166 Fixes problem with frame movement 2020-04-08 14:11:33 +02:00
Andrey Antukh
d737069ef9 Improve fixtures and media loader entry points. 2020-04-08 13:54:30 +02:00
Andrey Antukh
a9b2951d8b Merge branch '20/view-application' into develop 2020-04-08 13:05:35 +02:00
Andrey Antukh
946f978e10 💄 Show icons sorted on the debug view. 2020-04-08 13:04:50 +02:00
Andrey Antukh
427273a09f ♻️ Minor refactor of zoom-widget and workspace header. 2020-04-08 13:04:32 +02:00
Andrey Antukh
a038cb197b Fix many visual issues on viewer share by link. 2020-04-08 13:03:35 +02:00
Andrey Antukh
d2e0913170 🎉 Add correct fullscreen icons to svg spread. 2020-04-08 13:02:06 +02:00
Andrey Antukh
ed5a7fb44b 💄 Add event handler to main icon on viewer header. 2020-04-08 10:38:54 +02:00
Andrey Antukh
ce28464251 Enable anonymous users and viewer with token. 2020-04-08 10:38:54 +02:00
Andrey Antukh
fe203fe70c Improve profile spec to allow anonymous users. 2020-04-08 10:38:54 +02:00
Andrey Antukh
115ba72572 Make profile query work for unauthenticated users. 2020-04-08 10:38:54 +02:00
Andrey Antukh
4465db130d Integrate stoke add/del operation. 2020-04-08 10:27:34 +02:00
Andrey Antukh
c90c38d612 Merge pull request #165 from uxbox/168/properties-sidebar
Right Sidebar Refactor
2020-04-07 19:56:14 +02:00
Andrey Antukh
58b14cda3d 🐛 Set proper shape ordering on layers sidebar. 2020-04-07 19:53:59 +02:00
Andrey Antukh
6df2f20127 🐛 Fix image flickering on shape movement. 2020-04-07 19:53:23 +02:00
Andrey Antukh
ccce224377 🐛 Fix "delete" shortcut. 2020-04-07 19:52:56 +02:00
Andrey Antukh
54f6e7cc9e ♻️ Refactor shape options sidebar. 2020-04-07 19:52:37 +02:00
Andrey Antukh
8b7d613b99 Update locales. 2020-04-07 19:51:35 +02:00
Andrey Antukh
fd1b89b950 🔥 Remove unused code from gulpfile. 2020-04-07 19:51:15 +02:00
Andrey Antukh
d2863c91db 🎉 Add coalesce helper to common data ns. 2020-04-07 19:51:03 +02:00
Andrey Antukh
92e5fc9980 🚧 Add initial work on share by token. 2020-04-07 14:39:53 +02:00
Andrey Antukh
4105692dee 🎉 Add backend code for share token handling. 2020-04-07 14:39:53 +02:00
Andrey Antukh
9492fe188d 💄 Rename internal view ns to viewer. 2020-04-07 14:39:53 +02:00
Andrey Antukh
25eba9de43 Fix almost all backend tests. 2020-04-07 14:39:53 +02:00
Andrey Antukh
49eb050423 🔥 Remove commented code. 2020-04-07 14:39:53 +02:00
Andrés Moya
daed3bcac7 📚 Document externs file 2020-04-06 18:31:29 +02:00
Andrey Antukh
5c13b03b3d Merge pull request #155 from uxbox/20/view-application
View Application (initial version)
2020-04-06 17:51:32 +02:00
Andrey Antukh
ecd3906c51 🔥 Remove prn. 2020-04-06 14:48:16 +02:00
Andrey Antukh
78d26c0617 🔥 Remove unused line of code on gulpfile. 2020-04-06 14:36:57 +02:00
Andrey Antukh
a34fb729ea 🐛 Fix preview and viewer rendering. 2020-04-06 14:30:46 +02:00
Andrey Antukh
fc18b39b89 💄 Fix merge issues. 2020-04-06 12:46:13 +02:00
Andrey Antukh
bd2ea48969 Improve user interactions with thumbnails panel. 2020-04-06 12:45:37 +02:00
Andrey Antukh
861199f812 Rename react-hooks to hooks. 2020-04-06 12:45:37 +02:00
Andrey Antukh
242eef8427 🎉 Add fullscreen handling to viewer. 2020-04-06 12:45:37 +02:00
Andrey Antukh
d589f19be4 🎉 Add basic zoom shortcuts to viewer. 2020-04-06 12:45:37 +02:00
Andrey Antukh
0a1d6f1bdb 🐛 Fix scroll and positioning on viewer. 2020-04-06 12:45:37 +02:00
Andrey Antukh
b563ab445c 🎉 Add externds (fixes an issue on prod build). 2020-04-06 12:45:37 +02:00
Andrey Antukh
c907126b60 ♻️ Replace wrap-memo with memo. 2020-04-06 12:45:37 +02:00
Andrey Antukh
6ba4531d18 ⬆️ Update rumext dependency (bugfixing). 2020-04-06 12:41:57 +02:00
Andrey Antukh
648ccf4cce Improve error handling. 2020-04-06 12:41:57 +02:00
Andrey Antukh
8597b87cad 🎉 Add new shortcuts handling implementation. 2020-04-06 12:41:57 +02:00
Andrey Antukh
1a3a48e4de 🎉 Add initial version of viewer. 2020-04-06 12:40:25 +02:00
Andrey Antukh
b3e6566bd8 🔥 Remove unused code. 2020-04-06 12:30:29 +02:00
Andrey Antukh
aad3e092f7 Clean code on router ns. 2020-04-06 12:30:29 +02:00
Andrey Antukh
759530ea58 Minor api improvements on dropdown component. 2020-04-06 12:30:29 +02:00
Andrey Antukh
ec04bb4160 🎉 Add backend code for viewer page. 2020-04-06 12:30:29 +02:00
Andrey Antukh
9759cb9fd9 ♻️ Don't embedd svg sprite into the index.html file. 2020-04-06 12:30:29 +02:00
Andrey Antukh
d974ed750a 🎉 Add randomcolor dependency. 2020-04-06 12:30:29 +02:00
Andrey Antukh
884cac4b3b ♻️ Simplify gulp compilation stage. 2020-04-06 12:30:29 +02:00
Andrey Antukh
c10c6cf149 Merge pull request #163 from uxbox/group_shape
Group shapes
2020-04-06 12:29:56 +02:00
alonso.torres
a3a889339b Adds ungroup shapes 2020-04-06 11:57:09 +02:00
alonso.torres
f79e902762 Adds group shape 2020-04-06 11:52:42 +02:00
Andrés Moya
67a481356b Enable locking of artboards and enhance visualization 2020-04-06 10:39:50 +02:00
Andrés Moya
e443ae0962 Refresh colorpicker when user selects a color 2020-04-06 09:04:42 +02:00
Andrés Moya
5809a67e4c 💄 Hide strike options when strike is none 2020-04-06 09:00:54 +02:00
Andrés Moya
9f664f5239 Maintain artboard label size on zoom 2020-04-06 09:00:16 +02:00
Andrés Moya
1d8f2dd735 💄 Show closed eye icon when hidden layer 2020-04-03 12:28:13 +02:00
Andrés Moya
27527c5540 📚 Document usage of shadow-cljs in dev environment 2020-04-02 12:21:46 +02:00
Andrey Antukh
f9d29d723c Merge pull request #159 from uxbox/123/zoom-improvements
123/zoom improvements
2020-04-02 10:43:49 +02:00
Andrés Moya
3e706abc54 🎉 Zoom with mouse wheel 2020-04-02 10:21:38 +02:00
Andrés Moya
d553b0c77c Review zoom shortcuts 2020-04-02 10:21:38 +02:00
alonso.torres
e73350e2ba 🎉 Adds groups infrastructure 2020-04-02 09:58:48 +02:00
Andrey Antukh
9d0450a4b5 Merge pull request #157 from uxbox/216-new-objects-at-the-top
 Put new objects at the top
2020-04-02 09:28:50 +02:00
Andrés Moya
69c27ca24d Put new objects at the top 2020-04-01 17:16:40 +02:00
Andrey Antukh
317895d39d Merge pull request #156 from uxbox/183-copy-paste
183 copy paste
2020-04-01 09:58:26 +02:00
Andrés Moya
ec3be76782 ♻️ Enhance some fragments of code 2020-04-01 08:51:37 +02:00
Andrés Moya
637f0934f9 🎉 Auto select pasted objects 2020-03-31 15:25:29 +02:00
Andrés Moya
a4d8675a15 🎉 Calculate in which frame the pasted objects fit 2020-03-31 13:24:08 +02:00
Andrés Moya
82c264b75f 🎉 Give unique names to objects when pasting 2020-03-31 13:24:08 +02:00
Andrés Moya
83a02ad6e6 🎉 Copy and paste to cursor position 2020-03-30 13:48:50 +02:00
Juan de la Cruz
b1c029e16a Fix minor style changes at workspace 2020-03-30 13:20:07 +02:00
Juan de la Cruz
14c671ebf3 Fix minor style changes 2020-03-30 13:15:31 +02:00
Andrey Antukh
dc62e4e0e6 🐛 Set proper class on frame-layer on sidebar. 2020-03-30 11:05:28 +02:00
Andrey Antukh
bb9d1ce5a6 📚 Update contributing file. 2020-03-30 11:03:38 +02:00
Andrey Antukh
1beda52770 Merge branch '198/frame-review' into develop 2020-03-30 10:56:22 +02:00
Andrés Moya
a8f81fbdf3 Edit stroke style of artboard/frames. 2020-03-30 10:56:01 +02:00
Andrés Moya
5f938f4f38 🎉 Add orientation buttons for frames options. 2020-03-30 10:55:50 +02:00
Andrés Moya
97141bfb7a 🎉 Add size presets for frames options. 2020-03-30 10:55:43 +02:00
Andrés Moya
461e003805 🎉 Add a label to frames in workspace. 2020-03-30 10:55:36 +02:00
Andrey Antukh
002f736b97 Merge branch '173/layers-panel' into develop 2020-03-30 10:53:10 +02:00
Juan de la Cruz
89a27b933a 🐛 Fix scroll on workspace library. 2020-03-30 10:52:39 +02:00
Juan de la Cruz
f5bced5692 💄 icon layer style 2020-03-30 10:52:18 +02:00
alonso.torres
eaed5a580c 🐾 adds class to icon layers 2020-03-30 10:52:18 +02:00
Juan de la Cruz
c4caba9016 🐛 Fix minor style bugs. 2020-03-30 10:52:05 +02:00
alonso.torres
79d0d56daf 🔥 fixed grid layout 2020-03-30 10:51:19 +02:00
Juan de la Cruz
25a201bc44 💄 change layers styles 2020-03-30 10:51:19 +02:00
Andrey Antukh
71afd6719f 👷 Adapt production build script to shadow-cljs. 2020-03-30 10:46:15 +02:00
Andrey Antukh
f7bfc4d135 🎉 Migrate from figwheel to shadow-cljs. 2020-03-30 09:46:35 +02:00
Andrey Antukh
7d0037bfaa Merge pull request #153 from uxbox/drag-drop-library
Drag/drop of element libraries in to canvas
2020-03-27 14:48:47 +01:00
alonso.torres
8b2612559d 💅 drag/drop of element libraries in to canvas 2020-03-27 14:42:34 +01:00
Andrey Antukh
c4c9fcf9e9 🐛 Add an global XR object to main externs.
Because Chrome has a very strange XR global object.
2020-03-27 13:35:18 +01:00
alonso.torres
1b8aab654f fixed issue when drawing images from workspace 2020-03-27 08:41:51 +01:00
alonso.torres
1869e2b160 🔥 removed println 2020-03-27 08:26:49 +01:00
Andrey Antukh
1e82573675 Merge pull request #151 from uxbox/9/workspace-libraries
Workspace - New libraries panel and color palettes
2020-03-26 16:58:06 +01:00
alonso.torres
15c5c41a74 🇬🇧 fixed locales 2020-03-26 15:37:15 +01:00
alonso.torres
e4ad75d5d1 🎻 moved selections to state so they persists when the component closes 2020-03-26 15:37:15 +01:00
alonso.torres
5cd8e85034 👾 changes libraries types, reworked color palette 2020-03-26 15:37:15 +01:00
alonso.torres
decd3e3443 🔥 changes to effects 2020-03-26 15:37:15 +01:00
alonso.torres
57d633b1d2 🐸 integration with backend data 2020-03-26 15:37:15 +01:00
alonso.torres
4102dca55c 🐧 adds layout for libraries sidebar 2020-03-26 15:37:15 +01:00
alonso.torres
c09fe46790 🐤 tabs component 2020-03-26 15:37:15 +01:00
Andrey Antukh
2c1919117d 💄 Fix indentation on workspace header. 2020-03-26 15:23:27 +01:00
Andrey Antukh
4d9b05f83c 🐛 Set proper user photo on workspace header. 2020-03-26 15:22:25 +01:00
Andrey Antukh
cd2302c8d5 🐛 Fix viewport context-menu (right-click). 2020-03-26 15:18:06 +01:00
Andrey Antukh
4da4bdd577 💄 Minor cosmetic changes on dashboard main bar. 2020-03-26 15:15:42 +01:00
Andrey Antukh
b5b2a374d8 💄 Improve profile styles. 2020-03-26 14:44:18 +01:00
Andrey Antukh
340b1bc269 ⬆️ Update cuerdas to the latest version. 2020-03-26 14:34:16 +01:00
Andrey Antukh
b39d747e8f ♻️ Fix many issues on profile settings page. 2020-03-26 11:25:16 +01:00
Andrey Antukh
8d6d839878 🐛 Fix media deletion on first profile photo change. 2020-03-26 11:24:35 +01:00
Andrey Antukh
1ed1c95e4d 🐛 Fix unexpected unhandled exception on 404 requests on media. 2020-03-26 11:23:41 +01:00
Andrey Antukh
fc6948e627 💄 Minor cosmetic changes on right click workspace menu. 2020-03-25 18:53:11 +01:00
Andrey Antukh
03e09aff17 Improve workspace contextual menu. 2020-03-25 18:49:59 +01:00
Andrey Antukh
1404057a60 🎉 Restore page preview on dashboard. 2020-03-25 18:02:03 +01:00
Andrey Antukh
48d7ea4be4 Make the attrs procesing of shapes uniform. 2020-03-25 11:07:50 +01:00
Andrey Antukh
979c7dc2a0 Merge branch 'other/update-deps' into develop 2020-03-25 09:41:55 +01:00
Andrey Antukh
2009545d6a ⬆️ Update to the latest version of rumext. 2020-03-25 09:41:39 +01:00
Andrey Antukh
2796f9d9c1 ⬆️ Update vendor dependencies. 2020-03-25 09:41:39 +01:00
Andrey Antukh
ce094b663c ⬆️ Update beicon and rumext to the latest version. 2020-03-25 09:41:38 +01:00
Andrey Antukh
4c85550d58 ⬆️ Set default node version to 10.16.1. 2020-03-25 09:41:38 +01:00
Andrey Antukh
722e0b730f Merge branch '180/quick-ui-profile-review' into develop 2020-03-25 09:39:48 +01:00
Andrey Antukh
62d90caf51 🚧 Basic user profile style refactor. 2020-03-25 09:39:27 +01:00
Andrey Antukh
0c4c50270c Merge pull request #148 from uxbox/us/182/workspace-copy-paste
Copy&Paste preview
2020-03-25 09:38:51 +01:00
Andrey Antukh
5c871c863f 🎉 Initial work on copy & paste functionality. 2020-03-24 22:57:39 +01:00
Andrey Antukh
7b23a2a2b4 ♻️ Reorganize and improve the shortcuts machinary. 2020-03-24 22:57:39 +01:00
Andrey Antukh
1195777036 🎉 Add clipboard related functions to webapi utils. 2020-03-24 22:57:39 +01:00
Andrey Antukh
c66b483fba 🐛 Fix ordering on undo operation on adding/duplicating shape. 2020-03-24 22:57:39 +01:00
Andrey Antukh
112140c006 🐛 Fix automatic shape naming on workspace. 2020-03-24 22:57:39 +01:00
Andrey Antukh
3f8031cd0e 💄 Minor code reorganization on data.workspace ns file. 2020-03-24 22:57:39 +01:00
Andrey Antukh
43b263e025 💄 Change copyright notice on main ns file. 2020-03-24 22:57:39 +01:00
Andrey Antukh
9454302a83 🐛 Ensure data integrity on :del-obj change impl. 2020-03-24 22:57:39 +01:00
Andrey Antukh
d2f23fd95e Merge pull request #150 from uxbox/bug/create-file-from-recent
Update recent-files when creating or deleting a file
2020-03-24 19:22:36 +01:00
Andrés Moya
0868b6dcf4 Update recent-files when creating or deleting a file 2020-03-24 15:33:46 +01:00
Andrey Antukh
da1df60746 Merge pull request #149 from uxbox/189/zoom-improvements
Improve zoom control in workspace header
2020-03-23 15:20:50 +01:00
Andrés Moya
b81fb55d2c Improve zoom control in workspace header 2020-03-23 15:11:29 +01:00
Andrey Antukh
f2fa7d4e5a Merge pull request #147 from uxbox/task/151/workspace-menu-integration
🎉 Add workspace menu integration.
2020-03-22 10:36:11 +01:00
Juan de la Cruz
c846521c92 🎉 Add styles to workspace menu. 2020-03-22 10:34:38 +01:00
Andrey Antukh
aebea8ed5f 🎉 Add workspace menu integration. 2020-03-22 10:33:55 +01:00
Andrés Moya
b210e84dd3 Project and files edition and deletion 2020-03-22 10:19:36 +01:00
Andrés Moya
8b0eab5e90 New header for dashboard projects and draft 2020-03-22 10:19:36 +01:00
Andrés Moya
6838b9e769 New actions menu in file thumbnails 2020-03-22 10:19:36 +01:00
Andrey Antukh
74c8107a92 Merge pull request #144 from uxbox/130/icons_library
Adds CRUD for libraries and deletion of elements
2020-03-22 09:49:24 +01:00
alonso.torres
0f501ed85d 🐌 adds modals to deletions 2020-03-20 15:12:34 +01:00
alonso.torres
fdb3b8aacb 🔥 improved deletes and library flow 2020-03-20 15:12:34 +01:00
alonso.torres
a0a031dbc2 🐸 adds crud for libraries and deletion of elements 2020-03-20 15:12:34 +01:00
Andrey Antukh
df75099000 ⬆️ Update cljs-devtools to 1.0.0. 2020-03-20 14:14:55 +01:00
Andrey Antukh
28ebbe14ca 🎉 Add icons preview (develop only). 2020-03-20 13:09:48 +01:00
Juan de la Cruz
c7791fd68d add new styles to context-menu 2020-03-20 11:37:40 +01:00
Andrey Antukh
74ece8fde0 🐛 Fix bug on on-mouse-move event handler. 2020-03-20 11:37:40 +01:00
Andrey Antukh
06ec1e00ee Add context menu to all shapes. 2020-03-20 11:37:40 +01:00
Andrey Antukh
cae5b5e778 🎉 Add right-click context menu on workspace. 2020-03-20 11:37:40 +01:00
Andrey Antukh
1434cb62f5 🎉 Add many helpers to uxbox.util.dom ns. 2020-03-20 11:37:40 +01:00
Andrey Antukh
9d8dffa80b 🐛 Set proper order on rendering shapes inside a frame. 2020-03-20 11:37:40 +01:00
Andrey Antukh
a0643c7388 💄 Minor cosmetic changes on props checking function. 2020-03-20 11:37:40 +01:00
Andrey Antukh
74a6bc8e06 Improve selection handling on viewport. 2020-03-20 11:37:40 +01:00
Andrey Antukh
16dab34864 Remove dom nesting on dropdown. 2020-03-20 11:37:40 +01:00
Andrey Miskov
c663d54eb8 🎉 Add registration domain whitelist for emails
Signed-off-by: Andrey Miskov <amiskov@gmail.com>
2020-03-19 17:47:25 +01:00
Andrey Antukh
394d238f97 Merge pull request #141 from uxbox/130/icons_library
130/icons library
2020-03-18 12:08:31 +01:00
alonso.torres
5b7182fac6 ❄️ integration with new items 2020-03-18 11:40:15 +01:00
alonso.torres
b2474fc3fb :neckbeard: retrieve data from backend 2020-03-18 11:40:15 +01:00
alonso.torres
e700f937db 👹 layout for library 2020-03-18 11:40:15 +01:00
Andrey Antukh
e79b190975 🔥 Remove commented code. 2020-03-18 11:39:27 +01:00
Andrey Antukh
9e5b7459f0 🔥 Remove unused code. 2020-03-18 11:33:48 +01:00
Andrey Antukh
8cb84d2911 🎉 Add proper error boundaries for main component. 2020-03-18 11:32:59 +01:00
Andrey Antukh
4c36bce5bd Deprecate uxbox.util.components. 2020-03-18 09:53:55 +01:00
Andrey Antukh
a7ffbd8a27 Merge pull request #137 from uxbox/147/dashboard-search
Implement search feature in dashboard
2020-03-18 09:38:23 +01:00
Andrés Moya
b2843ef1ce Implement search feaature in dashboard 2020-03-18 09:31:03 +01:00
Andrey Antukh
d5f2a1a634 🎉 Add context-menu component.
Implemented on top of the dropdown component.
2020-03-17 18:12:09 +01:00
Andrey Antukh
376679571c 💄 More usability improvements for dropdown component. 2020-03-17 18:11:36 +01:00
Andrey Antukh
18db775954 💄 Minor improvements on dropdown component. 2020-03-17 18:00:15 +01:00
Andrey Antukh
0e6f713685 Merge branch 'task/149/workspace-main-nav' into develop 2020-03-17 17:35:24 +01:00
Andrey Antukh
118157e43a 🚧 Initial integration of workspace toolbar. 2020-03-17 17:27:54 +01:00
Juan de la Cruz
25437fafc2 🎉 Adapt workspace to new visual layout. 2020-03-17 17:27:27 +01:00
Andrey Antukh
371ff5e019 💄 Minor changes. 2020-03-17 12:55:09 +01:00
Andrey Antukh
9e51f6baad 💄 Increment default persistence debounce timeout. 2020-03-17 12:55:09 +01:00
Andrey Antukh
1382e21360 🔥 Remove unused prn's. 2020-03-17 12:55:09 +01:00
Andrey Antukh
5499eb6018 🐛 Fix wrong reference to page-id (cause of the race conditions). 2020-03-17 12:55:09 +01:00
Andrey Antukh
fc734328cb 🎉 Namespace workspace data with page id. 2020-03-17 12:55:09 +01:00
Andrey Antukh
38f675d7f9 Make persistence separatted from undo/redo. 2020-03-17 12:55:09 +01:00
Andrey Antukh
0f9d796460 💄 Remove file-count filtering on recent. 2020-03-17 12:35:21 +01:00
Andrey Antukh
0231e687b7 🔥 Remove uxbox.main.data.undo namespace file. 2020-03-17 12:35:21 +01:00
Andrey Antukh
a6adae4f28 🐛 Don't change modified_at on rename projects and files. 2020-03-17 12:35:21 +01:00
Andrey Antukh
cba690ead8 🐛 Fix workspace icon-logo navigation link. 2020-03-17 12:35:21 +01:00
Andrey Antukh
ce1cbfa9d9 🔥 Remove unused and deprecated namespace. 2020-03-17 12:35:21 +01:00
Andrey Antukh
dca8971f06 💄 Minor cosmetic changes on recent files component. 2020-03-17 12:35:21 +01:00
Andrey Antukh
383431ec6d 🐛 Fix files ordering on dashboard project page. 2020-03-17 12:35:21 +01:00
Andrey Antukh
65678ac674 🐛 Fix projects and files ordering on dashboard grid. 2020-03-17 12:35:21 +01:00
Andrey Antukh
8aaffeeb17 🐛 Fix backend queries ordering. 2020-03-17 12:35:21 +01:00
alonso.torres
be9c9f8ce8 🔥 review changes 2020-03-12 14:09:48 +01:00
alonso.torres
d1f9e63a13 🎏 updated translation metadata 2020-03-12 14:09:48 +01:00
alonso.torres
561560ae04 🕐 adds recent opened files screen 2020-03-12 14:09:48 +01:00
Andrey Antukh
1ffca33be9 💄 Minor changes on manage.sh 2020-03-12 12:54:10 +01:00
Andrey Antukh
7430a9b332 🎉 Add deployCommit and deployDate to config object. 2020-03-12 12:52:37 +01:00
Andrey Antukh
d506c9b562 🐛 Fix data inconsistency on wrong deletion ordering. 2020-03-12 11:33:00 +01:00
Andrey Antukh
b3747ee0e7 🚧 Add missing variable on gulpfile. 2020-03-12 09:59:24 +01:00
Andrey Antukh
8fac45e60a 🚧 More work on build config. 2020-03-12 09:28:40 +01:00
Andrey Antukh
b26480ba6e 🔧 Fix wrong environment var on frontend build. 2020-03-11 18:03:37 +01:00
Andrey Antukh
aa57083afc 🔧 Minor changes on frontend build config. 2020-03-11 17:21:07 +01:00
Andrey Antukh
70108a0aa7 🔥 Remove unused files. 2020-03-11 16:32:27 +01:00
Alonso Torres
d17368e9d3 Merge pull request #135 from uxbox/other/remove-view-app
Remove view app.
2020-03-11 15:59:28 +01:00
Andrey Antukh
45290441de 🔥 Remove view sub application. 2020-03-11 15:53:18 +01:00
Andrey Antukh
648dfdab80 🔥 Remove unused Caddyfile. 2020-03-11 15:53:18 +01:00
Andrey Antukh
53700e3cb6 🚧 Comment worker code (temporary disabled). 2020-03-11 15:53:13 +01:00
Alonso Torres
4ee138f71e Merge pull request #134 from uxbox/other/dynamic-config
🎉 Make the build to be config independent.
2020-03-11 09:30:22 +01:00
Andrey Antukh
c09f281f58 🎉 Make the build to be config independent.
Loading the configuration dinamically using
global variables defined in index.html.
2020-03-11 09:20:12 +01:00
alonso.torres
3a24d94c2b 💪 changes to dashboard layout 2020-03-11 09:00:09 +01:00
alonso.torres
39836fc821 💥 removed old scss files 2020-03-11 09:00:09 +01:00
Andrey Antukh
eeb2f39ada 🔥 Remove unused code. 2020-03-11 09:00:09 +01:00
Andrey Antukh
f4a15e6db7 🚧 More work on dashboard integration. 2020-03-11 09:00:09 +01:00
Andrey Antukh
13215d7f5d 🚧 Initial work on dashboard integration.
Restructuration.
2020-03-11 09:00:09 +01:00
Juan de la Cruz
47de756080 refactor dashboard sidebar 2020-03-11 09:00:09 +01:00
Juan de la Cruz
7d7cd1d3d6 redesing dashboard main-bar 2020-03-11 09:00:09 +01:00
Andrey Antukh
1ce46a0ef8 🔥 Remove unused code. 2020-03-10 14:46:53 +01:00
Andrey Antukh
3cb55532c8 🔥 Remove commented code. 2020-03-10 13:25:47 +01:00
Andrey Antukh
b3e7d6ea29 🔥 Remove debug code. 2020-03-10 13:21:11 +01:00
Andrey Antukh
203a165502 🐛 Fix bug on undo deletion of canvas with shapes. 2020-03-10 13:19:09 +01:00
Andrey Antukh
6f0d45dfcd Add error boundaries to the app component. 2020-03-10 11:46:18 +01:00
Andrey Antukh
e7519f3058 🔥 Remove unused namespace with colors. 2020-03-10 11:45:51 +01:00
Andrey Antukh
8f2e31cafa Add public function for enable event stream debugging. 2020-03-10 11:44:57 +01:00
Andrey Antukh
5e91f05a7b Adapt shapes d&d ordering to new data structure. 2020-03-09 12:22:31 +01:00
Andrey Antukh
0a30c8efdf 💄 Minor changes on docs. 2020-03-08 13:44:06 +01:00
Andrey Antukh
9c4ee4182f 🔥 Remove buildenv docker directory. 2020-03-08 13:42:52 +01:00
Andrey Antukh
11b6261611 📚 Clean readme from obsolete doc. 2020-03-08 13:41:23 +01:00
Andrey Antukh
0f5f2a1715 📚 Update docs. 2020-03-08 13:13:32 +01:00
Andrey Antukh
8e00ba7457 Merge branch 'wip/refactor-page-data-structure' into develop 2020-03-08 12:48:51 +01:00
Andrey Antukh
ba373573e0 ♻️ Initial refactor of page data structure (wip).
Still work in progress but is a necessary step for a future
(re)introduction of groups.
2020-03-08 12:46:09 +01:00
Andrey Antukh
cbad98b783 🔥 Delete whitespace on contributing file. 2020-03-08 12:44:48 +01:00
Juan de la Cruz
2728e03e76 fix color theme general issue 2020-03-03 13:14:37 +01:00
Andrey Antukh
c217f65677 ⬆️ Update default nodejs version. 2020-03-02 16:18:39 +01:00
Andrey Antukh
9ec90c8bd9 🐛 Fix unexpected exception on logout handler. 2020-03-02 10:08:54 +01:00
Andrey Antukh
9319520043 🐛 Fix broken reference to icon. 2020-02-25 21:01:56 +01:00
Andrey Antukh
4c99280c4a 🐛 Set proper shape vertical ordering. 2020-02-25 21:01:42 +01:00
Andrey Antukh
a84080ddfa 🐛 Fix text shape edition on-blur interaction. 2020-02-25 21:01:18 +01:00
Andrey Antukh
1d0eb1d26f 🔥 Remove unused macro. 2020-02-25 21:00:48 +01:00
Andrey Antukh
4cce1d5b23 🐛 Fix broken link to icon on framework.css file. 2020-02-25 21:00:34 +01:00
Andrey Antukh
ecde4493e0 ♻️ Icons and Styles build refactor. 2020-02-25 16:24:40 +01:00
Andrey Antukh
83e33ed00b Add colors to sample media. 2020-02-25 16:21:58 +01:00
Andrey Antukh
61cfebb7ba Add color libraries importer. 2020-02-25 16:21:58 +01:00
Andrey Antukh
555210175e Add clj-kondo dependency for linting. 2020-02-25 16:21:58 +01:00
Andrey Antukh
87d355f705 ♻️ Adapt media loader to new library database layout. 2020-02-25 16:21:58 +01:00
Andrey Antukh
3ce9c8820f ♻️ Rename collections to libraries.
And make them team dependent.
2020-02-25 16:21:58 +01:00
mathieu.brunot
0ad2b13d76 🐳 Move EXTERNAL_UID closer to its use (perf)
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-02-25 14:38:22 +01:00
Andrey Antukh
90c0bce9aa 💄 Remove unused code. 2020-02-20 17:52:18 +01:00
Andrey Antukh
a0a76f6b65 Add cursor tooltips. 2020-02-20 17:18:44 +01:00
Andrey Antukh
6988f0a35e 🐛 Fix wrong behavior on shape/canvas hide/show options. 2020-02-20 12:08:06 +01:00
Andrey Antukh
8f77a59a97 Improved canvas displacement on options. 2020-02-20 11:50:43 +01:00
Andrey Antukh
35e50dc47c 🐛 Fix unexpected exception after logout. 2020-02-20 09:41:30 +01:00
Andrey Antukh
5d1b358179 Replace snappy with lz4 for blobs compression. 2020-02-19 22:53:45 +01:00
Andrey Antukh
ff43df6822 🐛 Many bugfixes. 2020-02-19 19:20:13 +01:00
Andrey Antukh
86a55fd292 Add proper impl for deleting selected objects. 2020-02-19 12:05:27 +01:00
Andrey Antukh
3ec037cdf4 Improve performance of concat operation. 2020-02-19 12:04:55 +01:00
Andrey Antukh
86ba4fd083 🎉 Reimplement canvas as svg (instead of g+rect). 2020-02-18 17:11:17 +01:00
Andrey Antukh
63a339dd31 ♻️ Add undo/redo.
Reimplement :mov-shape change type operation.
2020-02-17 17:44:43 +01:00
Andrey Antukh
7a5145fa37 ♻️ Big refactor of the default data model.
Introduce teams.
2020-02-17 09:49:04 +01:00
Andrey Antukh
6379c62e37 Minor improvement on default logging configuration. 2020-02-17 09:43:43 +01:00
Andrey Antukh
cb0ff7b82f 🚧 Adapt backend code to vertx changes. 2020-02-17 09:43:09 +01:00
Andrey Antukh
fd6362e463 ♻️ Replace interceptors with middleware on vertx package. 2020-02-17 09:41:00 +01:00
Andrey Antukh
3507c4acb6 ⬆️ Update pom.xml file on vertx vendor package. 2020-02-08 23:21:46 +01:00
Andrey Antukh
a63aff560f Minor improvements on websocket impl. 2020-02-08 21:26:01 +01:00
Andrey Antukh
0cc5c7f7bb ♻️ Reimplement websockets using streams. 2020-02-08 15:39:26 +01:00
Andrey Antukh
044f8487e2 🎉 Add ping message on websocket communication.
Every 30seconds (for reset the default nginx proxy timeout).
2020-02-07 13:12:05 +01:00
Andrey Antukh
e805515767 ♻️ Refactor websockets subsystem. 2020-02-07 12:15:38 +01:00
Andrey Antukh
f37c9a5adb Enable context handling on tests.
This makes the test exection more similar to the real
environment. Each test is executed in the eventloop
thread pool.
2020-02-06 09:46:24 +01:00
Andrey Antukh
da29f8db86 Finish 'remove-demo-profile' async task implementation. 2020-02-06 09:20:07 +01:00
Andrey Antukh
4f8e427db9 Improve tasks reporting. 2020-02-06 09:19:42 +01:00
Andrey Antukh
e2d4d121d8 Enable edn writter for duration type. 2020-02-06 09:18:46 +01:00
Andrey Antukh
9373296fd4 🔥 Remove unused jobs code (obsolete). 2020-02-05 23:52:57 +01:00
Andrey Antukh
358136b840 Initial work on remove-media and remove-demo-profile tasks. 2020-02-05 23:52:17 +01:00
Andrey Antukh
1ac6e466ce ♻️ Refactor dispatcher implementation.
Simplify code and probabluy improve performance.
2020-02-05 23:49:26 +01:00
Andrey Antukh
cd8a907a86 Adapt websockets code to the vertx module changes. 2020-02-05 23:45:38 +01:00
Andrey Antukh
72c010374f 🔥 Remove unused context handling on http sessions. 2020-02-05 23:45:13 +01:00
Andrey Antukh
c0b3618331 🔥 Remove ratelimit (delegate this task to nginx). 2020-02-05 23:44:44 +01:00
Andrey Antukh
1a82fc28d3 ⬆️ Update promesa dependency to 5.1.0. 2020-02-05 23:43:29 +01:00
Andrey Antukh
ddf4550d22 📎 Update .gitignore file. 2020-02-05 23:43:11 +01:00
Andrey Antukh
3d5e4370e0 Restructure vertx vendor package. 2020-02-05 23:42:29 +01:00
Andrey Antukh
b4790c89ce 🐛 Fix email sending. 2020-02-05 12:51:55 +01:00
Andrey Antukh
460019e01b 🐛 Minor fix on build params. 2020-02-04 22:04:22 +01:00
Andrey Antukh
c5149ec42c 📎 Minor changes on default configuration. 2020-02-04 20:23:04 +01:00
Andrey Antukh
d4758bc5b1 🔥 Remove unused import. 2020-02-04 16:13:37 +01:00
Andrey Antukh
146faf74a9 ♻️ Refactor profile and login. 2020-02-04 16:05:51 +01:00
Andrey Antukh
841ace3aa8 🐳 Update openjdk 11 -> 13 (docker). 2020-02-04 12:35:55 +01:00
Andrey Antukh
49f27066b8 Enable transit encoding parametrization. 2020-02-03 22:34:36 +01:00
Andrey Antukh
2a5fa4df0e 🎉 Add blocking helper to vertx.core. 2020-02-03 22:30:32 +01:00
Andrey Antukh
2cebbbc2f8 ♻️ Refactor images storage. 2020-02-03 22:29:59 +01:00
Andrey Antukh
b98d8519d4 Improve configuration loading.
Removing unnecesary code.
2020-02-03 09:54:18 +01:00
Juan de la Cruz
c1dee0dbf7 Fix library tabs styles 2020-02-01 11:54:33 +01:00
Andrey Antukh
62c6d85ed0 🔥 Remove unused file. 2020-02-01 11:09:17 +01:00
Andrey Antukh
065ed23c79 🎉 Add javascript variants of geom.point and geom.matrix.
Only for have them in backup, they are not in use right now
and we dont expect to use them in a near future.
2020-02-01 01:16:47 +01:00
Andrey Antukh
89f65a15de 📎 Add fontawesome file.
Just to have it on fonts directory and being
able to generate logs report with goaccess.
2020-02-01 01:15:27 +01:00
Andrey Antukh
cbffee1486 Normalize shape absolute resize implementation.
Making it more safe and less dynamic.
2020-02-01 01:14:30 +01:00
Andrey Antukh
566fa9cb91 Improvements on backend application initialization.
On repl and on production environment.
2020-02-01 01:13:50 +01:00
Andrey Antukh
f245656c0c Add a proper way to enable/disable assertions on clojure code. 2020-01-31 19:12:58 +01:00
Andrey Antukh
8057fb54a6 Add verify macro for true runtime spec asserts.
This commits mainly renames the old `assert` to `verify` and
adds new `assert` that laverages `:elide-asserts` on clojurescript
and *assert* value on clojure.

This approach enables an assert macro that does not performs
any runtime checks and compiles to more performant code in both
cases: development mode and production mode.
2020-01-31 19:12:48 +01:00
Andrey Antukh
391b926397 🐛 Fix circle dimensions update. 2020-01-31 11:16:30 +01:00
Andrey Antukh
dcc81c9275 📎 Add commented code related to undo/redo. 2020-01-31 10:52:34 +01:00
Andrey Antukh
8d99bd723b 🐛 Fix rotation of path and curve shapes. 2020-01-30 13:28:27 +01:00
Andrey Antukh
85f4d4824f 🐛 Fix circle shape rotation behavior. 2020-01-30 13:16:37 +01:00
Andrey Antukh
cdcae36b58 🐛 Add missing canvas impl for some geom operations. 2020-01-28 17:05:50 +01:00
Andrey Antukh
a0df97a2e5 🐛 Minor fix on commit-snapshot handler. 2020-01-28 13:02:30 +01:00
Andrey Antukh
2f589a49e9 🐛 Fix unexpected exception on websocket handler. 2020-01-28 12:52:48 +01:00
Andrey Antukh
590b68aa29 🐛 Fix unexpected operation ordering. 2020-01-28 12:48:09 +01:00
Andrey Antukh
75b64b71bf 🐛 Fix icons selection options widget. 2020-01-28 11:12:14 +01:00
Andrey Antukh
bfe6b98ee1 🚧 Minor changes on blocking calls for thumbnails generation. 2020-01-27 16:52:19 +01:00
Andrey Antukh
aaa8bfe67d 🐛 Process thumbnail creation in serie (less resource usage). 2020-01-27 16:38:43 +01:00
Andrey Antukh
121d300cf7 📚 Minor organization improvement on docs directory. 2020-01-27 16:08:43 +01:00
Andrey Antukh
47ab946f81 🎉 Add icon element options sidebar. 2020-01-27 15:33:21 +01:00
Andrey Antukh
bbd7e33059 🎉 Restore icons toolbox. 2020-01-27 15:24:35 +01:00
Andrey Antukh
03eb756551 Reduce the persist debounce window. 2020-01-27 13:27:01 +01:00
Andrey Antukh
de09217e30 🐛 Fix rotation transformation on image shape. 2020-01-27 13:25:36 +01:00
Andrey Antukh
866da08cab 🐛 Fix uploaded-at date formatting on images list. 2020-01-27 13:22:17 +01:00
Andrey Antukh
88d287bac0 🐛 Fix bug on uploading image. 2020-01-27 13:22:06 +01:00
Andrey Antukh
f491cf25fc 🎉 Add bin/repl script. 2020-01-27 13:09:30 +01:00
Andrey Antukh
8061ee7ca7 Minor changes on tasks subsystem. 2020-01-27 10:07:06 +01:00
Andrey Antukh
f2cb2c3791 Fix many reflection warnings. 2020-01-27 10:03:42 +01:00
Andrey Antukh
de233d6778 Improve random-path transformer perfornace (storages). 2020-01-25 17:23:49 +01:00
Andrey Antukh
b005c3905f 🎉 Add scheduled (cron based) tasks subsystem. 2020-01-25 17:23:21 +01:00
Andrey Antukh
9bcb91ceae 💄 Improve code of vertx timers ns. 2020-01-25 17:21:51 +01:00
Andrey Antukh
e4c9d29b69 🎉 Add helper for blocking executuion on vertx. 2020-01-25 17:21:22 +01:00
Andrey Antukh
f2eaa1b5d1 Minor improvements on sodi.prng namespace. 2020-01-25 17:20:50 +01:00
Andrey Antukh
22e558478a 🎉 Add new storage implementation (builtin in backend). 2020-01-24 16:45:18 +01:00
Andrey Antukh
a87d83e10e 🐛 Fix random-nonce function (wrong params). 2020-01-24 16:44:08 +01:00
Andrey Antukh
f099e0f90d 🐛 Fix unexpected behavior on selection controls on non-rect like shapes. 2020-01-24 12:39:48 +01:00
Andrey Antukh
c86b6b7b8f 🐛 Fix element option position update on all shape types. 2020-01-24 12:34:31 +01:00
Andrey Antukh
d4799ea1df 🐛 Fix colorpalette unexpected exceptions. 2020-01-24 12:13:44 +01:00
Andrey Antukh
bd5fd97fb7 Minor usability improvements on async tast subsystem. 2020-01-24 11:58:47 +01:00
Andrey Antukh
7355b91796 🐛 Add missing demo service in initialization. 2020-01-24 11:18:13 +01:00
Andrey Antukh
dcd797888c 🐛 Fix login and logout remo handlers. 2020-01-24 11:15:40 +01:00
Andrey Antukh
170d815620 🔥 Remove old emails tables. 2020-01-23 20:42:02 +01:00
Andrey Antukh
3433aa0c5b Add improvements to async tasks subsystem. 2020-01-23 20:38:21 +01:00
Andrey Antukh
6ba46673fa ⬆️ Update (and remove unused) deps on backend. 2020-01-23 17:57:43 +01:00
Andrey Antukh
c6f7ded125 ♻️ Refactor async tasks implementation.
And migrate the previous unrelated subsystems such that gc and
email sending to the new subsystem.
2020-01-23 17:53:26 +01:00
Andrey Antukh
70b4a2b4d4 🎉 Add duration helpers under uxbox.util.time ns. 2020-01-23 17:52:31 +01:00
Andrey Antukh
82500ca079 Start using normal pool (instead of thread local) for db. 2020-01-23 17:51:32 +01:00
Andrey Antukh
3e8b570c6b Add support for multiple emails for profile. 2020-01-23 17:50:00 +01:00
Andrey Antukh
282b170147 ⬆️ Update vertx-pg-client to 4.0.0-milestone4. 2020-01-23 17:47:46 +01:00
Andrey Antukh
de6fa83e96 🎉 Add high level schedule! function to vertx.timers. 2020-01-23 15:47:01 +01:00
Andrey Antukh
685dade614 Minor improvements on vertx.core ns. 2020-01-23 15:46:33 +01:00
Andrey Antukh
864081c31e ⬆️ Update vertx dependency to 4.0.0-milestone4 (vendor/vertx).` 2020-01-23 15:45:50 +01:00
Andrey Antukh
d034c6144c 📚 Add assertion documentation. 2020-01-22 00:15:57 +01:00
Andrey Antukh
b6f6ab490f 🔥 Remove old repo code.
And make closure-defnes parametrizable.
2020-01-21 23:09:28 +01:00
Andrey Antukh
1724f55cb2 💄 Minor cosmetic changes on message collection (i18n). 2020-01-21 21:31:43 +01:00
Andrey Antukh
24677a3266 ♻️ Rewrite translations messages collection using gramar based parser. 2020-01-21 21:28:29 +01:00
Andrey Antukh
abb19572b5 🔥 Remove unused code. 2020-01-21 17:42:17 +01:00
Andrey Antukh
1d726564df Simplify changes detection and commit.
With minor code cleaning.
2020-01-21 17:42:17 +01:00
Andrey Antukh
8dd6c8457f Use uuid1 instead of uuid4 on all the codebase. 2020-01-21 13:15:13 +01:00
Andrey Antukh
20cd5b1d9c 🎉 Add uuid v1 implementation. 2020-01-21 12:17:49 +01:00
Andrey Antukh
2390735164 🔥 Remove docker/backend and docker/frontend.
They are moved to uxbox-ansible repository that
will be open-sourced soon.
2020-01-20 16:20:10 +01:00
Andrey Antukh
5ac5142b67 🐛 Properly redirect to login when no route. 2020-01-20 14:30:52 +01:00
Andrey Antukh
245b5e3b79 🔥 Remove repeated code. 2020-01-20 13:26:37 +01:00
Andrey Antukh
c4c0daddd3 🐛 Add missing pom.xml file. 2020-01-20 13:26:37 +01:00
Andrey Antukh
f57ce57cb3 ♻️ Refactor on docker and build scripts.
- Migrate to from ubuntu to debian.
- Add new buildenv image.
- Remove production images building from this repo.
- Better comaptibility with other architectures (arm64).
- Improved config management.
2020-01-20 13:26:37 +01:00
Andrey Antukh
655c7ae023 Properly emit changes on rect dimensions are touched. 2020-01-16 20:00:48 +01:00
Andrey Antukh
55c2ad9644 Add canvas element options. 2020-01-16 19:46:43 +01:00
Andrey Antukh
fbefb3543e 💄 Other cosmetic change on dashboard-grid css. 2020-01-16 19:34:56 +01:00
Andrey Antukh
a94cb09677 💄 Minor cosmetic changes on dashboard-grid css. 2020-01-16 19:32:29 +01:00
Andrey Antukh
0e35e33607 Adapt code to i18n and date-fns changes. 2020-01-16 19:29:45 +01:00
Andrey Antukh
d16d506a78 ⬆️ Update vendor dependencies. 2020-01-16 19:29:13 +01:00
Andrey Antukh
595cdd66c7 Improve i18n module. 2020-01-16 19:28:19 +01:00
Andrey Antukh
76e19a4b41 Performance improvements. 2020-01-16 16:22:56 +01:00
Andrey Antukh
3ab5e11d5f 🐛 Fix unexpected warning when export empty page. 2020-01-16 16:21:53 +01:00
Andrey Antukh
e642639662 🔥 Remove unused code. 2020-01-16 16:21:31 +01:00
Andrey Antukh
ac7e5f723d 🐛 Add missing :curve shape type. 2020-01-16 16:21:12 +01:00
Andrey Antukh
72d92c419f 🚧 More work on rotation related stuff. 2020-01-15 17:59:55 +01:00
Andrey Antukh
79a91605d3 📎 Add deps to package.json for experimentation. 2020-01-15 17:58:41 +01:00
Andrey Antukh
338a0b97ac 🚧 Start working on shape rotation (with mouse handlers). 2020-01-15 00:15:23 +01:00
Andrey Antukh
747213dea3 🐛 Fix workspace initialization unexpected behavior. 2020-01-14 21:01:05 +01:00
Andrey Antukh
84df0c431b 🐛 Fix reactivity issue on workspace and file name change. 2020-01-14 15:50:03 +01:00
Andrey Antukh
e61cdc500c Normalize default page data structure. 2020-01-14 15:37:40 +01:00
Andrey Antukh
422536d4a1 🔥 Remove unused code. 2020-01-14 15:29:36 +01:00
Andrey Antukh
b441ffc20f 💄 Minor cosmetic changes on project and file naming. 2020-01-14 13:35:31 +01:00
Andrey Antukh
43d60e238a 🐛 Fix project and file creation on empty user. 2020-01-14 13:27:30 +01:00
Andrey Antukh
d578a7c96a 💄 Other cosmetic changes on login css. 2020-01-14 13:16:36 +01:00
Andrey Antukh
625ad7f4b7 💄 Minor cosmetic changes on vertx.core ns. 2020-01-14 13:13:35 +01:00
Andrey Antukh
e42ccf932e 🎉 Add the ability to create demo user on demand. 2020-01-14 13:13:10 +01:00
Andrey Antukh
b0ca6493e3 🐛 Disable smtp by default. 2020-01-14 10:37:02 +01:00
Andrey Antukh
6165a49c10 🚧 More work on register/recovery refactor. 2020-01-14 10:35:43 +01:00
Andrey Antukh
9e68041326 🚧 Initial work on password recovery and register refactor. 2020-01-13 23:52:31 +01:00
Andrey Antukh
bd5f25eabf Move vertx as vendor package. 2020-01-13 16:50:44 +01:00
Andrey Antukh
8663f5a136 🔥 Remove unused code. 2020-01-13 15:14:29 +01:00
Andrey Antukh
2420f7de9e 🎉 Add ratelimit for login handler.
Will prevent DOS on executing resource demanding handler such
as login.
2020-01-13 15:12:38 +01:00
Andrey Antukh
a8f84aa93d Update .gitignore. 2020-01-13 10:53:35 +01:00
Andrey Antukh
c3186ac32e 🐛 Add missing pom.xml file. 2020-01-13 10:53:16 +01:00
Andrey Antukh
6a99345475 Replace buddy-hashers with sodi.pwhash. 2020-01-12 19:00:18 +00:00
Andrey Antukh
19529408f4 💄 Rename 'test' directory to 'tests'. 2020-01-12 18:59:35 +00:00
Andrey Antukh
fe2c3aa8ad 🎉 Add "sodi" vendor library for crypto primitives.
Will replace buddy-core, buddy-hashers and buddy-sign.
2020-01-12 18:58:00 +00:00
Andrey Antukh
193c2026ba ⬆️ Update frontend deps. 2020-01-11 21:12:32 +01:00
Andrey Antukh
1cc64ae4d2 🐛 Fix conform function on uxbox.common.spec. 2020-01-11 21:11:18 +01:00
Andrey Antukh
74f1f93732 ⬆️ Update backend deps. 2020-01-11 21:11:04 +01:00
Andrey Antukh
c88602c7ab ♻️ Migrate to common spec namespace. 2020-01-11 20:26:10 +01:00
Andrey Antukh
32131c5aa7 ⬆️ Update backend dependencies. 2020-01-11 20:25:18 +01:00
Andrey Antukh
6957a49752 ♻️ Add spec ns on shared code (and adapt frontend code to use it). 2020-01-11 19:56:48 +01:00
Andrey Antukh
9a184d1c7a Fix translation text on sidebar layers. 2020-01-11 18:49:03 +01:00
Andrey Antukh
8dc13aa0d9 🔥 Remove old locale namespaces (replaced with new system). 2020-01-11 18:43:56 +01:00
Andrey Antukh
41b465f444 Tempory enable full rerender on lang change.
Until all components starts using i18n/use-translations hook.
2020-01-11 18:41:27 +01:00
Andrey Antukh
f7838601e6 Improve the shape changes protocol.
Enabling skiping local reaply of changes after
save round-trip.
2020-01-11 18:40:36 +01:00
Andrey Antukh
f2a926d22d ⬆️ Update npm dependencies. 2020-01-11 15:59:31 +00:00
Andrey Antukh
f2d475d3d3 ♻️ Refactor all i18n subsystem. 2020-01-11 16:28:54 +01:00
Andrey Antukh
b13488404e 🐛 Minor fixes related to translations. 2020-01-09 16:33:01 +01:00
Andrey Antukh
4f9b3ad8cb Adapt to new ux the page creation/renaming on workspace. 2020-01-09 16:32:36 +01:00
Andrey Antukh
0d3ff63545 🐛 Fix incorrect usage of pool on rename-page mutation. 2020-01-09 16:31:31 +01:00
Andrey Antukh
2a7d516306 Improve shape movement with keyboard.
Make fast movement align with grid.
2020-01-09 15:01:32 +01:00
Andrey Antukh
9af76ad86c 💄 Minor naming changes. 2020-01-09 15:01:14 +01:00
Andrey Antukh
733bf7f4fb Improve grid performance (now using svg patterns). 2020-01-09 13:42:34 +01:00
Andrey Antukh
83894f9954 💄 Make the text edition textarea transparent. 2020-01-09 13:42:13 +01:00
Andrey Antukh
c8298c72ea Improve page options handling. 2020-01-09 13:41:52 +01:00
Andrey Antukh
9c68877328 Include page options into the data field.
And remove unused `metadata` field.
2020-01-08 23:05:37 +01:00
Andrey Antukh
904664319a Adapt zoom widget to new state layout. 2020-01-08 19:18:43 +01:00
Andrey Antukh
1e57de2d6e 💄 Minor improvements on text edition shape. 2020-01-08 19:06:31 +01:00
Andrey Antukh
9f5151e87f ♻️ Refactor text options. 2020-01-08 18:22:44 +01:00
Andrey Antukh
863c26a056 💄 Cosmetic changes on text shape component. 2020-01-08 17:05:00 +01:00
Andrey Antukh
b0da06bad4 ♻️ Refactor text shape. 2020-01-08 15:01:39 +01:00
Andrey Antukh
020625392a 🐛 Fix wrong reference to component. 2020-01-08 11:12:59 +01:00
Andrey Antukh
97d49e53b7 Improve file thumbnails. 2020-01-08 11:12:12 +01:00
Andrey Antukh
ab4171b8ec 🎉 Add file thumbnails on dashboard. 2020-01-08 10:34:02 +01:00
Andrey Antukh
ba2ffb9c0a 🐛 Add default styles on canvas shape on fixtures. 2020-01-08 10:31:07 +01:00
Andrey Antukh
5fea05bc5f 📚 Update doc. 2020-01-07 23:03:19 +01:00
Andrey Antukh
5d9e1657ba Comment page background options (unused at this momment). 2020-01-07 22:59:41 +01:00
Andrey Antukh
a2dc0a5f56 🎉 Introduce async (batched) shapes changes commit event. 2020-01-07 22:55:37 +01:00
Andrey Antukh
8e228be5a0 Enable shape d&d ordering persistence. 2020-01-07 21:32:41 +01:00
Andrey Antukh
142bd1d049 🔥 Remove unused code. 2020-01-07 17:25:11 +01:00
Andrey Antukh
152a5e8b94 🐛 Add missing files. 2020-01-07 17:00:52 +01:00
Andrey Antukh
fe5f91ce15 ♻️ Reorganize user events (mouse, keyboard, scroll, ...) 2020-01-07 17:00:09 +01:00
Andrey Antukh
ebc76849b7 🐛 Fix race condition on lentes (update deps). 2020-01-07 16:29:55 +01:00
Andrey Antukh
dc9fc5e5a9 ♻️ An other rework of workspace initialization. 2020-01-07 10:48:37 +01:00
Andrey Antukh
188872d712 Merge branch 'wip/shape-data-structure-refactor' into develop 2020-01-07 09:38:51 +01:00
mathieu.brunot
3ae92717da Handle default register error
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-01-07 10:38:32 +02:00
mathieu.brunot
6d3232e70a 🐛 Fix DB URI generation
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-01-07 10:38:11 +02:00
mathieu.brunot
4a4b0a0c3b 🔧 Functions to drop uxbox
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2020-01-07 10:37:54 +02:00
Andrey Antukh
1e058463b2 ♻️ Refactor: shape data structure, dashboard data loading... 2020-01-07 09:35:38 +01:00
Andrey Antukh
9f8936ea40 🐛 Dont return duplicated files on dashboard. 2019-12-20 23:15:30 +01:00
Andrey Antukh
0cb6ecadb6 🐛 Deselect all shapes when new shape is inserted. 2019-12-20 22:55:31 +01:00
Andrey Antukh
fee2eea87c 🐛 Properly send 403 on not authorized request. 2019-12-20 22:54:58 +01:00
Juan de la Cruz
dabbbc2e09 piweek code for demo 2019-12-20 11:27:28 +01:00
Andrey Antukh
3789ec47c6 ⬆️ Update vendor deps. 2019-12-20 11:11:11 +01:00
Andrey Antukh
150eed3426 🚧 Add temporal multiuser avatar (to be removed). 2019-12-20 11:11:11 +01:00
Andrey Antukh
90dbe70b9f 🚧 Initial work on options refactor. 2019-12-20 11:11:11 +01:00
Andrey Antukh
f906945101 Minor improvements on shape selection. 2019-12-20 11:11:11 +01:00
Juan de la Cruz
78509f3a06 fix element-name 2019-12-20 10:46:37 +01:00
Juan de la Cruz
8b0f18df5a wip quick fixes 2019-12-20 10:37:47 +01:00
Andrey Antukh
e05fe318e3 📚 Add a draft of collaborative edition protocol documentation. 2019-12-19 19:22:34 +01:00
Andrey Antukh
83456d46d9 🚧 Integrate new header buttons and remove drawtools sidebar. 2019-12-19 19:21:41 +01:00
Juan de la Cruz
4d1e4ef4c9 fix select colors 2019-12-19 18:06:21 +01:00
Juan de la Cruz
799ce01f14 add secondary options 2019-12-19 16:09:59 +01:00
Juan de la Cruz
3984da6c0f wip workspace bar tools 2019-12-19 14:07:29 +01:00
Andrey Antukh
007ee0de5e 🔥 Remove commented code. 2019-12-19 13:29:18 +01:00
Juan de la Cruz
b1d13b3d42 wip dashboard sidebar 2019-12-19 13:23:35 +01:00
Andrey Antukh
758c70f7c3 🚧 More work on collaborative edition (in real time). 2019-12-19 13:13:32 +01:00
Andrey Antukh
34291fc4b4 Add projects with multiple users to fixtures. 2019-12-19 13:13:32 +01:00
Juan de la Cruz
e0bd1098eb wip refactor dashboard 2019-12-19 12:50:58 +01:00
Andrey Antukh
f9f36445ec Properly integrate the workspace header. 2019-12-18 23:48:02 +01:00
Andrey Antukh
34d33a2d83 Include project name on files queries.
Just for convenience.
2019-12-18 23:47:29 +01:00
Andrey Antukh
51058dd83a 🚧 Continue working on websocket communication. 2019-12-18 23:13:31 +01:00
Andrey Antukh
d88bb1cfcb 🚧 Move all page related data events into projects ns. 2019-12-18 23:12:02 +01:00
Andrey Antukh
b7d4908e90 💄 Cosmetic changes on auth data events. 2019-12-18 23:08:42 +01:00
Andrey Antukh
5bad64a497 ⬆️ Update vendor deps and add randomcolor dep. 2019-12-18 23:07:42 +01:00
Andrey Antukh
c487f77b89 Merge remote-tracking branch 'origin/refactor-ui' into refactor-ui-integration 2019-12-18 18:16:14 +01:00
Andrey Antukh
9d93b0d3fb 🚧 Initial work on websocket communication. 2019-12-18 18:15:25 +01:00
Juan de la Cruz
d886c5615a wip options css 2019-12-18 13:58:46 +01:00
Juan de la Cruz
54a8a89dd0 add color avatars 2019-12-18 13:15:25 +01:00
Andrey Antukh
9c1c613c90 Merge branch 'develop' into refactor-ui-integration 2019-12-18 10:57:24 +01:00
Andrey Antukh
014b23647a 🚧 Comment some code related to not working shortcuts. 2019-12-18 10:55:29 +01:00
Andrey Antukh
df03b03818 🐳 Improve devenv and build steps (jvm-opts and upgrades). 2019-12-18 10:54:28 +01:00
Juan de la Cruz
9a65ef358b add multiuser cursor 2019-12-18 10:40:09 +01:00
Juan de la Cruz
651a7d9a5b workspace header adapted to multi-user 2019-12-18 10:25:11 +01:00
Andrey Antukh
009a626419 🎉 Enable multiple user touch the same page.
With simplistic conflict resolution.
2019-12-17 22:14:41 +01:00
Andrey Antukh
58ab6f5467 🔧 Add common directoy to figwheel watch dir list. 2019-12-17 22:14:41 +01:00
Andrey Antukh
b0019aa017 Improve the page data procesing module. 2019-12-17 22:11:37 +01:00
Andrey Antukh
05ec4560b9 Improve project page related queries and mutations. 2019-12-17 22:10:52 +01:00
Andrey Antukh
0a9ef0d345 🎉 Add websockets abstraction initial example code. 2019-12-17 22:09:49 +01:00
Andrey Antukh
9ba9e8dbae 🔥 Remove unused code from common directory. 2019-12-17 22:05:37 +01:00
Juan de la Cruz
719af5f475 wip inputs redesign 2019-12-17 16:50:50 +01:00
Juan de la Cruz
9dcd64c186 add page icon fixed 2019-12-17 15:37:30 +01:00
Juan de la Cruz
5c17c9b98d fix sitemap sidebar css 2019-12-17 13:23:53 +01:00
Juan de la Cruz
954b07f924 fix site map css 2019-12-17 11:52:04 +01:00
Juan de la Cruz
07e2fb977c layers sedebar refactor 2019-12-16 14:19:25 +01:00
Juan de la Cruz
861d1041b6 workspace heacer refctor 2019-12-16 13:01:17 +01:00
Andrey Antukh
b03d10a824 🚧 Initial work on granular shape edition. 2019-12-15 21:54:44 +01:00
Andrey Antukh
3eff27b5c5 Add better handling on lagged ops on page-update. 2019-12-15 21:53:57 +01:00
Andrey Antukh
1a33c266e3 🔧 Minor config improvement on devenv postgresql. 2019-12-14 23:13:44 +01:00
Andrey Antukh
2436c09295 🚧 Add impl for canvas related ops. 2019-12-14 23:13:19 +01:00
Andrey Antukh
5d7fba1955 🚧 Add basic tests for project-page-update mutation. 2019-12-14 23:07:00 +01:00
Andrey Antukh
db768f356b 🚧 Initial work on ops based page data updates. 2019-12-14 21:24:38 +01:00
Andrey Antukh
5b96e1e9fd 🎉 Add common directory tree for code sharing between front and back. 2019-12-14 21:23:54 +01:00
Andrey Antukh
ca3a42f680 🐛 Add missing postgresql_init.sql file. 2019-12-14 21:21:50 +01:00
Andrey Antukh
51041b5347 🔥 Remove dulpicated LICENSE file. 2019-12-14 13:14:05 +01:00
Andrey Antukh
cd66d4a519 🚧 Show shapes options. 2019-12-13 13:17:49 +01:00
Andrey Antukh
17aa744b52 Improve image build scripts (with many fixes). 2019-12-13 12:51:56 +01:00
Andrey Antukh
b8050068d7 🎉 Add node repl to tools.clj script. 2019-12-12 01:02:04 +01:00
Andrey Antukh
17b91b9368 🎉 Add fill method to rng-impl ns. 2019-12-12 01:01:12 +01:00
Andrey Antukh
4c5b41b6b2 Properly handle files and pages deletion (frontend). 2019-12-11 16:35:30 +01:00
Andrey Antukh
87d41700fc 🐛 Properly filter removed objects (backend). 2019-12-11 16:34:57 +01:00
Andrey Antukh
6a74f88e6c 🐛 Fix files query (invalid pages aggregate ordering). 2019-12-11 16:10:39 +01:00
Andrey Antukh
9cc9aa015d Enable again the project and file name edition (frontend). 2019-12-11 14:27:30 +01:00
Andrey Antukh
6f894dc757 🔥 Remove unused js include on main template. 2019-12-11 14:26:51 +01:00
Andrey Antukh
e3cd0d132b Minor improvements on project and files renaming. 2019-12-11 14:26:19 +01:00
Andrey Antukh
44e120d382 Implement recent files (back and front). 2019-12-11 12:15:06 +01:00
Andrey Antukh
4dad6bef40 🐛 Fix cookie elimination issues. 2019-12-11 12:14:39 +01:00
Andrey Antukh
449ca770c1 Improve error stack trace reporting. 2019-12-11 12:14:15 +01:00
Andrey Antukh
433d8cee9a Adapt page creation to model changes. 2019-12-10 22:04:31 +01:00
Andrey Antukh
9bb5be306f 🚧 More work on dashboard base model refactor (frontend). 2019-12-10 21:50:07 +01:00
Andrey Antukh
932d5bb004 🎉 Add :project-file query. 2019-12-10 21:49:19 +01:00
Andrey Antukh
94fe18b4ae 🚧 Improve build scripts. 2019-12-09 16:29:56 +01:00
Andrey Antukh
b5c8afe69f 🎉 Add docs directory structure. 2019-12-09 16:28:15 +01:00
Andrey Antukh
183f0a5400 ♻️ Refactor services (for add the project-file concept.
And fix many tests.
2019-12-09 16:27:01 +01:00
Andrey Antukh
af62d949d8 ♻️ Major refactor of page data structure.
In preparation to future collaborative edition.
2019-12-04 20:13:35 +01:00
Andrey Antukh
8c4bdc3f31 🐛 Minor fix on pages migration. 2019-12-04 20:12:39 +01:00
Andrey Antukh
b4336f7ceb Minor improvements on projects_roles table. 2019-12-01 17:47:42 +01:00
Andrey Antukh
b66bc02098 ♻️ Restructure the services directory. 2019-12-01 16:48:41 +01:00
Andrey Antukh
eeb5482d36 🔥 Remove unused code. 2019-12-01 12:44:08 +01:00
Andrey Antukh
f21ac8afbe 🚧 Add project roles table. 2019-12-01 12:07:51 +01:00
Andrey Antukh
04464da1c8 🚧 Implement page history query using new sql builder. 2019-11-29 12:55:43 +01:00
Andrey Antukh
efe94f8b44 🎉 Add new dynamic sql builder (for selects only). 2019-11-29 12:55:20 +01:00
Andrey Antukh
50b54683c4 Properly handle page history. 2019-11-29 12:54:24 +01:00
Andrey Antukh
cd43a6c90e 🐛 Add missing version field on pages table. 2019-11-29 12:52:52 +01:00
Andrey Antukh
45cc4e0d27 Improve dispatcher impl usability. 2019-11-29 12:52:29 +01:00
Andrey Antukh
761a3c102f Improve pages fetching on dashboard. 2019-11-27 19:54:25 +01:00
Andrey Antukh
426677935e 🚧 Minor reimplementation on how workspace initialization. 2019-11-27 15:33:53 +01:00
Andrey Antukh
59bab376cd 🐛 Fix wrong exception handling on pgsql bundled client. 2019-11-27 15:33:10 +01:00
Andrey Antukh
d79161aee0 Improve the projects query. 2019-11-27 15:32:50 +01:00
Andrey Antukh
69e9247fb6 🎉 Add a query impl for retrieve a single page by id. 2019-11-27 15:32:29 +01:00
Andrey Antukh
3fcbb204cf 🎉 Add ordering field to pages (for make it easy sorting on sql). 2019-11-27 15:31:27 +01:00
Andrey Antukh
8e81d796f0 💄 Minor cosmetic improvements on shapes related namespaces. 2019-11-26 18:32:00 +01:00
Andrey Antukh
ba96edc620 💄 Minor cosmetic changes. 2019-11-26 14:17:10 +01:00
Andrey Antukh
d1b000dcc6 Improved error handling and add specs to emails. 2019-11-26 13:34:37 +01:00
Andrey Antukh
792303a833 Remove unexpected lag on moving shape.
The lag happens when the shape is not initially selected.
2019-11-26 10:55:38 +01:00
Andrey Antukh
1357fed067 🐛 Fix bug on images collections filtering. 2019-11-25 17:28:40 +01:00
Andrey Antukh
44a893b46e 🐛 Fix icon collection filtering. 2019-11-25 17:08:26 +01:00
Andrey Antukh
ffcba0bf22 :paper_clip: Minor changes on tests. 2019-11-25 17:08:06 +01:00
Andrey Antukh
4a395ec761 🐛 More test fixes. 2019-11-25 15:56:49 +01:00
Andrey Antukh
d546d1fdca 🐛 Fix many bugs in email sending namespaces. 2019-11-25 12:34:35 +01:00
Andrey Antukh
e7db88a647 ⬆️ Update nodejs dependencies. 2019-11-22 18:30:46 +01:00
Andrey Antukh
6e062afc67 🔥 Remove unused uxbox.locks namespace. 2019-11-22 18:30:46 +01:00
Andrey Antukh
e2c664300c 🐛 Disable email sending by default. 2019-11-22 18:30:46 +01:00
Andrey Antukh
f6db00a444 📎 Minor fixes. 2019-11-22 18:30:42 +01:00
Andrey Antukh
8809c5238f ♻️ Rewrite all the async jobs subsystem and async email sending. 2019-11-22 18:08:27 +01:00
Andrey Antukh
3d4808e024 ♻️ Refactor the CLI media loader. 2019-11-22 18:06:45 +01:00
Andrey Antukh
14f634f9ea ⬆️ Update bundled vertx. 2019-11-22 18:04:38 +01:00
Andrey Antukh
b2d13a2493 ⬆️ Update postgresql on devenv and add smtp relay container. 2019-11-22 18:03:54 +01:00
Andrey Antukh
e9b00339a5 🚧 Major refactor of backend code.
Relevant changes:

- ring -> vertx
- suricatta -> vertx-pgsql
- emails improvements
- logging
- hybrid sync/async -> full async execution model
- database layout refactor
2019-11-18 12:35:41 +01:00
Andrey Antukh
73753ce071 Minor improvements on devenv. 2019-10-22 16:00:41 +02:00
Andrey Antukh
57365a6664 🐛 Minor fix on manage.sh. 2019-10-22 14:03:07 +02:00
Andrey Antukh
b6a92bade0 ⬆️ Minor deps update. 2019-10-22 14:02:49 +02:00
Andrey Antukh
232d871773 Load more history data on first request. 2019-10-22 13:29:36 +02:00
Andrey Antukh
7598637efc Enable history sidebar and dialog. 2019-10-21 17:27:24 +02:00
Andrey Antukh
006fcaa511 📎 Minor changes on rollup config. 2019-10-18 18:49:35 +02:00
Andrey Antukh
fdc3a93a75 ♻️ Enable again undo/redo functionality. 2019-10-18 17:19:12 +02:00
Andrey Antukh
0c7fd793be 💄 Cosmetic changes on auth events ns. 2019-10-18 17:18:39 +02:00
Andrey Antukh
dcc7b09dd8 💄 Minor cosmetic changes on workspace ns. 2019-10-17 19:36:34 +02:00
Andrey Antukh
097a6c924a Improve shapes vertical ordering implementation. 2019-10-17 16:46:10 +02:00
Andrey Antukh
6f2c952b4b ⬆️ Update promesa dependency. 2019-10-17 16:45:33 +02:00
Andrey Antukh
bb6ec9f89f Improve canvas assignation on shapes changes. 2019-09-21 20:14:07 +02:00
Andrey Antukh
ddaf6bfc92 Minor refactor on shapes and canvas rendering on viewport. 2019-09-21 20:13:40 +02:00
Andrey Antukh
163e102bcf 🔥 Remove unused code. 2019-09-21 20:13:14 +02:00
Andrey Antukh
abc1406f4d Minor improvements on devenv docker compose. 2019-09-21 20:12:11 +02:00
Andrey Antukh
c9d7de4022 Merge pull request #118 from uxbox/devenv-improvements
Docker/Devenv Improvements
2019-09-21 15:11:13 +02:00
Andrey Antukh
74224694c3 📚 Update README file. 2019-09-21 12:02:32 +00:00
Andrey Antukh
d8edf07367 Add watch:tests command to tools.clj script. 2019-09-21 11:47:52 +00:00
Andrey Antukh
0be3a181e6 🔥 Remove group based tests (no longer relevant). 2019-09-21 11:47:52 +00:00
Andrey Antukh
9ceb6c2644 🔥 Remove some commented code. 2019-09-21 11:47:52 +00:00
Andrey Antukh
4425b1a54c 🐛 Fix many bugs introduced with body parsing refactor. 2019-09-21 11:47:52 +00:00
Andrey Antukh
e45ad2197a Improve the current docker development environment. 2019-09-21 11:47:52 +00:00
Andrey Antukh
affb1480ce 🎉 Add namespace for performance measuring and debugging tools. 2019-09-20 17:31:48 +02:00
Andrey Antukh
4cf7a48567 🚧 Experimenting with some performance improvements. 2019-09-20 17:30:03 +02:00
Andrey Antukh
31ffa73bda Improve canvas handling on sitemap and workspace. 2019-09-18 18:21:58 +02:00
Andrey Antukh
3d8b3f3040 🐛 Add missing page attr to canvas generated in sample data. 2019-09-18 18:21:21 +02:00
Andrey Antukh
4db8de8d9d 🎉 Update devenv: ubuntu:xenial->bionic, java: jdk8->jdk12 (zulu-openjdk). 2019-09-17 18:38:31 +02:00
Andrey Antukh
08860e0f25 🐛 Fix page version spec. 2019-09-17 16:14:01 +00:00
Andrey Antukh
7b3ce38cc1 🐛 Fix unexpected bug when error is propagated on persist-page event. 2019-09-17 16:13:04 +00:00
Andrey Antukh
ff64332958 ⬆️ Update dependencies. 2019-09-17 16:12:30 +00:00
Andrey Antukh
e3eb6020a8 Merge branch 'i18n/multicanvas' of git://github.com/Monogramm/uxbox into Monogramm-i18n/multicanvas 2019-09-17 15:08:34 +02:00
Andrey Antukh
14d9a208a7 🚧 Convert projects api to use spec. 2019-09-14 23:16:48 +02:00
Andrey Antukh
5afbfe1ce9 🚧 Initial work on replace struct with spec. 2019-09-14 19:44:18 +02:00
Andrey Antukh
97220d707b ♻️ Refactor error handlers and request/response body encoding/decoding. 2019-09-14 19:44:18 +02:00
mathieu.brunot
72172a3b97 🌐 Element options i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-14 15:16:32 +02:00
mathieu.brunot
245d2a5ee4 Merge branch 'i18n/main' into i18n/multicanvas 2019-09-14 12:42:33 +02:00
mathieu.brunot
7e90a0e724 Merge branch 'develop' of github.com:uxbox/uxbox into i18n/main 2019-09-14 12:42:06 +02:00
mathieu.brunot
b6232b73cf 🌐 Sidebar options i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-14 12:41:33 +02:00
mathieu.brunot
22f7c0b020 📚 Show icons for the commit types
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 13:49:59 +02:00
mathieu.brunot
3c6f7b30eb 📝 Add server CORS env var in doc
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 13:49:59 +02:00
mathieu.brunot
87a37ca8c1 🔧 Sample allow all CORS origin for compose
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 13:49:29 +02:00
mathieu.brunot
8da93f90b6 🌐 Image popup i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 11:59:33 +02:00
mathieu.brunot
5002353854 Merge branch 'i18n/main' into i18n/multicanvas 2019-09-13 11:46:11 +02:00
mathieu.brunot
1e44747acf ✏️ Use correct i18n key for strokes
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 11:45:36 +02:00
mathieu.brunot
294734ce93 🌐 Snap to Grid French
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 11:44:47 +02:00
mathieu.brunot
c013b79ec9 🌐 Snap to Grid French
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 11:36:50 +02:00
mathieu.brunot
78f9e33ed4 🌐 Canvas tool text
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 11:33:21 +02:00
mathieu.brunot
7536241be0 🌐 Merge i18n for projects and sitemap
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-09-13 02:12:08 +02:00
mathieu.brunot
d8afb97c7a Merge branch 'wip/multicanvas' of github.com:uxbox/uxbox into i18n/multicanvas 2019-09-13 02:09:47 +02:00
mathieu.brunot
0e8da8e39b Merge branch 'i18n/main' of github.com:Monogramm/uxbox into i18n/main 2019-09-12 16:49:07 +02:00
Andrey Antukh
b1459f85cd 🚧 More work on data validation. 2019-09-10 12:00:52 +02:00
Andrey Antukh
faf7877d00 🚧 Use cljs.spec everywhere. 2019-09-09 23:21:55 +02:00
Andrey Antukh
a009961a58 🚧 More work on data and forms validation. 2019-09-09 12:34:31 +02:00
Andrey Antukh
2477b289e2 🔥 Remove useless prn's. 2019-09-02 20:50:38 +02:00
Andrey Antukh
689cc5f3e7 🚧 More work on better forms and data validation. 2019-09-02 20:49:48 +02:00
Andrey Antukh
04a5038ff4 🚧 More work on forms refactoring. 2019-08-29 11:23:04 +02:00
Andrey Antukh
ae2d8330ca 🚧 Initial work on password form. 2019-08-28 19:41:11 +02:00
Andrey Antukh
08bd135d55 ♻️ Refactor user profile form. 2019-08-28 19:01:11 +02:00
Andrey Antukh
88cf5483c8 ⬆️ Update struct dependency. 2019-08-28 19:00:29 +02:00
Andrey Antukh
ea3e5d14cd 🔥 Remove unused requires. 2019-08-26 21:42:57 +02:00
Andrey Antukh
d987e08461 ♻️ Refactor page deletion. 2019-08-26 21:42:12 +02:00
Andrey Antukh
b7c6204b6c 🐛 Fix syntax error on backend fixtures. 2019-08-26 21:41:42 +02:00
Andrey Antukh
263da4cc35 :constructor: Initial work on forms refactor. 2019-08-26 21:41:13 +02:00
Andrey Antukh
d147099e92 🎉 Add missing ui.shapes.canvas ns. 2019-08-24 16:35:53 +02:00
Andrey Antukh
33b8d98812 🐛 Fix confirmation dialog on projects and pages deletion. 2019-08-24 16:35:10 +02:00
Andrey Antukh
9ce650377b Load only one canvas on fixtures. 2019-08-24 16:34:35 +02:00
Andrey Antukh
89d0b632a4 Better handle zoom on drawing. 2019-08-24 16:25:38 +02:00
Andrey Antukh
786aefe7d8 Enable drawing new canvas. 2019-08-24 16:12:35 +02:00
Andrey Antukh
daac4486e5 Allow canvas movement and resize. 2019-08-24 16:01:17 +02:00
Andrey Antukh
902f7c4181 💩 Comment some code that needs to be refactored (undo related). 2019-08-24 15:58:52 +02:00
Andrey Antukh
f99134c70b Make canvas behave like shapes on the data layer. 2019-08-24 15:58:20 +02:00
Andrey Antukh
afae00f660 🔥 Remove unused and commented code. 2019-08-24 12:41:29 +02:00
Andrey Antukh
5af263c70e 🐛 Fix text shape edition mode. 2019-08-24 12:41:11 +02:00
Andrey Antukh
eebd56d738 💄 Cosmetic changes on initial align shape event. 2019-08-24 12:40:45 +02:00
Andrey Antukh
4df8a6b3b7 💄 Cosmetic changes on contributing. 2019-08-24 12:39:53 +02:00
Andrey Antukh
8f7d22921e ⬆️ Update npm (mostly development) dependencies. 2019-08-23 19:12:51 +02:00
Andrey Antukh
844c866642 ♻️ Refactor selection start-resize event. 2019-08-22 23:48:35 +02:00
Andrey Antukh
20364f47b4 Improve & simplify the drawing end event. 2019-08-22 23:48:18 +02:00
Andrey Antukh
363b2db695 Improve initial shape drawing impl. 2019-08-22 23:07:01 +02:00
Andrey Antukh
12637bbfe4 🐛 Fix bug on curve path edition mode. 2019-08-22 20:27:32 +02:00
Andrey Antukh
f0230c346c 🐛 Fix selection handlers reactivity. 2019-08-22 20:18:35 +02:00
Andrey Antukh
5a820b4f9e 📚 Move some deleted docs from CONTRIBUTIN file to README. 2019-08-22 20:07:58 +02:00
Andrey Antukh
6483800e49 Add more incremental improvements to shapes rendering.
That helps for make a good foundation for proper canvas painting and
manipulation.
2019-08-22 20:02:14 +02:00
Andrey Antukh
1fa9faa314 💄 Cosmetic changes on app component. 2019-08-22 20:01:05 +02:00
Andrey Antukh
4954bfdf76 ♻️ Refactor loader component. 2019-08-22 20:00:33 +02:00
Andrey Antukh
d9abe2f475 Improve fixtures initial data structure on fixtures. 2019-08-22 19:59:44 +02:00
Andrey Antukh
807555d478 🚧 Initial work on multicanvas feature. 2019-08-21 21:09:54 +00:00
Andrey Antukh
176ca590e1 Adapt code to rumext changes. 2019-08-21 21:09:22 +00:00
Andrey Antukh
247be4a8a4 📚 Improve contributing guide. 2019-08-21 21:07:02 +00:00
Andrey Antukh
41a3f4483f Improve error reporting. 2019-08-21 21:04:41 +00:00
Andrey Antukh
cf7664d446 ♻️ Refactor main app component. 2019-08-21 21:03:29 +00:00
Andrey Antukh
ccc6eaf4b0 💄 Cosmetic changes on builtin colors ns. 2019-08-21 21:00:46 +00:00
Andrey Antukh
42337dcd55 📚 Update contributing guide. 2019-08-21 20:59:55 +00:00
Andrey Antukh
5b2705e158 ⬆️ Update frontend depedencies. 2019-08-21 20:58:53 +00:00
Andrey Antukh
882102245a Add multicanvas data to sample data. 2019-08-21 20:58:23 +00:00
Andrey Antukh
f45d687d2a 📚 Update documentation. 2019-08-21 16:51:56 +00:00
mathieu.brunot
0f4316a5ae 📝 Add server CORS env var in doc
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-13 12:52:37 +02:00
Andrey Antukh
62856e005f 🐛 Fix typo. 2019-08-13 11:10:40 +02:00
Andrey Antukh
205d09a5cd Adapt to rumext api changes. 2019-08-13 09:02:05 +00:00
Andrey Antukh
9aac5e91ab 🐛 Fix coordinates component. 2019-08-12 16:50:44 +00:00
Andrey Antukh
5d5a7a21d2 🐛 Fix unexpected exception on workspace first initialization. 2019-08-12 18:20:41 +02:00
Andrey Antukh
8d03ff40ab 🎉 Initial work on multicanvas setup.
Preparing the workspace code to be able handle
multiple canvas in a single page.
2019-08-12 18:05:08 +02:00
Andrey Antukh
f8ff79e23c ♻️ Completelly rewrite drawing mechanism. 2019-08-12 13:34:34 +02:00
mathieu.brunot
4cacb9f92c 💄 Adapt when no tool bar
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 13:01:11 +02:00
mathieu.brunot
93097ac4b7 ✏️ Remove ; at end of functions call
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 12:56:45 +02:00
mathieu.brunot
1cd9a8e71c 🎨 Just change format in manage usage
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 12:56:45 +02:00
mathieu.brunot
f134bd196c Allow user to set docker UID
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 12:56:45 +02:00
mathieu.brunot
2707e557a7 📝 Add link to Taiga project
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 12:55:28 +02:00
mathieu.brunot
8e81eab729 📝 GitHub issue templates and bots config
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 12:55:28 +02:00
mathieu.brunot
dcb6a66d8a 🌐 Translate project title and update
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-12 10:42:37 +02:00
mathieu.brunot
b799d26a10 🚚 Change translation keys to avoid conflicts
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-11 01:08:10 +02:00
mathieu.brunot
5d62c70cc5 🌐 Element options i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-11 00:04:41 +02:00
mathieu.brunot
b3caa93e8b 🌐 Header i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-10 22:27:48 +02:00
mathieu.brunot
5c12bd988d 🌐 History, icons and messages i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-10 21:55:56 +02:00
mathieu.brunot
1d5bfd33d4 🌐 Project, sitemap and layers i18n
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-08-10 20:52:41 +02:00
Andrey Antukh
bebe220aa0 Improve rendering performance. 2019-08-09 15:07:16 +00:00
Andrey Antukh
2c321cbdb8 🐛 Fix edition mode of paths (and many perfomance improvements). 2019-08-09 10:43:02 +00:00
Andrey Antukh
775166f5f2 🐛 Fix circle and path drawing. 2019-08-08 21:24:43 +02:00
Andrey Antukh
97d74f6cf1 👷 Add better naming to docker images (among other fixes). 2019-08-08 19:17:25 +02:00
Andrey Antukh
69bb359615 🐛 Fix externs bug on production build. 2019-08-08 16:32:38 +00:00
Andrey Antukh
f38806eeb2 🐛 Add missing extern definition for "isDragging" function. 2019-08-08 16:05:57 +00:00
Andrey Antukh
b22f86b62c 🔧 Update build configuration to use advanced compilation with pseudo-names. 2019-08-08 15:57:53 +00:00
Andrey Antukh
6fe9d0bfa4 Add production bundles of react-color and react-dnd dependencies. 2019-08-08 15:25:09 +00:00
Andrey Antukh
005a2fe263 👷 Improve gzip configuration on docker image. 2019-08-08 17:05:05 +02:00
Andrey Antukh
03c9d9c8f1 ♻️ Refactor drag-and-drop on workspace sidebars (now using react-dnd). 2019-08-08 16:27:37 +02:00
Andrey Antukh
dbf754880e Add React-DnD dependency bundle. 2019-08-08 16:27:26 +02:00
Andrey Antukh
fcc7351552 🔊 Add some logging to worker modules. 2019-08-07 20:13:43 +02:00
Andrey Antukh
fada526f5d 🔧 Adapt shapes to use new rumext macros. 2019-08-07 20:12:35 +02:00
Andrey Antukh
204f180ec9 🐛 Relax some type restrictions for color fields. 2019-08-07 20:10:51 +02:00
Andrey Antukh
fd1796557d Introduce modules and code splitting on the build system. 2019-08-07 20:08:11 +02:00
Andrey Antukh
d2fe689fc5 🐛 Use scheduler on chunked-list component. 2019-08-06 09:08:00 +02:00
Andrey Antukh
c9e88cfdb7 ♻️ Refactor icons dashboard page. 2019-08-06 09:06:07 +02:00
Andrey Antukh
c948082e0a ♻️ Refactor images dashboard and common dashboard grid header. 2019-08-04 12:49:08 +00:00
Andrey Antukh
7a88558706 ♻️ Refactor image uploading from workspace. 2019-08-03 11:00:19 +02:00
Andrey Antukh
212ae89c50 ♻️ mainly workspace refactor 2019-08-02 20:18:05 +02:00
Andrey Antukh
4e382d456f 🐛 Fix initial page loading. 2019-07-24 13:29:07 +02:00
Andrey Antukh
140135317c ♻️ Ligtwheight refactor on view app (start new rumext facilities). 2019-07-24 11:37:04 +02:00
Andrey Antukh
980d23c370 ♻️ More code refactor on workspace. 2019-07-24 11:36:09 +02:00
Andrey Antukh
2a8c1d5f03 ♻️ Refactor application initialization.
Fixes some bugs on development enviroment
that causes two apps loading together.
2019-07-24 11:34:15 +02:00
Andrey Antukh
e010bbb631 🐛 Fix unexpected exception on password change endpoint (back). 2019-07-24 11:33:06 +02:00
Andrey Antukh
406157c06c ♻️ Refactor profile & language loading. 2019-07-24 00:49:37 +02:00
Andrey Antukh
08dc1870bf 🐛 Fix metada on fixtures (back). 2019-07-24 00:49:37 +02:00
Andrey Antukh
2b35d85094 🐛 Fix many issue on workspace rendering (and adapt to rumext changes) 2019-07-24 00:49:37 +02:00
Andrey Antukh
d34fc2512f 🔧 Simplify dashboard related route handlers. 2019-07-24 00:49:37 +02:00
mathieu.brunot
5c4f88221c 🌐 FR value of language choice
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-23 10:26:03 +02:00
Andrey Antukh
54809d05e2 🔧 Minor refactor on text shapes. 2019-07-22 12:40:34 +02:00
Andrey Antukh
2b81832b67 🐛 Fix selrect renderning on move on path based shapes.
Taiga Issue: https://tree.taiga.io/project/uxbox/issue/272
2019-07-22 11:03:22 +02:00
Andrey Antukh
125e7375c0 Update rumext and adapt code to changes. 2019-07-21 19:10:04 +02:00
Andrey Antukh
14d97511e6 Refactor settings pages and add tha ability to change current locale. 2019-07-21 19:09:37 +02:00
mathieu.brunot
76726b6cd2 👷 Add docker build / run to CI
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-19 17:48:28 +02:00
mathieu.brunot
9c61389830 Init DB JDBC URI from base DB params
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-19 17:48:13 +02:00
mathieu.brunot
d17db88088 🐛 Add missing db username / password
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-19 17:48:13 +02:00
mathieu.brunot
6fff307570 📝 Collection importer with Material Design
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-19 17:37:02 +02:00
Andrey Antukh
f341b5b3fe feat(frontend): more work on refactoring components 2019-07-19 17:32:50 +02:00
Andrey Antukh
56b8922dbb feat(frontend): adapt to rumext changes 2019-07-19 12:32:31 +02:00
Andrey Antukh
bb64655804 feat(frontend): minor refactor on settings/profile 2019-07-19 08:39:14 +00:00
Andrey Antukh
3f62d7cb65 misc: simplify the build scripts 2019-07-19 08:37:21 +00:00
Andrey Antukh
53e74ec5cd fix(backend): fix incorrect raise on users service. 2019-07-19 08:36:44 +00:00
Andrey Antukh
c2815d15ed feat(frontend): minor refactor on login and project create form 2019-07-18 14:27:42 +02:00
Andrey Antukh
321c8d14e1 feat(frontend): add many adaptations to rumext breaking changes 2019-07-18 12:31:58 +02:00
Andrey Antukh
9ddd9f317d feat(frontend): refactor many workspace components (rumext update) 2019-07-18 12:31:58 +02:00
Andrey Antukh
c4d7d545ae feat(frontend): refactor dashboard components 2019-07-18 12:31:58 +02:00
Andrey Antukh
891361b80c feat(frontend): update deps 2019-07-18 12:31:58 +02:00
Andrey Antukh
698eb14869 Merge pull request #103 from Monogramm/develop
Update develop branch
2019-07-13 23:12:17 +02:00
mathieu.brunot
8c21aac16e 🔧 Set backend script permissions
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-13 17:11:20 +02:00
mathieu.brunot
4bee4b8960 Merge branch 'master' of github.com:uxbox/uxbox into develop
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-13 17:10:09 +02:00
Andrey Antukh
0115a86b24 feat(frontend): remove bide dependency 2019-07-09 13:39:49 +02:00
Andrey Antukh
1bf12a7338 feat(backend): set datoteka version to 1.1.0 2019-07-09 13:08:01 +02:00
Andrey Antukh
3c066ffce2 feat(backend): upgrade suricatta 2019-07-09 11:46:51 +02:00
Andrey Antukh
1873b94fa7 misc(backend): update deps 2019-07-05 16:42:17 +02:00
Andrey Antukh
1fce679402 misc: minor improvements on data storage on production images 2019-07-05 15:24:11 +02:00
Andrey Antukh
e786a85bbd feat(backend): improve image uploading and thumbnail handling 2019-07-05 13:27:01 +02:00
Andrey Antukh
820edba113 fix(frontend): fix image uploading 2019-07-05 09:41:20 +02:00
Andrey Antukh
b6b6fdf115 fix(backend): fix image uploading 2019-07-05 09:41:02 +02:00
Andrey Antukh
8a7f981f6e misc: fix container references 2019-07-04 12:42:47 +02:00
Andrey Antukh
3c31144a58 misc: rename pgdb to postgres 2019-07-04 12:38:27 +02:00
Andrey Antukh
5ecd86ba02 misc: naming refactor on build process 2019-07-04 12:17:55 +02:00
Andrey Antukh
6a75eb893c misc: add stop command 2019-07-04 10:41:32 +02:00
Andrey Antukh
8cd5d10197 misc: unify develop and release docker compose files 2019-07-04 10:36:49 +02:00
Andrey Antukh
32af3adf39 misc: use proper target prop on worker build 2019-07-04 10:06:40 +02:00
Andrey Antukh
d908cf566a misc: more speed improvement on develop images building 2019-07-04 09:40:17 +02:00
Andrey Antukh
d8e205ec25 misc: add develop images (faster and debug ready images) 2019-07-04 09:24:20 +02:00
Andrey Antukh
945e52b4f8 misc: set default port to 8080 instead 80 for prod docker image 2019-07-03 20:41:16 +02:00
Andrey Antukh
5dad9ff301 fix(backend): join the server on main ns 2019-07-03 19:04:00 +02:00
Andrey Antukh
7cedc9228e fix: fix production docker images naming 2019-07-03 18:46:46 +02:00
Andrey Antukh
adfd40cde7 fix(frontend): fix wrong arity decl on navigate function 2019-07-03 18:02:54 +02:00
Andrey Antukh
9a313752c5 misc(frontend): minor code reorganization 2019-07-03 17:57:29 +02:00
Andrey Antukh
c2bdede29a fix(backend): start http server with no deamon threads 2019-07-03 17:57:07 +02:00
Andrey Antukh
20aacd94f3 fix(backend): run fixtures without start http server 2019-07-03 17:56:52 +02:00
Andrey Antukh
fd53f07efe misc: improve management scripts 2019-07-03 17:49:15 +02:00
Andrey Antukh
5640200bb4 Merge pull request #102 from Monogramm/fix/readme-docker
Update docker related info in README
2019-07-03 12:47:41 +02:00
mathieu.brunot
33e8dbd5b3 📝 Update docker related info
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-07-03 11:02:38 +02:00
Andrey Antukh
1fbd353001 misc(frontend): minor improvements on tools.clj script 2019-07-03 09:31:15 +02:00
Andrey Antukh
93b4258f02 feat(frontend): improve profile loading 2019-07-03 09:30:59 +02:00
Andrey Antukh
ef47563055 fix(frontend): fix many issues on dashboard collections 2019-07-02 21:17:39 +02:00
Andrey Antukh
7c1168e797 feat(frontend): improve scss build for production 2019-07-02 20:04:15 +02:00
Andrey Antukh
5fdcae4196 fix(frontend): remove unused and vulnerable npm dependencies 2019-07-02 19:13:39 +02:00
Andrey Antukh
3fc9c891ac fix(frontend): fix many bugs viewer sitemap component 2019-07-02 19:07:06 +02:00
Andrey Antukh
095989e6ba fix: update travis url on readme 2019-07-02 19:06:37 +02:00
Andrey Antukh
dd6015b329 feat(backend): adapt tests to route initialization change 2019-07-02 17:19:55 +02:00
Andrey Antukh
be7e8e63ee feat(backend): add logout and better router initialization 2019-07-02 17:19:55 +02:00
Andrey Antukh
932875a317 fix(backend): adapt import collection script to use clojure cli tools 2019-07-02 17:19:55 +02:00
Andrey Antukh
2b45690858 feat(backend): improve cors middleware and config 2019-07-02 17:19:55 +02:00
Andrey Antukh
b5acb5db85 feat(backend): update deps 2019-07-02 17:19:55 +02:00
Andrey Antukh
26cdebece4 feat(frontend): refactor router 2019-07-02 17:19:55 +02:00
Andrey Antukh
076c29e004 fix(backend): raise proper exception on input is binary data on svgparse 2019-06-24 19:50:54 +02:00
Andrey Antukh
48d5188aaa fix(backend): fix auth tests 2019-06-24 19:45:11 +02:00
Andrey Antukh
31766fde32 feat: enable runnint test on travis 2019-06-24 19:38:51 +02:00
Andrey Antukh
4da6ae0a74 fix(frontend): minor fix on icon shape component 2019-06-24 17:39:10 +02:00
Andrey Antukh
7103b35686 feat(frontend): add "build-tests" command 2019-06-24 17:39:10 +02:00
Andrey Antukh
a26f480d02 feat(frontend): remove sablono usage 2019-06-24 17:39:10 +02:00
Andrey Antukh
c234b01dee misc(frontend): cosmetic changes on deps.edn 2019-06-24 17:39:10 +02:00
Andrey Antukh
b1b81c152f feat(frontend): remove library from builtins 2019-06-24 17:39:10 +02:00
Andrey Antukh
ba62ae07b5 misc(frontend): remove stalled data from vendor/deps.cljs 2019-06-24 17:39:10 +02:00
Andrey Antukh
1df06e210d misc(frontend): remove stalled files 2019-06-24 17:39:10 +02:00
Andrey Antukh
15b9d8d54f misc(frontend): remove builtins icons from initial state 2019-06-24 17:39:10 +02:00
Andrey Antukh
7dc5ee3d4e misc(frontend): cosmetic change on repo impl ns 2019-06-24 17:39:10 +02:00
Andrey Antukh
c98e89278f feat(frontend): improve i18n 2019-06-24 17:39:10 +02:00
Andrey Antukh
bd11b5864b misc(frontend): use rumext instead of sablono on builtins.icons ns 2019-06-24 17:39:10 +02:00
Andrey Antukh
17e5880b2d misc(backend): minor changes on collimp command 2019-06-24 17:39:10 +02:00
Andrey Antukh
d967095b86 feat(backend): add etag mechanism for get requests 2019-06-24 17:39:10 +02:00
Andrey Antukh
f3204114cd feat(frontend): update date-fns bundle to 1.30.1 2019-06-24 17:39:10 +02:00
Andrey Antukh
105771a00d fix(frontend): adapt page options sidebar to new react 2019-06-24 17:39:10 +02:00
Andrey Antukh
b322da5936 fix(frontend): adapt colorpalette to rumext changes 2019-06-24 17:39:10 +02:00
Andrey Antukh
db4cdc27a3 fix(frontend): adapt repo ns to backend api changes 2019-06-24 17:39:10 +02:00
Andrey Antukh
ea1bfd5eaa fix(frontend): add render-to-html function 2019-06-24 17:39:10 +02:00
Andrey Antukh
b428d1dc23 fix(frontend): add missing import 2019-06-24 17:39:10 +02:00
Andrey Antukh
2dc30cddc3 misc(frontend): remove commented code from deps.edn 2019-06-24 17:39:10 +02:00
Andrey Antukh
88f45fb618 feat(frontend): initial work on react and rumext upgrade 2019-06-24 17:39:10 +02:00
Andrey Antukh
ff00bdb3eb feat(backend): enable cors 2019-06-24 17:39:10 +02:00
Andrey Antukh
9d58d0fac5 feat(backend): rename uxbox.api to uxbox.http 2019-06-24 17:39:10 +02:00
Andrey Antukh
3ff0ecee5f misc(backend): update deps 2019-06-24 17:39:10 +02:00
Andrey Antukh
f64bb74a3e feat(backend): remove catacumba dependency 2019-06-24 17:39:10 +02:00
Andrey Antukh
910e076e73 test(backend): more tests 2019-06-24 17:39:10 +02:00
Andrey Antukh
15a5d64621 feat(backend): minor refactor on middlewares 2019-06-24 17:39:10 +02:00
Andrey Antukh
0b1cd62449 feat(backend): handle more ecanpsulated errors 2019-06-24 17:39:10 +02:00
Andrey Antukh
f06fce06c3 fix(backend): fix run-test function 2019-06-24 17:39:10 +02:00
Andrey Antukh
f357180564 feat(backend): port auth kvstore and svg handlers 2019-06-24 17:39:10 +02:00
Andrey Antukh
4291c80259 test(backend): fix image create/upload test 2019-06-24 17:39:10 +02:00
Andrey Antukh
af8d19ab60 test(backend): improve tests fixtures 2019-06-24 17:39:10 +02:00
Andrey Antukh
04a054474f feat(backend): enable proper multipart handling 2019-06-24 17:39:10 +02:00
Andrey Antukh
57568f9614 misc(backend): error middleware reorganization 2019-06-24 17:39:10 +02:00
Andrey Antukh
7400f0f946 feat(backend): port icons images and users handlers to new api 2019-06-24 17:39:10 +02:00
Andrey Antukh
e0600a3058 feat(backend): adapt pages tests to new api 2019-06-24 17:39:10 +02:00
Andrey Antukh
210fbb9535 feat(backend): move almost all middlewares to api.middleware ns 2019-06-24 17:39:10 +02:00
Andrey Antukh
2e9fb97a98 feat(backend): remove warning from user ns (related to test function) 2019-06-24 17:39:10 +02:00
Andrey Antukh
9d5d4c9826 feat(backend): add entry point for tests 2019-06-24 17:39:10 +02:00
Andrey Antukh
f2411368ba feat(backend): initial work on catacumba to plain ring migration 2019-06-24 17:39:10 +02:00
Andrey Antukh
712269aa35 Merge pull request #98 from Monogramm/build-refactor
Add CI for build refactor
2019-06-24 17:35:35 +02:00
mathieu.brunot
495eec6c41 ✏️ Fix dumb typo in test to build back
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-24 01:14:17 +02:00
mathieu.brunot
0720ea0e97 🐛 Fix scripts permissions
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-23 22:48:31 +02:00
mathieu.brunot
5688196ea7 ✏️ Fix typo
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-23 21:30:16 +02:00
mathieu.brunot
d06a0bb501 🐛 Fix control on entry parameters
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-23 19:15:14 +02:00
mathieu.brunot
c6b540868f 🚧 Helper script to prepare back dist
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-23 18:47:33 +02:00
mathieu.brunot
0109c3ff1d 🚧 Add tests option
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-19 18:31:48 +02:00
mathieu.brunot
2183c37373 🐛 Ensure frontend css folders exists
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-19 16:42:32 +02:00
mathieu.brunot
95fa00e4fc 👷 Wait if run release
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-12 16:32:06 +02:00
mathieu.brunot
59b65fffe3 🚧 Wait more for init
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-12 16:19:15 +02:00
mathieu.brunot
78c2e66aa8 🚧 Display logs of any running docker
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-12 15:42:37 +02:00
mathieu.brunot
acf2e53825 🚧 Wait to check manually runtime
Signed-off-by: mathieu.brunot <mathieu.brunot@monogramm.io>
2019-06-12 14:46:59 +02:00
mathieu.brunot
e9e4f5d18a 🚧 💚 change permissions
Signed-off-by: mathieu.brunot <mb.mathieu.brunot@gmail.com>
2019-06-12 12:46:35 +02:00
mathieu.brunot
9664fe4a61 🚧 Set permissions on front release
Signed-off-by: mathieu.brunot <mb.mathieu.brunot@gmail.com>
2019-06-11 22:56:24 +02:00
mathieu.brunot
06c830dd3c 💚 Change release command
Signed-off-by: mathieu.brunot <mb.mathieu.brunot@gmail.com>
2019-06-11 22:39:41 +02:00
mathieu.brunot
15ea62c8d7 👷 Build devenv for release
Signed-off-by: mathieu.brunot <mb.mathieu.brunot@gmail.com>
2019-06-11 21:10:07 +02:00
mathieu.brunot
a7ed60ee12 Add curl
Signed-off-by: mathieu.brunot <mb.mathieu.brunot@gmail.com>
2019-06-11 20:58:21 +02:00
mathieu.brunot
00b56eaf6c 🎨 Add variable for Clojure version
Signed-off-by: mathieu.brunot <mb.mathieu.brunot@gmail.com>
2019-06-11 18:18:33 +02:00
mathieu.brunot
c4356bf9ce 🎨 Add env var for Clojure version 2019-06-11 01:01:55 +02:00
mathieu.brunot
fb7853d148 👷 Update CI node and tasks 2019-06-10 23:51:43 +02:00
mathieu.brunot
d5f7ac152f 💡 Track options to add and clean options 2019-06-10 23:49:51 +02:00
Andrey Antukh
a43fc529e7 misc: minor reorganization on devenv dockerfile 2019-06-05 10:07:01 +00:00
Andrey Antukh
cff438eccc feat: use zsh as default shell on docker devenv 2019-06-05 10:43:08 +02:00
Andrey Antukh
fd516fee56 feat: use docker last git hash for docker image rev 2019-06-05 08:26:50 +00:00
Andrey Antukh
f155f48888 misc: remove obsolete scripts from backend 2019-06-05 08:26:33 +00:00
Andrey Antukh
66fc0e68a4 feat: improve backend devlopment namespaces 2019-06-05 08:26:05 +00:00
Andrey Antukh
7adc4e3d01 feat: add worker build to figwheel 2019-06-03 17:21:07 +02:00
Andrey Antukh
a2c41cf9a7 refactor: reorganize with some changes the docker images and manage.sh 2019-06-03 16:53:31 +02:00
Andrey Antukh
3b648f5aa5 refactor: replace lein with cli tools and update some deps
- also removes docker files from source directories
- minor assets reorganization on back (make it more production ready)
2019-06-03 16:51:20 +02:00
Andrey Antukh
8a5c1498e9 misc: remove commented code from gulpfile 2019-05-31 14:43:06 +02:00
Andrey Antukh
3c23975a03 misc: update .gitignore file 2019-05-31 14:42:54 +02:00
Andrey Antukh
4b14e02692 feat: upgrade to gulp 4.x on frontend build 2019-05-31 13:52:35 +02:00
Andrey Antukh
ade7abbd57 misc: update .gitignore file 2019-05-31 13:52:35 +02:00
Andrey Antukh
e72a32bf2b deps: set default node version to v10.16.0 on frontend 2019-05-31 13:52:22 +02:00
mathieu.brunot
bc6fdbbff5 📝 Update badges in README 2019-05-17 10:54:54 +02:00
mathieu.brunot
d229c16cad 👷 Docker-compose build img 2019-05-17 03:30:51 +02:00
mathieu.brunot
9aa8b9bc3e 💄 Fix tooltip color background 2019-05-17 02:29:28 +02:00
mathieu.brunot
d6b3a4dd65 📝 Update README with dev info 2019-05-17 00:03:09 +02:00
mathieu.brunot
d393683be0 📝 Update doc for #96 2019-05-16 00:48:09 +02:00
mathieu.brunot
26260c7056 🐳 💡 Update prod docker mainteners 2019-05-16 00:44:52 +02:00
mathieu.brunot
0a0e0e33ab 🔧 Restore uxbox to default theme 2019-05-16 00:21:21 +02:00
mathieu.brunot
2089ecf6eb 💬 Add translation key for theme 2019-05-16 00:20:45 +02:00
mathieu.brunot
2237eb0f54 🚧 wip 2019-02-24 01:05:43 +01:00
mathieu.brunot
58360c5db1 ✏️ Fixing typo and dding note 2019-02-24 00:35:21 +01:00
mathieu.brunot
fd9adca1a9 🚧 Track FIXME for color palette 2019-02-24 00:00:32 +01:00
mathieu.brunot
e6e9f5160e 🎨 Exit links to authentication page 2019-02-23 19:24:33 +01:00
mathieu.brunot
b5af98d357 💄 Increase the display size of icons 2019-02-23 18:40:42 +01:00
mathieu.brunot
7cb5333c5a 🚧 Change format of icon collections 2019-02-23 18:31:02 +01:00
mathieu.brunot
fa95d5cd24 Load default icon collections 2019-02-23 16:24:07 +01:00
mathieu.brunot
3da36c82a0 🐛 Fix uuid of builtin icons 2019-02-23 16:16:33 +01:00
mathieu.brunot
39161b61c5 🐛 Fix icons uuid checks 2019-02-23 16:12:29 +01:00
mathieu.brunot
d445e891bf 🐛 Generate random uuid for icons collection 2019-02-23 16:10:33 +01:00
mathieu.brunot
1432446c9a 🐛 Fix builtin icons type 2019-02-23 16:04:59 +01:00
mathieu.brunot
bbd62778f3 🚚 Move library icons 2019-02-23 16:02:51 +01:00
mathieu.brunot
80942f9b02 🐛 Set icons collection id as uuid 2019-02-23 15:48:27 +01:00
mathieu.brunot
e17c9b9be1 🐛 Set vertical rule stroke 2019-02-23 14:39:27 +01:00
mathieu.brunot
9e288e0c32 💄 Fix canvas size 2019-02-23 14:20:56 +01:00
mathieu.brunot
2137c5bd51 💄 Increase viewer sitemap size on mobile 2019-02-23 13:25:34 +01:00
mathieu.brunot
1bc9adf51d 💄 Increase size of library elements list 2019-02-23 13:11:01 +01:00
mathieu.brunot
91d4417859 Open URL in new tab for viewer interaction 2019-02-23 12:45:39 +01:00
mathieu.brunot
2d91c93194 🎨 Change CSS rules order 2019-02-23 12:40:42 +01:00
mathieu.brunot
1c701602bb 🍱 Change completely the builtins colors 2019-02-23 12:35:28 +01:00
mathieu.brunot
4c97c26f6d 🐛 Add missing viewer lightbox data 2019-02-23 11:17:35 +01:00
mathieu.brunot
df376758c7 📱 Make the canvas phone and tablet displayable 2019-02-23 11:13:22 +01:00
mathieu.brunot
ff14d05ba2 💄 Use theme colors for rules 2019-02-23 10:45:56 +01:00
mathieu.brunot
6004ea31e4 🎨 Store page id in let 2019-02-23 02:12:53 +01:00
mathieu.brunot
84f1b87739 Add lightbox to viewer 2019-02-23 01:22:03 +01:00
mathieu.brunot
6fc98885dd 🐛 Make paste undoable 2019-02-23 00:55:37 +01:00
mathieu.brunot
b5cbb90f4f 🐛 Fix copy action 2019-02-23 00:31:15 +01:00
mathieu.brunot
2e57d2e328 🐛 Fix call to GoToPage in viewer 2019-02-22 03:47:14 +01:00
mathieu.brunot
0d94941001 🐛 Fix go to page interaction in viewer 2019-02-22 03:43:55 +01:00
mathieu.brunot
917ab4acc9 🐛 Add missing interactions to viewer 2019-02-22 01:59:56 +01:00
mathieu.brunot
9369f5e428 🎨 Change position of text center align button 2019-02-22 00:26:14 +01:00
mathieu.brunot
32d08414f3 🎨 Change position of text center align button 2019-02-22 00:25:51 +01:00
mathieu.brunot
061479b2f5 🐛 Add missing import 2019-02-21 23:57:43 +01:00
mathieu.brunot
77eac9e1b7 🐛 Add tooltip to not editable multiselect-nav 2019-02-21 23:13:23 +01:00
mathieu.brunot
5c0ec6f7c1 Add header link to exit in user settings 2019-02-21 22:55:39 +01:00
mathieu.brunot
d8838d3fc9 🐛 Use canvas background in viewer 2019-02-21 22:38:54 +01:00
mathieu.brunot
6439d64b72 💄 Use theme border for drag operations 2019-02-21 22:32:52 +01:00
mathieu.brunot
3f224ce47b Init i18N for viewer 2019-02-21 21:52:31 +01:00
mathieu.brunot
e7e67c6ad8 🌐 i18N for viewer 2019-02-21 21:51:54 +01:00
mathieu.brunot
2bcc229334 💄 Use more theme variables and less hard coded colors 2019-02-21 18:15:26 +01:00
mathieu.brunot
b54c7e1b49 🎨 Use relative path for default Viewer URL 2019-02-21 17:45:37 +01:00
mathieu.brunot
e9627cf7f7 ✏️ Fix typo for i18n key 2019-02-21 17:45:10 +01:00
mathieu.brunot
b1a611e41a 🐛 Fix missing import 2019-02-21 17:09:09 +01:00
mathieu.brunot
2db5b0f60f 🌐 More i18n updates 2019-02-21 16:57:57 +01:00
mathieu.brunot
a0ee33b63d 🐛 Fix missing parenthesis 2019-02-21 16:07:47 +01:00
mathieu.brunot
4b1bd3d132 🌐 Add translations of login/registration/... 2019-02-21 15:36:50 +01:00
mathieu.brunot
f44b9a0fc8 🎨 Allow remote development with figwheel 2019-02-21 04:37:30 +01:00
mathieu.brunot
e06bc2cc95 🌐 Translate several dashboards 2019-02-21 04:36:22 +01:00
mathieu.brunot
edbab7f8d5 🎨 Improve manage.sh 2019-02-20 21:24:03 +01:00
mathieu.brunot
fed29ec929 Start backend automatically for dev 2019-02-20 16:46:59 +01:00
mathieu.brunot
36d029b597 🐳 🎨 Use dockerhub images for docker-compose 2019-02-20 16:46:42 +01:00
mathieu.brunot
bc1a8dfca4 Add variables to docker file 2019-02-20 16:46:07 +01:00
mathieu.brunot
2f41011160 🐛 restore develop image build 2019-02-20 05:58:25 +01:00
mathieu.brunot
4e636ba51f 💩 🐛 Use scroll for colorpalette until better fix 2019-02-20 05:51:16 +01:00
mathieu.brunot
5ed4ef907b 💄 Use color var for invalid forms 2019-02-20 03:19:53 +01:00
mathieu.brunot
2662f9f72c Add download lightbox to view mode 2019-02-20 03:05:22 +01:00
mathieu.brunot
cc2d0247ee 🚧 🐛 Remove (temp) the icons collections 2019-02-20 02:47:43 +01:00
mathieu.brunot
bcb01813ef 💄 Improve element icons display 2019-02-20 02:46:36 +01:00
mathieu.brunot
243a9e3b6f 💄 Fix display of element options input 2019-02-20 02:36:42 +01:00
mathieu.brunot
9fe2c557fe 🐛 Fix display of colorpalette 2019-02-20 02:33:17 +01:00
mathieu.brunot
9bd9011eca 🐛 Fix display of user tooltip 2019-02-20 02:30:55 +01:00
mathieu.brunot
d16aab44f2 💚 🚧 Fix icons collections init 2019-02-19 23:42:00 +01:00
mathieu.brunot
f42563f3dd 🚧 🐛 Fix icons collections 2019-02-19 23:36:17 +01:00
mathieu.brunot
0330b2b454 🐛 Fix wrong reference to config 2019-02-19 23:29:42 +01:00
mathieu.brunot
26189a93af 📱 Display user popup on click instead of hover 2019-02-19 23:10:49 +01:00
mathieu.brunot
e8bd7436aa Add parameter to disable registration 2019-02-19 23:09:57 +01:00
mathieu.brunot
79f7d29df9 💄 Set option background in dashboard 2019-02-19 22:42:00 +01:00
mathieu.brunot
47a20b1784 🐳 Add env to setup directories 2019-02-19 22:39:09 +01:00
mathieu.brunot
1de7f24047 🐳 🐛 Fix media and assets URI environment variables 2019-02-19 22:31:59 +01:00
mathieu.brunot
6498c0fe44 🐛 Fix icons collection init 2019-02-19 21:49:52 +01:00
mathieu.brunot
f8ef533f6a 🐳 🐛 Provide env variables for media and static download 2019-02-19 21:44:22 +01:00
mathieu.brunot
6394905022 🐛 Fix colorpalette navigation 2019-02-19 21:36:35 +01:00
mathieu.brunot
8a31f67b42 💄 Fix display of element select and options 2019-02-19 21:05:20 +01:00
mathieu.brunot
122816efaf Restore Material Design icon stores 2019-02-19 18:22:22 +01:00
mathieu.brunot
eb6f222d82 Add more builtin colors 2019-02-19 18:02:26 +01:00
mathieu.brunot
655a7ad4fe Add more builtin colors collection 2019-02-19 17:00:16 +01:00
mathieu.brunot
376de340d6 🐳 Minify in production image 2019-02-19 16:01:31 +01:00
mathieu.brunot
957688b47d 💄 Fix errors in theme 2019-02-19 15:56:22 +01:00
mathieu.brunot
60e228ec14 🐳 🐛 Fix backend container 2019-02-19 12:42:06 +01:00
mathieu.brunot
d58f500dee 🐳 🐛 Add Imagemagick to production image 2019-02-19 02:41:18 +01:00
mathieu.brunot
8a80aeef1c 🚧 💄 Switch to dark theme 2019-02-19 02:40:47 +01:00
mathieu.brunot
353bdd77aa 🐛 Fix group name of notification page 2019-02-19 02:30:32 +01:00
mathieu.brunot
5aaaaef441 🌐 Add French locale 2019-02-19 02:22:18 +01:00
mathieu.brunot
d8d1f1418c 🚧 TG-269 Restore bullet for now 2019-02-18 19:12:13 +01:00
mathieu.brunot
554157ade0 🚧 TG-269 Display rectangle over interaction 2019-02-18 17:32:40 +01:00
mathieu.brunot
60935ce342 💚 Remove postgres service from travis 2019-02-18 02:20:11 +01:00
mathieu.brunot
e0c408dffc Merge branch 'develop' of github.com:monogramm/uxbox into develop 2019-02-18 01:53:08 +01:00
mathieu.brunot
3b3bd2fb45 🎨 Rename db container 2019-02-18 01:53:00 +01:00
mathieu.brunot
6df7610e9c ✏️ 💄 Fix typo and color in dark theme 2019-02-18 01:48:33 +01:00
mathieu.brunot
9684e1031f 🐛 TG-269 #in-progress 2019-02-18 01:47:50 +01:00
mathieu.brunot
2344850243 🐛 Fix title of draw tools TG-237 2019-02-18 01:02:22 +01:00
Mathieu Brunot
270066239e Merge pull request #3 from Monogramm/svg-project-th
add svg img th
2019-02-18 00:53:15 +01:00
mathieu.brunot
0d9a56ba17 💬 Add translation for draw tools TG-237 2019-02-18 00:40:45 +01:00
mathieu.brunot
127ec7536a 🚧 Mark backend tests to add to CI 2019-02-18 00:23:34 +01:00
mathieu.brunot
f365fd7f20 🐛 Fix draw tools title translation 2019-02-18 00:16:44 +01:00
mathieu.brunot
c4155c4c21 📱 Fix sitemap display on mobile 2019-02-18 00:05:00 +01:00
mathieu.brunot
49a6bb11a8 🐛 Fix NGINX default config 2019-02-18 00:01:55 +01:00
mathieu.brunot
1ef8789d21 ✏️ Fix typo 2019-02-17 19:04:20 +01:00
mathieu.brunot
e72f864ee9 🐛 Fix secret hash size to match JWT tokens 2019-02-17 19:04:07 +01:00
mathieu.brunot
06cb9d9808 🐛 Not use alpine as snappy needs libc and alpine use musl 2019-02-17 18:19:35 +01:00
mathieu.brunot
4cf2fa59ac 🐛 Add missing libc6-compat 2019-02-17 16:47:40 +01:00
mathieu.brunot
8b796f12da 📝 Update documentation regarding docker env 2019-02-17 15:35:28 +01:00
mathieu.brunot
4334b58c54 🐛 Fix default value of environment variables 2019-02-17 15:14:09 +01:00
mathieu.brunot
1e8fc410fd Comment local build of docker develop image 2019-02-17 03:31:19 +01:00
mathieu.brunot
0e4f676047 ✏️ Fix typo in frontend 2019-02-17 00:57:50 +01:00
mathieu.brunot
86105ee7a2 🐛 Add missing tmux to develop image 2019-02-17 00:57:15 +01:00
mathieu.brunot
3f8c206104 🐛 ⬆️ Fix upgrade bunny hash 2019-02-16 20:44:22 +01:00
mathieu.brunot
6692b19d7e ⬆️ Upgrade bunny hash and sign 2019-02-16 20:43:37 +01:00
mathieu.brunot
3cb111f4a2 🐳 💚 Change default secret 2019-02-16 17:08:36 +01:00
mathieu.brunot
c8d645f920 💚 Fix backend entrypoint 2019-02-16 16:50:39 +01:00
mathieu.brunot
4b9195e8e5 💚 Fix docker-compose run 2019-02-16 15:55:21 +01:00
mathieu.brunot
f035228072 🐳 🐛 Fix release build 2019-02-16 04:24:42 +01:00
mathieu.brunot
1f14cb83b3 :whale 🐛 Fix release 2019-02-16 04:20:11 +01:00
mathieu.brunot
b2dc669876 🎨 Change default DB password in docker-compose sample 2019-02-16 03:01:38 +01:00
mathieu.brunot
858993d8e2 🐛 Fix backend configuration setup 2019-02-16 00:59:31 +01:00
mathieu.brunot
9dad8b75d9 ✏️ Fix typo in name of file 2019-02-16 00:30:39 +01:00
mathieu.brunot
c745b9dec1 💚 Fix build 2019-02-15 23:51:36 +01:00
mathieu.brunot
3a05d58753 🐳 💚 Fix develop image 2019-02-15 23:38:14 +01:00
mathieu.brunot
d9355c3db4 💚 Fix docker-compose run 2019-02-15 23:11:15 +01:00
mathieu.brunot
88fff9e48b 💚 Fix build and docker-compose run 2019-02-15 23:09:04 +01:00
mathieu.brunot
e464fc4714 Add docker-compose test to CI 2019-02-15 22:35:49 +01:00
mathieu.brunot
8b1867befc 🚧 💚 CI on node 8.15.0 2019-02-15 21:52:40 +01:00
mathieu.brunot
530185782d 🚧 💚 Fixing tests 2019-02-15 20:46:51 +01:00
mathieu.brunot
d8f5c256b7 📝 Add npm description 2019-02-15 20:28:24 +01:00
mathieu.brunot
b3ea590166 🚧 💚 Remove JDK 10 and 11 and parallel CI 2019-02-15 20:27:52 +01:00
mathieu.brunot
7324592f1f 🚧 💚 Fix release build 2019-02-15 18:52:02 +01:00
mathieu.brunot
c9cf540d8e 💚 Fix permissions and paths 2019-02-15 18:10:35 +01:00
mathieu.brunot
a984a2795d 🚧 Fix lein install command 2019-02-15 17:42:58 +01:00
mathieu.brunot
44f9538819 💚 Change tested JDK 2019-02-15 17:27:46 +01:00
mathieu.brunot
5ed897ef07 💚 Change travis setup 2019-02-15 17:19:22 +01:00
mathieu.brunot
0a78505f22 💚 Fix language and npm install 2019-02-15 13:55:08 +01:00
mathieu.brunot
e96ff679ec 💚 Add missing dependencies 2019-02-15 13:19:00 +01:00
mathieu.brunot
14168728cc 🐳 🐛 Fix base image 2019-02-15 13:13:36 +01:00
mathieu.brunot
fb08655a0a 🐳 🐛 Fix base image 2019-02-15 12:59:35 +01:00
mathieu.brunot
b50667cecc 🐳 🎨 Use external base image 2019-02-15 03:27:55 +01:00
mathieu.brunot
7ccc3f30e5 🐳 💚 Build release image 2019-02-15 01:49:06 +01:00
mathieu.brunot
c44a1e0c0b 🚧 🐳 Build release images 2019-02-15 01:21:59 +01:00
mathieu.brunot
8e97638e15 🚧 🐳 Build release images 2019-02-15 00:50:47 +01:00
mathieu.brunot
c8385c8149 🚧 🐳 Build release images 2019-02-15 00:25:44 +01:00
mathieu.brunot
8984319b4f 🚧 🐳 Build release images 2019-02-14 23:51:37 +01:00
mathieu.brunot
e4ded8b520 🚧 🐳 Build release images 2019-02-14 23:21:15 +01:00
mathieu.brunot
42a2a72e00 🐳 🚧 Build release images 2019-02-14 22:45:14 +01:00
mathieu.brunot
397cbbf01c 🐳 🚧 Build release images 2019-02-14 22:20:31 +01:00
mathieu.brunot
3447be86fb 🐳 🚧 Build release images 2019-02-14 21:55:07 +01:00
mathieu.brunot
8dcf575af2 🐳 💚 Fix release build 2019-02-14 20:30:32 +01:00
mathieu.brunot
e42fd1d0ce 🐳 💚 Fix release build 2019-02-14 18:50:21 +01:00
mathieu.brunot
3a5368e1bd 🐳 💚 Fix copy of content 2019-02-14 15:28:10 +01:00
mathieu.brunot
95035cfca3 🐳 💚 Fix copy of release 2019-02-14 14:44:52 +01:00
mathieu.brunot
49d99d09e2 💚 Fix docker location 2019-02-14 14:05:46 +01:00
mathieu.brunot
bc5fe6c6b8 🐳 💚 Fix copy of sources 2019-02-14 13:47:19 +01:00
mathieu.brunot
aa735e52bf 💚 Move prod docker files to sources 2019-02-14 13:42:16 +01:00
mathieu.brunot
010f855829 👷 Add docker prod images build 2019-02-14 13:11:11 +01:00
mathieu.brunot
1f13b70c0c 📝 Update README 2019-02-14 13:07:13 +01:00
mathieu.brunot
4ec303520b 🐛 Use local backend by default 2019-02-14 13:04:35 +01:00
mathieu.brunot
426904000a 🐛 Clean up node modules 2019-02-14 13:04:05 +01:00
mathieu.brunot
fc8bd3049a 🐳 Add production containers 2019-02-14 12:59:59 +01:00
mathieu.brunot
fd9be4f940 💚 Test only dev build and do not run image 2018-11-25 14:06:04 +01:00
mathieu.brunot
793630b84d 🔊 💚 Fix CI build and test release 2018-11-25 13:49:44 +01:00
mathieu.brunot
ba1d5ad719 🐛 💚 Add missing npm install in release 2018-11-25 13:39:47 +01:00
mathieu.brunot
b621bab433 📝 Update README tags 2018-11-25 13:36:46 +01:00
mathieu.brunot
609f09a312 👷 Fix release backend and CI call to helper 2018-11-25 13:34:33 +01:00
mathieu.brunot
026150ff7a Add release generation tools 2018-11-25 10:48:40 +01:00
mathieu.brunot
bddf3e47c1 👷 Use the helper for automated build 2018-11-25 10:22:02 +01:00
Mathieu Brunot
6b3661edee Merge pull request #2 from madmath03/issue-92
Fix issue #92 by adding API_URL env variable
2018-11-03 10:07:07 +01:00
mathieu.brunot
4d19729758 👷 Add branches to travis-ci 2018-11-03 10:06:48 +01:00
mathieu.brunot
8a6d263145 🐛 Fix issue #92 by adding API_URL env variable 2018-11-03 09:57:10 +01:00
Mathieu Brunot
fa79de4a4f Merge pull request #1 from madmath03/travis
👷 Create travis.yml and fix #94
2018-11-03 00:03:14 +01:00
Mathieu Brunot
da02dcd717 Update README.md 2018-10-24 22:55:29 +02:00
Mathieu Brunot
ae26d8536b Create travis.yml and fix #94 2018-10-23 23:31:03 +02:00
Juan de la Cruz
f334d4c119 add svg img th 2017-04-24 12:05:46 +02:00
Andrey Antukh
43f3c43eab Add code optimizations to colors and images ns. 2017-04-09 11:53:55 +02:00
Andrey Antukh
34adb68372 Add many codebase optimizations on performance and size. 2017-04-08 19:28:32 +02:00
Andrey Antukh
171f9325a3 Minor fixes on clipboard ns. 2017-04-08 18:33:04 +02:00
Andrey Antukh
671c2d912c Remove all usage of mx/component and replace that with rumext. 2017-04-08 18:30:03 +02:00
Andrey Antukh
491d91b1ee Make components lazy by default. 2017-04-08 14:00:49 +02:00
Juan de la Cruz
c65e13a31f fix zoom controlers 2017-03-27 10:30:08 +02:00
Juan de la Cruz
d55cd87090 switch zoom controlers 2017-03-27 10:25:51 +02:00
Andrey Antukh
d5b7dcc663 Integrate the new way to handle grid snap.
Related to #79 and #80
2017-03-25 19:48:45 +01:00
Andrey Antukh
a7236c17f2 Set proper default flags on workspace.
And don't reset them on page change.
2017-03-25 19:48:18 +01:00
Andrey Antukh
16d2cbd381 Remove printlns 2017-03-25 19:41:57 +01:00
Andrey Antukh
3f4b19618c Fix syntax error introduced in previous commits. 2017-03-25 19:40:41 +01:00
Andrey Antukh
603459fd0d Merge branch 'history-refactor' 2017-03-25 19:39:49 +01:00
Andrey Antukh
54d41dd372 Remove commented code. 2017-03-25 19:36:41 +01:00
Andrey Antukh
94677f2f7e Improve history handling on frontend. 2017-03-25 19:35:54 +01:00
Andrey Antukh
691c359985 Improve history handling on backend. 2017-03-25 19:35:28 +01:00
elhombretecla
80ff709729 add new snap to gid btn and icon 2017-03-22 12:26:57 +01:00
Andrey Antukh
0cd3442d86 Minor cosmetic fix on history ref declaration. 2017-03-21 21:16:29 +01:00
Andrey Antukh
d69ab9edd8 Fix inconsistencies in alignment related flags.
Related to #79.
2017-03-21 21:16:13 +01:00
Andrey Antukh
6e7a20974d Add preconditions to the workspace initialization event. 2017-03-21 21:15:13 +01:00
Andrey Antukh
7958c33e34 Fix inconsistent behavior of magnet flag. 2017-03-21 20:41:43 +01:00
Andrey Antukh
d808ca2a87 Add pointer cursor to all shapes that have interactions (view). 2017-03-21 16:48:19 +01:00
Andrey Antukh
7c4717fcfa Properly refresh pages list on interactions sidebar menus.
And convert the interaction related components to
use the defc/defcs macros.
2017-03-21 16:45:59 +01:00
Andrey Antukh
027b4a5d57 Launch page persistence event before redirect to the view app. 2017-03-21 16:43:29 +01:00
Andrey Antukh
eb19d5f90a Draw image with original size instead with a fixed one. 2017-03-21 11:27:17 +01:00
Andrey Antukh
cc83a9b099 Select image for drawing using simple click.
Instead of double click.
2017-03-21 11:26:45 +01:00
Andrey Antukh
cb5deda0ff Fix a bug in page reordering after page creation. 2017-03-21 11:14:34 +01:00
Andrey Antukh
4f76adcb72 Reimplement project/page loading on frontend. 2017-03-21 09:56:50 +01:00
Andrey Antukh
475de58bc2 Simplify projects and pages related queries on backend. 2017-03-21 09:56:49 +01:00
Andrey Antukh
6ee9d668cd Set proper order on page creation. 2017-03-14 22:04:34 +01:00
Andrey Antukh
7d2a3a6295 Avoid useless persistence api calls on page reordering. 2017-03-14 21:59:28 +01:00
Andrey Antukh
e702b3358c Update backend dependencies. 2017-03-14 21:14:17 +01:00
Andrey Antukh
b50cccec1f Update frontend dependencies. 2017-03-14 21:13:00 +01:00
Andrey Antukh
5b15e02c3b Update imagemagick version on dockerfile. 2017-03-14 20:53:52 +01:00
Andrey Antukh
57e98487e1 Deselect all auto removed groups in drag & drop operations.
This fixes strange corner case that causes enabling
the grouping button when no visible shape is selected.
2017-03-10 12:49:26 +01:00
Andrey Antukh
cc0b61f122 Minor cosmetic changes on tests. 2017-03-10 12:20:15 +01:00
Andrey Antukh
5693ec0142 Merge branch 'studiospring-issue-82' 2017-03-10 11:47:15 +01:00
Sean Loughman
e81f9cc6b3 Add gray background to the X-axis ruler.
Signed-off-by: Sean Loughman <sean@studiospring.com.au>
2017-03-10 11:46:28 +01:00
Andrey Antukh
b313aa47ce Properly remove empty gropups after relocation.
Related to #72.
2017-03-10 10:36:40 +01:00
Andrey Antukh
13e02283d8 Refactor degroup-shape impl.
In order to fix many corner cases and make
the code more easy to understand.

Related to #72.
2017-03-10 08:51:06 +01:00
Andrey Antukh
1835b496d1 Allow ungroup toplevel group.
Related to issue #72.
2017-03-08 20:20:45 +01:00
Andrey Antukh
d8b21aa350 Fix the text opacity handling.
Fixes #74
2017-03-08 19:58:36 +01:00
Andrey Antukh
05adaf0d61 Remove :ruler from default workspace flags.
Mistake introduced in previous commit.
2017-03-08 19:57:09 +01:00
Andrey Antukh
fea85a1c1e Add background to the ruler information tooltip.
Fixes #75
2017-03-08 19:51:34 +01:00
Andrey Antukh
0a70ab9c8c Better workespace state re/initialization. 2017-03-08 19:50:37 +01:00
Andrey Antukh
1aa236e812 Replace funcool/struct with cljs.spec.
As a result, one dependency less.
2017-03-08 16:58:00 +01:00
Andrey Antukh
6bc6ee68b6 Minor fix on projects spec. 2017-03-07 08:56:41 +01:00
Andrey Antukh
c5d15f01cf Update copyright year on time ns. 2017-03-06 21:37:34 +01:00
Andrey Antukh
8e862bdc39 Add license and version file to datefns vendor directory. 2017-03-06 21:28:17 +01:00
Andrey Antukh
e21fe53ce6 Remove useless predicate for check date instance. 2017-03-06 21:26:25 +01:00
Andrey Antukh
81e90ddf9d Add .gitattributes file. 2017-03-06 18:42:58 +01:00
Andrey Antukh
9c4c267753 Simplify time related types and remove momentjs dependency. 2017-03-06 18:40:49 +01:00
Andrey Antukh
c4a5d26e8b Minor reorganization of vendor dependencies. 2017-03-06 18:38:17 +01:00
Andrey Antukh
fa7b0987a1 Fix default development server uri. 2017-03-06 09:22:29 +01:00
Andrey Antukh
9da623e3af Add image element options. 2017-03-03 14:39:34 +01:00
Andrey Antukh
9caeef72ea Update node version to 7.7.1 and all node dependencies. 2017-03-03 13:39:30 +01:00
Andrey Antukh
45d716a03e Fix sass warnings. 2017-03-03 13:37:18 +01:00
Andrey Antukh
d95b43f9c1 Fix undo redo buttons on workspace.
And add minor improvements to the undo/redo
changes detection system.
2017-03-03 13:14:50 +01:00
Andrey Antukh
df14f7e364 Minor fix on ruler tool impl.
Many bugs introduced in previous related commits.
2017-03-03 13:12:14 +01:00
Andrey Antukh
993657a1cc Use the same ordering in view and main sitemap.
Related #68
2017-03-02 18:40:16 +01:00
Andrey Antukh
34e476a4db Show proper tooltip when ruler tool is selected. 2017-03-02 17:46:37 +01:00
Andrey Antukh
d54f70f1d7 Make rules visible by default. 2017-03-02 17:25:04 +01:00
Andrey Antukh
6666244061 Add impl for new ruler button and add the abilty to hide rules. 2017-03-02 17:24:02 +01:00
Andrey Antukh
e453841d66 Improve demo warning on home and add conditional build options. 2017-03-02 17:13:09 +01:00
elhombretecla
96092fda7c add new ruler icon 2017-03-02 17:07:32 +01:00
Andrey Antukh
ff8c9d0ed8 Added tab-index attributes to the login and register page. 2017-03-02 16:44:08 +01:00
elhombretecla
63836ffb19 add login test message 2017-03-02 16:37:11 +01:00
Andrey Antukh
89b7834b10 Fix image importation from galery to workspace. 2017-03-02 16:22:37 +01:00
Andrey Antukh
7e203c9851 Show unlock icon when shape proportions are not locked. 2017-03-02 16:22:37 +01:00
Andrey Antukh
b3a2ae3eb2 Minor refactor on shapes data events.
Adding more asserts and more specs.
2017-03-02 16:22:36 +01:00
Andrey Antukh
fdf3f1b6f0 Add the ability to create a point instance from hash-map. 2017-03-02 16:22:36 +01:00
elhombretecla
4676edca8b change login button wording 2017-03-02 16:21:15 +01:00
elhombretecla
08ee5f0ba0 fix view mode scroll 2017-03-02 09:44:40 +01:00
Andrey Antukh
d474712cd6 Fix all tests. 2017-03-01 20:09:14 +01:00
Andrey Antukh
8245ea0bdc Remove unused code. 2017-03-01 20:08:49 +01:00
Andrey Antukh
bfd99ebb8f Fix build/watch tests scripts. 2017-03-01 20:08:26 +01:00
Andrey Antukh
99f935863a Add move cursor when shape is displaced on viewport. 2017-03-01 19:17:51 +01:00
Andrey Antukh
4dc728378c Hide dragged item on layers sidebar widget. 2017-03-01 19:17:51 +01:00
Andrey Antukh
4aa3372e5b Hide dragged item on sitemap sidebar widget. 2017-03-01 19:17:51 +01:00
Juan de la Cruz
891dad0b11 add unlock icon 2017-03-01 14:47:43 +01:00
Juan de la Cruz
bc305c66d9 fix name shapes to draw tools 2017-03-01 14:32:36 +01:00
Juan de la Cruz
121e181060 new readme 2017-03-01 10:58:57 +01:00
Juan de la Cruz
7964805536 new readme 2017-03-01 10:54:37 +01:00
Andrey Antukh
4ce0b50c04 Fix proportion locking mode on drawing shape.
Fixes issue #61
2017-02-28 18:44:35 +01:00
Andrey Antukh
9238a76156 Remove unused alias to uuid generation. 2017-02-28 18:26:02 +01:00
Andrey Antukh
1782d34d4a Fix unexpected flash on history dialog in some situations.
When latest history item is selected multiple times.
2017-02-28 18:23:13 +01:00
Andrey Antukh
1954aebb48 Fix image uploading from workspace. 2017-02-27 20:49:31 +01:00
Andrey Antukh
8697df75c1 Fix path drawing broken in previous commits. 2017-02-27 20:39:02 +01:00
Andrey Antukh
51fd90c64d Fix alignment initialization and flags management on workspace.
Fixes issue #47.
2017-02-27 20:28:37 +01:00
Andrey Antukh
f82ddac72d Fix many inconsistencies between drawing and resizing.
This enables sharing code between the drawing logic and
the simple resizing. Allowing drawing in any direction,
not only from top-left to bottom-right.

Fixes issue #44.
2017-02-27 20:28:37 +01:00
Juan de la Cruz
b7253b7fd5 temporarily remove download HTML 2017-02-27 09:30:37 +01:00
Juan de la Cruz
9cd12a7609 change download text dialog 2017-02-27 09:21:45 +01:00
Juan de la Cruz
042a44cba6 add download icon 2017-02-27 09:05:57 +01:00
Andrey Antukh
ac49728758 Add invisible background to paths.
In order to make more easy to the
user select and move them.
2017-02-26 21:19:39 +01:00
Andrey Antukh
4a804ae467 Remove println on shapes data events. 2017-02-26 21:15:07 +01:00
Andrey Antukh
8e8f230504 Make icon rotation behave in the same way as rect. 2017-02-26 21:03:15 +01:00
Andrey Antukh
653e0b5669 Add better impl for util timers. 2017-02-26 20:46:19 +01:00
Andrey Antukh
3bb991da0b Properly catch exceptions on image fetching. 2017-02-26 20:45:29 +01:00
Andrey Antukh
db36c617bf Convert some events from reify to deftype. 2017-02-26 20:45:06 +01:00
Andrey Antukh
3a75a07de5 Add more specs to image collections events. 2017-02-26 11:09:38 +01:00
Andrey Antukh
1172c56dfa Fix unexpected exception on uploading new image.
And additionally add spec for image entity on
image collections related ns.
2017-02-26 10:57:05 +01:00
Andrey Antukh
345a788cdd Update beicon to 3.1.1
Fix some uxbox bugs.
2017-02-26 10:56:19 +01:00
Andrey Antukh
1bbcb0c15f Update cljs compiler version to 1.9.494 2017-02-26 10:56:04 +01:00
Andrey Antukh
e6602ac68b Refactor thumbnails generation.
- Start use temporal file instead of pipe because
  im4java seems does not work properly with it
  (it constantly generates `-` file on he *cwd*)

- Move many impl of ratpack file types from
  old storage vendor package to catacumba code.

- Add spec for thumbnails configuration.
2017-02-25 16:01:00 +01:00
Andrey Antukh
618ce12fd8 Replace internal storage impl with datoteka library. 2017-02-25 16:00:22 +01:00
Andrey Antukh
4efe9ac5a9 Update dependencies (backend). 2017-02-24 19:35:34 +01:00
Andrey Antukh
37e011f98f Update contributing guide and the readme. 2017-02-24 19:25:11 +01:00
Andrey Antukh
ba40b99c97 Allow text selection on view app. 2017-02-23 21:36:40 +01:00
Andrey Antukh
05b6c25aa9 Properly disable layers buttons when action is not possible. 2017-02-23 21:21:05 +01:00
Andrey Antukh
bb0b616cb3 Match selrect selection by overlap instead of strictly contained-in. 2017-02-23 20:45:13 +01:00
Andrey Antukh
4ba4fb3acb Reduce the handler point circle size when shape is small. 2017-02-23 20:37:54 +01:00
Andrey Antukh
67974a0952 Invert scroll/zoom behavior. 2017-02-23 20:37:54 +01:00
elhombretecla
6bd22fff4c fix input radius firefox 2017-02-23 19:18:18 +01:00
elhombretecla
86ba57af9c fix firefox icon th at libraries 2017-02-23 19:12:41 +01:00
elhombretecla
bdc1a031f3 add disable state to layer icons 2017-02-23 18:24:14 +01:00
Andrey Antukh
d3df339375 Fix not working close button on project form.
Fixes gh: #46
2017-02-23 10:42:22 +01:00
Andrey Antukh
185e9159fb Only show element options tabs when more than one option is available. 2017-02-22 21:14:39 +01:00
Andrey Antukh
fe61765435 Refresh the view app page each time user clicks on preview button. 2017-02-22 21:05:53 +01:00
Andrey Antukh
3940995e21 Dont allow draw empty shapes. 2017-02-22 21:02:40 +01:00
Andrey Antukh
4a9d0710a4 Fix shape size locking wrong behavior.
It does not worked properly when user
explicitly locks the size proportions
on the measures element options.
2017-02-22 20:49:54 +01:00
Andrey Antukh
9feba4df92 Move stroke radius under stroke element options sidebar. 2017-02-22 20:49:28 +01:00
Andrey Antukh
daa50470f8 Use local lein for frontend dist scripts. 2017-02-22 20:47:41 +01:00
Andrey Antukh
edb1a124d0 Add lein fast trampoline env var to docker's bashrc file. 2017-02-22 20:47:07 +01:00
Andrey Antukh
6f4cc4f543 Minor refactor on ruler code. 2017-02-22 17:56:00 +01:00
Andrey Antukh
47f6d531b2 Show submit button disabled instead of hidden on pageform. 2017-02-22 11:11:55 +01:00
Andrey Antukh
227c197692 Update dependencies. 2017-02-22 11:11:24 +01:00
Andrey Antukh
ead0fd53e3 Fix selection rect of drawing circle. 2017-02-21 20:00:18 +01:00
Andrey Antukh
12f40744d2 Draw selection dashed-square when shape is drawing. 2017-02-21 19:39:01 +01:00
Andrey Antukh
9f9bff17e5 Properly handle selrect double initialization.
This issue is happens when user emits mouse-up event out
of workspace, that is not captured by stoper stream, and
then user need to initialie and stop again the selrect.

The double initialization is not an issue but that
was raising unexpected exception and this commit
fixes that.
2017-02-21 19:36:54 +01:00
Andrey Antukh
d57a71b8d6 Remove dead code from shapes selection ns. 2017-02-21 19:36:26 +01:00
Andrey Antukh
d28e0abe38 Add a TODO comment on util.forms. 2017-02-21 18:20:05 +01:00
Andrey Antukh
5ad7e06d79 Print stack trace on console when an exception is raised. 2017-02-21 18:19:45 +01:00
Andrey Antukh
8de6311c1f Fix unexpected exception on path edition. 2017-02-21 18:19:24 +01:00
Andrey Antukh
bedd1def21 Remove commented code on util/forms.cljs file. 2017-02-21 18:07:40 +01:00
Andrey Antukh
6f1c461e2e Add missing clear-mixin on login and register pages. 2017-02-21 18:07:07 +01:00
Andrey Antukh
0bb8fa7e06 Fix incorrect handling of error message timeouts. 2017-02-21 17:49:17 +01:00
Andrey Antukh
8f08a23615 Add better error message for error.network error. 2017-02-21 17:48:52 +01:00
Andrey Antukh
e5651f6d5a Add brotli and gzip static compression to gulp tasks. 2017-02-21 13:23:15 +01:00
Andrey Antukh
6143fd3779 Move caddyfile out of dist directory. 2017-02-21 13:19:25 +01:00
Andrey Antukh
d792f38026 Enable gzip and brotli precompression on dist scripts. 2017-02-21 12:19:27 +01:00
Andrey Antukh
2a7cfbe96f Add caddyfile for test dist build locally. 2017-02-21 12:19:03 +01:00
Andrey Antukh
f92df1d171 Remove unused code from manage.sh 2017-02-21 11:25:23 +01:00
Andrey Antukh
835dcb15d7 Generate .gz files for dist build. 2017-02-21 11:25:01 +01:00
Andrey Antukh
a546811b40 Add the ability to deactivate the function name mungling. 2017-02-21 11:24:28 +01:00
Andrey Antukh
94800c7a84 Update .gitignore file. 2017-02-21 11:24:02 +01:00
Andrey Antukh
1a12184528 Download imagemagick from git that has consistent tag names. 2017-02-20 17:37:48 +01:00
Andrey Antukh
e8fcb38597 Rename :points attr to :segments on path shape. 2017-02-14 21:57:28 +01:00
Andrey Antukh
340a5b3da2 Minor refactor on geom types and corresponding transit handlers. 2017-02-14 21:56:15 +01:00
Andrey Antukh
b15d70ff91 Remove debug on drawing streams. 2017-02-14 21:54:42 +01:00
Andrey Antukh
2a5d8f71a4 Remove commented code from project.clj 2017-02-14 21:54:14 +01:00
Andrey Antukh
81f788278a Remove unused code. 2017-02-14 21:53:52 +01:00
Andrey Antukh
276ad62f24 Force creating .m2 directory on the home when manage.sh run is executed. 2017-02-14 18:23:32 +01:00
Andrey Antukh
f52d886b04 Fix imagemagick version on dockerfile. 2017-02-14 18:23:07 +01:00
Andrey Antukh
f50b82d81c Downgrade to 1.9.293 cljs compiler. 2017-01-31 17:25:59 +01:00
Andrey Antukh
6c1955c0d9 Many performance improvements on workspace. 2017-01-31 17:02:33 +01:00
Andrey Antukh
3fdce853d0 Don't trigger page persistence on simple shape selection. 2017-01-31 16:58:10 +01:00
Andrey Antukh
422f2aed64 Minor changes on frontend project.clj 2017-01-31 16:54:21 +01:00
Andrey Antukh
f33fdc58a6 Properly select the first page on workspace first load after dashboard. 2017-01-31 00:17:54 +01:00
Andrey Antukh
aba35dee61 Add more safer shapes packing mechanism. 2017-01-31 00:07:53 +01:00
Andrey Antukh
12b9868f45 Don't render shape if it is nil. 2017-01-30 19:49:35 +01:00
Andrey Antukh
49b783273e Only render shape if it is not nil. 2017-01-30 19:33:09 +01:00
Andrey Antukh
16a322211e Remove duplicate entries from externs. 2017-01-30 19:16:00 +01:00
Andrey Antukh
7a33c561ac Set node version to 6.9.4 2017-01-30 19:00:56 +01:00
Andrey Antukh
ae5cef3907 Render properly image on view application. 2017-01-30 18:53:42 +01:00
Andrey Antukh
0d46c5bac7 Properly render image shapes on viewer. 2017-01-30 17:51:58 +01:00
Andrey Antukh
31b784f046 Fix depreaction warnings (changes introduced in 2.9.0 of beicon). 2017-01-30 17:50:44 +01:00
Andrey Antukh
a8b7f79194 Don't autoselect deleted page on the first projects query (backend). 2017-01-30 17:43:26 +01:00
Andrey Antukh
b0de23b011 Get rid of buggy reactive locks and refactor all related code. 2017-01-30 17:08:02 +01:00
Andrey Antukh
bce58df413 Update frontend dependencies. 2017-01-30 16:59:29 +01:00
Andrey Antukh
76625fbb22 Update cljs compiler to latest version. 2017-01-30 16:59:29 +01:00
Andrey Antukh
8981727d09 Update backend dependencies. 2017-01-30 16:59:29 +01:00
Andrey Antukh
6fe09bf784 Minor fixes on dockerfile and manage.sh script. 2017-01-30 16:59:29 +01:00
Andrey Antukh
1b687a0d79 Update docker image. 2017-01-30 16:59:29 +01:00
Andrey Antukh
0481dc7ebf Update beicon to 2.9.0. 2017-01-30 16:58:45 +01:00
Andrey Antukh
f5004518aa Fix image retrieval by anonymous user. 2017-01-30 14:50:05 +01:00
Andrey Antukh
3f58e1b453 Add web directory to .gitignore file. 2017-01-22 17:38:43 +01:00
Andrey Antukh
37ce8b7398 Add .catacumba.basedir file. 2017-01-22 17:07:17 +01:00
Andrey Antukh
e150afc00b Fix sql syntax error in previous commit. 2017-01-22 17:05:14 +01:00
Andrey Antukh
1efd25a0e5 Exclude from unique index users marked for delete. 2017-01-22 17:00:56 +01:00
Andrey Antukh
2ba3d27db6 Use nil as default value por db username and password. 2017-01-22 16:40:42 +01:00
Andrey Antukh
59d152bec5 Use proper config for database initialization. 2017-01-22 16:37:37 +01:00
Andrey Antukh
baa2f384f4 Set a uberjar compatible basedir option. 2017-01-22 16:13:47 +01:00
Andrey Antukh
5a641e4629 Refactor configuration loading. 2017-01-22 15:50:00 +01:00
Andrey Antukh
3092884525 Move static directory from public to parent directory. 2017-01-22 15:29:28 +01:00
Andrey Antukh
4eaece6cb5 Use relative urls for api and view apps. 2017-01-21 18:13:42 +01:00
Andrey Antukh
2c06c5b905 Fix fixtures entry point. 2017-01-21 17:36:01 +01:00
Andrey Antukh
7f38aa97fa Remove dist script (replaced by fabric). 2017-01-21 17:24:48 +01:00
Andrey Antukh
bdb4e077a3 Minor fix on frontend dist command. 2017-01-21 16:50:05 +01:00
Andrey Antukh
4d5a8ac89d Improve backend uberjar profile. 2017-01-21 16:49:47 +01:00
Andrey Antukh
2fa169e28d Add dist.sh script. 2017-01-21 14:31:54 +01:00
Andrey Antukh
680fa49f27 Fix image loading on view app.
And add cosmetic improvements to the
main image shape component.
2017-01-18 11:10:29 +01:00
Andrey Antukh
922a2494ed Minor cosmetic changes on pages data events. 2017-01-18 11:04:30 +01:00
Andrey Antukh
e97b4b8374 Update frontend dependencies. 2017-01-18 11:03:43 +01:00
Andrey Antukh
5df9337034 Make image retrieve endpoint public (without auth). 2017-01-18 11:03:14 +01:00
Andrey Antukh
92fc9c1ca6 Use deftype for user data events. 2017-01-16 17:49:29 +01:00
Andrey Antukh
e3f58f6823 Start use user-events for scroll events.
In the same way as keyboard and mouse events.
2017-01-16 17:47:01 +01:00
Andrey Antukh
7a7059e172 Start use one unique stream for send user events (mouse and keyboard). 2017-01-16 16:33:25 +01:00
Andrey Antukh
bc1ffc7f4f Move icons ns under uxbox.builtins.icons. 2017-01-16 13:14:38 +01:00
Andrey Antukh
671a72d213 Remove uxbox.view.router ns. 2017-01-16 13:13:22 +01:00
Andrey Antukh
08b0a096eb Minor structure refactor.
Make forms and messages modules independent of
store location (making them plugables).
2017-01-16 12:35:10 +01:00
Andrey Antukh
8c28a8c0a7 Move workspace.base refs and streams into separated namespaces.
A first step for streams refactor.
2017-01-12 17:39:26 +01:00
Andrey Antukh
a5554b51cd Fix path drawing. 2017-01-11 21:06:29 +01:00
Andrey Antukh
da9bebf95c Minor changes on text tool. 2017-01-11 20:51:46 +01:00
Andrey Antukh
c95a4050f4 Remove unused code. 2017-01-11 20:51:25 +01:00
Andrey Antukh
3cd3230342 Remove wrong lock support on resize-rect func. 2017-01-11 20:51:08 +01:00
Andrey Antukh
6345cfd91a Fix size manipulation on text edition tool. 2017-01-11 20:24:16 +01:00
Andrey Antukh
f26e1eb70f Fix default value for collapsed attribute. 2017-01-11 20:03:15 +01:00
Andrey Antukh
0bd8847f56 Remove println. 2017-01-11 20:03:10 +01:00
Andrey Antukh
f8a3823d2d Minor fix on colorpalette. 2017-01-11 19:53:42 +01:00
Andrey Antukh
390a73eeac Fix recent colors on shape color picker. 2017-01-11 19:50:58 +01:00
Andrey Antukh
ce5811b86b Many fixes on the project/page creation process. 2017-01-11 19:47:15 +01:00
Andrey Antukh
32ec7a0634 Minor fix on colorpalette. 2017-01-11 18:20:40 +01:00
Andrey Antukh
137af0e14d Reorganize viewport positioning related code. 2017-01-11 18:20:40 +01:00
Andrey Antukh
c906a4e46f Reorganize imports on canvas ns. 2017-01-11 18:20:40 +01:00
Andrey Antukh
c46a49b7a5 Remove unused import from workspace base. 2017-01-11 18:20:39 +01:00
Andrey Antukh
09b3017874 Convert workspace component to use new defc macro. 2017-01-11 18:20:39 +01:00
Andrey Antukh
30ae7a4deb Fix reference to undefined spec. 2017-01-11 18:20:39 +01:00
elhombretecla
1c731d4d77 hide align button 2017-01-11 09:30:20 +01:00
elhombretecla
2e16d76f7c fix color picker input 2017-01-11 09:26:41 +01:00
Andrey Antukh
8352cc75d9 Improve autoselect collection with icons. 2017-01-09 20:27:59 +01:00
Andrey Antukh
dfa8814887 Minor reorganization on workspace and icons sidebar. 2017-01-09 20:27:31 +01:00
Andrey Antukh
3ea4de7ab5 Remove unused local used-names. 2017-01-09 20:26:55 +01:00
Andrey Antukh
80ebc17a26 Fix interactions issues. 2017-01-09 20:26:30 +01:00
Andrey Antukh
20e7afeee5 Add specific selection handler for text edition. 2017-01-09 20:25:57 +01:00
Andrey Antukh
b00992881c Improve page persistence mechanism. 2017-01-06 18:05:14 +01:00
Andrey Antukh
f7e4e18a28 Define a shape spec. 2017-01-06 16:38:40 +01:00
Andrey Antukh
fd7b0b1958 Rename datetime ns to time.
And rename DateTime type to Instant.
2017-01-06 16:31:57 +01:00
Andrey Antukh
d3e81dc810 Add the ability to edit page name from page element-options. 2017-01-06 16:25:21 +01:00
Andrey Antukh
bfce5f8a00 Improve unique name generation for shapes in a page. 2017-01-05 23:54:29 +01:00
Andrey Antukh
28d18a07a0 Refactor shapes attributes handling. 2017-01-05 23:21:05 +01:00
Andrey Antukh
b3d995de53 Improve scripts, add lein and update depencies (backend). 2017-01-05 22:10:36 +01:00
Andrey Antukh
cda2737b02 Minor cosmetic changes on shapes events. 2016-12-30 18:39:20 +01:00
Andrey Antukh
25f634352d Move commonly used lenses to separated namespace. 2016-12-30 18:34:56 +01:00
Andrey Antukh
42e79b483f Improve color palette interaction. 2016-12-28 18:37:40 +01:00
Andrey Antukh
e6fa720ce1 Remove previously introduced hack for recursive layer-group component. 2016-12-28 15:34:27 +01:00
Andrey Antukh
447d484f7b Disable naming of render functions in defc and defcs macros.
This has caused some unexpected behavior with recursive
components.
2016-12-28 15:33:11 +01:00
Andrey Antukh
f82c534df4 Reimplement shape displacement using keyboard shortcuts. 2016-12-27 23:40:02 +01:00
Andrey Antukh
bbaf80bedf Remove hardcoded defaults on page element-options widget. 2016-12-27 23:39:35 +01:00
Andrey Antukh
43bb3a40b3 Cosmetic refactor of focuses on workspace base namespace. 2016-12-27 23:39:01 +01:00
Andrey Antukh
7d9280d3da Add page-metadata defaults to constants namespace. 2016-12-27 23:38:15 +01:00
Andrey Antukh
87e19875e3 Improve performance and many of unexpected conflicts on page save. 2016-12-25 21:38:56 +01:00
Andrey Antukh
cf55aeda63 Remove unused code from data/shapes. 2016-12-25 21:28:45 +01:00
Andrey Antukh
2412713f70 Minor changes on shapes. 2016-12-25 21:05:02 +01:00
Andrey Antukh
6801cc65af Reactivate again the layer position shortcuts. 2016-12-25 20:58:17 +01:00
Andrey Antukh
c0a81d05eb Refactor shapes and selection rendering in order to be aware of rotation. 2016-12-25 20:50:04 +01:00
Andrey Antukh
30df813edf Add many fixes to matrix operations. 2016-12-25 20:49:34 +01:00
Andrey Antukh
0e91ae1ff7 Add many improvements to geom ns. 2016-12-25 20:46:32 +01:00
Andrey Antukh
cd6630c99c Remove println. 2016-12-25 20:43:52 +01:00
Andrey Antukh
100446cab3 Update dependencies. 2016-12-25 20:43:18 +01:00
Jesús Espino
23baa32879 Improved hack for defcs macro 2016-12-23 12:50:36 +01:00
Jesús Espino
bdf476e297 Temporary hack on groups of groups 2016-12-23 12:40:20 +01:00
Jesús Espino
fed684c058 Moving editable select styles to the scss files 2016-12-23 11:50:05 +01:00
Jesús Espino
b733d9e06f Add more robust precision function 2016-12-23 11:05:32 +01:00
Jesús Espino
45f48b073c Add proportion lock to icons 2016-12-22 19:50:28 +01:00
Jesús Espino
2f968fe50b Fix precision problem on circle 2016-12-22 19:50:14 +01:00
Jesús Espino
23dab28d7b Adding precision to options in the sidebar 2016-12-22 19:00:30 +01:00
Jesús Espino
19a98e6586 Preselect first icons collection with content on the workspace 2016-12-22 17:22:02 +01:00
Jesús Espino
c6d60b5fbf Remove storage colors and select first collection with content on workspace 2016-12-22 16:45:42 +01:00
Jesús Espino
95604f84ab Removing storage from colors dashboard 2016-12-22 15:07:03 +01:00
Jesús Espino
6a38675602 Maintain correct order on group duplication 2016-12-22 14:59:31 +01:00
Jesús Espino
a3fdb22342 Generation layers name based on current existing layers 2016-12-22 14:55:32 +01:00
Jesús Espino
a3586cb3aa Fixed click on project after project creation 2016-12-22 11:41:04 +01:00
Jesús Espino
0424315849 Fix first page creation at project creation 2016-12-22 11:10:51 +01:00
Jesús Espino
6783463ae7 Fixed radio buttons on create project 2016-12-22 11:05:04 +01:00
Jesús Espino
1181c01f55 Adding tooltip to all shapes creation 2016-12-22 10:29:45 +01:00
Juan de la Cruz
0f21d11fd3 add tooltips to layer icons 2016-12-22 10:16:29 +01:00
Jesús Espino
7264cd5437 Adding initial tooltip support 2016-12-22 10:11:42 +01:00
Juan de la Cruz
177fa4621c add labels to lightbox 2016-12-22 09:32:13 +01:00
Jesús Espino
960f2e7e7a Page ordering 2016-12-22 09:23:29 +01:00
Juan de la Cruz
2e04fe60f4 fix lightbox slow animation 2016-12-22 09:04:12 +01:00
Jesús Espino
6991421782 Removing transition on layers drag and drop 2016-12-21 19:30:07 +01:00
Jesús Espino
54385ecfdb Now working color palette pagination 2016-12-21 12:12:36 +01:00
Jesús Espino
cbbfab438e Refactoring scrolling viewport 2016-12-21 11:42:13 +01:00
Jesús Espino
1aacfc22ac Scroll to center on page change 2016-12-21 08:38:57 +01:00
Andrey Antukh
fdf0e6cd7d Merge branch 'resize-refactor' 2016-12-20 21:36:22 +01:00
Andrey Antukh
af57d8b449 Refactor shape resize and displacement. 2016-12-20 21:33:29 +01:00
Andrey Antukh
23dbc77da9 Fix copyright headers on some files. 2016-12-20 21:26:59 +01:00
Andrey Antukh
a28a6978fe Add matrix type to transit handlers. 2016-12-20 17:04:38 +01:00
Andrey Antukh
462f37e601 Improve point transformation helpers. 2016-12-20 17:04:18 +01:00
Andrey Antukh
aed1b8cd26 Improve matrix transformation helpers. 2016-12-20 17:03:40 +01:00
Andrey Antukh
5acb699955 Remove and reorganize imports on login ns. 2016-12-20 16:58:53 +01:00
Andrey Antukh
f7f05c4dbb Remove unused code from geom ns. 2016-12-20 16:58:28 +01:00
Andrey Antukh
747c07af00 Add geom helpers for apply a transformation matrix to shape. 2016-12-20 16:57:35 +01:00
Andrey Antukh
8ca15771d5 Make geom/size as shape transformation instead simple calculation. 2016-12-20 16:57:01 +01:00
Andrey Antukh
0a5f4e310c Prevent page persistence when shape is resizing. 2016-12-20 16:55:51 +01:00
Andrey Antukh
b5248bf520 Remove whitespaces on constants. 2016-12-20 16:54:53 +01:00
Andrey Antukh
79b551af3e Set cache-analysis to false. 2016-12-20 12:37:53 +01:00
Jesús Espino
9edb2a4ee0 Allow edition on collections lists, and adding images counter (except for Storage) 2016-12-20 11:23:01 +01:00
Jesús Espino
8dd8258565 Editable color value directly 2016-12-19 21:47:29 +01:00
Jesús Espino
e88495f1a5 Update selection to take care of handlers, lines and zoom 2016-12-19 18:22:11 +01:00
Jesús Espino
60a596c585 Element options open by default (on page settings) 2016-12-19 18:05:49 +01:00
Jesús Espino
3279c95a08 Select images colors and icons with one click 2016-12-19 17:58:02 +01:00
Jesús Espino
a9285accad More clear drop area on layers drag and drop 2016-12-19 17:34:27 +01:00
Jesús Espino
75eb7c9c66 Improved the wheel zoom 2016-12-19 17:26:37 +01:00
Juan de la Cruz
99fb0ad29b fix bezier final dot bug 2016-12-19 14:14:51 +01:00
Juan de la Cruz
1e75c67c7e fiz toggle-content icon 2016-12-19 14:14:01 +01:00
Jesús Espino
0c395a4371 Some color picker improvements 2016-12-19 14:12:59 +01:00
Juan de la Cruz
e8fec61afc add bezier dot styles 2016-12-19 14:09:36 +01:00
Juan de la Cruz
1142885656 add user dropdown correct options 2016-12-19 12:11:00 +01:00
Jesús Espino
7860be4a50 Moving coordinates to the viewport 2016-12-19 11:56:09 +01:00
Juan de la Cruz
099b31c1a7 hide color theme options 2016-12-19 11:19:44 +01:00
Juan de la Cruz
9eb697467f add project name input class 2016-12-19 11:06:38 +01:00
Juan de la Cruz
4992631e16 add color paletter border style 2016-12-19 10:57:30 +01:00
Juan de la Cruz
3ba4ec97dd fix layer selection and change name 2016-12-19 09:25:25 +01:00
Andrey Antukh
549d1a01c9 Fix app reloading (broken in previous commit). 2016-12-19 09:10:36 +01:00
Andrey Antukh
98b1fd6afd Use subject instead of bus on workers ns. 2016-12-19 08:35:48 +01:00
Andrey Antukh
1f7b3b37ab Fix syntax error on ui (introduced in previous commit). 2016-12-19 08:35:31 +01:00
Andrey Antukh
768004aed8 Simplify initialization of main app. 2016-12-19 08:33:19 +01:00
Andrey Antukh
74bcdd2507 Delay grid alignment index initialization until user stop typing. 2016-12-18 21:51:51 +01:00
Andrey Antukh
32041b9596 Fix some deprecation warnings. 2016-12-18 21:27:48 +01:00
Andrey Antukh
187612ed2d Update dependencies. 2016-12-18 21:22:49 +01:00
Andrey Antukh
569aec25ba Use deftype instead of defrecord in page events. 2016-12-18 19:46:56 +01:00
Andrey Antukh
63576ae4f1 Add TODO note on page-persisted event. 2016-12-18 19:43:01 +01:00
Andrey Antukh
c40b4be975 Minor fix on manage.sh. 2016-12-18 19:14:53 +01:00
Andrey Antukh
845726827e Remove unused println's. 2016-12-18 19:14:53 +01:00
elhombretecla
aac3b05a9b add rotate icon 2016-12-02 09:04:48 +01:00
Andrey Antukh
a3a43d4b8a Properly reinitialize alignment index when page metadata is updated. 2016-12-01 19:14:50 +01:00
Andrey Antukh
0c3d1a5ded Set proper default page background. 2016-11-29 17:37:42 +01:00
Andrey Antukh
af8bc9d3b8 Remove workspace settings lightbox. 2016-11-29 17:33:58 +01:00
Andrey Antukh
e8a4bbea6c Add implementation for grid settings and page background.
On element options sidebar.
2016-11-29 17:26:29 +01:00
Andrey Antukh
438f8f5f82 Add page metadata changes to the undo stack. 2016-11-29 17:26:29 +01:00
Juan de la Cruz
bb28ab78d6 add color palette slider scss 2016-11-29 15:01:20 +01:00
Andrey Antukh
3f1ae0feaa Add implementation for page size inputs on element options sidebar. 2016-11-28 23:49:25 +01:00
Andrey Antukh
91fb68f906 Refactor page changes watching mechanism. 2016-11-28 23:47:50 +01:00
Andrey Antukh
3accc4b66e Add the ability to start development environment in host machine. 2016-11-28 18:29:48 +01:00
Andrey Antukh
46db079334 Update bide to 1.0.6 2016-11-28 18:29:38 +01:00
Andrey Antukh
c412384b4d Add potok dependency. 2016-11-27 21:54:09 +01:00
Andrey Antukh
40b48318ff Replace builtin rstore impl with potok. 2016-11-27 21:53:12 +01:00
Andrey Antukh
6f8f115422 Properly redirect to login when unauthorized response is received. 2016-11-27 13:23:23 +01:00
Andrey Antukh
c28e889bd5 Update dependencies. 2016-11-27 13:16:19 +01:00
elhombretecla
1413c01d03 add grid settings sidebar options 2016-11-27 11:39:45 +01:00
elhombretecla
17f567a4da add page settings options module 2016-11-27 11:12:53 +01:00
Andrey Antukh
b319ee056d Adapt uxbox backend code to stroage module changes. 2016-11-22 21:42:44 +01:00
Andrey Antukh
6a3d8be32a Remove tempfile namespace. 2016-11-22 21:42:32 +01:00
Andrey Antukh
5fc7dd95f7 Fix naming consistency on storages module. 2016-11-22 21:41:12 +01:00
Andrey Antukh
aa4c39395f Set proper default config. 2016-11-22 18:36:23 +01:00
Andrey Antukh
c6b1263d33 Assign proper type to fetched image collections. 2016-11-22 18:04:08 +01:00
Andrey Antukh
417f90e677 Minor fix of syntax error introduced in previous commit. 2016-11-22 17:50:08 +01:00
Andrey Antukh
77bdd47c86 Fix images sql functions for properly return builtin collections. 2016-11-22 17:09:55 +01:00
Andrey Antukh
ac14c549ef Remove commented code from collimp ns. 2016-11-22 17:05:07 +01:00
Andrey Antukh
14a1746ba5 Add builtin lein script. 2016-11-22 16:53:10 +01:00
Andrey Antukh
dc83e23ed1 Disable analysis cache and enable advanced optimizations on dist-main. 2016-11-22 00:06:40 +01:00
Andrey Antukh
5a167ae031 Update scripts. 2016-11-21 23:44:57 +01:00
Andrey Antukh
730bbba2b9 Disable :advanced compilation in dist-main script. 2016-11-21 23:32:29 +01:00
Andrey Antukh
567075f9c5 Add import-generic-collections.sh script. 2016-11-21 19:05:55 +01:00
Andrey Antukh
b0a4cdcc17 Mark as :builtin icon collections that has :user as uuid/zero. 2016-11-21 18:56:04 +01:00
Andrey Antukh
c018a39f7b Don't import already imported material. 2016-11-21 18:55:44 +01:00
Andrey Antukh
4aa888f72d Fix icons sql functions. 2016-11-21 18:55:23 +01:00
Andrey Antukh
e1ff8aa11e Add missing :id column handling on collimp sql functions. 2016-11-21 18:54:49 +01:00
Andrey Antukh
b086d12760 Add rsp? predicate. 2016-11-21 18:14:10 +01:00
Andrey Antukh
5477909d4d Implement IDeref for Rsp type. 2016-11-21 18:13:59 +01:00
Andrey Antukh
c0aa4a042f Add support for icon collection importation. 2016-11-21 18:13:39 +01:00
Andrey Antukh
8ec32ad130 Set lower defaults resource requiremens for dev profile. 2016-11-21 18:12:48 +01:00
Andrey Antukh
7011293352 Add missing license file (lost in repository migration). 2016-11-21 08:48:07 +01:00
Andrey Antukh
da39d52348 Add missing exclude for resolve symbol on storages.util ns. 2016-11-20 23:26:21 +01:00
Andrey Antukh
cf1188ad47 Add partial impl for icons collections importer (wip). 2016-11-20 23:25:48 +01:00
Andrey Antukh
6d0737e4a3 Remove unused code from collimp ns. 2016-11-20 23:07:57 +01:00
Andrey Antukh
ae4e7e6139 Remove unused import. 2016-11-20 23:07:42 +01:00
Andrey Antukh
d9c12dcc9a Update .gitignore file. 2016-11-20 21:23:07 +01:00
Andrey Antukh
1502d9ed23 Add missing resolve method to stroages.util ns. 2016-11-20 21:22:19 +01:00
Andrey Antukh
5165ac6e52 Add valid? predicate that prints debug info to stdout.
When the predicate fails. Very usefull when used with preconditions
that by default does not print nothing.
2016-11-20 21:22:13 +01:00
Andrey Antukh
4eab2f81cf Run importation in a transaction.
Among other cosmetic fixes.
2016-11-20 21:20:41 +01:00
Andrey Antukh
e73339d2f9 Add faster implementation for retrieve image size. 2016-11-20 21:19:53 +01:00
Andrey Antukh
0192298d09 Remove unused type attr from import entry spec. 2016-11-20 21:19:21 +01:00
Andrey Antukh
661e2d821e Adapt docker start scripts to new directory structure. 2016-11-20 20:40:30 +01:00
Andrey Antukh
249db6bd4b Update .gitignore file. 2016-11-20 20:11:49 +01:00
Andrey Antukh
25b47e5b92 Move nvmrc file into frontend subdirectory. 2016-11-20 20:10:17 +01:00
Andrey Antukh
94aee02fb9 Import docker related files. 2016-11-20 20:08:24 +01:00
Andrey Antukh
de57630c14 Import backend code inside the repository. 2016-11-20 20:04:52 +01:00
Andrey Antukh
e21798f1ed Move all files under frontend directory. 2016-11-20 20:03:17 +01:00
Andrey Antukh
92b45b2d05 Add page menu to element options widget. 2016-11-18 23:29:04 +01:00
Andrey Antukh
b7a21a1caf Use cursor as pointer on elements with interactions on view app. 2016-11-18 21:22:47 +01:00
Andrey Antukh
770007742f Minor cosmetic changes on icons sidebar widget component. 2016-11-18 21:19:24 +01:00
Andrey Antukh
3e1a7fca69 Load storage collection icons on sidebar icons component is mounted. 2016-11-18 21:19:04 +01:00
Andrey Antukh
98f55d53ff Remove unused code from icons sidebar ns. 2016-11-18 21:18:53 +01:00
Andrey Antukh
3a5cd39ba4 Add missing field initialization on pageform. 2016-11-18 21:11:10 +01:00
Andrey Antukh
732a42924b Fix shapes drawing when zoom is activated. 2016-11-18 20:47:51 +01:00
Andrey Antukh
f0b6b9363c Fix selrect when zoom is activated. 2016-11-18 20:23:57 +01:00
Andrey Antukh
5fbc2ff6bb Fix rendering order issue on group. 2016-11-18 20:23:57 +01:00
elhombretecla
87756246a7 add new copy and move icons 2016-11-15 09:51:53 +01:00
elhombretecla
d1a624cfd5 add new element-name styles 2016-11-15 09:39:27 +01:00
elhombretecla
7035ec719a fix input-select dashboard 2016-11-15 09:26:17 +01:00
Andrey Antukh
d1210304af Add backward compatibility for read previous point format on transit. 2016-11-13 17:26:17 +01:00
Andrey Antukh
c1591d85cb Improve point transit handlers. 2016-11-13 17:21:02 +01:00
Andrey Antukh
60fc30b709 Properly handle the route params in navigate event. 2016-11-13 17:20:56 +01:00
Andrey Antukh
c13ec03fe1 Improve efficiency of goto event. 2016-11-13 17:18:48 +01:00
Andrey Antukh
ebdf8d7935 Clarify a TODO comment on pages events. 2016-11-13 17:18:23 +01:00
Andrey Antukh
a3f24eda83 Fix history loading. 2016-11-13 17:18:10 +01:00
Andrey Antukh
fce36cfdd9 Introduce cljs.spec and refactor all forms. 2016-11-13 15:42:44 +01:00
Andrey Antukh
29e6ebdb83 Remove useless namespacing for persist auth data in storage.
The storage is already namespaced.
2016-11-13 12:56:13 +01:00
Andrey Antukh
6273b05c51 Change the default ordering on projects dashboard. 2016-11-12 12:03:25 +01:00
Andrey Antukh
96d66b275c Move files ns out of dom ns. 2016-11-12 12:03:12 +01:00
Andrey Antukh
c38079e03b Improved performance for obtaining the image size. 2016-11-12 11:49:43 +01:00
Andrey Antukh
dcb35084a1 Add rename support for icons and images. 2016-11-12 11:38:34 +01:00
Andrey Antukh
e80ecd7175 Fix initial values for filter and ordering on images page.
That causes unexpected exceptions on first views of page.
2016-11-11 09:43:08 +01:00
Andrey Antukh
4359321bed Fix wrong initial filtering and ordering values in icons page. 2016-11-10 23:56:59 +01:00
Andrey Antukh
dde3991702 Update dependencies. 2016-11-10 23:42:15 +01:00
Andrey Antukh
c6626fe4c8 Replace all usage of promesa with beicon.
And remove promesa dependency.
2016-11-10 23:39:41 +01:00
Andrey Antukh
0fdb11e153 Update node dependencies. 2016-11-10 23:39:41 +01:00
elhombretecla
e7e7738567 fix library th 2016-11-10 20:43:53 +01:00
Andrey Antukh
977e233d6d Add project first page preview and name edition on dashboard. 2016-11-10 18:42:29 +01:00
Andrey Antukh
477d31ce53 Add the ability to rename an image (on images dashboard page). 2016-11-10 18:41:20 +01:00
Andrey Antukh
351db464a5 Other minor fixes on icons and images pages.
Related to unexpected behavior of edition form.
2016-11-10 18:39:13 +01:00
Andrey Antukh
396f16fe21 Minor cosmetic changes on colors dashboard page ns. 2016-11-10 18:38:28 +01:00
Andrey Antukh
de387d00b1 Remove default proportion lock from the new shapes. 2016-11-10 18:35:42 +01:00
Andrey Antukh
d40ed45a70 Add additional helper function for render page as svg. 2016-11-10 18:35:23 +01:00
Andrey Antukh
b6e04b8c39 Add missing attributes when page is exported as svg. 2016-11-10 18:34:20 +01:00
Andrey Antukh
152b20e7b4 Properly unpack embedded page fields on fetching projects. 2016-11-10 18:32:56 +01:00
Andrey Antukh
bf03a87c17 Improve page helpers functions naming. 2016-11-10 18:32:56 +01:00
Andrey Antukh
870c2d9fb1 Fix colorpalette rendering. 2016-11-09 17:20:37 +01:00
Andrey Antukh
6a0a71de5a Fix animations for icons and images. 2016-11-09 12:37:52 +01:00
Andrey Antukh
71eb45ce2c Draw interaction indicator only on shape with interactions. 2016-11-09 12:37:20 +01:00
Andrey Antukh
cab9e4acfc Fix view app viewer rendering. 2016-11-09 11:24:57 +01:00
Andrey Antukh
9fb13ba73d Add support for preconditions to defc and defcs macros. 2016-11-09 11:24:26 +01:00
Andrey Antukh
67ae149c36 Remove wrong precondition on grid component (projects page). 2016-11-09 11:24:06 +01:00
Andrey Antukh
7acfcbe09c Fix wrong behavior of page packing and unpacking.
Bug introduced in previous state attribute naming refactor.
2016-11-09 10:22:46 +01:00
Andrey Antukh
c8683ea0ba Show properly conflict errors on colors page. 2016-11-08 20:41:25 +01:00
Andrey Antukh
5fade8bb93 Fix unexpected exception on persisting first time color collections. 2016-11-08 20:40:35 +01:00
Andrey Antukh
cba8e6341d Fix project creation. 2016-11-08 17:41:33 +01:00
Andrey Antukh
eae616b823 Port copy & move tooltips to icons page. 2016-11-08 17:15:56 +01:00
Andrey Antukh
6b85b459d7 Remove duplicate entry on view app state. 2016-11-07 23:01:55 +01:00
Andrey Antukh
8f8bff7b76 Properly format created-at date on icons and images. 2016-11-07 23:01:31 +01:00
Andrey Antukh
e4c020f78f Properly implement copy and move operations on images page. 2016-11-07 22:54:53 +01:00
Andrey Antukh
ec9495a2fc Make the copy and move tooltip generic for colors page. 2016-11-07 22:13:54 +01:00
Andrey Antukh
151da534c2 Add delete confirmation to colors collections. 2016-11-07 22:13:12 +01:00
Andrey Antukh
aec2166759 Merge branch 'ui-improvements' 2016-11-07 20:36:01 +01:00
elhombretecla
c8ebc7ea87 add input measures 2016-11-07 20:35:30 +01:00
elhombretecla
9d196e7c9f add project placeholder img 2016-11-07 20:35:29 +01:00
elhombretecla
fed7d913c5 add rename icon 2016-11-07 20:35:29 +01:00
elhombretecla
4bbd8f809c add new dashboard elements info 2016-11-07 20:35:29 +01:00
elhombretecla
a1a7aa044a add new actions icon 2016-11-07 20:35:29 +01:00
elhombretecla
bdbfa36112 fix library tabs 2016-11-07 20:35:21 +01:00
Andrey Antukh
2a30b2737c Many other naming changes on state keys. 2016-11-06 19:03:58 +01:00
Andrey Antukh
7b7fd7680f State keys naming refactor. 2016-11-06 19:01:35 +01:00
Andrey Antukh
7abfaf639e Many improvements to colors page. 2016-11-06 18:54:30 +01:00
Andrey Antukh
dbaeb9d5f4 More work on color collections page. 2016-11-06 18:04:56 +01:00
Andrey Antukh
d6fd75f7b9 Add builtin color collections. 2016-11-06 18:04:37 +01:00
Andrey Antukh
3cba2cda12 Fix uuid regular experession. 2016-11-06 18:03:50 +01:00
Andrey Antukh
89779bf658 Remove unused functions. 2016-11-06 18:03:27 +01:00
Andrey Antukh
7cacbd4659 Move shape related functions out of state sub namespace. 2016-11-06 18:02:19 +01:00
Andrey Antukh
1e5777f4b6 Add kvstore repo ns. 2016-11-05 19:51:27 +01:00
Andrey Antukh
6379315e4b Refactor color collections page. 2016-11-05 19:50:58 +01:00
Andrey Antukh
3002d296c8 Add get-inner-text dom interop helper. 2016-10-26 23:39:30 +02:00
Andrey Antukh
f60d0bc81a Remove useless destructuring binding on content component (images page). 2016-10-26 23:39:08 +02:00
Andrey Antukh
4c0f344c72 Improve behavior of nav tabs on images page. 2016-10-26 23:38:19 +02:00
Andrey Antukh
f9366c3146 Use html5 accept attribute for filter image types on upload forms. 2016-10-26 00:39:39 +02:00
Andrey Antukh
cc53ba68b5 Sort colors in the colors dashboard page by color. 2016-10-26 00:39:16 +02:00
Andrey Antukh
df2ac51698 Fix naming consistency on geom ns. 2016-10-26 00:38:49 +02:00
Andrey Antukh
44766f817c Remove shape-type struct validator. 2016-10-26 00:38:12 +02:00
Andrey Antukh
4fff0e9c6c Remove unused hierarchy from geom ns. 2016-10-26 00:37:38 +02:00
Andrey Antukh
69e5ad7a8a Remove builtin library. 2016-10-24 23:44:55 +02:00
Andrey Antukh
56bdddc865 Comment some code related to elements. 2016-10-24 23:44:10 +02:00
Andrey Antukh
6ebeaf521a Improve proportions persistence handling on shapes. 2016-10-24 23:17:55 +02:00
Andrey Antukh
0a28efb838 Add provisional spinner for image uploading in workspace. 2016-10-24 23:07:45 +02:00
Andrey Antukh
91bb1ad77f Select recently uploaded image to draw if it's uploaded in workspace. 2016-10-24 23:03:30 +02:00
Andrey Antukh
97b30b0b68 Add support for export pages with images. 2016-10-24 22:54:45 +02:00
Andrey Antukh
459705e26a Add the ability to import images to workspace. 2016-10-24 22:20:28 +02:00
Andrey Antukh
7df42f3bcb Fix many issues of image rendering on workspace. 2016-10-24 22:20:08 +02:00
Andrey Antukh
658636463e Complete http stream after a response es emitted. 2016-10-24 22:18:43 +02:00
Andrey Antukh
ea9a096fa9 Add support for images on layers sidebar component. 2016-10-24 22:18:28 +02:00
Andrey Antukh
d882c2dfdb Respect proportion of icon or image when is added/imported to workspace. 2016-10-24 22:17:27 +02:00
Andrey Antukh
997876db32 Addapt images create event to support on-complete callback. 2016-10-24 22:16:26 +02:00
Andrey Antukh
f17642f057 Add uploading spinner for images page in dashboard. 2016-10-24 22:15:56 +02:00
Andrey Antukh
8e27e19e41 Add image shape impl for geom functions. 2016-10-24 22:15:38 +02:00
Andrey Antukh
13c20acaa6 Remove unused template code from elements. 2016-10-24 22:15:12 +02:00
Andrey Antukh
68fe5eff36 Use new dom helpers instead of js interop for svg icon parsing. 2016-10-24 22:14:30 +02:00
Andrey Antukh
34e84fbd01 Remove static mixin from lightbox component.
This facilitates code reloading and rerendering
on development mode.
2016-10-24 22:13:59 +02:00
Andrey Antukh
168c5b490c Add more dom creation and manipulation functions to util.dom ns. 2016-10-24 22:13:21 +02:00
Andrey Antukh
71c6adab58 Add mirror-map macro (commented inder uxbox.util.data ns). 2016-10-24 22:12:35 +02:00
Andrey Antukh
075c508d63 Remove unused code from workspace header. 2016-10-24 22:12:12 +02:00
Andrey Antukh
bd38ea590a Add missing entries in main externs file. 2016-10-24 22:10:05 +02:00
Andrey Antukh
a9a1048462 Remove whitespace. 2016-10-23 17:23:17 +02:00
Andrey Antukh
81c75d953b Add copy and move tooltips to images page. 2016-10-23 17:23:17 +02:00
Andrey Antukh
ae51454fc4 Fetch images for storage collection. 2016-10-23 17:23:17 +02:00
Andrey Antukh
191c4943bd Add copy and move tooltips to icons page. 2016-10-23 17:23:17 +02:00
Andrey Antukh
c2e5e9d92c Merge icon and icon-raw shapes. 2016-10-23 17:23:17 +02:00
Andrey Antukh
41f9e6fe77 Implement grid options copy tooltip. 2016-10-23 17:23:17 +02:00
Andrey Antukh
1fa3e55e89 Disable elements from the dashbaord header. 2016-10-23 17:23:17 +02:00
Andrey Antukh
e4ba3ac66b Adapt colors nav tabs to be consistent with the rest of the pages. 2016-10-23 17:23:17 +02:00
Andrey Antukh
7642dab826 Disable frontend managed library by default. 2016-10-23 17:23:17 +02:00
Andrey Antukh
2a2e87cb1c Add missing impl for icon-raw for get-vertex-point geom func. 2016-10-23 17:23:17 +02:00
Andrey Antukh
6e06779cc3 Add copy-icon event. 2016-10-23 17:23:17 +02:00
Andrey Antukh
2764ea0d96 Minor fix on colors page initialization event. 2016-10-23 17:23:17 +02:00
Andrey Antukh
02c7793050 Add support for icon-raw to layers sidebar. 2016-10-23 17:23:17 +02:00
Andrey Antukh
c9221d6b36 Adapt icons sidebar to the new icons state layout. 2016-10-23 17:23:17 +02:00
Andrey Antukh
8df6ee502a Add support for raw-icon to drawarea. 2016-10-23 17:23:17 +02:00
Andrey Antukh
df189dc39e Remove unused whitespaces. 2016-10-23 17:23:17 +02:00
Andrey Antukh
669442ef02 Minor ns entries reordering on canvas namespace. 2016-10-23 17:23:17 +02:00
Andrey Antukh
050e291e0f Add icon-raw shape related components. 2016-10-23 17:23:17 +02:00
Andrey Antukh
27f1884a47 Add icon-raw shape type to group render function. 2016-10-23 17:23:17 +02:00
Andrey Antukh
12aee6acb6 Fix wrong arguments function call on icons menu initialization. 2016-10-23 17:23:17 +02:00
Andrey Antukh
94e3842267 Use server side num icons value on icons dashboard page. 2016-10-23 17:23:17 +02:00
Andrey Antukh
3df32e903f Add :icon-raw to geom impls. 2016-10-23 17:23:17 +02:00
Andrey Antukh
d6a2fee09a Simplify select-for-drawing event implementation. 2016-10-23 17:23:17 +02:00
Andrey Antukh
1530464432 Simplify projects initialize event. 2016-10-23 17:23:17 +02:00
Andrey Antukh
0b6450e78a Improve svg parsing function.
Used on icons uploading process.
2016-10-23 17:23:17 +02:00
Andrey Antukh
3cf4a75b93 Fix wrong state tranformation on delete icon collection event. 2016-10-23 17:23:17 +02:00
Andrey Antukh
7690a088ab Add better naming to newly created icon collections. 2016-10-23 17:23:17 +02:00
Andrey Antukh
19ebf65c68 Fix wrong state transformation on icons events. 2016-10-23 17:23:17 +02:00
Andrey Antukh
a8dd40900c Usability fixes on icons and images events. 2016-10-23 17:23:17 +02:00
Andrey Antukh
217e6bd70b Update dependencies. 2016-10-23 17:23:17 +02:00
Andrey Antukh
204a3fe68a Improve sorting of nav items on icons page. 2016-10-23 17:23:17 +02:00
Andrey Antukh
c8846f7cbf Major icons page refactor.
With the ability to upload icons by the user.
2016-10-23 17:23:17 +02:00
Andrey Antukh
2143bb6e04 Major images page refactor. 2016-10-23 17:23:17 +02:00
Andrey Antukh
5b995f78aa Cosmetic changes on rect shapes components. 2016-10-23 17:23:17 +02:00
Andrey Antukh
a0e261403b Add some helpers for read files as text. 2016-10-23 17:23:17 +02:00
Andrey Antukh
5db6825612 Add styles for image selection lightbox. 2016-10-23 17:23:17 +02:00
Andrey Antukh
7ad0b1f555 Send mimetype on image upload. 2016-10-23 17:23:17 +02:00
Andrey Antukh
492e57d845 Only allow upload a limited set of image types. 2016-10-23 17:23:17 +02:00
Andrey Antukh
a0127130a6 Remove some println's in http impl. 2016-10-23 17:23:17 +02:00
Andrey Antukh
c3702f6bbe Add missing predicates from httpurr. 2016-10-23 17:23:17 +02:00
Andrey Antukh
7c92ad390a Add impl for some geom functions for image shapes. 2016-10-23 17:23:17 +02:00
Andrey Antukh
eeb141cb8e Send width and height fields on image uploading repo method. 2016-10-23 17:23:17 +02:00
Andrey Antukh
2b00395253 Refactor and adapt create-images event to backend changes. 2016-10-23 17:23:17 +02:00
Andrey Antukh
ba8b20f8c0 Remove println. 2016-10-23 17:23:17 +02:00
Andrey Antukh
bd870e7251 Add utils for work with dom file like objects. 2016-10-23 17:23:17 +02:00
Andrey Antukh
9046db4cc6 Convert icons ui-components to use new component macros. 2016-10-23 17:23:17 +02:00
Andrey Antukh
ab4fb8030d Sort image collections by name instead by id. 2016-10-23 17:23:17 +02:00
Andrey Antukh
61db7aeab9 Replace httpurr with own reactive streams based http client. 2016-10-23 17:23:17 +02:00
Andrey Antukh
f05d6924a3 Improve page data structure and adapt it to the backend representation. 2016-10-23 17:23:17 +02:00
elhombretecla
4fde0469c0 add move item tooltip 2016-10-20 12:37:43 +02:00
elhombretecla
b65eee57e7 fix multiselect menu alignment 2016-10-20 11:58:35 +02:00
Andrey Antukh
720178c03f Fix image uploading broken in previous commits. 2016-10-09 21:06:20 +02:00
Andrey Antukh
841e178c15 Refactor image storage layout. 2016-10-09 18:03:01 +02:00
Andrey Antukh
5762ee0bf3 Fix image initialization event. 2016-10-09 18:02:36 +02:00
Andrey Antukh
934fcba179 Setup builtin images and collections in the state. 2016-10-09 17:59:39 +02:00
Andrey Antukh
15695c652d Change default datastructures for builtin images. 2016-10-09 17:59:39 +02:00
Andrey Antukh
b1ce61c6bb Update delete image event acording to new image storage layout. 2016-10-09 17:59:38 +02:00
Andrey Antukh
e017975162 Store images indexed in the state. 2016-10-09 17:59:38 +02:00
Andrey Antukh
81c9794657 Simplify images dashboard initialization event impl. 2016-10-09 17:59:38 +02:00
Andrey Antukh
9c5ec0ec9c Declare an other function on images events ns. 2016-10-09 17:59:38 +02:00
elhombretecla
626ed4893c add action mark 2016-10-04 09:38:00 +02:00
elhombretecla
61c0632fdb add interaction mark 2016-10-03 14:44:04 +02:00
elhombretecla
d2af74a07e fix zoom icon 2016-10-03 08:49:14 +02:00
elhombretecla
6bb9e2ad60 fix cursor on selection 2016-10-02 18:01:58 +02:00
elhombretecla
b16d12f67c add nodes style and fix cards size 2016-10-02 17:50:30 +02:00
Andrey Antukh
530acfe571 Remove already implemented in bide impl for IPathRepr protocol. 2016-09-30 23:38:42 +02:00
Andrey Antukh
42e87588b6 Elide asserts on production builds. 2016-09-30 23:38:31 +02:00
Andrey Antukh
ed64ddaea2 Update dependencies. 2016-09-30 23:38:21 +02:00
Andrey Antukh
f352ca050d Fix tests. 2016-09-30 15:41:23 +02:00
Andrey Antukh
96b1baf6cf Remove unused code. 2016-09-30 15:41:09 +02:00
Andrey Antukh
707f2b0d87 Fix color collections loading on the colorpalette (on workspace).
With additional cosmetic improvements on the namespace.
2016-09-30 12:21:26 +02:00
Andrey Antukh
1f91d7d390 Implement groups shape collapsing persistence.
With additional cosmetic improvemens.
2016-09-30 11:35:57 +02:00
Andrey Antukh
c617fba52b Add collapsing group shape events.
And reorganize a little bit the shapes events ns.
2016-09-30 11:34:57 +02:00
Andrey Antukh
819fa69ae2 Minor improvements on figwheel script. 2016-09-30 11:33:44 +02:00
Andrey Antukh
1f73638018 Revert "Remove update-radius-attrs event."
This reverts commit b1e9936aa6.
2016-09-29 07:38:28 +02:00
Andrey Antukh
c22ac8e302 Implement proportions lock button on rect measurements element options sidebar.
With an additional cosmetic refactor.
2016-09-29 07:21:27 +02:00
Andrey Antukh
863f0c906b Implement proportion lock button on circle measurements element options sidebar.
With an additional cosmetic refactor.
2016-09-29 07:16:29 +02:00
Andrey Antukh
bb27a39759 Use update-size event on circle measures element options sidebar. 2016-09-29 07:14:24 +02:00
Andrey Antukh
b1e9936aa6 Remove update-radius-attrs event.
Replaced by the now generic `update-size` event.
2016-09-29 07:13:38 +02:00
Andrey Antukh
95a72a3057 Cosmetic refactor on sidebar options ns. 2016-09-29 07:12:50 +02:00
Andrey Antukh
a11b618d24 Setup new shape proportions on the end of resize. 2016-09-29 07:12:07 +02:00
Andrey Antukh
5d0661c05f Handle proportion locking on mouse resize. 2016-09-29 07:11:05 +02:00
Andrey Antukh
a994dba165 Add proportions related events to shapes events ns. 2016-09-29 07:10:42 +02:00
Andrey Antukh
69f258b4f4 Add a precondition to update-size event. 2016-09-29 07:08:54 +02:00
Andrey Antukh
4f2e4a54aa Remove wrong docstring. 2016-09-29 07:06:58 +02:00
Andrey Antukh
e30871bd48 Make update-size event work with different types of shapes.
Thanks to the previously added `resize-dim` geom helpers.
2016-09-29 07:06:03 +02:00
Andrey Antukh
b3207b5746 Add resize-dim function to geom helpers.
A helper for resize by width and height with
initial support for rect, icon and circle.
2016-09-29 07:03:54 +02:00
Andrey Antukh
17cdaab2cc Add support for circle shape in size geom function.
With minor private function naming refactor.
2016-09-29 07:02:24 +02:00
Andrey Antukh
20cfae2a17 Setup shape proportions when it is added to the page. 2016-09-29 07:01:28 +02:00
Andrey Antukh
84ef0a75e1 Add setup-proportions function to geom helpers. 2016-09-29 07:00:50 +02:00
Andrey Antukh
c9f8b5b562 Fix proportion lock icon selected color. 2016-09-29 06:58:42 +02:00
Andrey Antukh
1a51aaf8cf Add missing default color on stroke options. 2016-09-27 10:51:02 +03:00
Andrey Antukh
57396cf368 Add missing :include-macros true on mixins ns import. 2016-09-27 09:30:43 +03:00
Andrey Antukh
692f066cf4 Minor refactor on projects page (ui components). 2016-09-27 09:30:03 +03:00
Andrey Antukh
40b71fda5e Add missing icons related events ns. 2016-09-27 09:28:37 +03:00
Andrey Antukh
5bf3e9a06e Improve state usage of colors page and its events. 2016-09-27 09:28:14 +03:00
Andrey Antukh
9af2e54a2c Improve state usage on images page and its events. 2016-09-27 09:27:15 +03:00
Andrey Antukh
a325e2e3ae Refactor icons page. 2016-09-27 09:26:25 +03:00
Andrey Antukh
10930fff2e Minor cosmetic improvements on header. 2016-09-27 09:25:40 +03:00
Andrey Antukh
d372e32986 Add missing translation strings related to icons page. 2016-09-27 09:24:11 +03:00
Andrey Antukh
a4e3118073 Fix builtin icons library data structure. 2016-09-27 09:23:40 +03:00
Andrey Antukh
66e70394d0 Cosmetic changes on library ns. 2016-09-27 09:23:16 +03:00
Andrey Antukh
d871dfceac Simplify projects events. 2016-09-27 09:22:42 +03:00
Andrey Antukh
6795a4d9a5 Add deletion confirmation to image collection and image item. 2016-09-25 15:20:10 +03:00
Andrey Antukh
77dec1d0e6 Remove println 2016-09-25 13:30:48 +03:00
Andrey Antukh
cf7a3f8e3b More refactor on images page. 2016-09-25 13:29:33 +03:00
Andrey Antukh
3ad91671a2 Major refactor of images page ns (in the same way as colors ns). 2016-09-25 10:21:04 +03:00
Andrey Antukh
9fa4d8f4d9 Minor ns reorg in colors page namespace. 2016-09-25 10:20:48 +03:00
Andrey Antukh
a45d91e663 Add new urls for images page. 2016-09-25 10:20:22 +03:00
Andrey Antukh
7ccb81e8fb Fix images builtin library data structure format. 2016-09-25 10:20:02 +03:00
Andrey Antukh
a3db60c2fe Add new events for images page. 2016-09-25 10:19:45 +03:00
Andrey Antukh
abead1aa9e Add missing fields on loaded image collections. 2016-09-25 10:19:06 +03:00
Andrey Antukh
6c43164ed1 Add new approach for images page initialization. 2016-09-25 10:18:30 +03:00
Andrey Antukh
5dfaf8e4be Minor changes on data loading on colors page. 2016-09-25 10:16:36 +03:00
Andrey Antukh
8d20cf9d3d Disable loader on colors. 2016-09-25 10:15:55 +03:00
Andrey Antukh
1acdef47d4 Cosmetic fixes on view ui ns. 2016-09-23 09:00:38 +03:00
Andrey Antukh
a7f8443843 Refactor dashboard colors page. 2016-09-23 09:00:07 +03:00
Andrey Antukh
9728098c96 Minor ns macro reorganization on ui.viewer ns. 2016-09-23 08:59:02 +03:00
Andrey Antukh
85275f9448 Add missing mount alias in mixins ns. 2016-09-23 08:58:19 +03:00
Andrey Antukh
d6f96c246d Add uuid-str? predicate. 2016-09-23 08:57:57 +03:00
Andrey Antukh
a95bd7f02a Improve color/hex? predicate. 2016-09-23 08:57:14 +03:00
Andrey Antukh
3584c1f59a Minor fix on layers sidebar event handling. 2016-09-23 08:56:06 +03:00
Andrey Antukh
366fdbd067 Minor ns macro reorganization on clipboard ns. 2016-09-23 08:55:23 +03:00
Andrey Antukh
f46ac8154c Fix compatibility with latest funcool/cuerdas version. 2016-09-23 08:54:50 +03:00
Andrey Antukh
ec04fccf0c Add support for nil and keywords as url parameters. 2016-09-23 08:53:15 +03:00
Andrey Antukh
632fccec5d Cosmetic improvement to app main component. 2016-09-23 08:52:43 +03:00
Andrey Antukh
130895f2c3 Remove state.colors namespace. 2016-09-23 08:52:02 +03:00
Andrey Antukh
0a2d774b5e Initialize some state keys as nil instead of empty hash-map. 2016-09-23 08:33:34 +03:00
Andrey Antukh
f1107432b7 Minor changes on the colors library. 2016-09-23 08:33:06 +03:00
Andrey Antukh
3fdee99aa8 Update dependencies. 2016-09-23 08:32:34 +03:00
Andrey Antukh
335c972c20 Add missing name persistence on layers sidebar. 2016-08-31 20:00:54 +03:00
Andrey Antukh
3ab79eb247 Use new components macros for sidebar ns. 2016-08-31 17:23:43 +03:00
Andrey Antukh
c293427752 Disable backspace shortcut. 2016-08-31 17:23:29 +03:00
Andrey Antukh
271a305cc0 Use new components macros on clipboard ns. 2016-08-31 17:23:06 +03:00
Andrey Antukh
20e89cb8a7 Open element options when shape is selected. 2016-08-31 17:22:52 +03:00
Andrey Antukh
6f92604d87 Add the ability to rename layer. 2016-08-31 17:22:27 +03:00
Andrey Antukh
063e82c4a9 Fix some issues in rendering groups in view app. 2016-08-30 19:19:20 +03:00
Andrey Antukh
dffab9a482 Disable resize handlers for group. 2016-08-30 19:19:09 +03:00
Andrey Antukh
cf5f7349a6 Improved text edition and drawing behavior. 2016-08-30 19:04:19 +03:00
Andrey Antukh
f9d80363be Add the ability to download the project zip with all pages in svg.
And improve the simple page svg download.
2016-08-30 18:29:57 +03:00
Andrey Antukh
224c410ec3 Add cljs abstraction for jszip library under uxbox.util.zip ns. 2016-08-30 18:29:34 +03:00
Andrey Antukh
8bcb373d07 Fix wrong impl of datetime/format function. 2016-08-30 18:28:46 +03:00
Andrey Antukh
ce8987f8b5 Add jszip into resources/deps.cljs. 2016-08-30 18:28:25 +03:00
Andrey Antukh
5f996f3cf6 Update cuerdas to 1.0.1. 2016-08-30 18:28:17 +03:00
Andrey Antukh
e4dc14da56 Add jszip javascript library. 2016-08-30 18:27:51 +03:00
Andrey Antukh
83e386e95a Improve page svg downloading code. 2016-08-28 22:55:11 +03:00
Andrey Antukh
fec40eae54 Add basic impl for current page svg download. 2016-08-28 14:53:37 +03:00
Andrey Antukh
78f010b47e Minor code reorg on util/mixins. 2016-08-28 14:53:25 +03:00
Andrey Antukh
333e4d0dc0 Minor naming fix on sitemap namespace. 2016-08-28 14:53:15 +03:00
Andrey Antukh
a6ec2cb38b Add namespace with helpers for work with html5 blobs. 2016-08-28 14:52:56 +03:00
Andrey Antukh
64d2b1e4dc Add basic functionality for render page to plain SVG. 2016-08-28 14:06:35 +03:00
Andrey Antukh
ea267ee981 Set clojure version to 1.9.0-alpha11. 2016-08-28 13:25:06 +03:00
Andrey Antukh
b88e4d89ce Update funcool/bide dependency that fixes a navigation bug in view app. 2016-08-28 12:48:17 +03:00
Andrey Antukh
6b5888a6c2 Code cleaning and debug message for path simplification on free drawing mode. 2016-08-28 10:33:30 +03:00
Andrey Antukh
53621ceeeb Code cleaning on drawarea. 2016-08-28 10:23:47 +03:00
Andrey Antukh
d6d38d207d Disable close path anchor on free drawing mode. 2016-08-28 10:22:19 +03:00
Andrey Antukh
9e41946a05 Fix bug introduced in previous commit.
That causes crash draw tools after first draw op.
2016-08-28 10:20:17 +03:00
Andrey Antukh
823a5a8120 Remove "deselect-all" debug message. 2016-08-28 10:16:42 +03:00
Andrey Antukh
c17f9da243 Deactivate path edition mode on mouse down out of area. 2016-08-28 10:13:44 +03:00
Andrey Antukh
ddae77db9d Add final anchor on path drawing in order to facilitate path closing. 2016-08-28 09:45:27 +03:00
Andrey Antukh
fd9503af1d Split specialized path drawing area from the generic one. 2016-08-27 17:47:28 +03:00
Andrey Antukh
6866ef67c8 Update bide depdenency that fixes some navegation bug. 2016-08-27 17:47:15 +03:00
Andrey Antukh
8910400444 Enable path drawing termination with enter and right-click.
It also posible do it with double click while shift key is pressed.
2016-08-27 17:31:00 +03:00
Andrey Antukh
92a0ffc1ae Remove unused mouse-events- and keyboard-events- streams. 2016-08-27 17:05:20 +03:00
Andrey Antukh
12a74070d2 Move rlocks under uxbox.util ns. 2016-08-27 16:43:21 +03:00
Andrey Antukh
38bead08e9 Replace bidi with funcool/bide.
And upgrade all dependencies.
2016-08-27 15:50:28 +03:00
elhombretecla
4069b183a7 add new download icons 2016-08-26 08:06:14 +02:00
elhombretecla
6d1661c773 add new export lightbox layout 2016-08-25 19:13:42 +02:00
Andrey Antukh
e95c1c76c0 Minor code cleaning on assisted path drawing code. 2016-08-24 17:10:46 +03:00
Andrey Antukh
547faa16a9 Enable controlled mode on path drawing.
Allowing draw more precise lines aligned each
15degree in the circle with previous having
the previous point as center.
2016-08-24 17:05:39 +03:00
Andrey Antukh
62eb224ac0 Fix group shape rerender when a transformation is applied to its children shapes. 2016-08-24 16:45:11 +03:00
Andrey Antukh
3d18f2d95e Remove line draw tool and line shape support.
The path support is superset of line and it
just replaces the line functionality.
2016-08-24 16:43:45 +03:00
Andrey Antukh
1693d172bd Enable path edition with grid alignment. 2016-08-23 19:11:40 +03:00
Andrey Antukh
df10586e3f Minor comments on selection ns. 2016-08-23 16:51:01 +03:00
Andrey Antukh
f2ebb75199 Use not resizable selection component for shape component.
When no edition mode is activated.
2016-08-23 16:30:03 +03:00
Andrey Antukh
0a547aed4c Remove unused code. 2016-08-23 16:27:37 +03:00
Andrey Antukh
7875a6b961 Add proper path edition behavior. 2016-08-23 16:26:44 +03:00
Andrey Antukh
c1ae4348cd Move selection ns under shapes. 2016-08-23 16:26:13 +03:00
Andrey Antukh
13e8679713 Return to previous path drawing method. 2016-08-22 17:33:12 +03:00
Andrey Antukh
ee9b99635b Add path selection component when path is in edition mode. 2016-08-22 17:33:12 +03:00
Andrey Antukh
7e7d2570d7 Minor refactor on selection components. 2016-08-22 17:33:12 +03:00
Andrey Antukh
5ca6282e68 Port shape movement to shapes common ns. 2016-08-22 17:33:11 +03:00
Andrey Antukh
99aa09eb86 Fix lense/ref naming on shapes related ns. 2016-08-22 17:33:11 +03:00
Andrey Antukh
a4f29d25e1 Add update-path-point function to geom ns. 2016-08-22 17:33:11 +03:00
Andrey Antukh
63f6de930d Use proper outer-rect calculation for path.
The same as prev comit. Don't treat path as rect.
2016-08-22 17:33:11 +03:00
Andrey Antukh
9a5fce0a20 Enable (again) the full shape movement.
Instead treat path like a rect.
2016-08-22 17:33:11 +03:00
Andrey Antukh
3187a3ed2c Remove whitespace on shapes data ns. 2016-08-22 17:33:11 +03:00
Andrey Antukh
b90e70277e Add missing require. 2016-08-22 17:33:10 +03:00
Andrey Antukh
cd365b77d3 Add update-path event. 2016-08-22 17:33:10 +03:00
Andrey Antukh
8c7fc4aad6 Add path rendering support for view app. 2016-08-22 17:33:10 +03:00
elhombretecla
5ec4b707e8 add new style yo view mode btn 2016-08-21 11:37:46 +02:00
Andrey Antukh
697a4dd1fc Update cljs compiler to 1.9.198. 2016-08-13 13:53:32 +03:00
Andrey Antukh
9e904e4247 Activate by default path simplification. 2016-08-13 02:42:20 +03:00
Andrey Antukh
e701793e44 Simplify drawtools sidebar main data structure. 2016-08-12 22:04:34 +03:00
Andrey Antukh
49c44766ba Add the ability to draw freely the path.
The path simplification is implemented but deactivated.
2016-08-12 22:03:55 +03:00
Andrey Antukh
fa59407aec Import adapted version of simplify.js for path simplifications. 2016-08-12 21:32:03 +03:00
Andrey Antukh
9aae0f0ce3 Add basic element options for path shapes. 2016-08-12 21:09:35 +03:00
Andrey Antukh
c52755b329 Move uxbox independent geom logic under uxbox.util ns. 2016-08-12 21:09:07 +03:00
Andrey Antukh
6b8b6ac5b9 Code cleaing on draw area. 2016-08-12 20:50:16 +03:00
Andrey Antukh
5e8a3f2bfc Merge branch 'path-drawing' 2016-08-12 20:40:34 +03:00
Andrey Antukh
5d2c066356 Make path resizable. 2016-08-12 20:40:12 +03:00
Andrey Antukh
5fd1e7f030 Add transform point function.
Will be used for path edition.
2016-08-12 20:39:31 +03:00
Andrey Antukh
3977748e34 Add nan? and finite? predicates to math ns. 2016-08-11 18:16:00 +03:00
Andrey Antukh
1e9e9ef6d1 Add ^boolean typehints to matrix? and point? predicates.
Performance optimizations.
2016-08-11 18:15:59 +03:00
Andrey Antukh
d9a5c06106 Add the ability to invert matrix. 2016-08-11 18:15:59 +03:00
Andrey Antukh
0dff98801c Add missing stuff in order to make path usable. 2016-08-11 18:15:59 +03:00
Andrey Antukh
8f935b4d60 Remove debug messages from rlocks ns. 2016-08-10 20:05:01 +03:00
Andrey Antukh
398f08fac7 Commit path stuff. 2016-08-10 20:04:55 +03:00
Andrey Antukh
52b0900325 Add missing with-key reference on mixins ns. 2016-08-10 19:15:28 +03:00
Andrey Antukh
b8e5239ee3 Refactor user interaction locking. 2016-08-10 19:15:13 +03:00
Andrey Antukh
5afc297e93 Update react to 15.3.0. 2016-08-10 19:13:31 +03:00
Andrey Antukh
9913388116 Fix default connection string on figwheel build script. 2016-08-03 09:27:23 +03:00
Andrey Antukh
ffa9d0e8d1 Cosmetic changes on drawarea ns. 2016-08-01 20:54:11 +03:00
Andrey Antukh
56d64cf737 Add proper impl of undo/redo. 2016-07-31 15:11:53 +03:00
Andrey Antukh
675f04ff9c Fix typo on event handler attr on messages ns. 2016-07-31 15:11:29 +03:00
Andrey Antukh
5715e11d8f Initial work on proper undo/redu functionality.
That is based in in-memmory queue of more detailed changes
instead of relying on history log that is not pretty
detailed and requires explcit user confirmation on each
Ctrl+Z action that is counterintuitive.
2016-07-31 00:26:50 +03:00
Andrey Antukh
b871217bb6 Move watch-page-changes func on top of history ns. 2016-07-31 00:26:21 +03:00
Andrey Antukh
414b25242d Add better docstring for page change watcher on pages ns. 2016-07-31 00:08:01 +03:00
Andrey Antukh
70c5a29862 Simplify the page changes watcher of history. 2016-07-31 00:08:01 +03:00
Andrey Antukh
955b864da5 Show ugly marker on available interaction when interaction flag is activated.
Deactivated by default and requires a designer review.
2016-07-30 23:38:58 +03:00
Andrey Antukh
d6cd45c6da Leave open the sitemap on view app by default. 2016-07-30 23:38:06 +03:00
Andrey Antukh
10cfa2439a Add useful comment. 2016-07-30 22:54:01 +03:00
Andrey Antukh
668898903f Add missing gotopage interaction. 2016-07-30 22:47:55 +03:00
Andrey Antukh
1e4a379400 Properly open selected page on view app. 2016-07-30 22:43:23 +03:00
Andrey Antukh
fbbffe0167 More work on interactions. 2016-07-30 16:35:19 +03:00
Andrey Antukh
eb62b106f3 Replace anime.js with snapsvg.
The last one seems like it is unmaintained but it works
much better than anime.js.
2016-07-30 14:14:08 +03:00
Andrey Antukh
c3c6385b54 Update npm dependencies. 2016-07-29 15:40:38 +03:00
Andrey Antukh
7909375eb2 Add missing entry for dist-view command on dist script. 2016-07-29 15:31:37 +03:00
Andrey Antukh
3bc5150249 Minor fix on css location on gulpfile. 2016-07-29 15:24:18 +03:00
Andrey Antukh
aff352335b Minor fixes on build scripts. 2016-07-29 15:17:15 +03:00
Andrey Antukh
b183be6920 Remove old and unused config.edn file. 2016-07-29 13:48:02 +03:00
Andrey Antukh
c5b93a3a61 Add behavior to the view button on workspace. 2016-07-29 13:45:23 +03:00
Andrey Antukh
dc6391c1db Remove commented code. 2016-07-29 13:45:14 +03:00
Andrey Antukh
58563a41cb Define a new settings for the view application. 2016-07-29 13:45:00 +03:00
Andrey Antukh
bfcb96ae87 Update dependencies. 2016-07-29 13:44:45 +03:00
Andrey Antukh
44960845e2 Add more entries to trigger translation table. 2016-07-11 00:54:58 +03:00
Andrey Antukh
e021d074b1 Add initial implementation of interactions animations.
With inital support for :moveby and :gotourl.
2016-07-10 22:10:59 +03:00
Andrey Antukh
88036c1cb0 Import anime.js 1.1.0 bundle. 2016-07-10 22:09:58 +03:00
Andrey Antukh
1532dccafa Add interactions button toggle functionality. 2016-07-10 15:00:08 +03:00
Andrey Antukh
b154bb8ff4 Move viewer app shapes from canvas to dedicated namespace. 2016-07-10 12:42:49 +03:00
Andrey Antukh
f1955c2a7c Remove ^:const usage. 2016-07-10 11:57:45 +03:00
Andrey Antukh
d7f21dc130 Rename all "-l" suffix with "-ref" suffix.
That is more intiutive.
2016-07-09 21:46:10 +03:00
Andrey Antukh
f20ce6f057 Add more stuff related to viewer app rendering. 2016-07-09 21:32:30 +03:00
Andrey Antukh
10ccdf32fa Add defcs macro. 2016-07-09 21:32:14 +03:00
Andrey Antukh
43a1ca9fc0 Cosmetic fixs on sitemap refs. 2016-07-09 21:32:00 +03:00
Andrey Antukh
3a7e487f18 Cosmetic fixes on canvas components. 2016-07-09 21:31:43 +03:00
Andrey Antukh
6d82194f9f Convert rect-shape component to use new defc macro. 2016-07-09 21:31:17 +03:00
Andrey Antukh
9b078e19a8 Properly decode page data on project-by-share-token repo. 2016-07-09 21:30:49 +03:00
Andrey Antukh
ad5095ce5d Move state.project functions to appropriate data related namespaces. 2016-07-09 21:30:15 +03:00
Andrey Antukh
8b32c69377 Remove o replace apropriately the transfer-state func on components. 2016-07-09 18:48:17 +03:00
Andrey Antukh
5dc4dec1e0 Replace rum/react with mx/react. 2016-07-09 18:32:38 +03:00
Andrey Antukh
a3d0358bdf Replace rum/reactive with mx/reactive. 2016-07-09 18:26:25 +03:00
Andrey Antukh
aae868dba8 Define a viewer-page component using new defc syntax. 2016-07-09 16:38:24 +03:00
Andrey Antukh
52e1021cfb Add missing license header on mixins ns file. 2016-07-09 16:38:08 +03:00
Andrey Antukh
d5bab51c03 Adapt code to components api change. 2016-07-09 16:37:53 +03:00
Andrey Antukh
938f4f5bfd Adapt previous component function to work with latest rum version. 2016-07-09 16:37:24 +03:00
Andrey Antukh
897fd2bae1 Update dependencies. 2016-07-09 16:36:55 +03:00
Andrey Antukh
4f7e1f0a98 Add own defc macro for more easy define components with less boilerplate. 2016-07-09 16:36:30 +03:00
Andrey Antukh
d8057f3c83 Initial work on viewer app intergration. 2016-07-09 15:05:43 +03:00
Andrey Antukh
0c2ac8352c Minor improvements on router ns. 2016-07-09 15:05:06 +03:00
Andrey Antukh
48819a1738 Improve parse-int function. 2016-07-09 15:04:24 +03:00
Andrey Antukh
6e36718702 Remove useless parameter. 2016-07-09 15:04:12 +03:00
Andrey Antukh
1d060d1a50 Cosmetic fixe on project state functions. 2016-07-09 15:03:41 +03:00
Andrey Antukh
b16bea31f9 Add fetch project by token repo functions. 2016-07-09 03:43:46 +03:00
Andrey Antukh
9c37c19647 Fix wrong require path for config namespace. 2016-06-30 19:58:45 +03:00
Andrey Antukh
507e2b1d38 Merge uxbox.common and uxbox.util modules.
Under uxbox.util.
2016-06-30 19:57:39 +03:00
Andrey Antukh
b3e17bd2b7 Move common constants as uxbox.config ns. 2016-06-30 19:53:01 +03:00
Andrey Antukh
2810903020 Move geom from common to main. 2016-06-30 19:37:35 +03:00
Andrey Antukh
277cde7978 Move repo from common to main app. 2016-06-30 19:35:30 +03:00
Andrey Antukh
05f9a63c96 Fix alignemnt on middle resize handlers when grid is active. 2016-06-30 17:01:59 +03:00
Andrey Antukh
14ac4c80f6 Move interactions.clj under options directory. 2016-06-30 16:38:00 +03:00
Andrey Antukh
3702d29d4e Update dependencies. 2016-06-30 16:33:23 +03:00
elhombretecla
353f6f0efa add sitemap sidebar 2016-06-30 16:32:55 +03:00
elhombretecla
fb913fcefc add view nav styles 2016-06-30 16:32:55 +03:00
elhombretecla
6c26ffecd5 add main view layout and responsive 2016-06-30 16:32:55 +03:00
elhombretecla
ee3877f20c new css file structure 2016-06-30 16:32:55 +03:00
Andrey Antukh
a239d445b8 Add persistence to the interactions form. 2016-06-26 19:28:32 +03:00
Andrey Antukh
4ef4185373 Fix hint message on confirm dialog. 2016-06-26 19:25:23 +03:00
Andrey Antukh
9e056709df Add basic integration of interactions form.
Nothing working only the basic interactions of the
"interactions form".
2016-06-25 17:06:30 +03:00
Andrey Antukh
5e6b3e94da Cosmetic improvements on sitemap sidebar ns. 2016-06-25 17:06:30 +03:00
Andrey Antukh
bf33926ec4 Replace multicanvas icon on workspace header with play button. 2016-06-25 17:06:30 +03:00
Andrey Antukh
28b0ee7351 Cosmetic change on lense declaration on colorpicker (workspace). 2016-06-25 17:06:30 +03:00
Andrey Antukh
d6f5d1c2a2 Add missing play icon. 2016-06-25 17:06:30 +03:00
Andrey Antukh
1dcb19ddfa Remove unused code from mixins ns and add concat helper to it. 2016-06-25 17:06:30 +03:00
elhombretecla
9c9b0ca908 Add interactions base elements. 2016-06-25 17:06:29 +03:00
Andrey Antukh
f80ac704a7 Remove usage of deprecated functions from lentes library. 2016-06-22 22:23:24 +03:00
Andrey Antukh
73b901954a Update depencies. 2016-06-22 22:18:25 +03:00
Andrey Antukh
ce53bdb867 Set proper defaults for api urls. 2016-06-22 22:18:10 +03:00
Andrey Antukh
65bce97486 Remove ^:static meta usage. 2016-06-22 22:06:04 +03:00
Andrey Antukh
d5df7eba3b Many changes on scripts. 2016-06-22 21:20:17 +03:00
Andrey Antukh
bced1ebd2f Move intervaltre under uxbox.util submodule. 2016-06-22 21:18:02 +03:00
Andrey Antukh
77933f3949 Move kdtree, lru and heap into uxbox.util submodule. 2016-06-22 19:59:52 +03:00
Andrey Antukh
f81542a792 Rename uuid related namespaces. 2016-06-22 00:08:08 +03:00
Andrey Antukh
4607d92c31 Move vendor's uuid module into uxbox.util. 2016-06-21 19:50:09 +03:00
Andrey Antukh
967b67f0b1 Fix and restructure tests. 2016-06-21 19:31:35 +03:00
Andrey Antukh
0326c02c05 Use proper vertex identifiers for obtain the corresponding point. 2016-06-21 18:57:09 +03:00
Andrey Antukh
a4562c11e2 Fix default color on fill options. 2016-06-21 18:47:43 +03:00
Andrey Antukh
b6bcc1795c Fix group rendering.
Bug introduced in previous refactor of shapes rendering.
2016-06-21 18:47:08 +03:00
Andrey Antukh
1a8e29a0b1 Add missing entry to css-dirs of figwheel config. 2016-06-16 09:20:17 +03:00
Andrey Antukh
149e99f466 Use advanced compilation mode for production. 2016-06-15 22:26:19 +03:00
Andrey Antukh
9a98faf1f6 Update beicon and promesa dependencies. 2016-06-15 22:26:09 +03:00
Andrey Antukh
c0cc1d2b81 Improve and adapt build scripts for new view app. 2016-06-15 20:23:39 +03:00
Andrey Antukh
3d72c53f02 Add initial dummy placeholder for view application. 2016-06-15 20:23:08 +03:00
Andrey Antukh
6efaf019ba Update .gitignore file. 2016-06-15 20:15:27 +03:00
Andrey Antukh
54fe1a4737 Adapt code to new location of mixins namespace. 2016-06-15 20:01:23 +03:00
Andrey Antukh
61c4012dc4 Move ui mixins under uxbox.common module. 2016-06-15 20:00:57 +03:00
Andrey Antukh
4840a766e7 Update shrinkwrap file. 2016-06-15 00:00:59 +03:00
Andrey Antukh
b16a649121 Minor fixes on worker build scripts. 2016-06-14 23:57:52 +03:00
Andrey Antukh
dea367a84a Fix .gitignore file. 2016-06-14 23:57:44 +03:00
Andrey Antukh
99479c762d Remove autogenerated file from repo. 2016-06-14 23:57:13 +03:00
Andrey Antukh
9115f4923f Add view app related templates and scss files. 2016-06-14 23:52:04 +03:00
Andrey Antukh
9dc94caffd Restructure build scripts for facilitate incorporate more apps. 2016-06-14 23:50:55 +03:00
Andrey Antukh
929a0a84da Restructure the source directory tree.
In order to provide space for other applications
that shares source with the main app.
2016-06-14 17:39:44 +03:00
Andrey Antukh
ab36a12385 Enable parallel builds. 2016-06-12 13:40:31 +03:00
Andrey Antukh
c13e86c735 Move worker code into uxbox-worker namespace. 2016-06-12 13:38:18 +03:00
Andrey Antukh
0a17a44560 Move loader under specific namespace. 2016-06-12 13:27:30 +03:00
Andrey Antukh
a065f8a946 Remove syntax helpers from utils. 2016-06-12 13:26:56 +03:00
Andrey Antukh
1091ffa27a Make state initialization parametrizable. 2016-06-12 13:26:16 +03:00
Andrey Antukh
cf2a838007 Reimplement app initialization.
Now is done from template instead of global code execution
on main namespace.
2016-06-12 13:24:55 +03:00
Andrey Antukh
d1a41c78ab Remove unused file. 2016-06-12 10:35:58 +03:00
Andrey Antukh
d8dac5169f Move routes declaration into ui ns.
Leaving router as agnostic helpers impl.
2016-06-12 10:27:05 +03:00
Andrey Antukh
718e7dc803 Update npm shrinkwrap file. 2016-06-11 21:44:22 +03:00
Andrey Antukh
b4bd723685 Add build steps for preview app. 2016-06-11 21:43:57 +03:00
Andrey Antukh
3367e9befe Upgrade to node v6.2.1 2016-06-11 21:42:41 +03:00
Andrey Antukh
b84545c133 Remove unused code. 2016-06-11 19:59:39 +03:00
Andrey Antukh
c3cbd10d69 Adapt align worker to use new faster generation of kd trees. 2016-06-11 19:52:27 +03:00
Andrey Antukh
48af73792e Update bench/dev code for use new generate function. 2016-06-11 19:52:08 +03:00
Andrey Antukh
8e84751181 Add generate helper on kdtree module.
That uses lru cache for speedup tree creation
for most used configurations.
2016-06-11 19:48:39 +03:00
Andrey Antukh
4ab20eaef0 Add lru cache implementation. 2016-06-11 19:48:19 +03:00
Andrey Antukh
5ce66f3c69 Remove whitespace. 2016-06-11 18:31:16 +03:00
Andrey Antukh
4124f83a22 Use :none as optimization level for watch-bench script. 2016-06-11 18:30:57 +03:00
Andrey Antukh
94b38daee0 Adapt bench/dev code to interval tree api changes. 2016-06-11 18:30:39 +03:00
Andrey Antukh
461bdca375 Improved interval tree impl and add the ability to remove by id. 2016-06-11 18:30:06 +03:00
Andrey Antukh
a01cbfa350 Adapt bench/dev code to use new kdtree api. 2016-06-11 16:01:10 +03:00
Andrey Antukh
447da07789 Expose a more cleaner api for kdtree impl. 2016-06-11 16:00:54 +03:00
Andrey Antukh
53a9b4e8ba Adapt bench/dev code to use new initialization functions. 2016-06-11 15:46:56 +03:00
Andrey Antukh
1691f265e9 Add faster kdtree initialization method. 2016-06-11 15:45:46 +03:00
Andrey Antukh
2fbd3f6007 Simplify kdtree impl removing unused code. 2016-06-11 15:09:37 +03:00
Andrey Antukh
ed6417f6db Add test function to intervaltree module. 2016-06-08 21:21:06 +03:00
Andrey Antukh
a8c79d192a Add the ability to remove interval from intervaltree. 2016-06-08 21:20:36 +03:00
Andrey Antukh
a9a7b830be Remove whitespaces. 2016-06-07 22:04:36 +03:00
Andrey Antukh
9c7fb455a6 Add intervaltree related code to experiments/bench environment script. 2016-06-07 22:04:10 +03:00
Andrey Antukh
9d5ba9d731 Add node balancing and remove not used code. 2016-06-07 22:03:40 +03:00
Andrey Antukh
a4013c283c Remove dead code with some cosmetic fixes on kdtree/core.js. 2016-06-07 17:18:20 +03:00
Andrey Antukh
8f55391167 Add initial implementation of interval tree. 2016-06-07 17:17:52 +03:00
Andrey Antukh
f2916e11dc Update dependencies. 2016-06-04 16:02:35 +03:00
Andrey Antukh
87152c6b46 Add password recovery page. 2016-05-31 20:54:18 +03:00
Andrey Antukh
0fc6efa7b0 Fix test name colisions on group tests. 2016-05-29 11:42:36 +03:00
Andrey Antukh
380aaab806 Remove unused swap and reset events declared in rstore ns. 2016-05-29 11:42:08 +03:00
Andrey Antukh
e741678f2a Add missing recovery page. 2016-05-28 19:08:24 +03:00
Andrey Antukh
5a59640a36 Add password recovery request page. 2016-05-28 19:06:51 +03:00
Andrey Antukh
8c1dab4ebf Add the ability to register. 2016-05-28 16:32:42 +03:00
Andrey Antukh
fb898e6fda Fix form-clean event. 2016-05-28 16:32:07 +03:00
Andrey Antukh
0c9b525fc3 Add cursor: pointer to all a elements. 2016-05-28 16:31:49 +03:00
Andrey Antukh
d131b78a82 Update beicon to 1.4.0. 2016-05-28 16:31:39 +03:00
Andrey Antukh
cdbd94615f Minor ns naming improvement on uxbox.ui. 2016-05-28 13:57:23 +03:00
Andrey Antukh
68d75aacc9 Add dissoc-in helper into uxbox.util.data 2016-05-28 13:45:50 +03:00
Andrey Antukh
283c3277fa Show proper fallback avatar when no photo is available. 2016-05-28 13:45:35 +03:00
Andrey Antukh
c117476681 Add more server related translation strings. 2016-05-28 13:45:18 +03:00
Andrey Antukh
3b675af74a Fix validation form errors rendering. 2016-05-28 13:44:52 +03:00
Andrey Antukh
cf7b8d2224 Fix unexpected exception on form errors handling. 2016-05-28 13:44:16 +03:00
Andrey Antukh
32f4720111 Add missing group component (stolen in shapes refactor). 2016-05-28 12:50:06 +03:00
Andrey Antukh
4693722f40 Partial fix to lock mode on resize.
And add more human readable identifiers to
shape resize handlers.
2016-05-28 12:45:31 +03:00
Andrey Antukh
17790256ec Update node dependencies. 2016-05-24 21:52:29 +03:00
Andrey Antukh
1beac78e02 Remove react warning on image upload form. 2016-05-24 21:40:33 +03:00
Andrey Antukh
931042018e Move image collections state transformations functions into data ns. 2016-05-24 21:40:06 +03:00
Andrey Antukh
fa98c544cc Fix unexpected behavior on image collection renaming. 2016-05-24 21:12:55 +03:00
Andrey Antukh
2df37e3ba2 Add profile photo uploading support. 2016-05-24 19:05:21 +03:00
Andrey Antukh
4b0c8cec07 Add interop ns for tricky js interop calls. 2016-05-24 19:04:14 +03:00
Andrey Antukh
139ee821b7 Minor fixes on dashboard bar styles. 2016-05-24 16:49:00 +03:00
Andrey Antukh
96ca21277e Improved image collection title edition behavior. 2016-05-24 00:14:52 +03:00
Andrey Antukh
38eb985c48 Use keydown instead of keyup for title edition on image collections. 2016-05-24 00:07:11 +03:00
Andrey Antukh
80941da252 Merge pull request #32 from uxbox/upload-multiple-images
Upload multiple images
2016-05-23 23:46:49 +03:00
Jesús Espino
3a7e97bc60 Upload multiple images 2016-05-23 20:03:12 +02:00
Andrey Antukh
4237f3a04e Fix bugs introduced in previous commits. 2016-05-23 17:59:04 +03:00
Andrey Antukh
bf5c68a58b More fixes on images. 2016-05-23 17:34:44 +03:00
Andrey Antukh
a60fbca002 Minor readability and consistency fixes on images. 2016-05-23 17:22:15 +03:00
Andrey Antukh
57c53ba6a1 Improve text shape rendering and fix broken behavior. 2016-05-23 16:02:05 +03:00
Andrey Antukh
82f1da06f8 Update dependencies. 2016-05-22 20:46:32 +03:00
Andrey Antukh
defe616b22 Refactor shapes related namespaces. 2016-05-22 20:13:31 +03:00
Andrey Antukh
2733debadc Merge pull request #30 from uxbox/image-collections
Images dashboard
2016-05-22 17:44:52 +03:00
Jesús Espino
52b0b83259 Changing the endpoint url of list and create images 2016-05-21 17:46:19 +02:00
Jesús Espino
0550e73034 Moving select image lightbox to workspace 2016-05-21 17:46:19 +02:00
Andrey Antukh
a6d15e11ef Use doto idiom for populate formdata object. 2016-05-21 17:46:19 +02:00
Andrey Antukh
0c0d227788 Remove unused functions. 2016-05-21 17:46:19 +02:00
Jesús Espino
b3e9e7d1aa Images dashboard 2016-05-21 17:46:19 +02:00
Andrey Antukh
963d22d930 Use proper initial color value on workspace colorpicker. 2016-05-20 21:14:31 +03:00
elhombretecla
7f123c1952 fig dashboard scroll bug 2016-05-20 08:19:20 +02:00
Andrey Antukh
e8fe5508d2 Merge branch 'new-colorpicker' 2016-05-19 21:39:34 +03:00
Andrey Antukh
1da54f0c73 Fully integrate new color picker in workspace. 2016-05-19 21:39:14 +03:00
elhombretecla
249414c051 add new colorpicker styles 2016-05-19 21:39:14 +03:00
Andrey Antukh
fce1e6b362 Remove wrong imports. 2016-05-19 21:39:14 +03:00
Andrey Antukh
5da652a794 Add workspace specific colorpicker. 2016-05-19 21:39:14 +03:00
Andrey Antukh
75995c8cf7 Add node equality checker function. 2016-05-19 21:39:14 +03:00
Andrey Antukh
8fa46d5257 Add the ability to close lightbox clicking out of main div. 2016-05-19 21:39:14 +03:00
Andrey Antukh
e39f9767be Minor style improvements. 2016-05-19 21:39:14 +03:00
Andrey Antukh
25eff6a0a7 Improved color collections color lightbox. 2016-05-19 21:39:14 +03:00
Andrey Antukh
b3f50928d4 Add input fields to colorpicker. 2016-05-19 21:39:14 +03:00
Andrey Antukh
615586ec89 Split element options in separated namespaces for each menu type. 2016-05-19 21:39:14 +03:00
Andrey Antukh
ef43f31b91 Add missing copyright prelude on auth and users ns. 2016-05-19 21:39:14 +03:00
elhombretecla
958782ea95 hide color picker tooltip 2016-05-19 21:39:14 +03:00
elhombretecla
9422987133 change options order 2016-05-19 21:39:14 +03:00
elhombretecla
3531d5054a add picker icon and new color options 2016-05-19 21:39:14 +03:00
elhombretecla
5a50bc80e3 add color picker tooltip 2016-05-19 21:39:14 +03:00
elhombretecla
a779369185 add color th to options 2016-05-19 21:39:14 +03:00
elhombretecla
e523d2d0dc change select controls colors and fix cursor bug 2016-05-19 10:00:32 +02:00
elhombretecla
eabfa50142 restyle shape selected controls 2016-05-18 16:57:26 +02:00
Jesús Espino
94e23400c3 Change default opened options on project open (#28) 2016-05-18 17:13:12 +03:00
Andrey Antukh
efad3ff73c Improved projects, colors and workspace page data loading. 2016-05-16 13:44:13 +03:00
Andrey Antukh
191fae23d3 Set a fixed user photo until photo upload is implemented. 2016-05-16 13:43:35 +03:00
Andrey Antukh
4675590aac Use new loader state atom for render loader component. 2016-05-16 13:43:13 +03:00
Andrey Antukh
144dc59a7a Add specific error handler for disable loader in an unexpected error. 2016-05-16 13:29:43 +03:00
Andrey Antukh
3ac6df7c26 Move loader state under sparated atom under uxbox.state ns. 2016-05-16 13:29:19 +03:00
Andrey Antukh
3b56210bde Add UI related error handling under uxbox.ui ns.
Instead of on uxbox.state.
2016-05-16 13:28:26 +03:00
Andrey Antukh
05df84e89c Add extensible error handling to rstore impl. 2016-05-16 13:27:52 +03:00
Andrey Antukh
ef47a0aaad Fix wrong logout event implementation. 2016-05-16 13:27:21 +03:00
Andrey Antukh
c8d48d4667 Simplified login event. 2016-05-16 13:27:10 +03:00
Andrey Antukh
6eb65bfe39 Move router lense decaration to uxbox.ui ns. 2016-05-16 13:16:11 +03:00
Andrey Antukh
e0ba0fd41f Schedule to the next context the message side effect. 2016-05-16 13:12:32 +03:00
Andrey Antukh
c57e3f2a68 Remove bootstrap println message. 2016-05-16 13:11:01 +03:00
Andrey Antukh
5f7fea7201 Remove ^:const froms state code. 2016-05-14 22:28:18 +03:00
Andrey Antukh
c2b8f7e50c Remove ^:const metadata from router code. 2016-05-14 22:27:35 +03:00
Andrey Antukh
af2deea11d Remove ^:const from projects ui code. 2016-05-14 22:24:45 +03:00
Jesús Espino
3f4ed6faa5 Colors management (#24)
* Colors management

* Minor indentation fixes.

* Remove redundant naming.

* Add missing block comment annotations.

* Use consistently defrecord instead of reify.

* Remove useless mapcat usage and simplify the related code.

* Start using more optimistic updates on collection operations.

* Remove println.

* Remove ^:const metadata.

* Remove neested let.

* Replace when with if on sablono templates.
2016-05-14 21:50:06 +03:00
Jesús Espino
4c193d6026 Bring the shape resize handlers to the front (#26) 2016-05-12 20:00:42 +03:00
Andrey Antukh
87f9e8b38d Minor changes on figwheel script. 2016-05-11 00:42:01 +03:00
Andrey Antukh
d57f98e06d Update dependencies. 2016-05-11 00:42:01 +03:00
Andrey Antukh
cb003407b2 Add download dummy lightbox. 2016-05-11 00:42:01 +03:00
Jesús Espino
15d5748922 Add horizontal resize handlers (#25) 2016-05-10 10:57:08 +03:00
elhombretecla
c88e5fc266 add animation to multiselect bar 2016-05-09 20:13:53 +02:00
elhombretecla
cb3a9c28f0 add multiselect nav to images dashboard section 2016-05-09 20:08:07 +02:00
elhombretecla
ccb77e3ade add checkbox to select items from the dashboard 2016-05-09 19:34:50 +02:00
Andrey Antukh
1aab333eba Fix dist compilation script. 2016-05-08 18:03:37 +03:00
elhombretecla
da5ac3bda3 add images library grid styles 2016-05-07 11:08:43 +02:00
Andrey Antukh
dad430de6c Add new header to profile. 2016-05-06 22:21:39 +03:00
Andrey Antukh
e9c4576015 Remove empty line. 2016-05-06 22:20:19 +03:00
Andrey Antukh
597342d6ad Add settings related new translation strings. 2016-05-06 22:20:04 +03:00
Andrey Antukh
4567facc8d Add missing images menu entry translation string. 2016-05-06 22:19:49 +03:00
Andrey Antukh
14d403ca2d Minor translation strings change. 2016-05-06 22:19:38 +03:00
Andrey Antukh
7f865db89c Add profile-updated event with proper success notification. 2016-05-06 22:19:20 +03:00
Andrey Antukh
25bcf8f139 Port profile form to new form layout. 2016-05-06 22:00:32 +03:00
Andrey Antukh
de2fe77270 Add support for new profile persistence. 2016-05-06 21:07:02 +03:00
Andrey Antukh
f5d7f0abf4 Add images section to dashboard. 2016-05-06 20:47:21 +03:00
elhombretecla
c7acd82bda fix layer options width bug 2016-05-06 09:54:57 +02:00
elhombretecla
5fe16abd38 change no-user-img avatar image 2016-05-06 08:44:21 +02:00
elhombretecla
1391c9e671 fix dashboard grid visual bug 2016-05-06 08:08:33 +02:00
Jesús Espino
a9d38db076 Group/degroup feature improvements (#15) 2016-04-27 17:43:58 +03:00
Jesús Espino
3fdd0a6bcf Merge pull request #23 from uxbox/more-consistent-sitemap-button
More consistent sitemap button behavior
2016-04-27 10:48:03 +02:00
Jesús Espino
4f55b3995f More consistent sitemap button behavior 2016-04-27 10:45:08 +02:00
Andrey Antukh
dfe5765d50 Improve alignment when zoom is applied. 2016-04-26 21:03:26 +03:00
Andrey Antukh
0969d62a50 Fix strange behavior of opacity range inputs. 2016-04-26 20:10:01 +03:00
Andrey Antukh
468f6a27e1 Redirect to dashboad when logged user enters to login page. 2016-04-26 19:46:38 +03:00
elhombretecla
483043202a add new confirm dialog styles 2016-04-25 19:27:51 +02:00
Jesús Espino
c7801a793c Draw tools shortcuts (#21)
* Add shortcuts for shapes

* Fix problem with draw or select shapes when a shape is selected
2016-04-24 23:04:34 +03:00
Jesús Espino
9e96bbce99 Add duplicated shapes on the top of all shapes (#22) 2016-04-24 23:03:35 +03:00
Andrey Antukh
75905627b6 Fix tests. 2016-04-24 22:53:51 +03:00
Andrey Antukh
ac3d44601a Fix rng def in nodejs environment. 2016-04-24 22:53:31 +03:00
Andrey Antukh
f0ed85e53f Replace random-uuid usage with uuid.core/random. 2016-04-24 22:01:43 +03:00
Andrey Antukh
f102be51cb Remove redundant UUID instance creation on vendor/uuid module. 2016-04-24 21:51:01 +03:00
Andrey Antukh
6e4d243897 Add uuid generation functions that uses high quality RNG. 2016-04-24 21:49:14 +03:00
Andrey Antukh
5f86df81ec Send page data and options already serialized. 2016-04-24 18:48:04 +03:00
Andrey Antukh
15f6672b0e Minor bug on drawarea. 2016-04-23 09:04:39 +03:00
Andrey Antukh
5695d07e7e Update dependencies. 2016-04-22 20:44:52 +03:00
Andrey Antukh
53c657e8a4 Add alignment to drawarea. 2016-04-22 20:41:03 +03:00
Andrey Antukh
a63c9f7d33 Add align to text and circle resize. 2016-04-22 20:05:37 +03:00
Andrey Antukh
f054233a9e Simplify movement and resize alignment code. 2016-04-22 20:02:03 +03:00
Andrey Antukh
c2e63d5603 Add initial alignment on movement and resize. 2016-04-22 19:51:34 +03:00
Andrey Antukh
9e25f7ab9d Add alignment to resize. 2016-04-22 18:20:38 +03:00
Andrey Antukh
7d17926060 Add alignment to movement. 2016-04-22 18:20:21 +03:00
Andrey Antukh
8c99683eaf Comment not used code at this moment. 2016-04-20 20:43:49 +03:00
Andrey Antukh
8db39822ff Merge pull request #19 from uxbox/geom-refactor
Geom Refactor
2016-04-20 20:38:57 +03:00
Andrey Antukh
b931484e49 Add missing impls for text shape under geom ns. 2016-04-20 20:35:41 +03:00
Andrey Antukh
825eb4f8a2 Use inner-rect for calculate icon selection handlers. 2016-04-20 20:35:41 +03:00
Andrey Antukh
9bda376bf4 Fix outer-rect calculation for neested groups and add inner-rect function. 2016-04-20 20:35:41 +03:00
Andrey Antukh
eb82c8dffa Change movement approach and temporary disable align related stuff. 2016-04-20 20:35:40 +03:00
Andrey Antukh
00679d9c68 Add better shapes selection algorithm. 2016-04-20 20:35:40 +03:00
Andrey Antukh
59e327ae0e Add missing group matrix transformation. 2016-04-20 20:35:40 +03:00
Andrey Antukh
f400a242d9 Adapt shape type keywrod to new simplified naming.
The redundant and useles `:builtin/` keyword namespace
is stripped out.
2016-04-20 20:35:40 +03:00
Andrey Antukh
18190edcc8 Adapt the code to use new shape geometry primitives. 2016-04-20 20:35:40 +03:00
Andrey Antukh
5597a87c72 Remove old impl from overused uxbox.shapes ns. 2016-04-20 20:35:19 +03:00
Andrey Antukh
8b5b1697b2 Add new geom impl under uxbox.util.geom ns. 2016-04-20 20:35:02 +03:00
Andrey Antukh
1c13b62f25 Merge pull request #20 from uxbox/selecte-on-insert-shape
Select on insert shape
2016-04-17 18:56:05 +03:00
Jesús Espino
33e13362fd Select on insert shape 2016-04-17 13:18:36 +02:00
Andrey Antukh
719ab0c7cf Merge pull request #18 from uxbox/shapes-resize
Fixing shapes resize
2016-04-17 09:46:58 +03:00
Jesús Espino
9e06ef1729 Limiting the resize to correct behavior 2016-04-16 23:15:49 +02:00
Jesús Espino
ad73f9c514 Fix shapes resizing 2016-04-16 21:46:12 +02:00
Andrey Antukh
d80ac1227e Merge pull request #14 from uxbox/fix-blocked-group-selection
Fix blocked groups selection
2016-04-16 21:49:28 +03:00
Andrey Antukh
ef0e0ab74c Split some conditions as separated predicate functions. 2016-04-16 21:47:37 +03:00
Jesús Espino
70282daaf7 Fix blocked groups selection 2016-04-16 20:49:24 +03:00
Andrey Antukh
39df77e6ed Integreate new history version dialog in workspace. 2016-04-16 20:42:41 +03:00
Andrey Antukh
8d2767999b Make the workspace message not visible (temporary). 2016-04-16 14:09:19 +03:00
Andrey Antukh
7a8e4ef414 Add missing info message rendering. 2016-04-16 14:09:07 +03:00
Andrey Antukh
563d3e6dd3 Improve error handlign on password change event. 2016-04-16 14:08:54 +03:00
elhombretecla
1282fd9641 Improve messages and add new history new message. 2016-04-16 14:08:03 +03:00
Jesús Espino
97daf44f5c Move shape while other shape is selected (#17) 2016-04-16 13:55:07 +03:00
Andrey Antukh
27e14c0548 Minor cosmetic fixes on history load more button. 2016-04-16 13:50:32 +03:00
Andrey Antukh
d8c214a402 Remove duplicated events from workspace component. 2016-04-16 13:50:16 +03:00
Andrey Antukh
0ace777e00 Improve dashboard projects loading. 2016-04-16 13:49:59 +03:00
Andrey Antukh
55025d12fa Add main loader in ui ns. 2016-04-16 13:49:39 +03:00
Andrey Antukh
2887b5c0e1 Improve workspace initialization process. 2016-04-16 13:44:32 +03:00
Andrey Antukh
b148de7fc0 Properly use projects fetched event after fetch projects event. 2016-04-16 13:43:21 +03:00
Andrey Antukh
034c26fed4 Cosmetic changes on history events. 2016-04-16 13:42:57 +03:00
Andrey Antukh
fda381c1b6 Add template entri for the main fullscreen loader. 2016-04-16 13:41:33 +03:00
Andrey Antukh
ed0717f57d Add missing title on main template. 2016-04-16 13:41:22 +03:00
elhombretecla
6aa5dee80b add pencil loader code 2016-04-16 11:22:44 +03:00
elhombretecla
632595235e add loader pencil svg 2016-04-16 11:22:44 +03:00
elhombretecla
070b8a8378 add loader code 2016-04-16 11:22:44 +03:00
elhombretecla
697020c385 add loader svg 2016-04-16 11:22:44 +03:00
Andrey Antukh
0d9c899367 Update .travis.yml file 2016-04-16 11:11:43 +03:00
Andrey Antukh
f24a80468e Improve tests build scripts. 2016-04-16 11:11:28 +03:00
Andrey Antukh
d496add1d6 Revert "Temporary remove .travis.yml"
This reverts commit b6a89ccfc8.
2016-04-16 11:03:08 +03:00
Andrey Antukh
b95c573fc2 Fix tests. 2016-04-16 11:02:58 +03:00
Andrey Antukh
ba0627c3ad Refactor lightbox impl approach (split business logic from UI). 2016-04-16 10:45:33 +03:00
Jesús Espino
aaecf3e174 Add total-pages field to projects in the dashboard (#16) 2016-04-16 09:49:23 +03:00
Andrey Antukh
8c996f3a57 Fix bugs in new storage impl. 2016-04-15 23:39:21 +03:00
Andrey Antukh
3ab64e5a68 Remove debug messages on storage ns. 2016-04-15 23:39:21 +03:00
Andrey Antukh
2649f4bed2 Improve error handling on user events. 2016-04-15 23:39:21 +03:00
Andrey Antukh
8353f92ea7 Remove debug message on messages events ns. 2016-04-15 23:39:21 +03:00
Andrey Antukh
6044e8a4c2 Add a small delay for history fetching (beter user experience). 2016-04-15 23:39:21 +03:00
Andrey Antukh
eff6a854a0 Initialize webworker only on browser environment. 2016-04-15 23:39:21 +03:00
Andrey Antukh
5ebe483f8a Don't fetch profile and projects if authentication is failed. 2016-04-15 23:39:21 +03:00
Andrey Antukh
433d4fe7ee Use :simple optimization level for tests. 2016-04-15 23:39:21 +03:00
Andrey Antukh
dba3c8764a Add new transit based and nodejs friendly storage abstraction. 2016-04-15 23:39:21 +03:00
Andrey Antukh
95c4f2fbc1 Refactor messages (split ui and business logic). 2016-04-15 23:39:21 +03:00
Andrey Antukh
6571c29c1d Merge pull request #13 from uxbox/not-deselect-tool-on-draw
Not deselect tool on draw and deselect tool on esc
2016-04-15 19:09:27 +03:00
Jesús Espino
987736f9fb Deselect current tool with esc 2016-04-15 17:34:21 +02:00
Jesús Espino
b9e3e9f7d4 Now you can draw n figures without selecting again the tool 2016-04-15 17:25:51 +02:00
Andrey Antukh
debc68661a Remove obsolete usage of reader macro #ux/tr. 2016-04-14 21:39:50 +03:00
Andrey Antukh
48171bbecc Minor changes on color picker. 2016-04-14 21:19:04 +03:00
Andrey Antukh
73d2a6cfd5 Add missing copyright/license part on colorpicker ns. 2016-04-14 21:13:44 +03:00
Andrey Antukh
51f1ac54d9 Minor changes on default error handling. 2016-04-14 21:13:25 +03:00
elhombretecla
e103335cc1 fix dashboard img bug 2016-04-14 08:14:06 +02:00
Andrey Antukh
8b23cd6f3c Improve form related events naming. 2016-04-13 23:53:49 +03:00
Andrey Antukh
58a86872f5 Add specific event for update page options. 2016-04-13 23:52:01 +03:00
Andrey Antukh
7c892cf012 Improve error handling on workspace settings form. 2016-04-13 23:42:07 +03:00
Andrey Antukh
57bba26815 Add more validators. 2016-04-13 23:41:54 +03:00
Andrey Antukh
0cb28a2bba Add additional helpers and events for form handling. 2016-04-13 23:41:00 +03:00
Andrey Antukh
3515a0c602 Fix an other bug related to aligmnet activation flags. 2016-04-13 21:10:07 +03:00
Andrey Antukh
82ce2d166e Minor bugfix on workspace settings. 2016-04-13 21:07:56 +03:00
Andrey Antukh
e77764f693 Simplify alignment related flags and its activation impl. 2016-04-13 21:02:23 +03:00
Andrey Antukh
75a22381d2 Only align when grid is activated. 2016-04-13 20:55:35 +03:00
Andrey Antukh
10d38fd574 Reinitialize the align index on settings change. 2016-04-13 20:46:35 +03:00
Andrey Antukh
be446c6d79 Make grid component reactive to grid options change. 2016-04-13 20:46:15 +03:00
Andrey Antukh
49d2c54488 Cosmetic fixes on zoom related events. 2016-04-13 20:45:59 +03:00
Andrey Antukh
c743c94450 Add activate flag event for proper flag activation independently of state. 2016-04-13 20:45:29 +03:00
Andrey Antukh
41073a7b57 Cosmetic improvement on constants definition on workspace events ns. 2016-04-13 20:44:59 +03:00
Andrey Antukh
44027c9d63 Add todo coment on pages events. 2016-04-13 20:44:17 +03:00
Andrey Antukh
5624882ce2 Properly trigger page update on shape movement. 2016-04-13 20:15:07 +03:00
Andrey Antukh
e40632cca6 Fix project filtering in dashboard. 2016-04-13 20:13:05 +03:00
Andrey Antukh
6d2cd7da59 Simplify error handling on events that communicate with backend. 2016-04-13 20:09:23 +03:00
Andrey Antukh
47a70ad5c9 Update dependencies. 2016-04-13 19:37:45 +03:00
Andrey Antukh
e8108813ca Merge pull request #9 from uxbox/improved-errors-on-password-change
Improve errors management on password change
2016-04-12 22:57:40 +03:00
Andrey Antukh
c314a4cde9 Minor change on translation approach on form errors. 2016-04-12 22:57:00 +03:00
Andrey Antukh
63e5e68fc6 Add some annotations on locales api. 2016-04-12 22:56:13 +03:00
Andrey Antukh
a264cea1d6 More improvements to validation api. 2016-04-12 22:31:32 +03:00
Andrey Antukh
58444fd363 Fix wrong class reference on forms events. 2016-04-12 22:31:32 +03:00
Andrey Antukh
5624adcedf Remove some validations. 2016-04-12 22:31:32 +03:00
Andrey Antukh
e42b2ed7bf Overhaul of form data and errors handling. 2016-04-12 22:31:32 +03:00
Andrey Antukh
e509daaeef Add missing locale for password success update message. 2016-04-12 22:31:32 +03:00
Andrey Antukh
b37196621c Add info message type. 2016-04-12 22:31:32 +03:00
Andrey Antukh
f81975aa6c Improve error messages on settings/password page. 2016-04-12 22:31:32 +03:00
Andrey Antukh
6eba3d4764 Add improvements to form helpers. 2016-04-12 22:31:32 +03:00
Andrey Antukh
3d79367078 Replace bouncer with funcool/struct. 2016-04-12 22:31:32 +03:00
Jesús Espino
cc320215ac Improve errors management on password change 2016-04-12 22:31:32 +03:00
Jesús Espino
cb3a099fef Step based zoom (#12) 2016-04-11 23:09:46 +03:00
Jesús Espino
994d67e032 Change shapes order relative (#11) 2016-04-11 22:02:28 +03:00
Jesús Espino
706bc84d95 Insert shapes alwais on top (#10) 2016-04-11 22:01:41 +03:00
Andrey Antukh
20ae512143 Merge pull request #8 from uxbox/header-zoom-controller
Zoom control widget on the workspace header
2016-04-11 18:12:50 +03:00
Andrey Antukh
b734f303fb Cosmetic improvements. 2016-04-11 18:12:15 +03:00
Andrey Antukh
2ef31f3e08 Improve initial compilation and add worker compilation to dist. 2016-04-11 18:03:34 +03:00
Andrey Antukh
280c272c2a Fix build-worker script. 2016-04-11 17:40:08 +03:00
Andrey Antukh
93a84d91e2 More changes on bench core ns. 2016-04-11 17:34:06 +03:00
Andrey Antukh
4f0a74b1a3 Improvements to grid alignment impl. 2016-04-11 17:34:06 +03:00
Andrey Antukh
8916a9b7ac Fix build scripts (related to webworker). 2016-04-11 17:33:24 +03:00
Andrey Antukh
94fc4d2b88 Fix kdtree implementation. 2016-04-11 17:33:24 +03:00
elhombretecla
c02e144012 add image bg to dashboard 2016-04-10 19:59:56 +02:00
Jesús Espino
66c56a367e Zoom control widget on the workspace header 2016-04-10 19:24:51 +02:00
elhombretecla
5aa629d4d4 add new hover style to page actions 2016-04-10 19:08:08 +02:00
Jesús Espino
e43ca70245 Added round and limit to zoom steps (#7) 2016-04-10 20:07:24 +03:00
Andrey Antukh
55dfbd73e5 Make coords indicator on workspace header aware of zoom. 2016-04-10 19:44:30 +03:00
Andrey Antukh
574d78871a Merge branch 'alignment' 2016-04-10 18:51:41 +03:00
Andrey Antukh
935bafd512 Add initial approach for grid alignment.
A little bit buggy because the main algorithm
does not works well.
2016-04-10 18:51:13 +03:00
Andrey Antukh
051163c3ae Add webworkers architecture (rcp). 2016-04-10 18:51:13 +03:00
Andrey Antukh
b920342188 Use constants on workspace settings lightbox. 2016-04-10 18:51:13 +03:00
Andrey Antukh
d69be9a378 Split constants to specific namespace. 2016-04-10 18:51:13 +03:00
Andrey Antukh
e791f49921 Add point read/write handler to transit. 2016-04-10 18:51:13 +03:00
Andrey Antukh
9bd358a119 Properly persist as int the grid axis on workspace settings lightbox. 2016-04-10 18:51:13 +03:00
Andrey Antukh
e9d3e7578e Minor improvements on grid render code. 2016-04-10 18:51:13 +03:00
Andrey Antukh
aa06d824ee Adapt imports to previos data api change. 2016-04-10 18:51:13 +03:00
Andrey Antukh
bcc82bc5cf Move shape related events from data.workspace to data.shapes. 2016-04-10 18:51:13 +03:00
Andrey Antukh
551c95b8fe Change the shapes moviment tracking approach.
Will facilitate grid alignment.
2016-04-10 18:51:13 +03:00
Andrey Antukh
69329f7f64 Make grid fill all the workspace instead only canvas. 2016-04-10 18:51:13 +03:00
Andrey Antukh
50e8de4552 Send the select-shape event before acquire move action. 2016-04-10 18:51:13 +03:00
Andrey Antukh
bfc0fc0f98 Temporary comment duplicated code. 2016-04-10 18:51:13 +03:00
Andrey Antukh
b66be25a8e Minor comments change. 2016-04-10 18:51:13 +03:00
Andrey Antukh
6c64279c94 Move transit ns under uxbox.util. 2016-04-10 18:51:13 +03:00
Andrey Antukh
3dd741129c Improve move-shape event constructor docstring. 2016-04-10 18:51:13 +03:00
Andrey Antukh
89a21d7abb Add update-shape event just for shape inplace update. 2016-04-10 18:51:13 +03:00
Andrey Antukh
d976afda30 Fix wrong filename on watch-tests script. 2016-04-10 18:51:13 +03:00
Andrey Antukh
650bbabe94 Update externs file with more interop calls. 2016-04-10 18:51:13 +03:00
Jesús Espino
78987419d2 Allow to change password (#6) 2016-04-10 18:48:56 +03:00
elhombretecla
cb524ee814 add color fix to zoom controler 2016-04-10 17:37:03 +02:00
elhombretecla
57df8821f1 add zoom controlers 2016-04-10 11:51:23 +02:00
Jesús Espino
52d3b2c7fc The zoom change is relative to the current zoom (#5) 2016-04-09 23:06:24 +03:00
Jesús Espino
18ddbaa039 Fix rules with zoom (#4) 2016-04-09 23:06:02 +03:00
Andrey Antukh
3a448e33e4 Minor changes on bench code. 2016-04-09 20:32:34 +03:00
Andrey Antukh
808c964d3d Simplify and fix kdtree impl. 2016-04-09 20:32:34 +03:00
Andrey Antukh
d64253dd1b Remove point abstraction and just use array for that on kdtree. 2016-04-09 20:32:34 +03:00
Andrey Antukh
78e7f57655 Update figwheel.clj 2016-04-09 18:51:54 +03:00
Andrey Antukh
ac4e090b96 Minor refactor on shortcuts mixin. 2016-04-09 11:50:29 +03:00
Andrey Antukh
3b77286c77 Minor naming changes on workspace ns. 2016-04-09 11:32:57 +03:00
Andrey Antukh
1f24712fa5 Remove unused exclude from workspace ns. 2016-04-09 11:31:17 +03:00
Andrey Antukh
599d4f34c8 Remove unused imports from workspace. 2016-04-09 11:30:56 +03:00
Andrey Antukh
c419e9406b Add bench code and update all scripts. 2016-04-08 11:03:29 +03:00
Andrey Antukh
5ae1c6a78c Add kdtree implementation. 2016-04-08 11:03:13 +03:00
Andrey Antukh
09f75ae3fd Implement grid as path.
That improves considerable the rendering performance.
2016-04-06 23:11:44 +03:00
Andrey Antukh
262f305bf9 Remove unsued constants from rules ns. 2016-04-06 22:29:57 +03:00
Andrey Antukh
3424c768ab Minor refactor on multiple selection handlers component. 2016-04-06 22:18:35 +03:00
Andrey Antukh
8f3c049536 Remove unused imports on selrect ns. 2016-04-06 22:04:08 +03:00
Andrey Antukh
89ac323799 Refactor selrect component code. 2016-04-06 22:01:02 +03:00
Andrey Antukh
01437ea6f8 Move scroll related code under workspace ns. 2016-04-06 22:00:10 +03:00
Andrey Antukh
aa3ce7daf6 Move ruler out of canvas ns. 2016-04-06 20:45:57 +03:00
Andrey Antukh
5b01e3ed2a Add missing reference to transfer state fn on drawarea ns. 2016-04-06 20:44:56 +03:00
Andrey Antukh
d771a9f513 Remove commented code. 2016-04-06 20:39:36 +03:00
Andrey Antukh
54b8db6cfb Remove unused imports from movement ns. 2016-04-06 20:33:58 +03:00
Andrey Antukh
a0726d3a36 Refactor shapes resize related code. 2016-04-06 20:33:36 +03:00
Andrey Antukh
45255ab932 Refactor shapes movement related code. 2016-04-06 19:47:39 +03:00
Andrey Antukh
4185849102 Refactor drawing area. 2016-04-06 18:53:16 +03:00
Andrey Antukh
8df6dc6c43 Set node version to v5.10.1 2016-04-06 16:31:44 +03:00
Andrey Antukh
33d69d51cc Make ruler aware of zoom. 2016-04-05 23:18:13 +03:00
Andrey Antukh
a21c6f41c4 Some fixes on text ticks on rules. 2016-04-05 23:17:57 +03:00
Andrey Antukh
c2126b6fe4 Add missing divide function to point reladed utils. 2016-04-05 22:27:58 +03:00
Andrey Antukh
38509eea99 More work on zoom. 2016-04-05 22:27:50 +03:00
Andrey Antukh
9ce6cd0f92 Improve workspace initialization. 2016-04-05 22:27:27 +03:00
Andrey Antukh
46d7bd2f23 Remove unused metadata from workspace var. 2016-04-05 21:07:20 +03:00
Andrey Antukh
d558b3e6f4 Handle properly zoom. 2016-04-05 21:06:34 +03:00
Andrey Antukh
444018d105 Minor refactor of scroll interaction.
And move mouse wheel controller to workspace.
2016-04-05 19:30:18 +03:00
Andrey Antukh
18ada6f49f Add the ability to zoom using mouse wheel. 2016-04-05 18:39:40 +03:00
Andrey Antukh
2c356f9892 Remove unused variable from transform-point function. 2016-04-05 18:01:01 +03:00
Andrey Antukh
f9b78cd49c Refactor rules for handle zoom and better performance. 2016-04-05 17:59:04 +03:00
Andrey Antukh
4905ac913b Make selrect aware of zoom (dirty impl). 2016-04-05 17:57:52 +03:00
Andrey Antukh
4c5e847b11 Add point-transform and multiply functions. 2016-04-05 17:57:16 +03:00
Andrey Antukh
25d76d5b88 Add zoom shortcuts. 2016-04-05 17:56:58 +03:00
Andrey Antukh
4aaa5c3e7a Add zoom events. 2016-04-05 17:55:54 +03:00
Andrey Antukh
bc2e7c46a9 Disable pointer events on now top positioned grid. 2016-04-04 20:35:30 +03:00
Andrey Antukh
27e9afa6a8 Improve grid styles. 2016-04-04 20:35:21 +03:00
Andrey Antukh
cc7aef895e Put grid on top of shapes. 2016-04-04 20:35:07 +03:00
Andrey Antukh
c0bf28682c Use :fill-opacity attribute instead :opacity. 2016-04-04 20:34:29 +03:00
Andrey Antukh
b5ba75097f Performane improvements over previous commit. 2016-04-04 20:34:09 +03:00
Andrey Antukh
8c51048f76 Do not select shape when drawing. 2016-04-04 20:12:33 +03:00
Andrey Antukh
6ba28830f3 Dashboard ui code reorganization. 2016-04-04 18:18:52 +03:00
Andrey Antukh
0a736994db Proper state cleaning on login also. 2016-04-04 12:39:22 +03:00
Andrey Antukh
d1fee179d5 Fix wrong state cleaning in logout. 2016-04-03 21:06:59 +03:00
Andrey Antukh
ffc6c79ed7 Make grid aware of user settings. 2016-04-03 20:09:03 +03:00
Andrey Antukh
71c9adb126 Remove commented code on ui.users ns. 2016-04-03 20:08:40 +03:00
Andrey Antukh
4422974e4a Remporary disable advanced compilation on dist for more easy debugging. 2016-04-03 20:08:18 +03:00
Andrey Antukh
69a334e206 Persist page grid options. 2016-04-03 19:34:10 +03:00
elhombretecla
17cda7c60d add optimized login img bg and minor css changes 2016-04-03 14:17:42 +02:00
Andrey Antukh
711a8c9c69 Update contributing doc. 2016-04-03 13:36:58 +03:00
Andrey Antukh
2f6c632476 Minor improvements on gulpfile. 2016-04-03 13:19:11 +03:00
Andrey Antukh
71fb8f0a42 Improved history usability. 2016-04-03 11:09:22 +03:00
Andrey Antukh
e32188f593 Improved history state layout. 2016-04-03 10:07:26 +03:00
Andrey Antukh
aeff49b3e6 Add externs for interop calls and enable advanced compilation. 2016-04-02 23:17:52 +03:00
Andrey Antukh
7e8730c26e Add dragging support for color picker handlers. 2016-04-02 22:55:23 +03:00
Andrey Antukh
50eb744c3b Add new color picker impl. 2016-04-02 22:43:37 +03:00
Andrey Antukh
f21a377d84 Reimplement color helpers using google closure library facilities. 2016-04-02 22:43:05 +03:00
Andrey Antukh
86e7ffc04a Add .center helper class as friend of .row-flex 2016-04-02 22:40:30 +03:00
Andrey Antukh
b5155eebcf Add clipboard management. 2016-04-02 13:00:41 +03:00
Andrey Antukh
4519d6e508 Remove useless println's. 2016-04-02 13:00:02 +03:00
Andrey Antukh
cad95c67a5 Reorganize repo code. 2016-04-02 11:53:39 +03:00
Andrey Antukh
299c2bf06c Make prevent-default and stop-propagation functions nil safe. 2016-04-02 11:45:19 +03:00
Andrey Antukh
db95342759 Add confirmation for projects and pages deletion. 2016-04-02 11:45:04 +03:00
Andrey Antukh
ebd7242048 Add temporal ugly buttons to confirm dialog. 2016-04-02 11:44:36 +03:00
Andrey Antukh
3d17eca0d2 Add confirm dialog placeholder. 2016-04-02 11:26:06 +03:00
Andrey Antukh
f7013d6e8b Update profile form integration. 2016-04-02 11:17:51 +03:00
Andrey Antukh
105f995877 Minor changes on user-settings style. 2016-04-02 11:17:05 +03:00
Andrey Antukh
f32b384f5d More fixes on initial data loading. 2016-04-01 16:55:34 +03:00
Andrey Antukh
38a64c356b More code cleaning from debug messages. 2016-03-31 21:52:19 +03:00
Andrey Antukh
cd61c65d55 Remove debug messages. 2016-03-31 21:48:40 +03:00
Andrey Antukh
41aa1eb8f5 Improved history refresh mechanism. 2016-03-31 21:47:25 +03:00
Andrey Antukh
b96a554c44 Print stack trace when unexpected exception is raised in the stream. 2016-03-31 21:46:59 +03:00
Andrey Antukh
f837835be4 Improved login process and profile loading. 2016-03-31 19:14:06 +03:00
Andrey Antukh
3875780440 Remove dbg msg. 2016-03-30 21:07:18 +03:00
Andrey Antukh
84f90613ce Fix bug on auth system. 2016-03-30 21:05:49 +03:00
Andrey Antukh
37454ca305 Improvements to historoy management. 2016-03-30 20:57:06 +03:00
elhombretecla
6245ccc599 add new login bg 2016-03-30 17:38:25 +02:00
Andrey Antukh
f46ded791c Remove whitespace. 2016-03-29 22:32:53 +03:00
Andrey Antukh
f52b8796d1 Remove posible race condition on page sync and history load. 2016-03-29 22:32:22 +03:00
Andrey Antukh
33fd84623f Restore workspace scroll with space. 2016-03-29 22:17:56 +03:00
Andrey Antukh
6f90f343e6 Improved page deletion process. 2016-03-29 22:14:53 +03:00
Andrey Antukh
90957190db Minor style fix on sitemap. 2016-03-29 22:00:37 +03:00
Andrey Antukh
b6a89ccfc8 Temporary remove .travis.yml 2016-03-29 22:00:20 +03:00
Andrey Antukh
7caba13173 Fix race condition on page delete. 2016-03-29 21:56:10 +03:00
Andrey Antukh
f43faa30b6 Refactor page history state and events. 2016-03-29 21:46:13 +03:00
Andrey Antukh
e2a22266bd Update dependencies. 2016-03-29 21:45:09 +03:00
Andrey Antukh
f91203d5e2 Fixed some bugs on history loading on page changes. 2016-03-28 21:55:14 +03:00
Andrey Antukh
4c4978d948 Remove debug messages. 2016-03-28 21:54:57 +03:00
Andrey Antukh
6ef76673e8 Add proper history loading and history state management. 2016-03-28 18:49:34 +03:00
Andrey Antukh
95263402b7 Enable login submit with enter key. 2016-03-28 18:49:34 +03:00
Andrey Antukh
e7697258e4 Update dependencies. 2016-03-28 18:49:34 +03:00
Andrey Antukh
7e7fa96f16 Move page changes watching and persistence out of ui. 2016-03-28 18:49:34 +03:00
elhombretecla
0912d6ec4f minor avatar fix 2016-03-28 08:55:06 +02:00
Andrey Antukh
d8cb4669e5 Improved history deselection. 2016-03-27 18:48:17 +03:00
Andrey Antukh
ea531ae620 Add the ability to select a history item. 2016-03-27 18:48:17 +03:00
Andrey Antukh
0746385555 Do not fetch history on each history navigation action. 2016-03-27 18:46:18 +03:00
Andrey Antukh
8c64c7c3eb Do not send page updates when historic item is selected. 2016-03-27 18:46:18 +03:00
Andrey Antukh
b00420d457 Add select page history event. 2016-03-27 18:46:18 +03:00
Andrey Antukh
e2ad20b376 Do not deselect the current selected history on refetches. 2016-03-27 18:46:18 +03:00
Andrey Antukh
b8dc464e88 Change default number of items to fetch for the history to 15. 2016-03-27 18:46:18 +03:00
Andrey Antukh
06142bc285 Enable sending parameters for retrieve-history repo impl. 2016-03-27 18:46:18 +03:00
Andrey Antukh
3f1a14c94e Improved repo abstraction for proper encode and send query-string. 2016-03-27 18:46:18 +03:00
Andrey Antukh
3c6b553f2f Update dependencies. 2016-03-27 18:46:18 +03:00
elhombretecla
de242bdc58 add message actions to message body 2016-03-27 16:41:39 +02:00
elhombretecla
ebbe3e89c1 add more history btn 2016-03-27 16:13:51 +02:00
Andrey Antukh
e97e4cbb5a Basic backend integration for page history fetching. 2016-03-24 12:43:14 +02:00
Andrey Antukh
6b495c1656 Upgrade lentes dependency. 2016-03-19 23:46:59 +02:00
Andrey Antukh
b37d3a21b7 Avoid persist page operation on first workspace loading. 2016-03-19 19:24:47 +02:00
Andrey Antukh
e050c16f9a Remove skip on page persistence stream. 2016-03-19 19:13:23 +02:00
Andrey Antukh
2201339887 Move pages-l lense to sitemap ns and add small optimizations to base lenses. 2016-03-19 19:10:11 +02:00
Andrey Antukh
289ac74553 Fix project pagas state getter ordering. 2016-03-19 19:09:48 +02:00
Andrey Antukh
d988300a4c Move auth persistence to specific event.
Instead to have a state atom useless subscription.
2016-03-19 19:09:06 +02:00
Andrey Antukh
63f2f3f0a7 Add missing config on dist.clj script. 2016-03-19 17:59:13 +02:00
Andrey Antukh
a17b79da77 Implement page persistence. 2016-03-19 17:47:31 +02:00
Andrey Antukh
a90ef042d5 Update beicon dependency. 2016-03-19 17:47:15 +02:00
Andrey Antukh
687fda33b6 Start using the update metadata endpoind for simple page modifications. 2016-03-19 15:26:38 +02:00
Andrey Antukh
6fdc0c0fd6 Split project and page repository functions in different namespaces. 2016-03-19 15:26:11 +02:00
Andrey Antukh
124366cbce Add retry mechanism to rstore.
That allows does not close all streams on first 1024 errors.
2016-03-19 15:02:46 +02:00
Andrey Antukh
a70ebcab44 Add default error handler for watch and update events on rstore. 2016-03-19 14:53:51 +02:00
Andrey Antukh
32dfaebbb9 Minor improvements on rstore. 2016-03-19 13:50:05 +02:00
Andrey Antukh
91a06f4d7e Split projects and pages events in different namespaces. 2016-03-19 13:49:47 +02:00
Andrey Antukh
71d8c5a12b Refactor and adapt the events code related to previous changes. 2016-03-19 12:58:50 +02:00
Andrey Antukh
3e4678a085 Simplify project manipulation state functions. 2016-03-19 12:51:36 +02:00
Andrey Antukh
6492faefd4 Improve code style and impl of auth and project repo ns. 2016-03-19 12:51:01 +02:00
Andrey Antukh
ca4afe920c Refactor the main repo impl. 2016-03-19 12:49:14 +02:00
Andrey Antukh
409cd05739 Add additional parameter to watch event protocol method. 2016-03-19 12:48:39 +02:00
Andrey Antukh
e71502f182 Update dependencies. 2016-03-19 12:33:52 +02:00
Andrey Antukh
f5f4e0f0fe Improved action stacking. 2016-03-18 18:32:42 +02:00
Andrey Antukh
e6161a0f62 Add missing data parameter on page creation. 2016-03-17 22:27:05 +02:00
Andrey Antukh
54ee339a48 Fix projects creation lightbox. 2016-03-17 22:27:05 +02:00
Andrey Antukh
c4e8a881c1 Add new implementation for create and delete project events.
For backend integration.
2016-03-17 22:27:05 +02:00
Andrey Antukh
63bcae9dc1 Add create/delete project repository methods. 2016-03-17 22:27:05 +02:00
Andrey Antukh
87adadd445 Don't send content type headers when no body is available. 2016-03-17 22:27:05 +02:00
Andrey Antukh
decd5a905e Update promesa and bidi dependencies. 2016-03-17 22:27:05 +02:00
elhombretecla
8f6a63ae7c add ui dark theme 2016-03-17 19:17:55 +01:00
Andrey Antukh
f3511809fe Updare react to v15-rc.1 2016-03-16 21:15:02 +02:00
Andrey Antukh
f8937b2dd2 Update to beicon 1.0.3 2016-03-16 21:10:58 +02:00
Andrey Antukh
f80c48e679 Add compile time defined url variable for easy config the api url. 2016-03-15 23:00:57 +02:00
Andrey Antukh
e5fda5aac3 Fix :offset formater for datetime. 2016-03-15 22:26:33 +02:00
Andrey Antukh
92060878d7 Integrate basic page update with backend. 2016-03-15 22:26:15 +02:00
Andrey Antukh
098d38e079 Use strings for layout ids instead keywords. 2016-03-15 22:25:45 +02:00
Andrey Antukh
a522682ee4 Fix transit datetime serialization. 2016-03-15 22:24:53 +02:00
Andrey Antukh
0c4e634c44 Add page create and update repo methods. 2016-03-15 22:24:29 +02:00
Andrey Antukh
3353c69a51 Optimize the projects/pages loading. 2016-03-15 21:15:56 +02:00
Andrey Antukh
944ebaa8f7 Add missing projects repository impl. 2016-03-15 21:01:45 +02:00
Andrey Antukh
dac425b414 Remove old time ns. 2016-03-15 21:01:26 +02:00
Andrey Antukh
2742a7a4ec Remove useless println's. 2016-03-15 21:01:07 +02:00
Andrey Antukh
3b2078ac56 Remove useless code from ui/messages. 2016-03-15 21:00:54 +02:00
Andrey Antukh
492b822568 Code reorganization of dashboard/projects page (main page). 2016-03-15 21:00:27 +02:00
Andrey Antukh
5a49b88c60 Integrate workspace and dashboard pages with backend (initial data loading).
This does not includes any crud methods.
2016-03-15 21:00:08 +02:00
Andrey Antukh
7494d4936d Integrate the login page ui with the backend. 2016-03-15 20:58:44 +02:00
Andrey Antukh
6a3e0b7743 Minor cosmetic changes on state management functions for projects. 2016-03-15 20:58:07 +02:00
Andrey Antukh
1e0892f0ee Add missing translation string for auth error. 2016-03-15 20:57:12 +02:00
Andrey Antukh
7ab1474f41 Remove useless import and add missing one on dashboard events. 2016-03-15 20:56:51 +02:00
Andrey Antukh
3e42e95151 Improved go-to event impl. 2016-03-15 20:56:39 +02:00
Andrey Antukh
fd2c27cdd6 Add load-projects and load-pages events. 2016-03-15 20:56:22 +02:00
Andrey Antukh
0ce8059266 Use correct ns for validators on uxbox.data.projects ns. 2016-03-15 20:55:48 +02:00
Andrey Antukh
e631d2a3ef Remove IPrintWritter impl from dashboard events. 2016-03-15 20:55:02 +02:00
Andrey Antukh
7a6bcb5d47 Remove useless imports. 2016-03-15 20:54:36 +02:00
Andrey Antukh
de233cdbf5 Add backend integration for auth (login page). 2016-03-15 20:54:04 +02:00
Andrey Antukh
735ad645f7 Replace postal with latest httpurr snapshot dependency. 2016-03-15 20:53:43 +02:00
Andrey Antukh
09c5e4e3c0 Add initial reposotory abstraction with auth methods. 2016-03-15 20:53:17 +02:00
Andrey Antukh
e9a51c14b8 Minor renames on rstore impl. 2016-03-15 20:52:29 +02:00
Andrey Antukh
abd68ad2e9 Normalize state initialization into uxbox.state ns. 2016-03-15 20:51:51 +02:00
Andrey Antukh
5f5fa2a2d7 Fix login form input text color style. 2016-03-15 20:50:32 +02:00
Andrey Antukh
804816cafb Add lighweight immutable datetime abstraction. 2016-03-15 20:50:03 +02:00
Andrey Antukh
1c0c0f509c Add lightweight transit serialization abstraction. 2016-03-15 20:49:42 +02:00
Andrey Antukh
69d903f5f8 Integrate new messages component on login and dashboard. 2016-03-13 15:12:52 +02:00
Andrey Antukh
8404eafbae Minor fix on messages style. 2016-03-13 15:12:35 +02:00
Andrey Antukh
bbdebfb846 Add initial messages implementation. 2016-03-13 15:09:23 +02:00
elhombretecla
8ec429f0cf changes in settings inputs 2016-03-11 21:39:40 +01:00
elhombretecla
dc66bbba9f add organize layout icons 2016-03-11 21:04:26 +01:00
elhombretecla
755b56e3f9 add visual message notifications 2016-03-11 20:04:28 +01:00
elhombretecla
290e7fdac8 add notification settings layout 2016-03-06 12:14:44 +01:00
elhombretecla
b9d43cce24 add password settings layout 2016-03-06 11:37:16 +01:00
Andrey Antukh
7a732de656 Add missing header to settings ns. 2016-03-04 00:16:58 +02:00
Andrey Antukh
c22b011755 Minor fix on readme. 2016-03-03 23:58:54 +02:00
Andrey Antukh
0d9d2325cc Move doc and docker script out of this repo. 2016-03-03 23:49:31 +02:00
Andrey Antukh
724d5e00d3 Update license field on project.clj. 2016-03-03 23:47:46 +02:00
Andrey Antukh
a192076e0c Remove gulp-clean from dependencies. 2016-03-03 23:47:31 +02:00
elhombretecla
b33ca03af7 create styles for user settings profile 2016-03-03 21:25:19 +01:00
Andrey Antukh
cbad13fc20 Add missing settings ns file. 2016-03-03 20:45:15 +02:00
Andrey Antukh
23ee74977b Add settings section dummy pages. 2016-03-03 20:26:28 +02:00
elhombretecla
53fd03f2a8 start user settings structure 2016-03-02 18:23:58 +01:00
Andrey Antukh
c7fd8570e3 Add line-height, letter spacing and text saving for text shape. 2016-03-02 19:22:40 +02:00
Andrey Antukh
8e5d193518 Add fill menu for text shape. 2016-03-02 18:47:42 +02:00
elhombretecla
a0fbb1ac7c add letter spacing and line height inputs 2016-03-02 17:46:46 +01:00
elhombretecla
a637e33fce fix color palette z-index 2016-03-02 17:29:20 +01:00
Andrey Antukh
a0eea5dfe6 Move colorpalette to the parent dom node. 2016-03-02 18:27:04 +02:00
Andrey Antukh
de1b72d935 Add the rest of the fonts to the collection. 2016-03-02 18:16:43 +02:00
elhombretecla
b6e3a70267 add grid settings lightbox 2016-03-02 17:11:35 +01:00
Andrey Antukh
dce8beab32 Add missing fonts namespace file. 2016-03-02 18:10:55 +02:00
Andrey Antukh
5d66a7e967 Add align facilities. 2016-03-02 18:10:08 +02:00
Andrey Antukh
4499dfc787 Add font rendering to text shape. 2016-03-02 17:58:57 +02:00
Andrey Antukh
22060dbe76 Add license header to scss files. 2016-03-01 20:39:50 +02:00
Andrey Antukh
ea8b0f21f9 Add license header to cljs files. 2016-03-01 20:39:28 +02:00
Andrey Antukh
3f67c5b582 Add LICENSE file. 2016-03-01 20:25:36 +02:00
Andrey Antukh
45e3ecdf83 Add CONTRIBUTING.md file. 2016-03-01 20:25:36 +02:00
Andrey Antukh
30a6ee2c92 Add proper attribution to material design icons.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-03-01 20:25:36 +02:00
elhombretecla
62588620a6 add font collection structure 2016-03-01 19:22:32 +01:00
elhombretecla
5545739c81 add font collection structure 2016-03-01 19:22:32 +01:00
Andrey Antukh
7b05b54307 Update readme. 2016-03-01 19:50:30 +02:00
Andrey Antukh
e8d56bdd5a Add settings lightbox. 2016-03-01 19:23:32 +02:00
Andrey Antukh
f50457db64 Increase the initial scroll to 1200px.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
c787b33c76 Remove unused event handlers on workspace component.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
cf817d4c8b Remove debug messages (added in previous commits).
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
ffaca0f459 Add lock mode for mouse resize interaction.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
5c7188eeba Fix outer-rect impl for rect like shapes.
Now is again aware of rotation value.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
99da1c21d1 Add resize using mouse and vertext handlers.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
4dd97ca8ab Adapt the rest of the platform for actions api changes.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
Andrey Antukh
5d5a0c9ea0 Add the ability to actions subsystem pass payload.
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2016-02-29 23:10:14 +02:00
elhombretecla
70d126acb5 add clipboard styles 2016-02-28 18:30:22 +01:00
Andrey Antukh
8752f9864d Remove autogenerated index file. 2016-02-28 11:46:13 +02:00
Andrey Antukh
0cf5c4ab9b Split data.workspace shape related events to separated ns. 2016-02-28 11:43:52 +02:00
Andrey Antukh
c97204bd13 Add autogenerated index.html to .gitignore 2016-02-28 11:43:52 +02:00
Andrey Antukh
79e464d140 Fix broken import of uxbox.util.time. 2016-02-28 11:43:52 +02:00
Andrey Antukh
296da1df0b Initial work on state management logic for clipboard. 2016-02-28 11:43:52 +02:00
Andrey Antukh
e26de8ce3b Move time ns to utils.time. 2016-02-28 11:43:52 +02:00
elhombretecla
590b3b3b5c add text options styles 2016-02-28 10:41:55 +01:00
Andrey Antukh
f00c322689 Add template compilation to the gulp pipeline.
Just for avoid cache problems in production.
2016-02-28 10:12:25 +02:00
Andrey Antukh
a9186bfbaa Simplified outer rect calculation. 2016-02-28 09:28:21 +02:00
Andrey Antukh
11e399ae21 Add method and state for manage the clipboard. 2016-02-27 21:18:51 +02:00
Andrey Antukh
c2821ea617 Remove missing :key waring on recent colors. 2016-02-27 21:12:52 +02:00
Andrey Antukh
abed5dd35d Initial work on fontSize rendering on text shapes. 2016-02-27 21:12:40 +02:00
Andrey Antukh
016b43e1a5 Simplified rendering of options toolbox. 2016-02-27 18:21:20 +02:00
Andrey Antukh
3d8fb7f116 Initial work on text element options. 2016-02-27 16:59:58 +02:00
Andrey Antukh
08b99e9a4b Add default :solid stroke type to line draw tool. 2016-02-27 15:27:21 +02:00
Andrey Antukh
d7a568a685 Restore show/hidden functionality. 2016-02-27 15:27:04 +02:00
Andrey Antukh
9d498dfaf9 Add correct stroke styles and fix wrong behavior. 2016-02-27 15:16:54 +02:00
Andrey Antukh
91551044d0 Rename missing "-" prefixed api on shapes. 2016-02-27 14:58:10 +02:00
Andrey Antukh
4cb0aa00fb Improved edition text handler. 2016-02-27 14:51:35 +02:00
Andrey Antukh
e30cfc3b76 Add faster movement shortcuts. 2016-02-27 14:51:16 +02:00
Andrey Antukh
39850689fa Release also the selrect lock on mouse is up on shape. 2016-02-27 14:12:32 +02:00
Andrey Antukh
2a0918a567 Improved actions locking for better user experience. 2016-02-27 14:10:18 +02:00
Andrey Antukh
94e22902f0 Initial (buggy) implementation of text drawing tool. 2016-02-27 13:49:26 +02:00
Andrey Antukh
b3ec87d0f4 Add more heigh for draw tools sidebar. 2016-02-27 13:48:46 +02:00
Andrey Antukh
0111b5d3e7 Replace cats.labs.lens with lentes package. 2016-02-27 11:27:28 +02:00
Andrey Antukh
80a8e0a7bd Fix order of shapes rendering in canvas. 2016-02-27 11:15:30 +02:00
Andrey Antukh
e2af1a451b Implement properly the multiselection handler. 2016-02-26 20:04:08 +02:00
Andrey Antukh
1a44b75790 Rename shapes api. 2016-02-26 19:52:48 +02:00
Andrey Antukh
1572c4cdd3 Complete refactor of shapes rendering. 2016-02-26 19:42:53 +02:00
Andrey Antukh
2fed551cf1 Add equality check for local mixin for avoid rerenders. 2016-02-26 19:39:37 +02:00
Andrey Antukh
dae971a96c Remove useles parameter. 2016-02-24 22:11:33 +02:00
Andrey Antukh
5cc367f7f2 Add more tests to drop-shape function. 2016-02-24 22:11:33 +02:00
Andrey Antukh
aad8902173 Add !important to some styles related to drang and drop. 2016-02-24 22:11:33 +02:00
Andrey Antukh
05a0dc95dd Improve performance on rules rendering. 2016-02-24 22:11:33 +02:00
Juan de la Cruz
bedec4f68e chnage options icon at tool windos 2016-02-24 19:39:55 +01:00
Andrey Antukh
1b2a75ab25 Fixed an other bug related to auth data management. 2016-02-24 18:01:22 +02:00
Andrey Antukh
4215429944 Fix constant login redirect on page refresh. 2016-02-24 17:42:05 +02:00
Andrey Antukh
c4ddb9e529 Add login component. 2016-02-24 17:26:23 +02:00
Andrey Antukh
660885a0c0 Show proper user info on user part on header. 2016-02-24 17:26:23 +02:00
Andrey Antukh
892b474e8b Add logout interaction to the user menu on header. 2016-02-24 17:26:23 +02:00
Andrey Antukh
d6000b0f4a Add auth related events namespace. 2016-02-24 17:26:23 +02:00
Andrey Antukh
7aaf894a98 Add initial approach for client-server communication. 2016-02-24 17:26:23 +02:00
Andrey Antukh
41dac4bc7d Add authentication logic to the ui routing. 2016-02-24 17:26:23 +02:00
Andrey Antukh
7318205b88 Cosmetic changes on state init fn. 2016-02-24 17:26:23 +02:00
Andrey Antukh
fc6d25767d Add :auth to default state. 2016-02-24 17:26:23 +02:00
Andrey Antukh
3ed3219c7f Add cosmetic changes to rstore stream loop impl. 2016-02-24 17:26:23 +02:00
Andrey Antukh
2fd5760aeb Add email and string validators to schema ns. 2016-02-24 17:26:23 +02:00
Andrey Antukh
cf905d77b1 Remove useless print impl for rstore basic events. 2016-02-24 17:26:23 +02:00
Andrey Antukh
e59605ec11 Add implementation of UpdateEvent for function.
Just for make easy implement pure state transformation
events just using plain functions, without reify.
2016-02-24 17:26:23 +02:00
Andrey Antukh
b3f3d51dae Improved routing (now using volatile instead direct mutation). 2016-02-24 17:26:23 +02:00
Andrey Antukh
94bdf67c17 Add :auth key on the load data pipeline. 2016-02-24 17:26:23 +02:00
Andrey Antukh
94203d907e Add auth to the persistente vector.
With minor mostly cosmetic changes in the ns.
2016-02-24 17:26:23 +02:00
Andrey Antukh
e964ef9bef Add postal 0.3.0 dependency. 2016-02-24 17:26:23 +02:00
Juan de la Cruz
1ba4419eb0 fix options border styles 2016-02-24 16:04:19 +01:00
Juan de la Cruz
5894f1d268 remove subelement icon 2016-02-24 15:48:19 +01:00
Andrey Antukh
ec02d5868c Fix scss watcher. 2016-02-24 16:45:49 +02:00
Juan de la Cruz
bbd2fccf11 See layers/groups like a tree in the layers toolbox 2016-02-24 15:41:40 +01:00
Juan de la Cruz
93028e9161 add WIP document history pinned tab 2016-02-24 15:25:59 +01:00
Juan de la Cruz
43ef168d0b fix sitemap btn bug 2016-02-23 22:12:53 +01:00
Andrey Antukh
bd4b8d3354 Add clipboard dummy lightbox. 2016-02-23 18:57:16 +02:00
Andrey Antukh
ffbaf87cf5 More fixes on deploy scripts. 2016-02-21 20:50:26 +02:00
Andrey Antukh
ce2ac6fe47 More improvements to deploy tasks. 2016-02-21 20:42:01 +02:00
Andrey Antukh
0b1f831efc Remove deprecated pages management component code. 2016-02-21 20:33:54 +02:00
Andrey Antukh
a2af628a14 Add interaction to new sitemap markup. 2016-02-21 20:32:27 +02:00
Andrey Antukh
6f23272c63 Remove unused lenses related code from utils ns. 2016-02-21 20:32:09 +02:00
Andrey Antukh
43d7a5cec2 Improve workspace common lenses. 2016-02-21 20:31:49 +02:00
Andrey Antukh
e73ffddb50 Remove commented code. 2016-02-21 20:31:28 +02:00
Andrey Antukh
d75e1a5a85 Set proper default value for workspace initial state. 2016-02-21 20:31:07 +02:00
Andrey Antukh
411e6e4cff Minor changes on router. 2016-02-21 20:30:59 +02:00
Andrey Antukh
fd6395fcd4 Improve workspace initialization. 2016-02-21 20:30:20 +02:00
Andrey Antukh
9d19acfeb3 Fix imports on load ns. 2016-02-21 20:29:35 +02:00
Andrey Antukh
190aced819 Move state related helpers out of data.* namespaces. 2016-02-21 20:29:10 +02:00
Andrey Antukh
15bd7b0939 Add tab interaction to history sidebar. 2016-02-21 18:14:46 +02:00
Andrey Antukh
85d7adb8c5 Remove unused file. 2016-02-21 18:01:49 +02:00
Andrey Antukh
2635f30eea Add proper clean task. 2016-02-21 18:01:27 +02:00
Andrey Antukh
64199f911b Use favicon for temporal user avatar. 2016-02-21 17:41:53 +02:00
Andrey Antukh
c7e09dc13d Setup advanced compilation on dist. 2016-02-21 17:41:40 +02:00
Andrey Antukh
6113e2e842 Change user logo url. 2016-02-21 17:28:22 +02:00
Andrey Antukh
2aa95a3467 Prepare scripts for deploy. 2016-02-21 16:42:35 +02:00
Andrey Antukh
e2be16a421 Move source styles out of public directory. 2016-02-21 16:23:47 +02:00
Andrey Antukh
9147f62c0a Rename document-history.cljs to document_history.cljs 2016-02-21 16:23:23 +02:00
Andrey Antukh
ebd835a8a9 Remove clean task. 2016-02-21 16:14:55 +02:00
Juan de la Cruz
7bcd2631bb add correct favicon 2016-02-21 12:50:24 +01:00
Juan de la Cruz
b16f532180 merge favicon 2016-02-21 12:47:01 +01:00
Andrey Antukh
f9c6209562 Add favicon. 2016-02-21 10:22:50 +02:00
Juan de la Cruz
26247f86da add document history styles 2016-02-20 23:45:35 +01:00
Juan de la Cruz
482bf4e5e1 add document history clojure structure 2016-02-20 23:04:06 +01:00
Juan de la Cruz
f3d268a764 fix element title bug 2016-02-20 22:30:33 +01:00
Juan de la Cruz
8f17ee1fc5 box size refactor 2016-02-20 22:26:07 +01:00
Juan de la Cruz
1c168234b8 add new options and history icons 2016-02-20 21:41:49 +01:00
Juan de la Cruz
00df437c5d change add btn color again 2016-02-20 21:14:37 +01:00
Juan de la Cruz
a47ef45905 change add btn color 2016-02-20 21:11:44 +01:00
Juan de la Cruz
0f10ce3a70 add sitemap new styles 2016-02-20 21:09:03 +01:00
Juan de la Cruz
8d4e14710b reestructure themes styles 2016-02-20 10:15:49 +01:00
Andrey Antukh
6226c7f93b Fix wrong behavior on canvas position translation.
The translation was not aware of bounding rect size
increment when shapes are out of main drawing zone.
2016-02-19 22:33:10 +02:00
Andrey Antukh
e104386398 Fix race condition on points translation.
This happens sometimes on first workspace load.
2016-02-19 21:53:41 +02:00
Andrey Antukh
52f52a5d40 Add rotatation transformation for rect and circles. 2016-02-19 21:53:25 +02:00
Andrey Antukh
6d980893b9 Add .nvmrc file. 2016-02-19 21:22:28 +02:00
Andrey Antukh
dee53bb1c4 Update dependencies. 2016-02-19 21:22:14 +02:00
Andrey Antukh
e57d04f607 Fix other tests. 2016-02-19 21:09:37 +02:00
Andrey Antukh
747c9b45aa Add full implementation of duplicate shape action. 2016-02-19 21:09:37 +02:00
Juan de la Cruz
e7ddd65ee2 add new color theme variables 2016-02-19 19:41:33 +01:00
Andrey Antukh
ab2b4f7caa Update dependencies. 2016-02-19 18:47:21 +02:00
Andrey Antukh
1342dd3f3a Do not render active menu when no menu is availabe (element options). 2016-02-18 22:44:20 +02:00
Andrey Antukh
34acbfa23e Minor translation string change. 2016-02-18 22:44:02 +02:00
Andrey Antukh
b3c1cedcc8 Show the drawtools first on right sidebar. 2016-02-18 22:43:42 +02:00
Andrey Antukh
4ce19bd5f1 Add button for toggle element options sidebar toolbox. 2016-02-18 22:42:32 +02:00
Andrey Antukh
0040fea032 Add proper label to draw tools. 2016-02-18 22:40:04 +02:00
Andrey Antukh
a5c94bd34c Add missing tr string for element options. 2016-02-18 22:24:08 +02:00
Andrey Antukh
9c72cd8a3d Add static mixin to shape componet.
Improves dramatically the rendering performance
for huge number of objects.
2016-02-18 22:21:39 +02:00
Andrey Antukh
2d344f4701 Add behaviour to duplicate button on layers sidebar. 2016-02-18 22:21:39 +02:00
Juan de la Cruz
bf44c61020 create new styles for sidebar element options 2016-02-18 21:08:17 +01:00
Andrey Antukh
a312559b26 Add basic shape duplicate functionality. 2016-02-18 21:56:40 +02:00
Andrey Antukh
f8aaba6f31 Get precision bug on mouse stream on workspace. 2016-02-18 21:30:35 +02:00
Andrey Antukh
36dd831a69 Fix unexpected exception on workspace load...
... when the user access it from dashboard.
2016-02-18 21:20:31 +02:00
bb1222116d Merge pull request #2 from uxbox/sort-and-filter-projects
Sort and filter projects
2016-02-18 20:19:42 +01:00
Juan de la Cruz
ca26cb2eeb minor fix in dropdown menu 2016-02-18 19:27:36 +01:00
Andrey Antukh
80385e21a7 Move coordinates widget to header. 2016-02-18 19:08:26 +02:00
Andrey Antukh
3827ecb5b7 Add grab icon on scroll is performed on workspace. 2016-02-18 19:03:11 +02:00
Andrey Antukh
5ce3812e8b Add vertical rule on scroll interaction. 2016-02-18 18:19:31 +02:00
Juan de la Cruz
3cd089bad8 fix select input style bug 2016-02-18 17:06:08 +01:00
Andrey Antukh
89baabbb62 Minor refactor on horizontal rules rendering. 2016-02-18 18:05:14 +02:00
Andrey Antukh
b2da09f0c1 Add top-rule interaction on scroll. 2016-02-18 18:05:14 +02:00
Juan de la Cruz
02db77dea7 fix settings bar flex problem 2016-02-18 16:54:43 +01:00
Alejandro Gómez
36051f40dd I18N-ize search placeholder 2016-02-18 16:40:48 +01:00
Juan de la Cruz
5d0e57acb7 add projects search styles 2016-02-18 16:33:54 +01:00
Alejandro Gómez
b131dea579 Fix project ordering 2016-02-17 20:12:21 +01:00
Alejandro Gómez
9ede688b6e Extract event handlers to local bindings 2016-02-17 20:11:24 +01:00
Alejandro Gómez
1258d954d0 Don't filter by whitespace 2016-02-17 20:06:59 +01:00
elhombretecla
be1a55f999 sketch new color theme variables 2016-02-17 19:58:38 +01:00
Andrey Antukh
5653a15ad5 Fix rules/scroll related issues. 2016-02-17 20:52:07 +02:00
Alejandro Gómez
33cc0fe925 Project search, needs UX/UI review 2016-02-17 19:50:08 +01:00
Alejandro Gómez
0551e1729a Project ordering 2016-02-17 19:08:35 +01:00
Alejandro Gómez
7830c11a16 Show project count in dashboard 2016-02-17 13:43:00 +01:00
Alejandro Gómez
3a31abac5a Support 0, 1 or more in plural translations 2016-02-17 13:43:00 +01:00
Juan de la Cruz
773f67b09b color and visual refactor 2016-02-17 09:59:18 +02:00
Andrey Antukh
77fafa85ad Move element options to sidebar. 2016-02-16 21:09:13 +02:00
Andrey Antukh
61e0f6fa10 Remove some commented code. 2016-02-16 20:39:34 +02:00
Andrey Antukh
94c7f0df98 Move viewport scroll pressing space. 2016-02-16 20:38:04 +02:00
Andrey Antukh
674136bcab Fix canvas selrect selection. 2016-02-16 20:04:42 +02:00
Andrey Antukh
a55d3655cf Remove debug printlns from draw ns. 2016-02-16 19:55:18 +02:00
Andrey Antukh
8f078876f0 Remove unused code from selrect. 2016-02-16 19:55:00 +02:00
Andrey Antukh
5a73a4f198 Move the mouse stream generation under viewport. 2016-02-16 19:54:04 +02:00
Andrey Antukh
c7a38113a1 Refactor basic mouse streams and atoms on workspace/base. 2016-02-16 19:53:29 +02:00
Andrey Antukh
2982f347a4 Move selrect styles under viewport. 2016-02-16 19:52:50 +02:00
Andrey Antukh
a49e0c2f84 More work on scroll/position of workspace fixing. 2016-02-15 23:28:44 +02:00
Andrey Antukh
6235e9c86e Make the workspace canvas bigger and center the drawing layout. 2016-02-15 22:59:08 +02:00
Andrey Antukh
6d8ae401f3 Minor changes on rules. 2016-02-15 22:58:58 +02:00
Andrey Antukh
c2fb18a2df Make aware of scroll the selrect component. 2016-02-15 22:58:33 +02:00
Andrey Antukh
f36a61dcc6 Rename scroll atom to scroll-a on workspace/base and all affected code. 2016-02-15 22:57:36 +02:00
Andrey Antukh
f28a6e4138 Remove println. 2016-02-15 22:56:26 +02:00
Andrey Antukh
9a4b6ab417 Improved coordenates component. 2016-02-15 22:56:15 +02:00
Andrey Antukh
5e732a4d20 Emit point instances on scroll stream. 2016-02-15 22:55:43 +02:00
Andrey Antukh
547c2335ef Minor reorganization on workspace canvas styles. 2016-02-15 22:55:18 +02:00
Andrey Antukh
0f6c8fbb44 Minor change on project.clj 2016-02-15 22:54:25 +02:00
elhombretecla
1b4ac74118 change window icons 2016-02-14 20:42:38 +01:00
elhombretecla
54d1d750e9 restructure settings bar styles 2016-02-14 20:37:09 +01:00
Andrey Antukh
fefd863957 Add missing cats dep. 2016-02-14 19:30:51 +02:00
Andrey Antukh
8ec8e652cb Add sitemap. 2016-02-14 19:24:39 +02:00
Andrey Antukh
b5176fe7a1 Fix selected class on new buttons on header. 2016-02-12 18:52:31 +02:00
Andrey Antukh
5e8f741c2f Improved rules positioning. 2016-02-12 18:50:51 +02:00
Andrey Antukh
e6e7115e14 Fix rules with new layout. 2016-02-12 18:41:20 +02:00
Andrey Antukh
b15dfe953d Remove toolbox concept and implement all toolbox state as flags. 2016-02-12 18:41:20 +02:00
Andrey Antukh
5b04ef5d98 Remove padding on vertical rule on workspace. 2016-02-12 18:41:20 +02:00
Andrey Antukh
aed8560adf Remove lateral menu namespace. 2016-02-12 18:41:20 +02:00
elhombretecla
25a4e7b68c changes in sitemap btn 2016-02-12 18:41:20 +02:00
elhombretecla
371eff5047 changes styles for main icon 2016-02-12 18:41:20 +02:00
elhombretecla
3cae356f93 changes styles for the left sidebar 2016-02-12 18:41:20 +02:00
elhombretecla
35a1e9ceb3 change label and shortcut to main interactions 2016-02-12 18:41:20 +02:00
elhombretecla
eedbb3cbb6 add main interactions to workspace-bar 2016-02-12 18:41:20 +02:00
Andrey Antukh
f14e82291f First work on layout refactor. 2016-02-12 18:41:10 +02:00
Juan de la Cruz
bae17d11d5 add pin icon 2016-02-11 18:33:12 +01:00
Juan de la Cruz
11d08d6a24 changes in ruler 2016-02-10 13:35:24 +01:00
Juan de la Cruz
a3b97e8998 change ruler degrees 2016-02-07 18:33:38 +01:00
Andrey Antukh
8d82c59453 Remove old matrix/svg transformation code. 2016-02-06 18:02:46 +02:00
Andrey Antukh
6d89c573a6 Normalize coordinates on shapes. 2016-02-06 17:39:37 +02:00
Andrey Antukh
6f2a22062b Add append operation to matrix ns. 2016-02-06 17:38:34 +02:00
Andrey Antukh
9bfe24e477 Fix bugs on scale and rotate opetation over matrix. 2016-02-06 17:38:06 +02:00
Andrey Antukh
5df6e6397d Fix deref impl on matrix. 2016-02-06 17:37:26 +02:00
Andrey Antukh
5d5b84a0a1 Adapt the application to use the new point abstraction. 2016-02-06 12:29:00 +02:00
Andrey Antukh
b102c19ea7 Minor fixes and improvements to point geom impl. 2016-02-06 12:25:39 +02:00
Andrey Antukh
6a1dad581e Disable var and ns clash warning. 2016-02-06 12:24:47 +02:00
Andrey Antukh
670446e209 Add missing test for scale and translate matrix methods. 2016-02-05 18:26:37 +02:00
Andrey Antukh
f406ec2621 Add missing arity for transform method. 2016-02-05 18:26:24 +02:00
Andrey Antukh
1abc0e4239 Replace :whitespace optimization with :none
Because :whitespace is not compatible with nodejs target.
2016-02-04 23:09:27 +02:00
Andrey Antukh
0a64ff9ef3 Replace advanced optimizations with whitespace on tests. 2016-02-04 23:06:26 +02:00
Andrey Antukh
a42f814352 Add travis badge to readme. 2016-02-04 23:04:38 +02:00
Andrey Antukh
2e9a5f0a36 Add new (more performant) matrix impl and initial work on tests. 2016-02-04 23:03:07 +02:00
Andrey Antukh
b484dff945 Add geom tests to the test runner. 2016-02-04 22:47:19 +02:00
Andrey Antukh
996770a625 Add missing math functions. 2016-02-04 22:47:19 +02:00
Andrey Antukh
0f16e1d1cb Add geom:point tests. 2016-02-04 22:47:19 +02:00
Andrey Antukh
1ba2b26cc9 Add new geom point implementation with basic operations. 2016-02-04 22:47:19 +02:00
Juan de la Cruz
0bb8b0c3bc add correct undo history icon 2016-02-03 21:05:54 +01:00
Andrey Antukh
12a2da7c56 Fix stroke and color change bug. 2016-02-03 19:20:40 +02:00
Andrey Antukh
fb2fa605d2 Fix color palette. 2016-02-03 19:11:42 +02:00
Andrey Antukh
ae31dc5aba Remove styles from svg icon rendering on layers toolbox. 2016-02-03 18:24:18 +02:00
Andrey Antukh
c85a25b75e Fix recent colors. 2016-02-03 18:22:29 +02:00
Juan de la Cruz
c6ee3e46f6 add undo history icon 2016-02-03 17:10:44 +01:00
Andrey Antukh
7aa3bb01a9 Improve drag experience. 2016-02-03 18:07:47 +02:00
Andrey Antukh
4bec35869c Render shapes in reversed order. 2016-02-03 18:07:47 +02:00
Juan de la Cruz
aca9700baf fix colorpicker bar height bug 2016-02-03 16:24:41 +01:00
Andrey Antukh
9a1ed2bb9b Use shift modifier instead ctrl for multiple selection in canvas. 2016-02-03 17:23:37 +02:00
Andrey Antukh
615aeea576 Add delete shape tests.
And general test format change.
2016-02-03 17:19:42 +02:00
Andrey Antukh
aaf27ed6a8 Add locking mode for rect and circle rendering. 2016-02-03 17:07:47 +02:00
Andrey Antukh
25d4297df5 Move some logic from events to state management. 2016-02-03 17:07:18 +02:00
Andrey Antukh
48af590bd8 More improvements to the test runner. 2016-02-02 22:04:45 +02:00
Andrey Antukh
b2e86675b3 Minor fix on .travis.yml file. 2016-02-02 21:47:32 +02:00
Andrey Antukh
cb3b5d45f6 Add .travis.yml file. 2016-02-02 21:45:51 +02:00
Andrey Antukh
bae3d7d9ef Minor renaming. 2016-02-02 21:34:47 +02:00
Andrey Antukh
787a31ac4d Tests are coming. 2016-02-02 21:33:32 +02:00
Andrey Antukh
e8b46229ee Minor fixes on layers drag and drop on layers toolbox. 2016-02-02 21:33:04 +02:00
Andrey Antukh
544cb6a226 Move delete-shape and transfer-shape logic into specific namespace. 2016-02-02 21:32:17 +02:00
Andrey Antukh
a0bba85ca9 Update package.json, add shrinkwrap and add temporal license file. 2016-02-02 18:18:59 +02:00
Andrey Antukh
d238166405 Add the final layouts drag and drop impl. 2016-02-01 23:25:37 +02:00
Andrey Antukh
2b74c34c00 Add drag and drop utils. 2016-02-01 23:25:23 +02:00
Andrey Antukh
6024674182 Move uxbox.ui.dom to uxbox.util.dom. 2016-02-01 20:45:59 +02:00
Andrey Antukh
c9e71539cb More work on drag and drop of layers. 2016-02-01 20:35:55 +02:00
Andrey Antukh
811f47f929 Add naive impl for transfer/move shapes (in drag and drop). 2016-02-01 19:48:55 +02:00
Andrey Antukh
45caf5cdda Add index-of and classnames util functions. 2016-02-01 19:47:44 +02:00
Andrey Antukh
774c395a7f Keep ruler active until an other click. 2016-01-31 17:41:23 +02:00
Andrey Antukh
e727c124c7 Minor fix on ruler ctrl mode. 2016-01-31 17:38:57 +02:00
Andrey Antukh
bafc486401 Add ctrl variation of the ruler. 2016-01-30 20:32:16 +02:00
Andrey Antukh
e84246aecd Add mouse-ctrl stream and improve general stream performance. 2016-01-30 20:24:19 +02:00
Andrey Antukh
4cf702fb0b Improved impl of ruler. 2016-01-30 20:19:29 +02:00
Andrey Antukh
36f1690120 Add distance function to math ns. 2016-01-30 20:18:51 +02:00
Andrey Antukh
c3ddf2ad32 Add absolute mouse position stream. 2016-01-30 20:18:31 +02:00
Andrey Antukh
0b5de2d2b8 Add ctrl? predicate to keyboard ns. 2016-01-30 20:18:15 +02:00
Andrey Antukh
3dd0d840d9 Minor code cleaning. 2016-01-30 19:38:34 +02:00
Andrey Antukh
24ae745da0 Add quick & dirty impl of ruler. 2016-01-30 19:05:33 +02:00
Andrey Antukh
73260b53f1 Add more functions to math ns. 2016-01-30 19:05:12 +02:00
Andrey Antukh
11249245ae Minor fixes on options. 2016-01-30 19:04:48 +02:00
Andrey Antukh
5ce1728e5e Minor cosmetic fox on layers toolbox. 2016-01-30 13:57:23 +02:00
Andrey Antukh
1f22b424f5 Fixed selection positioning with neested groups. 2016-01-30 13:50:37 +02:00
Andrey Antukh
17597ced08 Add missing -move impl for group. 2016-01-30 13:49:48 +02:00
Andrey Antukh
e1a15aed9a More work on element options. 2016-01-30 12:02:21 +02:00
Andrey Antukh
43b6056c1e Improved naming. 2016-01-30 11:34:27 +02:00
Andrey Antukh
3cf5a4a4cf Initial work on element options improvement. 2016-01-30 00:54:12 +02:00
Andrey Antukh
3b4224586f Allow only create groups from valid selection. 2016-01-30 00:13:30 +02:00
Andrey Antukh
949b522ba0 Comment broken copy event. 2016-01-30 00:13:16 +02:00
Andrey Antukh
deb38435fd Remove empty groups. 2016-01-30 00:13:07 +02:00
Andrey Antukh
07359752ff Improved blocking/unblocking shapes on layers toolbox. 2016-01-29 21:44:53 +02:00
Andrey Antukh
18b07d509c Minor improvements on color picker gradients. 2016-01-29 21:15:25 +02:00
Andrey Antukh
9adc366a09 Improved color picker. 2016-01-29 20:42:22 +02:00
Andrey Antukh
80faecb9f4 Fix bug on recent colors finder. 2016-01-29 20:07:35 +02:00
Andrey Antukh
e51adc2b5f Minor renaming for consistency. 2016-01-29 20:07:20 +02:00
Andrey Antukh
879cb09be1 Minor improvements on initial values of draw tools. 2016-01-29 19:49:17 +02:00
Andrey Antukh
009d27b23d Add circle/elipse rendering. 2016-01-29 19:49:08 +02:00
Andrey Antukh
bbca48a7a2 Add absolute move abstraction. 2016-01-29 19:48:34 +02:00
Andrey Antukh
00cc51c6d3 Add rect rendering. 2016-01-29 00:55:56 +02:00
Andrey Antukh
b4b98428d4 Add better type hierarchy. 2016-01-29 00:50:26 +02:00
Andrey Antukh
c4b7eb0368 Performance improvements on attrs transformations on render. 2016-01-29 00:36:36 +02:00
Andrey Antukh
e077ffc553 Fix colorpicker. 2016-01-29 00:36:36 +02:00
Andrey Antukh
df08ed6dd2 Fix selrect position for group of lines. 2016-01-29 00:09:36 +02:00
Andrey Antukh
55fd2ae629 Revert some changes. 2016-01-29 00:04:22 +02:00
Andrey Antukh
bcda09ed41 Minor fix on drawing selection rect for group. 2016-01-28 23:38:48 +02:00
Andrey Antukh
af8873470c Add basic impl for change the stroke type. 2016-01-28 23:28:37 +02:00
Andrey Antukh
c2724bca5d Fix menu names indexes. 2016-01-28 20:34:03 +02:00
Andrey Antukh
e595d6b85e Minor fixes on group-selected event. 2016-01-28 20:34:03 +02:00
Andrey Antukh
f207136937 Comment temporary the copy-selected event (because is broken). 2016-01-28 20:34:03 +02:00
Andrey Antukh
e96eb76d84 Add support for line rendering. 2016-01-28 20:27:15 +02:00
Andrey Antukh
32b7bfe383 Reimplemented the draw shapes/icons. 2016-01-28 20:26:08 +02:00
Andrey Antukh
28047aa64d Stop using group-dimensions on groupe creation. 2016-01-28 20:24:46 +02:00
Andrey Antukh
462b9681e1 Minor ns renaming. 2016-01-28 20:23:05 +02:00
Andrey Antukh
bc756337cd Move the shape initialization out of add-shape event. 2016-01-28 20:22:09 +02:00
Andrey Antukh
3ae0306632 Update beicon to 0.6.1. 2016-01-28 20:21:27 +02:00
elhombretecla
235373b1db add color picker bar for element options 2016-01-28 11:27:09 +01:00
Andrey Antukh
e1780977af Merge pull request #1 from uxbox/delete-project
Project deletion
2016-01-28 10:57:21 +02:00
Alejandro Gómez
5dfc0cb340 Project deletion 2016-01-28 09:45:04 +01:00
Andrey Antukh
78e05f2d40 Remove debug msg. 2016-01-27 19:22:47 +02:00
Andrey Antukh
76cd1a48b8 Refactor interactions in workspace. 2016-01-27 19:22:47 +02:00
Andrey Antukh
de5036bc9b Minor code reorg on workspace base ns. 2016-01-27 19:22:47 +02:00
Andrey Antukh
77ec0e86d2 Move selrect and selection components under own namespace. 2016-01-27 19:22:47 +02:00
Juan de la Cruz
6aef94418b add correct border radius inputs 2016-01-25 19:54:28 +01:00
Juan de la Cruz
1d205384fc add provisional fix to tool bar 2016-01-25 19:34:31 +01:00
Andrey Antukh
943556186f Improved layers toolbox rendering. 2016-01-25 18:34:05 +02:00
Andrey Antukh
08d9dc556b Use proper function for calculate the options position. 2016-01-25 18:33:32 +02:00
Andrey Antukh
bdb0738a1b Remove duplicated lense from canvas ns. 2016-01-25 18:33:06 +02:00
Andrey Antukh
3917feb664 Make shape types hierarchy as public. 2016-01-25 18:32:32 +02:00
Andrey Antukh
3c5ac2d94c Reimplement the group rendering. 2016-01-25 18:32:17 +02:00
elhombretecla
a57c8d982c add content group drag styles 2016-01-24 18:52:09 +01:00
elhombretecla
0e30df5e46 add ungroup icon 2016-01-24 18:34:38 +01:00
Andrey Antukh
d4e6471d11 Continue work on draw tools. 2016-01-24 13:13:48 +02:00
Andrey Antukh
f17da9cb46 Add basic figures rendering. 2016-01-24 10:31:17 +02:00
Andrey Antukh
46d6ef2a68 Initial work on basic shapes rendering. 2016-01-24 02:25:49 +02:00
Andrey Antukh
80cbddcc4a Add menu definition for rect shape. 2016-01-24 02:25:32 +02:00
Andrey Antukh
832d457481 Add :builtin/rect rendering. 2016-01-24 02:25:17 +02:00
Andrey Antukh
780f445f4a Add more shape types. 2016-01-24 02:25:00 +02:00
Andrey Antukh
f55d0f9f93 Add more translation strings. 2016-01-24 02:24:50 +02:00
Andrey Antukh
399eeabda5 Fix file name of drawtools toolbox ns. 2016-01-24 01:08:09 +02:00
Andrey Antukh
82b658e7fe Remove any reference to the obsolete icon-svg type. 2016-01-24 01:05:55 +02:00
Andrey Antukh
388947d485 Add translation strings to recent colors component. 2016-01-24 00:52:50 +02:00
Andrey Antukh
9e72dbb0a0 Add stroke colors into recent colors summary. 2016-01-24 00:52:34 +02:00
Andrey Antukh
3fbe465b99 Fix selrect bug with grouped shapes. 2016-01-24 00:39:21 +02:00
Andrey Antukh
708305c66d Rewritten the group-selected event. 2016-01-24 00:37:22 +02:00
Andrey Antukh
746a8196ba Minor cosmetic changes. 2016-01-23 23:13:43 +02:00
Andrey Antukh
ee4e8d30b5 Remove unused function on svg ns. 2016-01-23 22:12:06 +02:00
Andrey Antukh
daa09627c8 Improve naming in some function on svg ns. 2016-01-23 22:12:06 +02:00
Andrey Antukh
795b32c4b4 Add precision helper on math ns. 2016-01-23 22:12:06 +02:00
Andrey Antukh
48b38281a6 Start using outer-rect function on selrect component. 2016-01-23 22:12:06 +02:00
Andrey Antukh
847075cdc8 Add outer-rect function helper. 2016-01-23 22:12:06 +02:00
Andrey Antukh
59af707143 Add polymorphic impl for -outer-rect calculation. 2016-01-23 22:12:06 +02:00
Andrey Antukh
42d818138a Minot cosmetic fix on return values. 2016-01-23 22:12:06 +02:00
Andrey Antukh
b6f459372b Start using apply-rotation in the container-rect function. 2016-01-23 22:12:06 +02:00
Andrey Antukh
a1ee857caa Add explicit function for apply rotation. 2016-01-23 22:12:06 +02:00
Andrey Antukh
7301a774a4 Add some commented code. 2016-01-23 22:12:06 +02:00
Andrey Antukh
16a4d4c8b4 Improved delete-shape event. 2016-01-23 22:12:06 +02:00
elhombretecla
d74d2d7295 minor layer group fixes and styles 2016-01-23 20:10:26 +01:00
Andrey Antukh
7ac2ae8af6 Add locking interaction impl on layers toolbox. 2016-01-22 19:39:07 +02:00
Andrey Antukh
42073077ee Improved shape component for proper handle shapes in groups. 2016-01-22 19:38:44 +02:00
Andrey Antukh
84d87dcc4f Fix wrong stata querying on shape moviment streams. 2016-01-22 19:38:14 +02:00
Andrey Antukh
6ee5d08086 Add shapes-by-id common lense to workspace.base ns. 2016-01-22 19:37:40 +02:00
Andrey Antukh
46bc9930f7 Improve shape rendering function signature. 2016-01-22 19:37:20 +02:00
Andrey Antukh
d73781f51c Make translate-coords parametrizable with operation. 2016-01-22 19:36:47 +02:00
Andrey Antukh
f4ba1f4fdb Reimplement deselect-all event. 2016-01-22 19:36:35 +02:00
Andrey Antukh
4b6ad74f6b Add toggle shape locking event. 2016-01-22 19:36:23 +02:00
Andrey Antukh
c3105fd698 Add rebuild group size event. 2016-01-22 19:36:06 +02:00
Andrey Antukh
c6051f226d Add FIXME comment. 2016-01-22 19:35:48 +02:00
Andrey Antukh
8e0e725d80 Fix wrong function call. 2016-01-22 19:35:34 +02:00
Andrey Antukh
a2da98f7ab Move some functions from data.workspace to shapes ns. 2016-01-22 19:35:13 +02:00
Andrey Antukh
8284f0141c Update dependencies. 2016-01-22 19:34:46 +02:00
Andrey Antukh
073281f2fa Add hide functionality to group members. 2016-01-21 18:31:34 +02:00
Juan de la Cruz
970074d7d6 Layout Shape resize controls 2016-01-21 08:03:39 +01:00
Juan de la Cruz
c2bc392178 fix syule bug at layer section 2016-01-21 07:47:48 +01:00
Andrey Antukh
af7ec3319c Adapt recent-colors component usage on colors options. 2016-01-21 00:14:12 +02:00
Andrey Antukh
0dc30e2bdd Add partial stroke element options menu. 2016-01-21 00:14:00 +02:00
Andrey Antukh
f786b8acab Parametrize recent colors component. 2016-01-21 00:13:43 +02:00
Andrey Antukh
e3ebdb68b2 Exclude svg-icon type from options. 2016-01-21 00:13:15 +02:00
Andrey Antukh
d9bec06b2f Add todo comment. 2016-01-21 00:13:03 +02:00
Andrey Antukh
fbefa65644 Render stroke properties. 2016-01-21 00:12:54 +02:00
Andrey Antukh
d5e636f696 Add event for alter shapes stroke properties. 2016-01-21 00:12:38 +02:00
Andrey Antukh
b7afe65272 Remove statix mixin from shape component. 2016-01-20 23:05:05 +02:00
Andrey Antukh
3bda4f6de3 Fix selrect and options positions for groped shapes. 2016-01-20 22:47:29 +02:00
Andrey Antukh
eabee221b6 Render selrect for shapes that are not direct descendents of page.
Shapes that forms part of one group or subgroup also can
be selected.
2016-01-20 22:46:33 +02:00
Andrey Antukh
e353d67b02 Add helper for resolve/translate shape position into real canvas coords.
This is necesary to know the real shape position in a canves
when shape is part of group or subgroup and each group has its
own coordinate system.
2016-01-20 22:41:37 +02:00
Andrey Antukh
b65e0d754a Remove println. 2016-01-20 22:41:27 +02:00
Andrey Antukh
aa5cbcce0d Add debug attrs to group shape element. 2016-01-20 22:41:03 +02:00
Andrey Antukh
2124aba21f Fix group deletion mechanism. 2016-01-20 21:45:22 +02:00
Andrey Antukh
a4d3136707 Add useful coment. 2016-01-20 21:45:13 +02:00
Andrey Antukh
d89dad3827 Minor fixes on colorpalette. 2016-01-20 20:03:48 +02:00
Andrey Antukh
12980b63f6 Remove some printlns. 2016-01-20 20:03:37 +02:00
Andrey Antukh
6183e5ef00 Add recent colors component. 2016-01-20 20:03:25 +02:00
Andrey Antukh
0de4f9074d Remove commented code. 2016-01-20 19:29:31 +02:00
Andrey Antukh
293aef9085 Add color picker to element options. 2016-01-20 19:26:02 +02:00
Andrey Antukh
49cff5429e Add missing attributes on shape svg rendering. 2016-01-20 19:25:35 +02:00
Andrey Antukh
a832bf89b4 Pass proper parameters to colorpicker on colores page. 2016-01-20 19:24:41 +02:00
Andrey Antukh
75656b442c Make parametrizable the colorpicker dimensions. 2016-01-20 19:24:27 +02:00
Andrey Antukh
73a8829e1c Add more validators to schema. 2016-01-20 19:24:08 +02:00
Andrey Antukh
7327bfba76 Update readme. 2016-01-20 18:48:23 +02:00
Andrey Antukh
2f39cc08dc Remove comment. 2016-01-20 18:46:33 +02:00
Andrey Antukh
196b4dd89b Reimplement colorpicker. 2016-01-20 18:43:31 +02:00
Andrey Antukh
fd1d6e1420 Add floor/ceil/round functions to math utils ns. 2016-01-20 18:42:55 +02:00
Andrey Antukh
9b3e41432c Set clojure 1.8.0 as default clojure. 2016-01-19 22:40:32 +02:00
Andrey Antukh
1f642548e9 Make aware of rotation the shape selrect. 2016-01-19 22:01:01 +02:00
Andrey Antukh
6a3372f22f Remove some restrictions on matrix constructor. 2016-01-19 22:00:44 +02:00
Andrey Antukh
b00e2118bc Fix typo on radians function name. 2016-01-19 22:00:21 +02:00
Andrey Antukh
8b26da4e36 Add abs function to math tools. 2016-01-19 22:00:06 +02:00
Andrey Antukh
0eec54fc30 Move some lenses from layers to icons. 2016-01-19 21:59:46 +02:00
Andrey Antukh
9f512abaeb Fix bug introduced in previous commit. 2016-01-19 18:16:28 +02:00
Andrey Antukh
48cb96221e Refactor mouse and selected shapes selrect rendering. 2016-01-19 18:13:10 +02:00
Andrey Antukh
d5bc6bb16a Move selrect into separate ns and rename it to mouse-selrect. 2016-01-19 17:05:48 +02:00
Andrey Antukh
89cc964f54 Move each toolbox into separated namespace. 2016-01-19 16:50:39 +02:00
Andrey Antukh
5ab9cb4c53 Relocate some useful functions that operates on shapes. 2016-01-18 23:24:43 +02:00
Andrey Antukh
7fb990495a Remove commented code. 2016-01-18 23:13:46 +02:00
Andrey Antukh
304a8ab74f Add some interactions to group entry on layers toolbox. 2016-01-18 23:10:15 +02:00
Andrey Antukh
0d0a94e594 Minor refactor on group-selected (shapes) event implementation. 2016-01-18 22:56:12 +02:00
Andrey Antukh
7933955a69 Attach debug related attrs to rendered shapes. 2016-01-17 23:54:34 +02:00
Andrey Antukh
db73b0787b Move matrix math and svg under uxbox.util ns. 2016-01-17 23:40:42 +02:00
Andrey Antukh
ce5675639f Add group initial impl for groups rendering. 2016-01-17 23:36:10 +02:00
Andrey Antukh
ff56734801 Add basic menu rendering for groups of shapes. 2016-01-17 23:35:38 +02:00
Andrey Antukh
7fa7213e77 Reimplement shapes rendering (using new matrix based transformations). 2016-01-17 23:35:01 +02:00
Andrey Antukh
68c153ac5d Use render-svg on render icons on the library. 2016-01-17 23:33:05 +02:00
Andrey Antukh
3b687be9b4 Add debug message for ui rendering. 2016-01-17 23:32:55 +02:00
Andrey Antukh
0f9742a83b Implement svg transform/matrix attribute calculation. 2016-01-17 23:32:28 +02:00
Andrey Antukh
669cdd1395 Add -render-svg method to shapes ns. 2016-01-17 23:32:14 +02:00
Andrey Antukh
d402442785 Remove some dead code. 2016-01-17 23:31:25 +02:00
Andrey Antukh
4f057756ee Add :builtin/group as part of shapes hierarchy. 2016-01-17 23:30:59 +02:00
Andrey Antukh
c324755f24 Add event for group selected shapes. 2016-01-17 23:30:46 +02:00
Andrey Antukh
ee838a8a2e Remove printlns. 2016-01-17 23:29:45 +02:00
Andrey Antukh
8c47d216b1 Remove required validator from shape props schema. 2016-01-17 23:29:27 +02:00
Andrey Antukh
1dc85c00c6 Minor change on code on core ns. 2016-01-17 23:29:14 +02:00
Andrey Antukh
d62a6922be Enable rerendering when new code is loaded. 2016-01-17 23:28:10 +02:00
Andrey Antukh
1725f51818 Add math utils namespace. 2016-01-17 23:27:44 +02:00
Andrey Antukh
4c84fd46da Add matrix library abstraction. 2016-01-17 23:27:19 +02:00
Juan de la Cruz
ee3ed22e2c fix group styles 2016-01-17 11:02:59 +01:00
Andrey Antukh
6c0d61278a Add sample group (temporary). 2016-01-16 15:38:03 +02:00
Juan de la Cruz
ec90f42833 add colorpicker to lightboxes and fix grid css 2016-01-14 12:48:37 +01:00
Juan de la Cruz
aaaafb46f5 fixing color piker css and adding colopicker lightbox base 2016-01-14 12:33:05 +01:00
Andrey Antukh
b4dd70286d Add copy impl on layers toolbox. 2016-01-13 17:56:09 +02:00
Andrey Antukh
b14aa3629b Add impl for delete button on layers toolbox. 2016-01-13 17:56:09 +02:00
Andrey Antukh
ccb6784ecf Minor renaming. 2016-01-13 17:56:09 +02:00
Andrey Antukh
f817acc082 Fix bugs related to shape deselection on canvas.
And put the viewport and canvas components togther.
2016-01-13 17:56:09 +02:00
Andrey Antukh
1a0af91a5e Add blocking handling to layers toolbox and canvas. 2016-01-13 17:56:09 +02:00
Juan de la Cruz
6d4f297d24 add fade out animation to color palette 2016-01-13 08:35:36 +01:00
Andrey Antukh
bd7f215591 Fix bug on visibility handling. 2016-01-12 20:17:22 +02:00
Andrey Antukh
d18365204d Handle visibility on layers toolbox. 2016-01-12 20:13:50 +02:00
Andrey Antukh
4aaf4042f0 Render properly the icon on layers toolbox. 2016-01-12 19:57:26 +02:00
Andrey Antukh
f39d2d57a8 Add basic selection interactions to layers toolbox. 2016-01-12 19:55:46 +02:00
Andrey Antukh
29b0036248 Add missing import on colorpicker ns. 2016-01-12 19:55:26 +02:00
Andrey Antukh
c397100cbc Events reorganization on workspace. 2016-01-12 19:34:47 +02:00
Andrey Antukh
fb3457c6fd Remove useless code. 2016-01-12 19:32:14 +02:00
Andrey Antukh
809ac8cbc7 Move all react/rum related stuff under one unique ns. 2016-01-12 19:30:04 +02:00
Andrey Antukh
8151faf15e Remove println. 2016-01-12 18:42:25 +02:00
Andrey Antukh
32cbe2c1a5 Remove backend code and adapt scripts to new structure. 2016-01-12 16:54:53 +02:00
Andrey Antukh
92a83c2506 Move frontend/uxbox to src/uxbox. 2016-01-12 16:54:53 +02:00
Andrey Antukh
537dfa241d Update naming of lenses around all the project. 2016-01-12 16:54:53 +02:00
Juan de la Cruz
851eff897e add fill element color-picker 2016-01-12 15:04:51 +01:00
Juan de la Cruz
e9dce3ff2f add fadeIn animation to color palette 2016-01-12 12:49:32 +01:00
Juan de la Cruz
cc4ddd214f fix workspace canvas margin bug 2016-01-12 10:50:55 +01:00
Andrey Antukh
4c5036539d Minor changes on deps. 2016-01-12 10:32:27 +02:00
Andrey Antukh
530f967fcc Add color palette to the workspace. 2016-01-11 22:31:15 +02:00
Andrey Antukh
c8c2625082 Minor improvement on how colors are rendered in colors library. 2016-01-11 22:30:42 +02:00
Andrey Antukh
0abc29451a Refactor tool management as generic flags on workspace. 2016-01-11 22:30:26 +02:00
Andrey Antukh
2a580ccf8b Add handler for supr/delete key button. 2016-01-11 09:35:42 +02:00
Andrey Antukh
449352338d First work on simple layers rendering (just WIP). 2016-01-11 01:25:10 +02:00
Andrey Antukh
5b8d8d5c7e Add ^:private flag to private lense on canvas ns. 2016-01-11 01:11:12 +02:00
Andrey Antukh
f92fa08e9e Add missing html macro on icons ns. 2016-01-11 01:10:56 +02:00
Andrey Antukh
a8fe18a465 Disable paralel build on figwheel (seems buggy at this moment). 2016-01-11 00:19:52 +02:00
Andrey Antukh
18ff6303df Fix bug related to scroll handling and shapes/icons insertion. 2016-01-11 00:08:05 +02:00
Andrey Antukh
6ecec4af0a Enable precise moviments using keyboard up/down/right/left keys. 2016-01-10 23:50:21 +02:00
Andrey Antukh
a2401a4d7a Minor refactor of define-once macro. 2016-01-10 23:50:10 +02:00
Andrey Antukh
936fd3b070 Remove useless coersion to vector. 2016-01-10 23:18:37 +02:00
Andrey Antukh
09c383a1bd Deselect all shapes on ESC is clicked. 2016-01-10 23:17:43 +02:00
Andrey Antukh
2f6432bf24 Remove merge-all from rstore. 2016-01-10 23:13:48 +02:00
Andrey Antukh
6693c8bc9b Implement backspace / supr shortcut for delete selected shapes. 2016-01-10 23:13:29 +02:00
Andrey Antukh
34abb7eb27 Remove printwritter impl on workspace events. 2016-01-10 22:49:39 +02:00
Andrey Antukh
894836fa55 Minor refactor of shortcuts handling. 2016-01-10 22:48:21 +02:00
Andrey Antukh
7810295300 Enable paralel build flag on build.clj and watch.clj scripts. 2016-01-08 21:23:04 +02:00
Andrey Antukh
101e2366e1 Enable parallel builds for figwheel (thanks to cljs 1.7.228). 2016-01-08 21:16:46 +02:00
Andrey Antukh
e42bc6e84b Update dependencies. 2016-01-08 21:16:41 +02:00
Andrey Antukh
0139a8ab58 Start using translation strings in some parts of dashboard. 2016-01-08 01:45:06 +02:00
Andrey Antukh
0f41481580 Add reader macro #ux/tr for simple translation strings. 2016-01-08 01:45:06 +02:00
Andrey Antukh
241557f936 Remove useless menu from colors, elements and icons. 2016-01-08 01:45:06 +02:00
Andrey Antukh
4b7d18128c Add initial i18n foundation. 2016-01-08 01:45:06 +02:00
Andrey Antukh
80ab99e8cf Remove empty line. 2016-01-08 01:45:06 +02:00
Andrey Antukh
c8a86b39d5 Add syntax helper for define once unnamed global instances. 2016-01-08 01:45:06 +02:00
Juan de la Cruz
ee6399b10d add new layers functions design 2016-01-07 19:35:23 +01:00
Andrey Antukh
b6900584f7 Remove debug println on shapes and canvas. 2016-01-07 17:48:20 +02:00
Andrey Antukh
eb6e0544c7 Fix scroll related bug on selrect. 2016-01-07 17:48:20 +02:00
Andrey Antukh
abc743a08e Improve performance related to workspace rendering when icon toolboxes is open. 2016-01-07 17:48:20 +02:00
Juan de la Cruz
6edc5e07ee add multicanvas icon to header.cljs 2016-01-07 12:44:23 +01:00
Andrey Antukh
cba11ae053 Add handlers for position attributes.
With additional refactor of other handlers for
remove duplicated code.
2016-01-07 02:19:33 +02:00
Andrey Antukh
7c802f1885 Remove debug message on scroll. 2016-01-07 01:58:31 +02:00
Andrey Antukh
7d8960a1ed Add shape handling and rendering.
And improve fill rendering.
2016-01-07 01:36:36 +02:00
Andrey Antukh
d71bb9d22d Add implementation for fill shapes. 2016-01-07 01:24:11 +02:00
Andrey Antukh
a64c18eff7 Fix bugs introduced in previous commit. 2016-01-07 00:56:25 +02:00
Andrey Antukh
1924570ea1 Implement shape attrs transformation as reduce function. 2016-01-07 00:47:14 +02:00
Andrey Antukh
cab871fc95 Implement rotation for shapes. 2016-01-07 00:37:30 +02:00
Andrey Antukh
edc8d25ab3 Remove useless println. 2016-01-06 21:09:32 +02:00
Andrey Antukh
ca2c76325d Add resize handlers to element options. 2016-01-06 21:05:36 +02:00
Andrey Antukh
da5d9c2422 Improve parse-int util function.
It now accept a default value in case of parsing
return NaN.
2016-01-06 21:05:07 +02:00
Andrey Antukh
046360bd14 Add nan? predicate to utils.data. 2016-01-06 21:04:50 +02:00
Andrey Antukh
be48fde490 Improve shape attrs transformation. 2016-01-06 21:04:16 +02:00
Andrey Antukh
06d0ea326b Add size change event for shape. 2016-01-06 21:03:59 +02:00
Andrey Antukh
c364e35292 Add default resize logic implementation for shapes. 2016-01-06 21:03:19 +02:00
Andrey Antukh
8795173dc5 Fix element options scroll bug. 2016-01-06 19:48:37 +02:00
Andrey Antukh
d719f10b1c More work on element options rendering. 2016-01-06 19:26:39 +02:00
Andrey Antukh
b122a23e08 Initial renering of shape options toolbox (dummy). 2016-01-03 18:47:08 +02:00
Andrey Antukh
beda689dfc Remodeled the mouse position <-> canvas coords matching. 2016-01-03 18:46:19 +02:00
Andrey Antukh
f8a6342b98 Improved cursored mixin. 2016-01-03 18:44:57 +02:00
Andrey Antukh
80ec20d9cd Add helper for find dom objects by class name. 2016-01-03 18:44:13 +02:00
Andrey Antukh
6325f8cc86 Remove some printlns. 2016-01-03 18:25:21 +02:00
Andrey Antukh
657d64eec3 Cosmetic changes on coordenates debug component. 2016-01-02 18:03:33 +02:00
Andrey Antukh
b937408bab Move shapes rendering implementation under uxbox.ui namespace. 2016-01-02 18:03:16 +02:00
Andrey Antukh
d833543368 Add dedupe on state persistence stream. 2016-01-02 18:02:40 +02:00
Andrey Antukh
e4dc761107 Fix viewbox on external icons collection. 2016-01-02 17:35:37 +02:00
Andrey Antukh
213cf60eb0 Minor cosmetic fixes. 2016-01-02 17:34:10 +02:00
Andrey Antukh
46f35cf742 Improve performance on icons toolbox rendering. 2016-01-02 17:33:53 +02:00
Andrey Antukh
f19da5da9a Fix icons viewbox and add id attribute. 2016-01-02 17:32:56 +02:00
Andrey Antukh
fe6b93150b Add missing event for select object matched by selrect. 2016-01-02 14:36:43 +02:00
Andrey Antukh
ed99a28749 Add styles for selrect. 2016-01-02 14:36:43 +02:00
Andrey Antukh
d9c8e083a9 Adapt canvas component for render the selrect. 2016-01-02 14:36:43 +02:00
Andrey Antukh
2a94efc4ef Add missing own argument on canvas render function. 2016-01-02 14:36:43 +02:00
Andrey Antukh
8bc2da0af0 Add selrect drawing in the canvas. 2016-01-02 14:36:43 +02:00
Juan de la Cruz
d60e47dccf add new icons 2016-01-02 11:43:32 +01:00
Andrey Antukh
cfc8c51537 Add proper styles to selected shape controls. 2015-12-31 19:27:21 +02:00
Andrey Antukh
fb833f34c8 Improved grouped selection. 2015-12-31 19:05:06 +02:00
Andrey Antukh
0b8cc5f964 Add missing key attr on shape rendering. 2015-12-31 19:04:49 +02:00
Andrey Antukh
95a1bb80df Group selected items in svg:g. 2015-12-30 01:37:43 +02:00
Andrey Antukh
7a71b088f4 Decouple shape moving logic. 2015-12-30 01:25:26 +02:00
Andrey Antukh
e07ada5ad4 Add validation for shapes. 2015-12-30 00:19:49 +02:00
Andrey Antukh
3fcd21635e Add shape type hierarchy. 2015-12-30 00:19:49 +02:00
Andrey Antukh
9072c816e8 Add shape type validators. 2015-12-30 00:19:49 +02:00
Andrey Antukh
78f619b25d Add shape schema definition. 2015-12-30 00:19:49 +02:00
Andrey Antukh
91fabcb148 Update bouncer version. 2015-12-30 00:19:49 +02:00
Andrey Antukh
233a2969c6 Minor cosmetic changes on canvas component. 2015-12-30 00:19:49 +02:00
Andrey Antukh
a4fe43235b Denormalize shapes storage. 2015-12-30 00:19:49 +02:00
Andrey Antukh
40bbc996f7 Add without-keys util function. 2015-12-30 00:19:49 +02:00
Andrey Antukh
f7b902a7ef Minor refactor of workarea rules and grid. 2015-12-30 00:19:49 +02:00
Andrey Antukh
c182340be4 Improved multiple selection/deselection. 2015-12-30 00:19:49 +02:00
Andrey Antukh
efeaa7a79e Remove unused code from canvas. 2015-12-30 00:19:49 +02:00
Andrey Antukh
c9dc332ae2 Add the ability to select shapes. 2015-12-30 00:19:49 +02:00
Andrey Antukh
a211c6323e Add selected shapes state lense. 2015-12-30 00:19:49 +02:00
Andrey Antukh
dd94224383 Remove unused code from workspace data ns. 2015-12-30 00:19:49 +02:00
Andrey Antukh
311d107b36 Add select-shape event. 2015-12-30 00:19:49 +02:00
Andrey Antukh
a5dc634e35 Implement shapes moving using mouse. 2015-12-30 00:19:49 +02:00
Andrey Antukh
17eafb8563 Use debounce for persistence. 2015-12-30 00:19:49 +02:00
Andrey Antukh
f28d54936f Add basic icons rendering on canvas. 2015-12-30 00:19:49 +02:00
Andrey Antukh
fc03388d70 Move coordinates element to main workspace ns. 2015-12-30 00:19:49 +02:00
Andrey Antukh
6952d21af2 Move workarea grid into separated namespace. 2015-12-30 00:19:49 +02:00
Andrey Antukh
77587537f6 Move sidebar into separated namespace. 2015-12-30 00:19:49 +02:00
Andrey Antukh
00c2f77746 Minor change on grid rendering on workarea. 2015-12-30 00:19:48 +02:00
Andrey Antukh
7afe940087 Comment test code. 2015-12-30 00:19:48 +02:00
Andrey Antukh
43bd56de23 Add drawing attribute on workspace. 2015-12-30 00:19:48 +02:00
Andrey Antukh
9db37cfd9b Use classes instead ids on canvas. 2015-12-30 00:19:48 +02:00
Andrey Antukh
45e63c385f Add selected shapes set of shapes to workspace state. 2015-12-30 00:19:48 +02:00
Andrey Antukh
cd8b53174b Add shapes vector to page. 2015-12-30 00:19:48 +02:00
Andrey Antukh
16eb27b342 Add optimized version of index-by. 2015-12-30 00:19:48 +02:00
Andrey Antukh
adbc0c7edd Move canvas related stuff into separated ns. 2015-12-30 00:19:48 +02:00
Andrey Antukh
fa64f8bbbf Add material design icon collections. 2015-12-30 00:19:48 +02:00
Andrey Antukh
e4a93da8ea Add helpers for the reader and int parsing. 2015-12-30 00:19:48 +02:00
Andrey Antukh
3c093c7d51 Cosmetic fixes on workarea related to toolboxes code. 2015-12-30 00:19:48 +02:00
Andrey Antukh
88d1030e12 Add icons toolbox. 2015-12-30 00:19:48 +02:00
Andrey Antukh
7aa80860b8 Minor rename on toolboxes components. 2015-12-30 00:19:48 +02:00
Andrey Antukh
3aafaf4665 Mark the icon collections as builtin. 2015-12-30 00:19:48 +02:00
Andrey Antukh
f393e301f0 Add initial work on shape rendering in canvas.
With selection rectangle/circles.
2015-12-30 00:19:48 +02:00
Andrey Antukh
75b3aaf2a6 Add the ability to render external svgs. 2015-12-30 00:19:48 +02:00
Andrey Antukh
517b3f6db3 Improve icon rendering. 2015-12-30 00:19:48 +02:00
Juan de la Cruz
50c0b9420b add multi-canvas icon svg 2015-12-30 00:19:48 +02:00
Andrey Antukh
3dcf1d55da Add test rendering icons on workarea. 2015-12-30 00:19:48 +02:00
Andrey Antukh
94a3bab48b Remove println. 2015-12-30 00:19:48 +02:00
Andrey Antukh
c132ea1d67 Improve render function for builtin icons. 2015-12-30 00:19:48 +02:00
Andrey Antukh
a4b286888e Add default view-box to library icons. 2015-12-30 00:19:48 +02:00
Andrey Antukh
9e8171a777 Initial work on icons library page and icons rendering. 2015-12-30 00:19:48 +02:00
Andrey Antukh
71d00f5970 Remove unused code from colors library ns. 2015-12-30 00:19:48 +02:00
Andrey Antukh
11bb081c7c Move dashboard builtints to library. 2015-12-30 00:19:48 +02:00
Andrey Antukh
d8e7087af6 Add namespace for data transformation utils. 2015-12-30 00:19:48 +02:00
Andrey Antukh
66b6040f86 Minor fixes. 2015-12-30 00:19:48 +02:00
Andrey Antukh
a896bb60d6 Add improved form validation in color lightbox. 2015-12-30 00:19:48 +02:00
Andrey Antukh
f8b369784f Update dependencies. 2015-12-30 00:19:48 +02:00
Andrey Antukh
46ec80dd04 Add more shortcuts to workspace. 2015-12-30 00:19:48 +02:00
Andrey Antukh
08e02800d2 Add the ability to pass parameters to lightboxes. 2015-12-30 00:19:48 +02:00
Andrey Antukh
bd79eb9af1 Fix compatibility with latest sablono version. 2015-12-30 00:19:48 +02:00
Andrey Antukh
3ca550568a Add UI implementation for colors collections. 2015-12-30 00:19:48 +02:00
Andrey Antukh
5e7d353627 Add color collections related events. 2015-12-30 00:19:48 +02:00
Andrey Antukh
16249ccd63 Convert keyword color representation into string. 2015-12-30 00:19:48 +02:00
Andrey Antukh
2323e8f1c7 Add color validator. 2015-12-30 00:19:48 +02:00
Andrey Antukh
f82f9f8384 Minor naming improvements. 2015-12-30 00:19:48 +02:00
Andrey Antukh
8c030ac73e Add color replace and remove events schemas. 2015-12-30 00:19:48 +02:00
Andrey Antukh
d1fc7959a1 Add colors collections persistence. 2015-12-30 00:19:48 +02:00
Andrey Antukh
f37986d5c1 Replace debounce with sample. 2015-12-30 00:19:47 +02:00
Andrey Antukh
90dd207e88 Improved persistence subsystem.
Now is more effisient and only performs the
persistence operations only when persistent
datata is changed (not the whole state atom)
2015-12-30 00:19:47 +02:00
Andrey Antukh
8201df7014 Add simplier shortcuts implementation for the workspace. 2015-12-30 00:19:47 +02:00
Andrey Antukh
67842b39ea Add proper naming for shortcuts namespace. 2015-12-30 00:19:47 +02:00
Andrey Antukh
2cd98a516c Add initial implementation of keyboard shortcuts to workspace. 2015-12-30 00:19:47 +02:00
Andrey Antukh
a0d1a03a16 Remove console.log statements. 2015-12-30 00:19:47 +02:00
Andrey Antukh
5b6fe0c94b Fix transfer-state bug on mouse mixin. 2015-12-30 00:19:47 +02:00
Andrey Antukh
79e3f95fb8 Minor change on mouse mixin. 2015-12-30 00:19:47 +02:00
Andrey Antukh
3e336112ca Fix mouse mixin. 2015-12-30 00:19:47 +02:00
Andrey Antukh
3748d3c7b4 Render properly the builtin collections. 2015-12-30 00:19:47 +02:00
Andrey Antukh
31bcce2668 Render builtin color collections. 2015-12-30 00:19:47 +02:00
Andrey Antukh
5cea9f1a36 Add colorpicker styles and minor changes. 2015-12-30 00:19:47 +02:00
Andrey Antukh
5fb93ad5fd Additional work on colors page. 2015-12-30 00:19:47 +02:00
Andrey Antukh
5d7379ec32 Add basic color picker impl. 2015-12-30 00:19:47 +02:00
Andrey Antukh
9c2c7f40ba Minor code reorganization and wip of colors page. 2015-12-30 00:19:47 +02:00
Andrey Antukh
a93c6bfa45 Add color conversion helpers. 2015-12-30 00:19:47 +02:00
Andrey Antukh
379ccefd8b Adapt library bar to colors page. 2015-12-30 00:19:47 +02:00
Andrey Antukh
20bffcd6be Restructure dashboard source code. 2015-12-30 00:19:47 +02:00
Andrey Antukh
93b7470b69 Add basic layers toolbox rendering. 2015-12-30 00:19:47 +02:00
Andrey Antukh
e8235fcf02 Remove side effect on workspace initialization. 2015-12-30 00:19:47 +02:00
Andrey Antukh
5fddf7ca4d Add draw toolbox rendering on workarea. 2015-12-30 00:19:47 +02:00
Andrey Antukh
2742db8dfd Show right sidebar space when one or more toolboxes are activated. 2015-12-30 00:19:47 +02:00
Andrey Antukh
fd2bba35ce Minor naming fixes on files. 2015-12-30 00:19:47 +02:00
Andrey Antukh
2a2fcb1a75 Simplify grid call arguments. 2015-12-30 00:19:47 +02:00
Andrey Antukh
4a1c7ab2c9 Add coords debugging component. 2015-12-30 00:19:47 +02:00
Andrey Antukh
8f3c734426 Show properly the scale numbers on the rules. 2015-12-30 00:19:47 +02:00
Andrey Antukh
827b8a3aec Remove direct lense mutation and eventes recursion on workspace. 2015-12-30 00:19:47 +02:00
Andrey Antukh
e458ffe355 Reorganize workspace namespace. 2015-12-30 00:19:47 +02:00
Andrey Antukh
0fc77d0283 Fix initialization order of the application. 2015-12-30 00:19:47 +02:00
Andrey Antukh
b317ee4904 Minor project structure improvement. 2015-12-30 00:19:47 +02:00
Andrey Antukh
a2c313dfc0 WIP: partial grid. 2015-12-30 00:19:47 +02:00
Juan de la Cruz
64c9360b38 fix project bar styles bugs 2015-12-30 00:19:47 +02:00
Andrey Antukh
61a212ada7 Disable working are (temporary). 2015-12-30 00:19:47 +02:00
Andrey Antukh
62c5c8d5c8 WIP: 2015-12-30 00:19:47 +02:00
Andrey Antukh
ede2d4becd Implement pagesbar toggle. 2015-12-30 00:19:47 +02:00
Andrey Antukh
9e0edbc082 Rename workspace routes. 2015-12-30 00:19:47 +02:00
Juan de la Cruz
17fc5edcda fix bug in main nav hover style 2015-12-30 00:19:47 +02:00
Andrey Antukh
61b05613f3 Add navigation to dashboard. 2015-12-30 00:19:47 +02:00
Andrey Antukh
feb00d83f8 WIP: restructure dashboard source. 2015-12-30 00:19:46 +02:00
Juan de la Cruz
031874d442 remove input auto focus 2015-12-30 00:19:46 +02:00
Juan de la Cruz
d9b5977d02 add new color lightbox 2015-12-30 00:19:46 +02:00
Juan de la Cruz
67081eded4 add icon lightbox 2015-12-30 00:19:46 +02:00
Andrey Antukh
21d564b609 WIP: fix dashboard navigation issues. 2015-12-30 00:19:46 +02:00
Juan de la Cruz
2036bb6fbb add element lightbox 2015-12-30 00:19:46 +02:00
Juan de la Cruz
19b6d6b0fe add icons and colors libraries 2015-12-30 00:19:46 +02:00
Andrey Antukh
b102b0d010 WIP: improvements. 2015-12-30 00:19:46 +02:00
Juan de la Cruz
d41a2670fa add library bar and grid 2015-12-30 00:19:46 +02:00
Andrey Antukh
0ef064f075 WIP: improve page edition. 2015-12-30 00:19:46 +02:00
Andrey Antukh
6595e95f12 WIP: add/remove pages from workspace. 2015-12-30 00:19:46 +02:00
Andrey Antukh
9182244e88 WIP: fix bug on own cursored mixin. 2015-12-30 00:19:46 +02:00
Andrey Antukh
7ceca619e0 WIP: add pages list sidebar to workspace. 2015-12-30 00:19:46 +02:00
Juan de la Cruz
3a387d8820 WIP library bar 2015-12-30 00:19:46 +02:00
Juan de la Cruz
97fcf33088 add library grid styles 2015-12-30 00:19:46 +02:00
Juan de la Cruz
b5bad3c785 fix user zone bug and grid WIP 2015-12-30 00:19:46 +02:00
Andrey Antukh
5128410d82 Minor improvements on icons. 2015-12-30 00:19:46 +02:00
Andrey Antukh
c91788b8fd Add more icons. 2015-12-30 00:19:46 +02:00
Andrey Antukh
688d94c1da WIP: workspace toolbar and project/page state management. 2015-12-30 00:19:46 +02:00
Juan de la Cruz
c62425cbc8 add main nav bar 2015-12-30 00:19:46 +02:00
Andrey Antukh
8f30151b31 Restore index.html 2015-12-30 00:19:46 +02:00
Andrey Antukh
8cf409878d Update styles. 2015-12-30 00:19:46 +02:00
Andrey Antukh
1cee1f4b01 Add new pages. 2015-12-30 00:19:46 +02:00
Andrey Antukh
ebec1eb268 WIP: add basic data persistence. 2015-12-30 00:19:46 +02:00
Andrey Antukh
6b6aba7358 WIP 2015-12-30 00:19:46 +02:00
Andrey Antukh
56f7613453 WIP: project creation now work. 2015-12-30 00:19:46 +02:00
Andrey Antukh
62b9267d4f WIP 2015-12-30 00:19:46 +02:00
Andrey Antukh
2663acf224 WIP 2015-12-30 00:19:46 +02:00
Andrey Antukh
7b8f241d41 WIP: 2015-12-30 00:19:46 +02:00
Andrey Antukh
68b5f9c2ea WIP 2015-12-30 00:19:46 +02:00
Andrey Antukh
113f5fcd16 Temporary remove travis config. 2015-12-30 00:19:46 +02:00
2395 changed files with 620046 additions and 10043 deletions

110
.circleci/config.yml Normal file
View File

@@ -0,0 +1,110 @@
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: penpotapp/devenv:latest
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/postgres:9.4
- image: circleci/postgres:13.3-ram
environment:
POSTGRES_USER: penpot_test
POSTGRES_PASSWORD: penpot_test
POSTGRES_DB: penpot_test
- image: circleci/redis:6.0.8
working_directory: ~/repo
environment:
# Customize the JVM maximum heap limit
JVM_OPTS: -Xmx1g
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}}-{{ checksum "common/deps.edn"}}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: common lint
working_directory: "./common"
command: |
clj-kondo --version
clj-kondo --parallel --lint src/
- run:
name: frontend lint
working_directory: "./frontend"
command: |
clj-kondo --version
clj-kondo --parallel --lint src/
- run:
name: frontend styles prettier
working_directory: "./frontend"
command: |
yarn install
yarn run lint-scss
- run:
name: backend lint
working_directory: "./backend"
command: |
clj-kondo --version
clj-kondo --parallel --lint src/
# run backend test
- run:
name: backend test
working_directory: "./backend"
command: "clojure -X:dev:test"
environment:
PENPOT_TEST_DATABASE_URI: "postgresql://localhost/penpot_test"
PENPOT_TEST_DATABASE_USERNAME: penpot_test
PENPOT_TEST_DATABASE_PASSWORD: penpot_test
PENPOT_TEST_REDIS_URI: "redis://localhost/1"
- run:
name: frontend tests
working_directory: "./frontend"
command: |
yarn install
clojure -M:dev:shadow-cljs compile test
node target/tests.js
environment:
PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
# - run:
# working_directory: "./common"
# name: common tests (cljs)
# command: |
# yarn install
# yarn run compile-test
# node target/test.js
#
# environment:
# PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
- run:
working_directory: "./common"
name: common tests (clj)
command: |
clojure -X:dev:test
environment:
PATH: /usr/local/nodejs/bin/:/usr/local/bin:/bin:/usr/bin
- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "backend/deps.edn" }}-{{ checksum "frontend/deps.edn"}}-{{ checksum "common/deps.edn"}}

45
.clj-kondo/config.edn Normal file
View File

@@ -0,0 +1,45 @@
{:lint-as
{promesa.core/let clojure.core/let
rumext.alpha/defc clojure.core/defn
rumext.alpha/fnc clojure.core/fn
app.common.data/export clojure.core/def
app.db/with-atomic clojure.core/with-open
app.common.logging/with-context clojure.core/do}
:hooks
{:analyze-call
{app.common.data/export hooks.export/export
potok.core/reify hooks.export/potok-reify
app.util.services/defmethod hooks.export/service-defmethod
}}
:output
{:exclude-files
["data_readers.clj"
"app/util/perf.cljs"
"app/common/logging.cljc"
"app/common/exceptions.cljc"]}
:linters
{:unsorted-required-namespaces
{:level :warning}
:potok/reify-type
{:level :error}
:unresolved-namespace
{:level :warning
:exclude [data_readers]}
:single-key-in
{:level :warning}
:redundant-do
{:level :off}
:unused-binding
{:exclude-destructured-as true
:exclude-destructured-keys-in-fn-args false
}
}}

View File

@@ -0,0 +1,76 @@
(ns hooks.export
(:require [clj-kondo.hooks-api :as api]))
(defn export
[{:keys [:node]}]
(let [[_ sname] (:children node)
result (api/list-node
[(api/token-node (symbol "def"))
(api/token-node (symbol (name (:value sname))))
sname])]
{:node result}))
(def registry (atom {}))
(defn potok-reify
[{:keys [:node :filename] :as params}]
(let [[rnode rtype & other] (:children node)
rsym (symbol (str "event-type-" (name (:k rtype))))
reg (get @registry filename #{})]
(when-not (:namespaced? rtype)
(let [{:keys [:row :col]} (meta rtype)]
(api/reg-finding! {:message "ptk/reify type should be namespaced"
:type :potok/reify-type
:row row
:col col})))
(if (contains? reg rsym)
(let [{:keys [:row :col]} (meta rtype)]
(api/reg-finding! {:message (str "duplicate type: " (name (:k rtype)))
:type :potok/reify-type
:row row
:col col}))
(swap! registry update filename (fnil conj #{}) rsym))
(let [result (api/list-node
(into [(api/token-node (symbol "deftype"))
(api/token-node rsym)
(api/vector-node [])]
other))]
{:node result})))
(defn clojure-specify
[{:keys [:node]}]
(let [[rnode rtype & other] (:children node)
result (api/list-node
(into [(api/token-node (symbol "extend-type"))
(api/token-node (gensym (:string-value rtype)))]
other))]
{:node result}))
(defn service-defmethod
[{:keys [:node]}]
(let [[rnode rtype ?meta & other] (:children node)
rsym (gensym (name (:k rtype)))
result (api/list-node
[(api/token-node (symbol "do"))
(api/list-node
[(api/token-node (symbol "declare"))
(api/token-node rsym)])
(if (= :map (:tag ?meta))
(api/list-node
[(api/token-node (symbol "reset-meta!"))
(api/token-node rsym)
?meta])
(api/list-node
[(api/token-node (symbol "comment"))
(api/token-node rsym)]))
(api/list-node
(into [(api/token-node (symbol "defmethod"))
(api/token-node rsym)
rtype]
(cons ?meta other)))])]
;; (prn "==============" rtype (into {} ?meta))
;; (prn (api/sexpr result))
{:node result}))

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
frontend/vendor/* linguist-vendored

72
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,72 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
**Expected behavior**
A clear and concise description of what you expected to happen.
**Actual behavior**
A clear and concise description of what happens instead; what the bug is.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS (e.g. iOS):
- Browser & version (e.g. Chrome 89.0):
**Smartphone (please complete the following information):**
- Device & model (e.g. iPhone 6):
- OS & version (e.g. iOS 8.1):
- Browser & version (e.g. stock browser 22):
**Environment (please complete the following information):**
- Host (e.g. https://design.penpot.app, local instance):
*If self-hosted:*
- OS Version (e.g. Ubuntu 16.04):
- Docker / Docker-compose version (e.g. Docker version 18.03.0-ce, build 0520e24):
- Image version (e.g. Alpine):
Docker commands or docker-compose file (if possible and if proceed.x):
```
```
Frontend Stack Trace:
<details>
```
```
</details>
Backend Stack Trace:
<details>
```
```
</details>
**Additional context:**
Any other context about the problem.

View File

@@ -0,0 +1,21 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when (...)
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

29
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,29 @@
<!--
Some key notes before you open a PR:
1. Select which branch should this PR be merged in? By default, you should always merge to the develop branch.
2. PR name follows [convention](http://karma-runner.github.io/4.0/dev/git-commit-msg.html)
3. All tests pass locally, UI and Unit tests
4. All business logic and validations must be on the server-side
5. Update necessary Documentation
6. Put `closes #XXXX` in your comment to auto-close the issue that your PR fixes
Also, if you're new here
- Contribution Guide => https://github.com/uxbox/uxbox/blob/develop/CONTRIBUTING.md
-->
> Please provide enough information so that others can review your pull request:
<!-- You can skip this if you're fixing a typo or updating existing documentation -->
> Explain the **details** for making this change. What existing problem does the pull request solve?
<!-- Example: When "Adding a function to do X", explain why it is necessary to have a way to do X. -->
> Screenshots/GIFs
<!-- Add images/recordings to better visualize the change: expected/current behviour -->

35
.github/config.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
# Comment to be posted to on first time issues
newIssueWelcomeComment: >
Thanks for opening your first issue here! Be sure to follow the issue template!
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
# Comment to be posted to on PRs from first time contributors in your repository
newPRWelcomeComment: >
Thanks for opening this pull request! Please check out our contributing guidelines.
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
# Comment to be posted to on pull requests merged by a first time user
firstPRMergeComment: >
:tada: Congrats on merging your first pull request! We here at behaviorbot are proud of you!
# It is recommend to include as many gifs and emojis as possible
# Configuration for request-info - https://github.com/behaviorbot/request-info
# *Required* Comment to reply with
requestInfoReplyComment: >
We would appreciate it if you could provide us with more info about this issue/pr!
# *OPTIONAL* default titles to check against for lack of descriptiveness
# MUST BE ALL LOWERCASE
requestInfoDefaultTitles:
- update readme.md
- updates
# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
requestInfoLabelToAdd: needs-more-info

23
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 30
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

63
.gitignore vendored
View File

@@ -1,19 +1,54 @@
/resources/public/js/compiled/**
figwheel_server.log
pom.xml
*jar
/lib/
/classes/
/out/
/target/
*-init.clj
*.jar
*.penpot
*.orig
.calva
.clj-kondo
.cpcache
.lein-deps-sum
.lein-failures
.lein-repl-history
.lein-plugins/
.repl
.lein-repl-history
.lsp
.nrepl-port
/hicv/
.nyc_output
.rebel_readline_history
.repl
/.clj-kondo/.cache
/_dump
/backend/-
/backend/assets/
/backend/dist/
/backend/logs/
/backend/resources/public/assets
/backend/resources/public/media
/backend/target/
/bundle*
/cd.md
/clj-profiler/
/common/.shadow-cljs
/common/coverage
/common/target
/deploy
/docker/images/bundle*
/exporter/.shadow-cljs
/exporter/target
/frontend/.shadow-cljs
/frontend/package-lock.json
/frontend/cypress/videos/*/
/frontend/cypress/fixtures/validuser.json
/frontend/dist/
/frontend/npm-debug.log
/frontend/out/
/frontend/resources/fonts/experiments
/frontend/resources/public/*
/frontend/target/
/frontend/cypress/videos/*/
/media
/telemetry/
/vendor/**/target
/vendor/svgclean/bundle*.js
/web
clj-profiler/
figwheel_server.log
node_modules
/resources/public/css
/resources/public/js
/*-init.clj

105
.gitpod.yml Normal file
View File

@@ -0,0 +1,105 @@
image:
file: docker/gitpod/Dockerfile
ports:
# nginx
- port: 3449
onOpen: open-preview
# frontend nREPL
- port: 3447
onOpen: ignore
visibility: private
# frontend shadow server
- port: 3448
onOpen: ignore
visibility: private
# backend
- port: 6060
onOpen: ignore
# exporter shadow server
- port: 9630
onOpen: ignore
visibility: private
# exporter http server
- port: 6061
onOpen: ignore
# mailhog web interface
- port: 8025
onOpen: ignore
# mailhog postfix
- port: 1025
onOpen: ignore
# postgres
- port: 5432
onOpen: ignore
# redis
- port: 6379
onOpen: ignore
# openldap
- port: 389
onOpen: ignore
tasks:
# https://github.com/gitpod-io/gitpod/issues/666#issuecomment-534347856
- name: gulp
command: >
cd $GITPOD_REPO_ROOT/frontend/;
yarn && gp sync-done 'frontend-yarn';
npx gulp --theme=${PENPOT_THEME} watch
- name: frontend shadow watch
command: >
cd $GITPOD_REPO_ROOT/frontend/;
gp sync-await 'frontend-yarn';
npx shadow-cljs watch main
- init: gp await-port 5432 && psql -f $GITPOD_REPO_ROOT/docker/gitpod/files/postgresql_init.sql
name: backend
command: >
cd $GITPOD_REPO_ROOT/backend/;
./scripts/start-dev
- name: exporter shadow watch
command:
cd $GITPOD_REPO_ROOT/exporter/;
gp sync-await 'frontend-yarn';
yarn && npx shadow-cljs watch main
- name: exporter web server
command: >
cd $GITPOD_REPO_ROOT/exporter/;
./scripts/wait-and-start.sh
- name: signed terminal
before: >
[[ ! -z ${GNUGPG} ]] &&
cd ~ &&
rm -rf .gnupg &&
echo ${GNUGPG} | base64 -d | tar --no-same-owner -xzvf -
init: >
[[ ! -z ${GNUGPG_KEY} ]] &&
git config --global commit.gpgsign true &&
git config --global user.signingkey ${GNUGPG_KEY}
command: cd $GITPOD_REPO_ROOT
- name: redis
command: redis-server
- before: go get github.com/mailhog/MailHog
name: mailhog
command: MailHog
- name: Nginx
command: >
nginx &&
multitail /var/log/nginx/access.log -I /var/log/nginx/error.log

View File

@@ -1,7 +1,40 @@
language: clojure
lein: lein2
dist: xenial
language: generic
sudo: required
cache:
directories:
- $HOME/.m2
services:
- docker
branches:
only:
- master
- develop
install:
- curl -O https://download.clojure.org/install/linux-install-1.10.1.447.sh
- chmod +x linux-install-1.10.1.447.sh
- sudo ./linux-install-1.10.1.447.sh
before_script:
- env | sort
script:
- lein with-profile +front cljsbuild once test
- ./manage.sh build-devenv
- ./manage.sh run-frontend-tests
- ./manage.sh run-backend-tests
- ./manage.sh build-images
- ./manage.sh run
after_script:
- docker images
notifications:
slack:
secure: XR/sm/0FlZmiQ3uOQ9vS45F0gx2A0U4xoW29iyWO4MMQe+FbOLS/W/3FDbocnkpFDuTJkbGYQKFXp5OM3smWGrwd4w/kZA+T8tiJjSyHxXhuHyfpAikMS2IopjxbVY+7Y92urjWzXwd00lkvAHCrcApH2TYsEOAHTNldIItzOZ1mE7zN47XqY7a+zS0eWkRoQbABwN3IuDcpqP34vRAMS7tVEBJnqcymmJcqTfqHCJZwiW5XqNoOW5X/DAsSQKdJPHFBmF+rzr5P5t8Z2kjxFcsHVFm2zJYdFEa5w159XkL3FN5By0EFy1h1VpdjRqEmhEnORHlF9A4apLLb0HqvCBiSaBbdFLgZmbIEtWNhSALtIEa0EbrIuTi5L/RDDpZ3Wz098ubb8tlbmgaNzPvg4ic783DmVjyXt+NFaAW++g1Lki3l8cAHfuk9GHSu/olilRGTYI0dpIB9dNx4W7MFRg6n3+FU9xw+vbXNouCjOZ8330b+Zu19VdfUDZigHS0iR7JvNvpY0b5m1vnC/AR8yLkCLIlxKT0lOcTfWMHn5eptjwn5tRRwGPvIK7Jj1x3FxCqNNogpUp32M9jJbiJQxk216Qn7XxD7poz8Zt9cInxdyC1zVKT8e2fYsJFLJ8+0Hos1uR8fsfqqwGgIDrBqAp0LIzKBdZ7UNqYwPqcWcmE=
email: false
env:
- NODE_VERSION=10.16.0

847
CHANGES.md Normal file
View File

@@ -0,0 +1,847 @@
# CHANGELOG
## 1.12.1-beta
### :boom: Breaking changes
### :sparkles: New features
### :bug: Bugs fixed
- Fix length of names in sidebar [Taiga #2962](https://tree.taiga.io/project/penpot/issue/2962)
- Fix issues on loki integration
### :heart: Community contributions by (Thank you!)
## 1.12.0-beta
### :boom: Breaking changes
### :sparkles: New features
- Open feedback in a new window [Taiga #2901](https://tree.taiga.io/project/penpot/us/2901)
- Improve usage of file menu [Taiga #2853](https://tree.taiga.io/project/penpot/us/2853)
- Rotation to snap to 15º intervals with shift [Taiga #2437](https://tree.taiga.io/project/penpot/issue/2437)
- Support border radius and stroke properties for images [Taiga #497](https://tree.taiga.io/project/penpot/us/497)
- Disallow using same password as user email [Taiga #2454](https://tree.taiga.io/project/penpot/us/2454)
- Add configurable nudge amount [Taiga #910](https://tree.taiga.io/project/penpot/us/910)
- Add stroke properties for image shapes [Taiga #497](https://tree.taiga.io/project/penpot/us/497)
- On user settings, hide the theme selector as long as we only have one theme [Taiga #2610](https://tree.taiga.io/project/penpot/us/2610)
- Automatically open comments from dashboard notifications [Taiga #2605](https://tree.taiga.io/project/penpot/us/2605)
- Enhance the behaviour of the artboards list on view mode [Taiga #2634](https://tree.taiga.io/project/penpot/us/2634)
- Add recent used fonts in font selection widget [Taiga #1381](https://tree.taiga.io/project/penpot/us/1381)
- Allow to align items relative to groups [Taiga #2533](https://tree.taiga.io/project/penpot/us/2533)
- Scroll bars [Taiga #2550](https://tree.taiga.io/project/penpot/task/2550)
- Add select layer option to context menu [Taiga #2474](https://tree.taiga.io/project/penpot/us/2474)
- Guides [Taiga #290](https://tree.taiga.io/project/penpot/us/290)
- Improve file menu by adding semantically groups [Github #1203](https://github.com/penpot/penpot/issues/1203)
- Add update components in bulk option in context menu [Taiga #1975](https://tree.taiga.io/project/penpot/us/1975)
- Create first E2E tests [Taiga #2608](https://tree.taiga.io/project/penpot/task/2608), [Taiga #2608](https://tree.taiga.io/project/penpot/task/2608)
- Redesign of workspace toolbars [Taiga #2319](https://tree.taiga.io/project/penpot/us/2319)
- Graphic Tablet usability improvements [Taiga #1913](https://tree.taiga.io/project/penpot/us/1913)
- Improved mouse collision detection for groups and text shapes [Taiga #2452](https://tree.taiga.io/project/penpot/us/2452), [Taiga #2453](https://tree.taiga.io/project/penpot/us/2453)
- Add support for alternative S3 storage providers and all aws regions [#1267](https://github.com/penpot/penpot/issues/1267)
### :bug: Bugs fixed
- Fixed ungroup typography when editing it [Taiga #2391](https://tree.taiga.io/project/penpot/issue/2391)
- Fixed error when trying to post an empty comment [Taiga #2603](https://tree.taiga.io/project/penpot/issue/2603)
- Fixed missing translation strings [Taiga #2786](https://tree.taiga.io/project/penpot/issue/2786)
- Fixed color palette outside viewport [Taiga #2715](https://tree.taiga.io/project/penpot/issue/2715)
- Fixed missing translate string [Taiga #2780](https://tree.taiga.io/project/penpot/issue/2780)
- Fixed handoff shadow type text [Taiga #2717](https://tree.taiga.io/project/penpot/issue/2717)
- Fixed components get "dirty" marker when moved [Taiga #2764](https://tree.taiga.io/project/penpot/issue/2764)
- Fixed cannot align objects in a group that is not part of a frame [Taiga #2762](https://tree.taiga.io/project/penpot/issue/2762)
- Fix problem with double click on exit path editing [Taiga #2906](https://tree.taiga.io/project/penpot/issue/2906)
- Fixed alignment of layers with children [Taiga #2862](https://tree.taiga.io/project/penpot/issue/2862)
### :heart: Community contributions by (Thank you!)
- Cleanup unused static images (by @rhcarvalho) [#1561](https://github.com/penpot/penpot/pull/1561)
- Compress static images to save space (by @rhcarvalho) [#1562](https://github.com/penpot/penpot/pull/1562)
## 1.11.2-beta
### :bug: Bugs fixed
- Fix issue on handling empty content on boolean shapes
- Fix race condition issue on component renaming
- Handle EOF errors on writting streamed response
- Handle EOF errors on websocket send/ping methods
- Disable parallel upload of file media on import (causes too much
contention on the rlimit subsistem that does not works as expected
on high load).
### :sparkles: New features
- Add health check endpoint on API
- Increase default max connection pool size to 60
- Reduce resource usage of the error reporter.
## 1.11.1-beta
### :bug: Bugs fixed
- Fix issue related to default http host config value.
- Fix issue on rendering frames on firefox.
### :arrow_up: Deps updates
- Update nodejs version to 16.13.1 on docker images.
## 1.11.0-beta
### :sparkles: New features
- Add an option to hide artboards names on the viewport [Taiga #2034](https://tree.taiga.io/project/penpot/issue/2034)
- Limit pasted object position to container boundaries [Taiga #2449](https://tree.taiga.io/project/penpot/us/2449)
- Add new options for zoom widget in workspace and viewer mode [Taiga #896](https://tree.taiga.io/project/penpot/us/896)
- Allow decimals on stroke width and positions [Taiga #2035](https://tree.taiga.io/project/penpot/issue/2035)
- Ability to ignore background when exporting an artboard [Taiga #1395](https://tree.taiga.io/project/penpot/us/1395)
- Show color hex or name on hover [Taiga #2413](https://tree.taiga.io/project/penpot/us/2413)
- Add shortcut to create artboard from selected objects [Taiga #2412](https://tree.taiga.io/project/penpot/us/2412)
- Add shortcut for opacity [Taiga #2442](https://tree.taiga.io/project/penpot/us/2442)
- Setting fill automatically for new texts [Taiga #2441](https://tree.taiga.io/project/penpot/us/2441)
- Add shortcut to move action [Github #1213](https://github.com/penpot/penpot/issues/1213)
- Add alt as mod key to add stroke color from library menu [Taiga #2207](https://tree.taiga.io/project/penpot/us/2207)
- Add detach in bulk option to context menu [Taiga #2210](https://tree.taiga.io/project/penpot/us/2210)
- Add penpot look and feel to multiuser cursors [Taiga #1387](https://tree.taiga.io/project/penpot/us/1387)
- Add actions to go to main component context menu option [Taiga #2053](https://tree.taiga.io/project/penpot/us/2053)
- Add contrast between component select color and shape select color [Taiga #2121](https://tree.taiga.io/project/penpot/issue/2121)
- Add animations in interactions [Taiga #2244](https://tree.taiga.io/project/penpot/us/2244)
- Add performance improvements on .penpot file import process [Taiga #2497](https://tree.taiga.io/project/penpot/us/2497)
- On team settings set color of members count to black [Taiga #2607](https://tree.taiga.io/project/penpot/us/2607)
### :bug: Bugs fixed
- Fix remove gradient if any when applying color from library [Taiga #2299](https://tree.taiga.io/project/penpot/issue/2299)
- Fix Enter as key action to exit edit path [Taiga #2444](https://tree.taiga.io/project/penpot/issue/2444)
- Fix add fill color from palette to groups and components [Taiga #2313](https://tree.taiga.io/project/penpot/issue/2313)
- Fix default project name in all languages [Taiga #2280](https://tree.taiga.io/project/penpot/issue/2280)
- Fix line-height and letter-spacing inputs to allow negative values [Taiga #2381](https://tree.taiga.io/project/penpot/issue/2381)
- Fix typo in Handoff tooltip [Taiga #2428](https://tree.taiga.io/project/penpot/issue/2428)
- Fix crash when pressing Shift+1 on empty file [#1435](https://github.com/penpot/penpot/issues/1435)
- Fix masked group resize strange behavior [Taiga #2317](https://tree.taiga.io/project/penpot/issue/2317)
- Fix problems when exporting all artboards [Taiga #2234](https://tree.taiga.io/project/penpot/issue/2234)
- Fix problems with team management [#1353](https://github.com/penpot/penpot/issues/1353)
- Fix problem when importing in shared libraries [#1362](https://github.com/penpot/penpot/issues/1362)
- Fix problem with join nodes [#1422](https://github.com/penpot/penpot/issues/1422)
- After team onboarding importing a file will import into the team drafts [Taiga #2408](https://tree.taiga.io/project/penpot/issue/2408)
- Fix problem exporting shapes from handoff mode [Taiga #2386](https://tree.taiga.io/project/penpot/issue/2386)
- Fix lock/hide elements in context menu when multiples shapes selected [Taiga #2340](https://tree.taiga.io/project/penpot/issue/2340)
- Fix problem with booleans [Taiga #2356](https://tree.taiga.io/project/penpot/issue/2356)
- Fix line-height/letter-spacing inputs behaviour [Taiga #2331](https://tree.taiga.io/project/penpot/issue/2331)
- Fix dotted style in strokes [Taiga #2312](https://tree.taiga.io/project/penpot/issue/2312)
- Fix problem when resizing texts inside groups [Taiga #2310](https://tree.taiga.io/project/penpot/issue/2310)
- Fix problem with multiple exports [Taiga #2468](https://tree.taiga.io/project/penpot/issue/2468)
- Allow import to continue from recoverable failures [#1412](https://github.com/penpot/penpot/issues/1412)
- Improved behaviour on text options when not text is selected [Taiga #2390](https://tree.taiga.io/project/penpot/issue/2390)
- Fix decimal numbers in export viewbox [Taiga #2290](https://tree.taiga.io/project/penpot/issue/2290)
- Right click over artboard name to open its menu [Taiga #1679](https://tree.taiga.io/project/penpot/issue/1679)
- Make the default session cookue use SameSite=Lax instead of Strict (causes some issues in latest versions of Chrome)
- Fix "open in new tab" on dashboard [Taiga #2235](https://tree.taiga.io/project/penpot/issue/2355)
- Changing pages while comments activated will not close the panel [#1350](https://github.com/penpot/penpot/issues/1350)
- Fix navigate comments in right sidebar [Taiga #2163](https://tree.taiga.io/project/penpot/issue/2163)
- Fix keep name of component equal to the shape name [Taiga #2341](https://tree.taiga.io/project/penpot/issue/2341)
- Fix lossing changes when changing selection and an input was already changed [Taiga #2329](https://tree.taiga.io/project/penpot/issue/2329), [Taiga #2330](https://tree.taiga.io/project/penpot/issue/2330)
- Fix blur input field when click on viewport [Taiga #2164](https://tree.taiga.io/project/penpot/issue/2164)
- Fix default page id in workspace [Taiga #2205](https://tree.taiga.io/project/penpot/issue/2205)
- Fix problem when importing a file with grids [Taiga #2314](https://tree.taiga.io/project/penpot/issue/2314)
- Fix problem with imported svgs with filters [Taiga #2478](https://tree.taiga.io/project/penpot/issue/2478)
- Fix issues when updating selrect in paths [Taiga #2366](https://tree.taiga.io/project/penpot/issue/2366)
- Fix scroll jumps in handoff mode [Taiga #2383](https://tree.taiga.io/project/penpot/issue/2383)
- Fix handoff text with opacity [Taiga #2384](https://tree.taiga.io/project/penpot/issue/2384)
- Restored rules color [Taiga #2460](https://tree.taiga.io/project/penpot/issue/2460)
- Fix thumbnail not taking frame blending mode [Taiga #2301](https://tree.taiga.io/project/penpot/issue/2301)
- Fix import/export with SVG edge cases [Taiga #2389](https://tree.taiga.io/project/penpot/issue/2389)
- Avoid modifying component when moving into a group [Taiga #2534](https://tree.taiga.io/project/penpot/issue/2534)
- Show correctly group types label in handoff [Taiga #2482](https://tree.taiga.io/project/penpot/issue/2482)
- Display view mode buttons always centered in viewer [#Taiga 2466](https://tree.taiga.io/project/penpot/issue/2466)
- Fix default profile image generation issue [Taiga #2601](https://tree.taiga.io/project/penpot/issue/2601)
- Fix edit blur attributes for multiselection [Taiga #2625](https://tree.taiga.io/project/penpot/issue/2625)
- Fix auto hide header in viewer full screen [Taiga #2632](https://tree.taiga.io/project/penpot/issue/2632)
- Fix zoom in/out after fit or fill [Taiga #2630](https://tree.taiga.io/project/penpot/issue/2630)
- Normalize zoom levels in workspace and viewer [Taiga #2631](https://tree.taiga.io/project/penpot/issue/2631)
- Avoid empty names in projects, files and pages [Taiga #2594](https://tree.taiga.io/project/penpot/issue/2594)
- Fix "move to" menu when duplicated team or project names [Taiga #2655](https://tree.taiga.io/project/penpot/issue/2655)
- Fix ungroup a component leaves an asterisk in layers [Taiga #2694](https://tree.taiga.io/project/penpot/issue/2694)
### :arrow_up: Deps updates
- Update devenv docker image dependencies
### :heart: Community contributions by (Thank you!)
- Spelling fixes (by @jsoref) [#1340](https://github.com/penpot/penpot/pull/1340)
- Explain folders in components (by @candideu) [Penpot-docs #42](https://github.com/penpot/penpot-docs/pull/42)
- Readability improvements of user guide (by @PaulSchulz) [Penpot-docs #50](https://github.com/penpot/penpot-docs/pull/50)
## 1.10.4-beta
### :sparkles: Enhacements
- Allow parametrice file snapshoting interval
### :bug: Bugs fixed
- Fix issue on :mov-object change impl
- Minor fix on how file changes log is persisted
- Fix many issues on error reporting
## 1.10.3-beta
### :sparkles: Enhacements
- Make all logging asynchronous, this avoid some overhead on jetty threads at cost of logging latency.
- Increase default session time to 15 days.
### :bug: Bugs fixed
- Fix unexpected exception on saving pages with default grids [#2409](https://tree.taiga.io/project/penpot/issue/2409)
- Fix react warnings on setting size 1 on row and column grids.
- Fix minor issues on ZMQ logging listener (used in error reporting service)
- Remove "ALPHA" from the code.
- Fix value and nil handling on numeric-input component. This fixes many issues related to typography, components, etc. renaming.
- Fix NPE on email complains processing.
- Fix white page after leaving a team.
- Fix missing leave team button outside members page.
### :arrow_up: Deps updates
- Update log4j2 dependency.
## 1.10.2-beta
### :bug: Bugs fixed
- Fix corner case issues with media file uploads.
- Fix issue with default page grids validation.
- Fix issue related to some raceconditions on workspace navigation events.
### :arrow_up: Deps updates
- Update log4j2 dependency.
## 1.10.1-beta
### :bug: Bugs fixed
- Fix problems with team management [#1353](https://github.com/penpot/penpot/issues/1353)
## 1.10.0-beta
### :boom: Breaking changes
- The initial project / data mechanism (not documented) has been
disabled. Is the mechanism used for creating initial project on user
signup. With the new onboarding approach, this subsystem is no
longer needed and is disabled.
### :sparkles: New features
- Allow ungroup groups in bulk [Taiga #2211](https://tree.taiga.io/project/penpot/us/2211)
- Enhance corner radius behavior [Taiga #2190](https://tree.taiga.io/project/penpot/issue/2190)
- Allow preserve scroll position in interactions [Taiga #2250](https://tree.taiga.io/project/penpot/us/2250)
- Add new onboarding modals.
### :bug: Bugs fixed
- Fix problem with exporting before the document is saved [Taiga #2189](https://tree.taiga.io/project/penpot/issue/2189)
- Fix undo stacking when changing color from color-picker [Taiga #2191](https://tree.taiga.io/project/penpot/issue/2191)
- Fix pages dropdown in viewer [Taiga #2087](https://tree.taiga.io/project/penpot/issue/2087)
- Fix problem when exporting texts with gradients or opacity [Taiga #2200](https://tree.taiga.io/project/penpot/issue/2200)
- Fix problem with view mode comments [Taiga #2226](https://tree.taiga.io/project/penpot/issue/2226)
- Disallow to create a component when already has one [Taiga #2237](https://tree.taiga.io/project/penpot/issue/2237)
- Add ellipsis in long labels for input fields [Taiga #2224](https://tree.taiga.io/project/penpot/issue/2224)
- Fix problem with text rendering on export [Taiga #2223](https://tree.taiga.io/project/penpot/issue/2223)
- Fix problem when flattening booleans losing styles [Taiga #2217](https://tree.taiga.io/project/penpot/issue/2217)
- Add shortcuts to boolean icons popups [Taiga #2220](https://tree.taiga.io/project/penpot/issue/2220)
- Fix a worker error when transforming a rectangle into path
- Fix max/min values for opacity fields [Taiga #2183](https://tree.taiga.io/project/penpot/issue/2183)
- Fix viewer comment position when zoom applied [Taiga #2240](https://tree.taiga.io/project/penpot/issue/2240)
- Remove change style on hover for options [Taiga #2172](https://tree.taiga.io/project/penpot/issue/2172)
- Fix problem in viewer with dropdowns when comments active [#1303](https://github.com/penpot/penpot/issues/1303)
- Add placeholder to create shareable link
- Fix project files count not refreshing correctly after import [Taiga #2216](https://tree.taiga.io/project/penpot/issue/2216)
- Remove button after import process finish [Taiga #2215](https://tree.taiga.io/project/penpot/issue/2215)
- Fix problem with styles in the viewer [Taiga #2467](https://tree.taiga.io/project/penpot/issue/2467)
- Fix default state in viewer [Taiga #2465](https://tree.taiga.io/project/penpot/issue/2465)
- Fix division by zero in bool operation [Taiga #2349](https://tree.taiga.io/project/penpot/issue/2349)
### :heart: Community contributions by (Thank you!)
- To the translation community for the hard work on making penpot
available on so many languages.
- Guide to integrate with Azure Directory (by @skrzyneckik) [Penpot-docs #33](https://github.com/penpot/penpot-docs/pull/33)
- Improve libraries section readability (by @PaulSchulz) [Penpot-docs #39](https://github.com/penpot/penpot-docs/pull/39)
## 1.9.0-alpha
### :boom: Breaking changes
- Some stroke-caps can change behaviour.
- Text display bug fix could potentially make some texts jump a line.
### :sparkles: New features
- Add boolean shapes: intersections, unions, difference and exclusions[Taiga #748](https://tree.taiga.io/project/penpot/us/748)
- Add advanced prototyping [Taiga #244](https://tree.taiga.io/project/penpot/us/244)
- Add multiple flows [Taiga #2091](https://tree.taiga.io/project/penpot/us/2091)
- Change order of the teams menu so it's in the joined time order.
### :bug: Bugs fixed
- Enhance duplicating prototype connections behaviour [Taiga #2093](https://tree.taiga.io/project/penpot/us/2093)
- Ignore constraints in horizontal or vertical flip [Taiga #2038](https://tree.taiga.io/project/penpot/issue/2038)
- Fix color and typographies refs lost when duplicated file [Taiga #2165](https://tree.taiga.io/project/penpot/issue/2165)
- Fix problem with overflow dropdown on stroke-cap [#1216](https://github.com/penpot/penpot/issues/1216)
- Fix menu context for single element nested in components [#1186](https://github.com/penpot/penpot/issues/1186)
- Fix error screen when operations over comments fail [#1219](https://github.com/penpot/penpot/issues/1219)
- Fix undo problem when changing typography/color from library [#1230](https://github.com/penpot/penpot/issues/1230)
- Fix problem with text margin while rendering [#1231](https://github.com/penpot/penpot/issues/1231)
- Fix problem with masked texts on exporting [Taiga #2116](https://tree.taiga.io/project/penpot/issue/2116)
- Fix text editor enter behaviour with centered texts [Taiga #2126](https://tree.taiga.io/project/penpot/issue/2126)
- Fix residual stroke on imported svg [Taiga #2125](https://tree.taiga.io/project/penpot/issue/2125)
- Add links for terms of service and privacy policy in register checkbox [Taiga #2020](https://tree.taiga.io/project/penpot/issue/2020)
- Allow three character hex and web colors in color picker hex input [#1184](https://github.com/penpot/penpot/issues/1184)
- Allow lowercase search for fonts [#1180](https://github.com/penpot/penpot/issues/1180)
- Fix group renaming problem [Taiga #1969](https://tree.taiga.io/project/penpot/issue/1969)
- Fix export group with shadows on children [Taiga #2036](https://tree.taiga.io/project/penpot/issue/2036)
- Fix zoom context menu in viewer [Taiga #2041](https://tree.taiga.io/project/penpot/issue/2041)
- Fix stroke caps adjustments in relation with stroke size [Taiga #2123](https://tree.taiga.io/project/penpot/issue/2123)
- Fix problem duplicating paths [Taiga #2147](https://tree.taiga.io/project/penpot/issue/2147)
- Fix problem inheriting attributes from SVG root when importing [Taiga #2124](https://tree.taiga.io/project/penpot/issue/2124)
- Fix problem with lines and inside/outside stroke [Taiga #2146](https://tree.taiga.io/project/penpot/issue/2146)
- Add stroke width in selection calculation [Taiga #2146](https://tree.taiga.io/project/penpot/issue/2146)
- Fix shift+wheel to horizontal scrolling in MacOS [#1217](https://github.com/penpot/penpot/issues/1217)
- Fix path stroke is not working properly with high thickness [Taiga #2154](https://tree.taiga.io/project/penpot/issue/2154)
- Fix bug with transformation operations [Taiga #2155](https://tree.taiga.io/project/penpot/issue/2155)
- Fix bug in firefox when a text box is inside a mask [Taiga #2152](https://tree.taiga.io/project/penpot/issue/2152)
- Fix problem with stroke inside/outside [Taiga #2186](https://tree.taiga.io/project/penpot/issue/2186)
- Fix masks export area [Taiga #2189](https://tree.taiga.io/project/penpot/issue/2189)
- Fix paste in place in artboards [Taiga #2188](https://tree.taiga.io/project/penpot/issue/2188)
- Fix font size input stuck on selection change [Taiga #2184](https://tree.taiga.io/project/penpot/issue/2184)
- Fix stroke cut on shapes export [Taiga #2171](https://tree.taiga.io/project/penpot/issue/2171)
- Fix no color when boolean with an SVG [Taiga #2193](https://tree.taiga.io/project/penpot/issue/2193)
- Fix unlink color styles at strokes [Taiga #2206](https://tree.taiga.io/project/penpot/issue/2206)
### :arrow_up: Deps updates
### :heart: Community contributions by (Thank you!)
- To the translation community for the hard work on making penpot
available on so many languages.
## 1.8.4-alpha
### :bug: Bugs fixed
- Fix problem importing components [Taiga #2151](https://tree.taiga.io/project/penpot/issue/2151)
## 1.8.3-alpha
### :sparkles: New features
- Adds progress report to importing process.
## 1.8.2-alpha
### :bug: Bugs fixed
- Fix problem with masking images in viewer [#1238](https://github.com/penpot/penpot/issues/1238)
## 1.8.1-alpha
### :bug: Bugs fixed
- Fix project renaming issue (and some other related to the same underlying bug)
- Fix internal exception on audit log persistence layer.
- Set proper environment variable on docker images for chrome executable.
- Fix internal metrics on websocket connections.
## 1.8.0-alpha
### :boom: Breaking changes
- This release includes a new approach for handling share links, and
this feature is incompatible with the previous one. This means that
all the public share links generated previously will stop working.
### :sparkles: New features
- Add tooltips to color picker tabs [Taiga #1814](https://tree.taiga.io/project/penpot/us/1814)
- Add styling to the end point of any open paths [Taiga #1107](https://tree.taiga.io/project/penpot/us/1107)
- Allow to zoom with ctrl + middle button [Taiga #1428](https://tree.taiga.io/project/penpot/us/1428)
- Auto placement of duplicated objects [Taiga #1386](https://tree.taiga.io/project/penpot/us/1386)
- Enable penpot SVG metadata only when exporting complete files [Taiga #1914](https://tree.taiga.io/project/penpot/us/1914?milestone=295883)
- Export to PDF all artboards of one page [Taiga #1895](https://tree.taiga.io/project/penpot/us/1895)
- Go to a undo step clicking on a history element of the list [Taiga #1374](https://tree.taiga.io/project/penpot/us/1374)
- Increment font size by 10 with shift+arrows [1047](https://github.com/penpot/penpot/issues/1047)
- New shortcut to detach components Ctrl+Shift+K [Taiga #1799](https://tree.taiga.io/project/penpot/us/1799)
- Set email inputs to type "email", to aid keyboard entry [Taiga #1921](https://tree.taiga.io/project/penpot/issue/1921)
- Use shift+move to move element orthogonally [#823](https://github.com/penpot/penpot/issues/823)
- Use space + mouse drag to pan, instead of only space [Taiga #1800](https://tree.taiga.io/project/penpot/us/1800)
- Allow navigate through pages on the viewer [Taiga #1550](https://tree.taiga.io/project/penpot/us/1550)
- Allow create share links with specific pages [Taiga #1844](https://tree.taiga.io/project/penpot/us/1844)
### :bug: Bugs fixed
- Prevent adding numeric suffix to layer names when not needed [Taiga #1929](https://tree.taiga.io/project/penpot/us/1929)
- Prevent deleting or moving the drafts project [Taiga #1935](https://tree.taiga.io/project/penpot/issue/1935)
- Fix problem with zoom and selection [Taiga #1919](https://tree.taiga.io/project/penpot/issue/1919)
- Fix problem with borders on shape export [#1092](https://github.com/penpot/penpot/issues/1092)
- Fix thumbnail cropping issue [Taiga #1964](https://tree.taiga.io/project/penpot/issue/1964)
- Fix repeated fetch on file selection [Taiga #1933](https://tree.taiga.io/project/penpot/issue/1933)
- Fix rename typography on text options [Taiga #1963](https://tree.taiga.io/project/penpot/issue/1963)
- Fix problems with order in groups [Taiga #1960](https://tree.taiga.io/project/penpot/issue/1960)
- Fix SVG components preview [#1134](https://github.com/penpot/penpot/issues/1134)
- Fix group renaming problem [Taiga #1969](https://tree.taiga.io/project/penpot/issue/1969)
- Fix problem with import broken images links [#1197](https://github.com/penpot/penpot/issues/1197)
- Fix problem while moving imported SVG's [#1199](https://github.com/penpot/penpot/issues/1199)
### :arrow_up: Deps updates
### :boom: Breaking changes
### :heart: Community contributions by (Thank you!)
- eduayme [#1129](https://github.com/penpot/penpot/pull/1129)
## 1.7.4-alpha
### :bug: Bugs fixed
- Fix demo user creation (self-hosted only)
- Add better ldap response validation and reporting (self-hosted only)
## 1.7.3-alpha
### :bug: Bugs fixed
- Fix font uploading issue on Windows.
## 1.7.2-alpha
### :sparkles: New features
- Add many improvements to text tool.
### :bug: Bugs fixed
- Add scroll bar to Teams menu [Taiga #1894](https://tree.taiga.io/project/penpot/issue/1894)
- Fix repeated names when duplicating artboards or groups [Taiga #1892](https://tree.taiga.io/project/penpot/issue/1892)
- Fix properly messages lifecycle on navigate.
- Fix handling repeated names on duplicate object trees.
- Fix group naming on group creation.
- Fix some issues in svg transformation.
### :arrow_up: Deps updates
- Update frontend build tooling.
### :heart: Community contributions by (Thank you!)
- soultipsy [#1100](https://github.com/penpot/penpot/pull/1100)
## 1.7.1-alpha
### :bug: Bugs fixed
- Fix issue related to the GC and images in path shapes.
- Fix issue on the shape order on some undo operations.
- Fix issue on undo page deletion.
- Fix some issues related to constraints.
## 1.7.0-alpha
### :sparkles: New features
- Allow nested asset groups [Taiga #1716](https://tree.taiga.io/project/penpot/us/1716)
- Allow to ungroup assets [Taiga #1719](https://tree.taiga.io/project/penpot/us/1719)
- Allow to rename assets groups [Taiga #1721](https://tree.taiga.io/project/penpot/us/1721)
- Component constraints (left, right, left and right, center, scale...) [Taiga #1125](https://tree.taiga.io/project/penpot/us/1125)
- Export elements to PDF [Taiga #519](https://tree.taiga.io/project/penpot/us/519)
- Memorize collapse state of assets in panel [Taiga #1718](https://tree.taiga.io/project/penpot/us/1718)
- Headers button sets and menus review [Taiga #1663](https://tree.taiga.io/project/penpot/us/1663)
- Preserve components if possible, when pasted into a different file [Taiga #1063](https://tree.taiga.io/project/penpot/issue/1063)
- Add the ability to offload file data to a cheaper storage when file becomes inactive.
- Import/Export Penpot files from dashboard.
- Double click won't make a shape a path until you change a node [Taiga #1796](https://tree.taiga.io/project/penpot/us/1796)
- Incremental area selection [#779](https://github.com/penpot/penpot/discussions/779)
### :bug: Bugs fixed
- Process numeric input changes only if the value actually changed.
- Remove unnecessary redirect from history when user goes to workspace from dashboard [Taiga #1820](https://tree.taiga.io/project/penpot/issue/1820)
- Detach shapes from deleted assets [Taiga #1850](https://tree.taiga.io/project/penpot/issue/1850)
- Fix tooltip position on view application [Taiga #1819](https://tree.taiga.io/project/penpot/issue/1819)
- Fix dashboard navigation on moving file to other team [Taiga #1817](https://tree.taiga.io/project/penpot/issue/1817)
- Fix workspace header presence styles and invalid link [Taiga #1813](https://tree.taiga.io/project/penpot/issue/1813)
- Fix color-input wrong behavior (on workspace page color) [Taiga #1795](https://tree.taiga.io/project/penpot/issue/1795)
- Fix file contextual menu in shared libraries at dashboard [Taiga #1865](https://tree.taiga.io/project/penpot/issue/1865)
- Fix problem with color picker and fonts [#1049](https://github.com/penpot/penpot/issues/1049)
- Fix negative values in blur [Taiga #1815](https://tree.taiga.io/project/penpot/issue/1815)
- Fix problem when editing color in group [Taiga #1816](https://tree.taiga.io/project/penpot/issue/1816)
- Fix resize/rotate with mouse buttons different than left [#1060](https://github.com/penpot/penpot/issues/1060)
- Fix header partially visible on fullscreen viewer mode [Taiga #1875](https://tree.taiga.io/project/penpot/issue/1875)
- Fix dynamic alignment enabled with hidden objects [#1063](https://github.com/penpot/penpot/issues/1063)
## 1.6.5-alpha
### :bug: Bugs fixed
- Fix problem with paths editing after flip [#1040](https://github.com/penpot/penpot/issues/1040)
## 1.6.4-alpha
### :sparkles: Minor improvements
- Decrease default bulk buffers on storage tasks.
- Reduce file_change preserve interval to 24h.
### :bug: Bugs fixed
- Don't allow rename drafts project.
- Fix custom font deletion task.
- Fix custom font rendering on exporting shapes.
- Fix font loading on viewer app.
- Fix problem when moving files with drag & drop.
- Fix unexpected exception on searching without term.
- Properly handle nil values on `update-shapes` function.
- Replace frame term usage by artboard on viewer app.
## 1.6.3-alpha
### :bug: Bugs fixed
- Fix problem with merge and join nodes [#990](https://github.com/penpot/penpot/issues/990)
- Fix problem with empty path editing.
- Fix problem with create component.
- Fix problem with move-objects.
- Fix problem with merge and join nodes.
## 1.6.2-alpha
### :bug: Bugs fixed
- Add better auth module logging.
- Add missing `email` scope to OIDC backend.
- Add missing cause prop on error loging.
- Fix empty font-family handling on custom fonts page.
- Fix incorrect unicode code points handling on draft-to-penpot conversion.
- Fix some problems with paths.
- Fix unexpected exception on duplicate project.
- Fix unexpected exception when user leaves typography name empty.
- Improve error report on uploading invalid image to library.
- Minor fix on previous commit.
- Minor improvements on svg uploading on libraries.
## 1.6.1-alpha
### :bug: Bugs fixed
- Add safety check on reg-objects change impl.
- Fix custom fonts embedding issue.
- Fix dashboard ordering issue.
- Fix problem when creating a component with empty data.
- Fix problem with moving shapes into frames.
- Fix problems with mov-objects.
- Fix unexpected exception related to rounding integers.
- Fix wrong type usage on libraries changes.
- Improve editor lifecycle management.
- Make the navigation async by default.
## 1.6.0-alpha
### :sparkles: New features
- Add improved workspace font selector [Taiga US #292](https://tree.taiga.io/project/penpot/us/292)
- Add option to interactively scale text [Taiga #1527](https://tree.taiga.io/project/penpot/us/1527)
- Add performance improvements on dashboard data loading.
- Add performance improvements to indexes handling on workspace.
- Add the ability to upload/use custom fonts (and automatically generate all needed webfonts) [Taiga US #292](https://tree.taiga.io/project/penpot/us/292)
- Transform shapes to path on double click
- Translate automatic names of new files and projects.
- Use shift instead of ctrl/cmd to keep aspect ratio [Taiga 1697](https://tree.taiga.io/project/penpot/issue/1697)
- New translations: Portuguese (Brazil) and Romanias.
### :bug: Bugs fixed
- Remove interactions when the destination artboard is deleted [Taiga #1656](https://tree.taiga.io/project/penpot/issue/1656)
- Fix problem with fonts that ends with numbers [#940](https://github.com/penpot/penpot/issues/940)
- Fix problem with imported SVG on editing paths [#971](https://github.com/penpot/penpot/issues/971)
- Fix problem with color picker positioning
- Fix order on color palette [#961](https://github.com/penpot/penpot/issues/961)
- Fix issue when group creation leaves an empty group [#1724](https://tree.taiga.io/project/penpot/issue/1724)
- Fix problem with :multiple for colors and typographies [#1668](https://tree.taiga.io/project/penpot/issue/1668)
- Fix problem with locked shapes when change parents [#974](https://github.com/penpot/penpot/issues/974)
- Fix problem with new nodes in paths [#978](https://github.com/penpot/penpot/issues/978)
### :arrow_up: Deps updates
- Update exporter dependencies (puppeteer), that fixes some unexpected exceptions.
- Update string manipulation library.
### :boom: Breaking changes
- The OIDC setting `PENPOT_OIDC_SCOPES` has changed the default semantics. Before this
configuration added scopes to the default set. Now it replaces it, so use with care, because
penpot requires at least `name` and `email` props found on the user info object.
### :heart: Community contributions by (Thank you!)
- Translations: Portuguese (Brazil) and Romanias.
## 1.5.4-alpha
### :bug: Bugs fixed
- Fix issues on group rendering.
- Fix problem with text editing auto-height [Taiga #1683](https://tree.taiga.io/project/penpot/issue/1683)
## 1.5.3-alpha
### :bug: Bugs fixed
- Fix problem undo/redo.
## 1.5.2-alpha
### :bug: Bugs fixed
- Fix problem with `close-path` command [#917](https://github.com/penpot/penpot/issues/917)
- Fix wrong query for obtain the profile default project-id
- Fix problems with empty paths and shortcuts [#923](https://github.com/penpot/penpot/issues/923)
## 1.5.1-alpha
### :bug: Bugs fixed
- Fix issue with bitmap image clipboard.
- Fix issue when removing all path points.
- Increase default team invitation token expiration to 48h.
- Fix wrong error message when an expired token is used.
## 1.5.0-alpha
### :sparkles: New features
- Add integration with gitpod.io (an online IDE) [#807](https://github.com/penpot/penpot/pull/807)
- Allow basic math operations in inputs [Taiga 1383](https://tree.taiga.io/project/penpot/us/1383)
- Autocomplete color names in hex inputs [Taiga 1596](https://tree.taiga.io/project/penpot/us/1596)
- Allow to group assets (components and graphics) [Taiga #1289](https://tree.taiga.io/project/penpot/us/1289)
- Change icon of pinned projects [Taiga 1298](https://tree.taiga.io/project/penpot/us/1298)
- Internal: refactor of http client, replace internal xhr usage with more modern Fetch API.
- New features for paths: snap points on edition, add/remove nodes, merge/join/split nodes. [Taiga #907](https://tree.taiga.io/project/penpot/us/907)
- Add OpenID-Connect support.
- Reimplement social auth providers on top of the generic openid impl.
### :bug: Bugs fixed
- Fix problem with pan and space [#811](https://github.com/penpot/penpot/issues/811)
- Fix issue when parsing exponential numbers in paths
- Remove legacy system user and team [#843](https://github.com/penpot/penpot/issues/843)
- Fix ordering of copy pasted objects [Taiga #1618](https://tree.taiga.io/project/penpot/issue/1617)
- Fix problems with blending modes [#837](https://github.com/penpot/penpot/issues/837)
- Fix problem with zoom an selection rect [#845](https://github.com/penpot/penpot/issues/845)
- Fix problem displaying team statistics [#859](https://github.com/penpot/penpot/issues/859)
- Fix problems with text editor selection [Taiga #1546](https://tree.taiga.io/project/penpot/issue/1546)
- Fix problem when opening the context menu in dashboard at the bottom [#856](https://github.com/penpot/penpot/issues/856)
- Fix problem when clicking an interactive group in view mode [#863](https://github.com/penpot/penpot/issues/863)
- Fix visibility of pages in sitemap when changing page [Taiga #1618](https://tree.taiga.io/project/penpot/issue/1618)
- Fix visual problem with group invite [Taiga #1290](https://tree.taiga.io/project/penpot/issue/1290)
- Fix issues with promote owner panel [Taiga #763](https://tree.taiga.io/project/penpot/issue/763)
- Allow use library colors when defining gradients [Taiga #1614](https://tree.taiga.io/project/penpot/issue/1614)
- Fix group selrect not updating after alignment [#895](https://github.com/penpot/penpot/issues/895)
### :arrow_up: Deps updates
### :boom: Breaking changes
- Translations refactor: now penpot uses gettext instead of a custom
JSON, and each locale has its own separated file. All translations
should be contributed via the weblate.org service.
### :heart: Community contributions by (Thank you!)
- madmath03 (by [Monogramm](https://github.com/Monogramm)) [#807](https://github.com/penpot/penpot/pull/807)
- zzkt [#814](https://github.com/penpot/penpot/pull/814)
## 1.4.1-alpha
### :bug: Bugs fixed
- Fix typography unlinking.
- Fix incorrect measures on shapes outside artboard.
- Fix issues on svg parsing related to numbers with exponents.
- Fix some race conditions on removing shape from workspace.
- Fix incorrect state management of user lang selection.
- Fix email validation usability issue on team invitation lightbox.
## 1.4.0-alpha
### :sparkles: New features
- Add blob-encoding v3 (uses ZSTD+transit) [#738](https://github.com/penpot/penpot/pull/738)
- Add http caching layer on top of Query RPC.
- Add layer opacity and blend mode to shapes [Taiga #937](https://tree.taiga.io/project/penpot/us/937)
- Add more chinese translations [#726](https://github.com/penpot/penpot/pull/726)
- Add native support for text-direction (RTL, LTR & auto)
- Add several enhancements in shape selection [Taiga #1195](https://tree.taiga.io/project/penpot/us/1195)
- Add thumbnail in memory caching mechanism.
- Add turkish translation strings [#759](https://github.com/penpot/penpot/pull/759), [#794](https://github.com/penpot/penpot/pull/794)
- Duplicate and move files and projects [Taiga #267](https://tree.taiga.io/project/penpot/us/267)
- Hide viewer navbar on fullscreen [Taiga 1375](https://tree.taiga.io/project/penpot/us/1375)
- Import SVG will create Penpot's shapes [Taiga #1006](https://tree.taiga.io/project/penpot/us/1066)
- Improve french translations [#731](https://github.com/penpot/penpot/pull/731)
- Reimplement workspace presence (remove database state)
- Remember last visited team when you re-enter the application [Taiga #1376](https://tree.taiga.io/project/penpot/us/1376)
- Rename artboard with double click on the title [Taiga #1392](https://tree.taiga.io/project/penpot/us/1392)
- Replace Slate-Editor with DraftJS [Taiga #1346](https://tree.taiga.io/project/penpot/us/1346)
- Set proper page title [Taiga #1377](https://tree.taiga.io/project/penpot/us/1377)
### :bug: Bugs fixed
- Disable buttons in view mode for users without permissions [Taiga #1328](https://tree.taiga.io/project/penpot/issue/1328)
- Fix broken profile and profile options form.
- Fix calculate size of some animated gifs [Taiga #1487](https://tree.taiga.io/project/penpot/issue/1487)
- Fix error with the "Navigate to" button on prototypes [Taiga #1268](https://tree.taiga.io/project/penpot/issue/1268)
- Fix issue when undo after changing the artboard of a shape [Taiga #1304](https://tree.taiga.io/project/penpot/issue/1304)
- Fix issue with Alt key in distance measurement [#672](https://github.com/penpot/penpot/issues/672)
- Fix issue with blending modes in masks [Taiga #1476](https://tree.taiga.io/project/penpot/issue/1476)
- Fix issue with blocked shapes [Taiga #1480](https://tree.taiga.io/project/penpot/issue/1480)
- Fix issue with comments styles on dashboard [Taiga #1405](https://tree.taiga.io/project/penpot/issue/1405)
- Fix issue with default square grid [Taiga #1344](https://tree.taiga.io/project/penpot/issue/1344)
- Fix issue with enter key shortcut [#775](https://github.com/penpot/penpot/issues/775)
- Fix issue with enter to edit paths [Taiga #1481](https://tree.taiga.io/project/penpot/issue/1481)
- Fix issue with mask and flip [#715](https://github.com/penpot/penpot/issues/715)
- Fix issue with masks interactions outside bounds [#718](https://github.com/penpot/penpot/issues/718)
- Fix issue with middle mouse button press moving the canvas when not moving mouse [#717](https://github.com/penpot/penpot/issues/717)
- Fix issue with resolved comments [Taiga #1406](https://tree.taiga.io/project/penpot/issue/1406)
- Fix issue with rotated blur [Taiga #1370](https://tree.taiga.io/project/penpot/issue/1370)
- Fix issue with rotation degree input [#741](https://github.com/penpot/penpot/issues/741)
- Fix issue with system shortcuts and application [#737](https://github.com/penpot/penpot/issues/737)
- Fix issue with team management in dashboard [Taiga #1475](https://tree.taiga.io/project/penpot/issue/1475)
- Fix issue with typographies panel cannot be collapsed [#707](https://github.com/penpot/penpot/issues/707)
- Fix text selection in comments [#745](https://github.com/penpot/penpot/issues/745)
- Update Work-Sans font [#744](https://github.com/penpot/penpot/issues/744)
- Fix issue with recent files not showing [Taiga #1493](https://tree.taiga.io/project/penpot/issue/1493)
- Fix issue when promoting to owner [Taiga #1494](https://tree.taiga.io/project/penpot/issue/1494)
- Fix cannot click on blocked elements in viewer [Taiga #1430](https://tree.taiga.io/project/penpot/issue/1430)
- Fix SVG not showing properties at code [Taiga #1437](https://tree.taiga.io/project/penpot/issue/1437)
- Fix shadows when exporting groups [Taiga #1495](https://tree.taiga.io/project/penpot/issue/1495)
- Fix drag-select when renaming layer text [Taiga #1307](https://tree.taiga.io/project/penpot/issue/1307)
- Fix layout problem for editable selects [Taiga #1488](https://tree.taiga.io/project/penpot/issue/1488)
- Fix artboard title wasn't move when resizing [Taiga #1479](https://tree.taiga.io/project/penpot/issue/1479)
- Fix titles in viewer thumbnails too long [Taiga #1474](https://tree.taiga.io/project/penpot/issue/1474)
- Fix when right click on a selected text shows artboard contextual menu [Taiga #1226](https://tree.taiga.io/project/penpot/issue/1226)
### :boom: Breaking changes
- The LDAP configuration variables interpolation starts using `:`
(example `:username`) instead of `$`. The main reason is avoid
unnecessary conflict with bash interpolation.
### :arrow_up: Deps updates
- Update backend to JDK16.
- Update exporter nodejs to v14.16.0
### :heart: Community contributions by (Thank you!)
- iblueer [#726](https://github.com/penpot/penpot/pull/726)
- gizembln [#759](https://github.com/penpot/penpot/pull/759)
- girafic [#748](https://github.com/penpot/penpot/pull/748)
- mbrksntrk [#794](https://github.com/penpot/penpot/pull/794)
## 1.3.0-alpha
### :sparkles: New features
- Add emailcatcher and ldap test containers to devenv. [#506](https://github.com/penpot/penpot/pull/506)
- Add major refactor of internal pubsub/redis code; improves scalability and performance [#640](https://github.com/penpot/penpot/pull/640)
- Add more chinese translations [#687](https://github.com/penpot/penpot/pull/687)
- Add more presets for artboard [#654](https://github.com/penpot/penpot/pull/654)
- Add optional loki integration [#645](https://github.com/penpot/penpot/pull/645)
- Add proper http session lifecycle handling.
- Allow to set border radius of each rect corner individually
- Bounce & Complaint handling [#635](https://github.com/penpot/penpot/pull/635)
- Disable groups interactions when holding "Ctrl" key (deep selection)
- New action in context menu to "edit" some shapes (bound to key "Enter")
### :bug: Bugs fixed
- Add more improvements to french translation strings [#591](https://github.com/penpot/penpot/pull/591)
- Add some missing database indexes (mainly improves performance on large databases on file-update rpc method, and some background tasks)
- Disables filters in masking elements (issue with Firefox rendering)
- Drawing tool will have priority over resize/rotate handlers [Taiga #1225](https://tree.taiga.io/project/penpot/issue/1225)
- Fix broken bounding box on editing paths [Taiga #1254](https://tree.taiga.io/project/penpot/issue/1254)
- Fix corner cases on invitation/signup flows.
- Fix errors on onboarding file [Taiga #1287](https://tree.taiga.io/project/penpot/issue/1287)
- Fix infinite recursion on logout.
- Fix issues with frame selection [Taiga #1300](https://tree.taiga.io/project/penpot/issue/1300), [Taiga #1255](https://tree.taiga.io/project/penpot/issue/1255)
- Fix local fonts error [#691](https://github.com/penpot/penpot/issues/691)
- Fix issue width handoff code generation [Taiga #1204](https://tree.taiga.io/project/penpot/issue/1204)
- Fix issue with indices refreshing on page changes [#646](https://github.com/penpot/penpot/issues/646)
- Have language change notification written in the new language [Taiga #1205](https://tree.taiga.io/project/penpot/issue/1205)
- Hide register screen when registration is disabled [#598](https://github.com/penpot/penpot/issues/598)
- Properly handle errors on github, gitlab and ldap auth backends.
- Properly mark profile auth backend (on first register/ auth with 3rd party auth provider)
- Refactor LDAP auth backend.
### :heart: Community contributions by (Thank you!)
- girafic [#538](https://github.com/penpot/penpot/pull/654)
- arkhi [#591](https://github.com/penpot/penpot/pull/591)
## 1.2.0-alpha
### :sparkles: New features
- Add horizontal/vertical flip
- Add images lock proportions by default [#541](https://github.com/penpot/penpot/discussions/541), [#609](https://github.com/penpot/penpot/issues/609)
- Add new blob storage format (Zstd+nippy)
- Add user feedback form
- Improve French translations
- Improve component testing
- Increase default deletion delay to 7 days
- Show a pixel grid when zoom greater than 800% [#519](https://github.com/penpot/penpot/discussions/519)
- Fix behavior of select all command when there are objects outside frames [Taiga #1209](https://tree.taiga.io/project/penpot/issue/1209)
### :bug: Bugs fixed
- Fix 404 when access shared link [#615](https://github.com/penpot/penpot/issues/615)
- Fix 500 when requestion password reset
- Fix issue when transforming path shapes [Taiga #1170](https://tree.taiga.io/project/penpot/issue/1170)
- Fix apply a color to a text selection from color palette was not working [Taiga #1189](https://tree.taiga.io/project/penpot/issue/1189)
- Fix issues when moving shapes outside groups [Taiga #1138](https://tree.taiga.io/project/penpot/issue/1138)
- Fix ldap function called on login click
- Fix logo icon in viewer should go to dashboard [Taiga #1149](https://tree.taiga.io/project/penpot/issue/1149)
- Fix ordering when restoring deleted shapes in sync [Taiga #1163](https://tree.taiga.io/project/penpot/issue/1163)
- Fix issue when editing text immediately after creating [Taiga #1207](https://tree.taiga.io/project/penpot/issue/1207)
- Fix issue when pasting URL's copied from the browser url bar [Taiga #1187](https://tree.taiga.io/project/penpot/issue/1187)
- Fix issue with multiple selection and groups [Taiga #1128](https://tree.taiga.io/project/penpot/issue/1128)
- Fix issue with red handler indicator on resize [Taiga #1188](https://tree.taiga.io/project/penpot/issue/1188)
- Fix show correct error when google auth is disabled [Taiga #1119](https://tree.taiga.io/project/penpot/issue/1119)
- Fix text alignment in preview [#594](https://github.com/penpot/penpot/issues/594)
- Fix unexpected exception when uploading image [Taiga #1120](https://tree.taiga.io/project/penpot/issue/1120)
- Fix updates on collaborative editing not updating selection rectangles [Taiga #1127](https://tree.taiga.io/project/penpot/issue/1127)
- Make the team deletion deferred (in the same way other objects)
### :heart: Community contributions by (Thank you!)
- abtinmo [#538](https://github.com/penpot/penpot/pull/538)
- kdrag0n [#585](https://github.com/penpot/penpot/pull/585)
- nisrulz [#586](https://github.com/penpot/penpot/pull/586)
- tomer [#575](https://github.com/penpot/penpot/pull/575)
- violoncelloCH [#554](https://github.com/penpot/penpot/pull/554)
## 1.1.0-alpha
- Bugfixing and stabilization post-launch
- Some changes to the register flow
- Improved MacOS shortcuts and helpers
- Small changes to shape creation
## 1.0.0-alpha
Initial release

177
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,177 @@
# Contributing Guide #
Thank you for your interest in contributing to Penpot. This is a
generic guide that details how to contribute to Penpot in a way that
is efficient for everyone. If you want a specific documentation for
different parts of the platform, please refer to `docs/` directory.
## Reporting Bugs ##
We are using [GitHub Issues](https://github.com/penpot/penpot/issues)
for our public bugs. We keep a close eye on this and try to make it
clear when we have an internal fix in progress. Before filing a new
task, try to make sure your problem doesn't already exist.
If you found a bug, please report it, as far as possible with:
- a detailed explanation of steps to reproduce the error
- a browser and the browser version used
- a dev tools console exception stack trace (if it is available)
If you found a bug that you consider better discuss in private (for
example: security bugs), consider first send an email to
`support@penpot.app`.
**We don't have formal bug bounty program for security reports; this
is an open source application and your contribution will be recognized
in the changelog.**
## Pull requests ##
If you want propose a change or bug fix with the Pull-Request system
firstly you should carefully read the **DCO** section and format your
commits accordingly.
If you intend to fix a bug it's fine to submit a pull request right
away but we still recommend to file an issue detailing what you're
fixing. This is helpful in case we don't accept that specific fix but
want to keep track of the issue.
If you want to implement or start working in a new feature, please
open a **question** / **discussion** issue for it. No pull-request
will be accepted without previous chat about the changes,
independently if it is a new feature, already planned feature or small
quick win.
If is going to be your first pull request, You can learn how from this
free video series:
https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github
We will use the `easy fix` mark for tag for indicate issues that are
easy for beginners.
## Commit Guidelines ##
We have very precise rules over how our git commit messages can be formatted.
The commit message format is:
```
<type> <subject>
[body]
[footer]
```
Where type is:
- :bug: `:bug:` a commit that fixes a bug
- :sparkles: `:sparkles:` a commit that an improvement
- :tada: `:tada:` a commit with new feature
- :recycle: `:recycle:` a commit that introduces a refactor
- :lipstick: `:lipstick:` a commit with cosmetic changes
- :ambulance: `:ambulance:` a commit that fixes critical bug
- :books: `:books:` a commit that improves or adds documentation
- :construction: `:construction:`: a wip commit
- :boom: `:boom:` a commit with breaking changes
- :wrench: `:wrench:` a commit for config updates
- :zap: `:zap:` a commit with performance improvements
- :whale: `:whale:` a commit for docker related stuff
- :rewind: `:rewind:` a commit that reverts changes
- :paperclip: `:paperclip:` a commit with other not relevant changes
- :arrow_up: `:arrow_up:` a commit with dependencies updates
More info:
- https://gist.github.com/parmentf/035de27d6ed1dce0b36a
- https://gist.github.com/rxaviers/7360908
Each commit should have:
- A concise subject using imperative mood.
- The subject should have capitalized the first letter and without
period at the end.
- A blank line between the subject line and the body.
- An entry on the CHANGES.md file if applicable, referencing the
github or taiga issue/user-story using the these same rules.
## Code of conduct ##
As contributors and maintainers of this project, we pledge to respect
all people who contribute through reporting issues, posting feature
requests, updating documentation, submitting pull requests or patches,
and other activities.
We are committed to making participation in this project a
harassment-free experience for everyone, regardless of level of
experience, gender, gender identity and expression, sexual
orientation, disability, personal appearance, body size, race,
ethnicity, age, or religion.
Examples of unacceptable behavior by participants include the use of
sexual language or imagery, derogatory comments or personal attacks,
trolling, public or private harassment, insults, or other
unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit,
or reject comments, commits, code, wiki edits, issues, and other
contributions that are not aligned to this Code of Conduct. Project
maintainers who do not follow the Code of Conduct may be removed from
the project team.
This code of conduct applies both within project spaces and in public
spaces when an individual is representing the project or its
community.
Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by opening an issue or contacting one or more of the
project maintainers.
This Code of Conduct is adapted from the Contributor Covenant, version
1.1.0, available from http://contributor-covenant.org/version/1/1/0/
## Developer's Certificate of Origin (DCO) ##
By submitting code you are agree and can certify the below:
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Then, all your code patches (**documentation are excluded**) should
contain a sign-off at the end of the patch/commit description body. It
can be automatically added on adding `-s` parameter to `git commit`.
This is an example of the aspect of the line:
Signed-off-by: Andrey Antukh <niwi@niwi.nz>
Please, use your real name (sorry, no pseudonyms or anonymous
contributions are allowed).

373
LICENSE Normal file
View File

@@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

148
README.md
View File

@@ -1,122 +1,94 @@
# UXBox #
[![Travis Badge](https://img.shields.io/travis/uxbox/front.svg?style=flat)](https://travis-ci.org/uxbox/front "Travis Badge (frontend)")
[![Travis Badge](https://img.shields.io/travis/uxbox/back.svg?style=flat)](https://travis-ci.org/uxbox/back "Travis Badge (backend)")
[uri_license]: https://www.mozilla.org/en-US/MPL/2.0
[uri_license_image]: https://img.shields.io/badge/MPL-2.0-blue.svg
<h1 align="center">
<br>
<img src="https://penpot.app/images/readme/readme-logo.jpg" alt="PENPOT">
</h1>
<p align="center"><a href="https://www.mozilla.org/en-US/MPL/2.0" rel="nofollow"><img src="https://camo.githubusercontent.com/3fcf3d6b678ea15fde3cf7d6af0e242160366282d62a7c182d83a50bfee3f45e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d504c2d322e302d626c75652e737667" alt="License: MPL-2.0" data-canonical-src="https://img.shields.io/badge/MPL-2.0-blue.svg" style="max-width:100%;"></a>
<a href="https://gitter.im/penpot/community" rel="nofollow"><img src="https://camo.githubusercontent.com/5b0aecb33434f82a7b158eab7247544235ada0cf7eeb9ce8e52562dd67f614b7/68747470733a2f2f6261646765732e6769747465722e696d2f736572656e6f2d78797a2f636f6d6d756e6974792e737667" alt="Gitter" data-canonical-src="https://badges.gitter.im/sereno-xyz/community.svg" style="max-width:100%;"></a>
<a href="https://tree.taiga.io/project/penpot/" title="Managed with Taiga.io" rel="nofollow"><img src="https://camo.githubusercontent.com/4a1d1112f0272e3393b1e8da312ff4435418e9e2eb4c0964881e3680f90a653c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d616e61676564253230776974682d54414947412e696f2d3730396631342e737667" alt="Managed with Taiga.io" data-canonical-src="https://img.shields.io/badge/managed%20with-TAIGA.io-709f14.svg" style="max-width:100%;"></a>
<a href="https://gitpod.io/#https://github.com/penpot/penpot" rel="nofollow"><img src="https://camo.githubusercontent.com/daadb4894128d1e19b72d80236f5959f1f2b47f9fe081373f3246131f0189f6c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476974706f642d72656164792d2d746f2d2d636f64652d626c75653f6c6f676f3d676974706f64" alt="Gitpod ready-to-code" data-canonical-src="https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod" style="max-width:100%;"></a></p>
![PENPOT](https://penpot.app/images/readme/home-ui.jpg)
## Development ##
## What is Penpot? ##
### Frontend ###
Penpot is the first **Open Source design** and prototyping platform meant for cross-domain teams. Non dependent on operating systems, Penpot is web based and works with open web standards (SVG). For all and empowered by the community.
Grab the code and run:
- [How to use](#how-to-use)
- [Help center](#help-center)
- [Contributing](#contributing)
- [Give feedback](#give-feedback)
- [Tutorials](#tutorials)
- [License](#license)
```
$ lein with-profile +front figwheel
```
## How to use ##
This will compile ClojureScript whenever you make changes and serve the application in [localhost](http://localhost:3449/).
Open the page.
Login or Register on our Penpot cloud app. Create a team to work together on projects and share design assets or jump right away into Penpot and **start designing** by your own.
#### ClojureScript browser-connected REPL ####
✏️ [Start using Penpot](https://design.penpot.app)
The aforementioned command also starts a [nrepl](https://github.com/clojure/tools.nrepl) (network REPL) in the port 7888.
You can also install Penpot in a local environment. This section details everything you need to know to get Penpot up and running in production environments. Although it can be installed in many ways, the recommended approach is using **docker** and **docker-compose**.
You can connect to it from a shell using the following command:
🐳 [Install docker](https://help.penpot.app/technical-guide/getting-started/)
```
$ lein repl :connect 7888
```
## Help center ##
In Emacs you can use [cider's](https://github.com/clojure-emacs/cider) `M-x cider-connect` command and tell it that nREPL is
running on `localhost:7888` to connect.
In this documentation you will find (almost) everything you need to know about how to work with Penpot. From the interface basics to advanced functionality.
After connecting to nREPL, run the following Clojure code in it:
📖 [User guide](https://help.penpot.app/user-guide/)
```
user> (use 'figwheel-sidecar.repl-api)
user> (cljs-repl)
```
❓ [FAQs](https://help.penpot.app/faqs/)
After that, a figwheel message will appear and the prompt will change to `cljs.user>`. We can now evaluate ClojureScript in the
browser from the REPL.
🖥️ [Technical guide](https://help.penpot.app/technical-guide/)
#### Static resources generation ####
❤️ [Contributing guide](https://help.penpot.app/contributing-guide/)
The project's static resources are processed using [gulp](http://gulpjs.com/). First of all, install the npm dependencies running:
![User guide](https://penpot.app/images/readme/help-center.jpg)
```
npm install
```
## Contributing ##
To start watching the files and process them with each change, run:
<p align="center">
<img src="https://penpot.app/images/open-source.png" alt="Open Source">
</p>
```
npm run watch
```
**Open to you!**
To process the resources just once, run:
We love the open source software community. Contributing is our
passion and because of this, we'll be glad if you want to participate
and improve Penpot. All your awesome ideas and code are welcome!
```
npm run dist
```
Please refer to the [Contributing Guide](./CONTRIBUTING.md)
#### Testing ####
## Give feedback ##
For running the tests from a shell, run the following command:
You can ask and answer questions, have open-ended conversations, and follow along on decisions affecting the project.
```
$ lein cljsbuild once test
```
✉️ [Mail us](mailto:info@penpot.app)
If you want to run the tests from a ClojureScript REPL, you can do it like so (given that you want to run the tests contained in the `uxbox.core-test` namespace):
💬 [GitHub discussions](https://github.com/penpot/penpot/discussions)
```
cljs.user> (require '[cljs.test :as t])
cljs.user> (t/run-tests 'uxbox.core-test)
```
🐞 [GitHub issues](https://github.com/penpot/penpot/issues)
Note that the test output will appear in the browser and in the shell where you launched the `lein fighweel` command.
✍️️ [Gitter](https://gitter.im/penpot/community)
## Tutorials ##
#### Transformation from HTML to hiccup ####
For transforming the generated HTMLs to hiccup form, execute the following command:
```
$ lein with-profile +front hicv 2clj resources/public/templates/*.html
```
The `.clj` files in the `hicv` directory will contain the hiccup versions of the HTML templates.
### Backend ###
#### REPL ####
You can start a Clojure REPL with the following command:
```
$ lein repl
```
In Emacs you can use [cider's](https://github.com/clojure-emacs/cider) `M-x cider-jack-in` command in the proyect directory
to have a REPL in your editor.
#### Testing ####
For running the tests from a shell, run the following command:
```
$ lein test
```
If you want to run the tests from a Clojure REPL, you can do it like so (given that you want to run the tests contained in the `uxbox.core-test` namespace):
```
user> (require '[clojure.test :as t])
user> (t/run-tests 'uxbox.core-test)
```
You can ask and answer questions, have open-ended conversations, and follow along on decisions affecting the project.
Would you like to know more about Penpot? We recommend you to visit our youtube channel and learn more about the functionalities and possibilities of Penpot with our video tutorials.
🎞️ [YouTube channel](https://www.youtube.com/channel/UCAqS8G72uv9P5HG1IfgnQ9g)
## License ##
TODO
```
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
Copyright (c) UXBOX Labs SL
```

36
backend/build.clj Normal file
View File

@@ -0,0 +1,36 @@
(ns build
(:refer-clojure :exclude [compile])
(:require
[clojure.tools.build.api :as b]
[clojure.java.io]))
(def class-dir "target/classes")
(def basis (b/create-basis {:project "deps.edn"}))
(def jar-file "target/penpot.jar")
(defn clean [_]
(b/delete {:path "target"}))
(defn jar [_]
(b/copy-dir
{:src-dirs ["src" "resources"]
:target-dir class-dir})
(b/compile-clj
{:basis basis
:src-dirs ["src"]
:class-dir class-dir})
(b/uber
{:class-dir class-dir
:uber-file jar-file
:main 'clojure.main
:exclude [#"goog.*" #"^javasist.*"]
:basis basis}))
(defn compile [_]
(b/javac
{:src-dirs ["dev/java"]
:class-dir class-dir
:basis basis
:javac-opts ["-source" "11" "-target" "11"]}))

86
backend/deps.edn Normal file
View File

@@ -0,0 +1,86 @@
{:deps
{penpot/common {:local/root "../common"}
org.clojure/core.async {:mvn/version "1.5.648"}
;; Logging
org.zeromq/jeromq {:mvn/version "0.5.2"}
com.taoensso/nippy {:mvn/version "3.1.1"}
com.github.luben/zstd-jni {:mvn/version "1.5.2-1"}
org.clojure/data.fressian {:mvn/version "1.0.0"}
io.prometheus/simpleclient {:mvn/version "0.14.1"}
io.prometheus/simpleclient_hotspot {:mvn/version "0.14.1"}
io.prometheus/simpleclient_jetty {:mvn/version "0.14.1"
:exclusions [org.eclipse.jetty/jetty-server
org.eclipse.jetty/jetty-servlet]}
io.prometheus/simpleclient_httpserver {:mvn/version "0.14.1"}
io.lettuce/lettuce-core {:mvn/version "6.1.6.RELEASE"}
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
funcool/yetti {:git/tag "v4.0" :git/sha "59ed2a7"
:git/url "https://github.com/funcool/yetti.git"
:exclusions [org.slf4j/slf4j-api]}
com.github.seancorfield/next.jdbc {:mvn/version "1.2.761"}
metosin/reitit-ring {:mvn/version "0.5.15"}
org.postgresql/postgresql {:mvn/version "42.3.2"}
com.zaxxer/HikariCP {:mvn/version "5.0.1"}
funcool/datoteka {:mvn/version "2.0.0"}
buddy/buddy-hashers {:mvn/version "1.8.158"}
buddy/buddy-sign {:mvn/version "3.4.333"}
org.jsoup/jsoup {:mvn/version "1.14.3"}
org.im4java/im4java {:mvn/version "1.4.0"}
org.lz4/lz4-java {:mvn/version "1.8.0"}
org.clojars.pntblnk/clj-ldap {:mvn/version "0.0.17"}
integrant/integrant {:mvn/version "0.8.0"}
io.sentry/sentry {:mvn/version "5.6.1"}
;; Pretty Print specs
pretty-spec/pretty-spec {:mvn/version "0.1.4"}
software.amazon.awssdk/s3 {:mvn/version "2.17.122"}}
:paths ["src" "resources" "target/classes"]
:aliases
{:dev
{:extra-deps
{com.bhauman/rebel-readline {:mvn/version "RELEASE"}
org.clojure/tools.namespace {:mvn/version "RELEASE"}
org.clojure/test.check {:mvn/version "RELEASE"}
clojure-humanize/clojure-humanize {:mvn/version "0.2.2"}
org.clojure/data.csv {:mvn/version "RELEASE"}
com.clojure-goes-fast/clj-async-profiler {:mvn/version "RELEASE"}
mockery/mockery {:mvn/version "RELEASE"}}
:extra-paths ["test" "dev"]}
:build
{:extra-deps
{io.github.clojure/tools.build {:git/tag "v0.7.5" :git/sha "34727f7"}}
:ns-default build}
:test
{:extra-paths ["test"]
:extra-deps
{io.github.cognitect-labs/test-runner
{:git/tag "v0.5.0" :git/sha "b3fd0d2"}}
:exec-fn cognitect.test-runner.api/test}
:outdated
{:extra-deps {com.github.liquidz/antq {:mvn/version "RELEASE"}}
:main-opts ["-m" "antq.core"]}
:jmx-remote
{:jvm-opts ["-Dcom.sun.management.jmxremote"
"-Dcom.sun.management.jmxremote.port=9090"
"-Dcom.sun.management.jmxremote.rmi.port=9090"
"-Dcom.sun.management.jmxremote.local.only=false"
"-Dcom.sun.management.jmxremote.authenticate=false"
"-Dcom.sun.management.jmxremote.ssl=false"
"-Djava.rmi.server.hostname=localhost"]}
}}

95
backend/dev/user.clj Normal file
View File

@@ -0,0 +1,95 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns user
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.geom.matrix :as gmt]
[app.common.perf :as perf]
[app.common.transit :as t]
[app.config :as cfg]
[app.main :as main]
[app.util.blob :as blob]
[app.util.fressian :as fres]
[app.util.json :as json]
[app.util.time :as dt]
[clj-async-profiler.core :as prof]
[clojure.contrib.humanize :as hum]
[clojure.java.io :as io]
[clojure.pprint :refer [pprint print-table]]
[clojure.repl :refer :all]
[clojure.spec.alpha :as s]
[clojure.spec.gen.alpha :as sgen]
[clojure.test :as test]
[clojure.test :as test]
[clojure.tools.namespace.repl :as repl]
[clojure.walk :refer [macroexpand-all]]
[datoteka.core]
[integrant.core :as ig]))
(repl/disable-reload! (find-ns 'integrant.core))
(set! *warn-on-reflection* true)
(defonce system nil)
;; --- Development Stuff
(defn- run-tests
([] (run-tests #"^app.*-test$"))
([o]
(repl/refresh)
(cond
(instance? java.util.regex.Pattern o)
(test/run-all-tests o)
(symbol? o)
(if-let [sns (namespace o)]
(do (require (symbol sns))
(test/test-vars [(resolve o)]))
(test/test-ns o)))))
(defn- start
[]
(alter-var-root #'system (fn [sys]
(when sys (ig/halt! sys))
(-> main/system-config
(ig/prep)
(ig/init))))
:started)
(defn- stop
[]
(alter-var-root #'system (fn [sys]
(when sys (ig/halt! sys))
nil))
:stoped)
(defn restart
[]
(stop)
(repl/refresh :after 'user/start))
(defn restart-all
[]
(stop)
(repl/refresh-all :after 'user/start))
(defn compression-bench
[data]
(let [humanize (fn [v] (hum/filesize v :binary true :format " %.4f "))]
(print-table
[{:v1 (humanize (alength (blob/encode data {:version 1})))
:v2 (humanize (alength (blob/encode data {:version 2})))
:v3 (humanize (alength (blob/encode data {:version 3})))
:v4 (humanize (alength (blob/encode data {:version 4})))
}])))
(defonce debug-tap
(do
(add-tap #(locking debug-tap
(prn "tap debug:" %)))
1))

18
backend/package.json Normal file
View File

@@ -0,0 +1,18 @@
{
"name": "uxbox-back",
"version": "0.1.0",
"description": "The Open-Source prototyping tool",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build-emails": "./scripts/build-email-templates.sh"
},
"repository": {
"type": "git",
"url": "git+https://github.com/uxbox/uxbox.git"
},
"author": "Uxbox",
"license": "SEE LICENSE IN <LICENSE>",
"devDependencies": {
"mjml": "^4.6.3"
}
}

View File

@@ -0,0 +1,101 @@
* {
font-family: "JetBrains Mono", monospace;
font-size: 12px;
}
pre {
margin: 0px;
}
body {
margin: 0px;
padding: 0px;
padding-top: 20px;
padding-bottom: 20px;
display: flex;
justify-content: center;
}
main {
display: flex;
flex-direction: column;
align-items: center;
min-width: 900px;
width: 900px;
}
header {
border-bottom: 1px solid #c0c0c0;
display: flex;
justify-content: center;
width: 100%;
}
.rpc-doc-content {
margin-top: 20px;
width: 100%;
display: flex;
flex-direction: column;
/* border: 1px solid red; */
padding: 5px;
}
.rpc-doc-content > h2:not(:first-child) {
margin-top: 30px;
}
.rpc-items {
list-style: none;
padding: 0px;
margin: 0px;
}
.rpc-item {
/* border: 1px solid red; */
cursor: pointer;
display: flex;
flex-direction: column;
}
.rpc-item:not(:last-child) {
margin-bottom: 3px;
}
.rpc-row-info {
cursor: pointer;
display: flex;
background-color: #eeeeee;
padding: 5px 10px;
}
.rpc-row-info > *:not(:last-child) {
margin-right: 10px;
}
.rpc-row-info > * {
/* border: 1px solid green; */
}
.rpc-row-info > .type {
font-weight: bold;
width: 70px;
}
.rpc-row-info > .name {
width: 280px;
/* font-weight: bold; */
}
.rpc-row-info > .tags > .tag > span:first-child {
font-weight: bold;
}
.hidden {
display: none;
}
.rpc-row-detail {
padding: 5px 10px;
padding-bottom: 20px;
}

View File

@@ -0,0 +1,27 @@
(function() {
document.addEventListener("DOMContentLoaded", function(event) {
const rows = document.querySelectorAll(".rpc-row-info");
const onRowClick = (event) => {
const target = event.currentTarget;
for (let node of rows) {
if (node !== target) {
node.nextElementSibling.classList.add("hidden");
} else {
const sibling = target.nextElementSibling;
if (sibling.classList.contains("hidden")) {
sibling.classList.remove("hidden");
} else {
sibling.classList.add("hidden");
}
}
}
};
for (let node of rows) {
node.addEventListener("click", onRowClick);
}
});
})();

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Builtin API Documentation - Penpot</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono">
<style>
{% include "api-doc.css" %}
</style>
<script>
{% include "api-doc.js" %}
</script>
</head>
<body>
<main>
<header>
<h1>Penpot API Documentation</h1>
</header>
<section class="rpc-doc-content">
<h2>RPC QUERY METHODS:</h2>
<ul class="rpc-items">
{% for item in query-methods %}
<li class="rpc-item">
<div class="rpc-row-info">
{# <div class="type">{{item.type}}</div> #}
<div class="name">{{item.name}}</div>
<div class="tags">
<span class="tag">
<span>Auth:</span>
<span>{% if item.auth %}YES{% else %}NO{% endif %}</span>
</span>
</div>
</div>
<div class="rpc-row-detail hidden">
{% if item.docs %}
<h3>DOCSTRING:</h3>
<p>{{item.docs}}</p>
{% endif %}
<h3>SPEC EXPLAIN:</h3>
<pre>{{item.spec}}</pre>
</div>
</li>
{% endfor %}
</ul>
<h2>RPC MUTATION METHODS:</h2>
<ul class="rpc-items">
{% for item in mutation-methods %}
<li class="rpc-item">
<div class="rpc-row-info">
{# <div class="type">{{item.type}}</div> #}
<div class="name">{{item.name}}</div>
<div class="tags">
<span class="tag">
<span>Auth:</span>
<span>{% if item.auth %}YES{% else %}NO{% endif %}</span>
</span>
</div>
</div>
<div class="rpc-row-detail hidden">
{% if item.docs %}
<h3>DOCSTRING:</h3>
<p>{{item.docs}}</p>
{% endif %}
<h3>SPEC EXPLAIN:</h3>
<pre>{{item.spec}}</pre>
</div>
</li>
{% endfor %}
</ul>
</section>
</main>
</body>
</html>

View File

@@ -0,0 +1,66 @@
<mjml>
<mj-head>
<mj-font name="Source Sans Pro" href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" />
<mj-attributes>
<mj-text font-family="Source Sans Pro, sans-serif" font-size="16px" color="#000000" line-height="150%" />
<mj-button background-color="#31EFB8" color="#1F1F1F" font-family="Source Sans Pro, sans-serif" font-size="16px" />
</mj-attributes>
</mj-head>
<mj-body background-color="#E5E5E5">
<mj-section padding="0">
<mj-column>
<mj-image src="{{ public-uri }}/images/email/uxbox-title.png"
width="97px" height="32px" align="left" padding="16px" />
</mj-column>
</mj-section>
<mj-section background-color="#FFFFFF">
<mj-column>
<mj-text font-size="24px" font-weight="600">Hello {{name}}!</mj-text>
<mj-text>We received a request to change your current email to {{ pending-email }}.</mj-text>
<mj-text>Click to the link below to confirm the change:</mj-text>
<mj-button href="{{ public-uri }}/#/auth/verify-token?token={{token}}">
Confirm email change
</mj-button>
<mj-text>
If you received this email by mistake, please consider changing your password
for security reasons.
</mj-text>
<mj-text>Enjoy!</mj-text>
<mj-text>The Penpot team.</mj-text>
</mj-column>
</mj-section>
<mj-section padding="24px 0 0 0">
<mj-column width="425px">
<mj-text align="center" font-size="14px" color="#64666A">
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
</mj-text>
</mj-column>
</mj-section>
<mj-section padding="0">
<mj-column>
<mj-social icon-size="24px" mode="horizontal">
<mj-social-element src="{{ public-uri }}/images/email/logo-uxbox.png" href="https://penpot.app/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-twitter.png" href="https://twitter.com/penpotapp" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-github.png" href="https://github.com/penpot/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-instagram.png" href="https://instagram.com/penpotapp/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-taiga.png" href="https://tree.taiga.io/project/uxbox" padding="0 8px" />
</mj-social>
</mj-column>
</mj-section>
<mj-section padding="0 0 24px 0">
<mj-column>
<mj-text align="center" font-size="14px" color="#64666A" line-height="150%">
Penpot © 2020 | Made with &lt;3 and Open Source
</mj-text>
</mj-column>
</mj-section>
</mg-body>
</mjml>

View File

@@ -0,0 +1,59 @@
<mjml>
<mj-head>
<mj-font name="Source Sans Pro" href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" />
<mj-attributes>
<mj-text font-family="Source Sans Pro, sans-serif" font-size="16px" color="#000000" line-height="150%" />
<mj-button background-color="#31EFB8" color="#1F1F1F" font-family="Source Sans Pro, sans-serif" font-size="16px" />
</mj-attributes>
</mj-head>
<mj-body background-color="#E5E5E5">
<mj-section padding="0">
<mj-column>
<mj-image src="{{ public-uri }}/images/email/uxbox-title.png"
width="97px" height="32px" align="left" padding="16px" />
</mj-column>
</mj-section>
<mj-section background-color="#FFFFFF">
<mj-column>
<mj-text font-size="24px" font-weight="600">Hello!</mj-text>
<mj-text>
{{invited-by}} has invited you to join the team “{{ team }}”.
</mj-text>
<mj-button href="{{ public-uri }}/#/auth/verify-token?token={{token}}">
Accept invite
</mj-button>
<mj-text>Enjoy!</mj-text>
<mj-text>The Penpot team.</mj-text>
</mj-column>
</mj-section>
<mj-section padding="24px 0 0 0">
<mj-column width="425px">
<mj-text align="center" font-size="14px" color="#64666A">
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
</mj-text>
</mj-column>
</mj-section>
<mj-section padding="0">
<mj-column>
<mj-social icon-size="24px" mode="horizontal">
<mj-social-element src="{{ public-uri }}/images/email/logo-uxbox.png" href="https://penpot.app/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-twitter.png" href="https://twitter.com/penpotapp" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-github.png" href="https://github.com/penpot/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-instagram.png" href="https://instagram.com/penpotapp/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-taiga.png" href="https://tree.taiga.io/project/uxbox" padding="0 8px" />
</mj-social>
</mj-column>
</mj-section>
<mj-section padding="0 0 24px 0">
<mj-column>
<mj-text align="center" font-size="14px" color="#64666A" line-height="150%">
Penpot © 2020 | Made with &lt;3 and Open Source
</mj-text>
</mj-column>
</mj-section>
</mg-body>
</mjml>

View File

@@ -0,0 +1,68 @@
<mjml>
<mj-head>
<mj-font name="Source Sans Pro" href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" />
<mj-attributes>
<mj-text font-family="Source Sans Pro, sans-serif" font-size="16px" color="#000000" line-height="150%" />
<mj-button background-color="#31EFB8" color="#1F1F1F" font-family="Source Sans Pro, sans-serif" font-size="16px" />
</mj-attributes>
</mj-head>
<mj-body background-color="#E5E5E5">
<mj-section padding="0">
<mj-column>
<mj-image src="{{ public-uri }}/images/email/uxbox-title.png"
width="97px" height="32px" align="left" padding="16px" />
</mj-column>
</mj-section>
<mj-section background-color="#FFFFFF">
<mj-column>
<mj-text font-size="24px" font-weight="600">Hello {{name}}!</mj-text>
<mj-text>
We have received a request to reset your password. Click the link
below to choose a new one:
</mj-text>
<mj-button href="{{ public-uri }}/#/auth/recovery?token={{token}}">
Reset password
</mj-button>
<mj-text>
If you received this email by mistake, you can safely ignore
it. Your password won't be changed.
</mj-text>
<mj-text>Enjoy!</mj-text>
<mj-text>The Penpot team.</mj-text>
</mj-column>
</mj-section>
<mj-section padding="24px 0 0 0">
<mj-column width="425px">
<mj-text align="center" font-size="14px" color="#64666A">
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
</mj-text>
</mj-column>
</mj-section>
<mj-section padding="0">
<mj-column>
<mj-social icon-size="24px" mode="horizontal">
<mj-social-element src="{{ public-uri }}/images/email/logo-uxbox.png" href="https://penpot.app/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-twitter.png" href="https://twitter.com/penpotapp" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-github.png" href="https://github.com/penpot/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-instagram.png" href="https://instagram.com/penpotapp/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-taiga.png" href="https://tree.taiga.io/project/uxbox" padding="0 8px" />
</mj-social>
</mj-column>
</mj-section>
<mj-section padding="0 0 24px 0">
<mj-column>
<mj-text align="center" font-size="14px" color="#64666A" line-height="150%">
Penpot © 2020 | Made with &lt;3 and Open Source
</mj-text>
</mj-column>
</mj-section>
</mg-body>
</mjml>

View File

@@ -0,0 +1,65 @@
<mjml>
<mj-head>
<mj-font name="Source Sans Pro" href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" />
<mj-attributes>
<mj-text font-family="Source Sans Pro, sans-serif" font-size="16px" color="#000000" line-height="150%" />
<mj-button background-color="#31EFB8" color="#1F1F1F" font-family="Source Sans Pro, sans-serif" font-size="16px" />
</mj-attributes>
</mj-head>
<mj-body background-color="#E5E5E5">
<mj-section padding="0">
<mj-column>
<mj-image src="{{ public-uri }}/images/email/uxbox-title.png"
width="97px" height="32px" align="left" padding="16px" />
</mj-column>
</mj-section>
<mj-section background-color="#FFFFFF">
<mj-column>
<mj-text font-size="24px" font-weight="600">Hello {{name}}!</mj-text>
<mj-text>
Thanks for signing up for your Penpot account! Please verify your
email using the link below and get started building mockups and
prototypes today!
</mj-text>
<mj-button href="{{ public-uri }}/#/auth/verify-token?token={{token}}">
Verify email
</mj-button>
<mj-text>Enjoy!</mj-text>
<mj-text>The Penpot team.</mj-text>
</mj-column>
</mj-section>
<mj-section padding="24px 0 0 0">
<mj-column width="425px">
<mj-text align="center" font-size="14px" color="#64666A">
Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.
</mj-text>
</mj-column>
</mj-section>
<mj-section padding="0">
<mj-column>
<mj-social icon-size="24px" mode="horizontal">
<mj-social-element src="{{ public-uri }}/images/email/logo-uxbox.png" href="https://penpot.app/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-twitter.png" href="https://twitter.com/penpotapp" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-github.png" href="https://github.com/penpot/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-instagram.png" href="https://instagram.com/penpotapp/" padding="0 8px" />
<mj-social-element src="{{ public-uri }}/images/email/logo-taiga.png" href="https://tree.taiga.io/project/uxbox" padding="0 8px" />
</mj-social>
</mj-column>
</mj-section>
<mj-section padding="0 0 24px 0">
<mj-column>
<mj-text align="center" font-size="14px" color="#64666A" line-height="150%">
Penpot © 2020 | Made with &lt;3 and Open Source
</mj-text>
</mj-column>
</mj-section>
</mg-body>
</mjml>

View File

@@ -0,0 +1,478 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png" style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;" width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">Hello {{name}}!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">We received a request to change your current email to {{ pending-email }}.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">Click to the link below to confirm the change:</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation" style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;" valign="middle">
<a href="{{ public-uri }}/#/auth/verify-token?token={{token}}" style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;" target="_blank"> Confirm email change </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">If you received this email by mistake, please consider changing your password for security reasons.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">Enjoy!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:24px 0 0 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:425px;"
>
<![endif]-->
<div class="mj-column-px-425 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
>
<tr>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://penpot.app/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-uxbox.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://twitter.com/penpotapp" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-twitter.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://github.com/penpot/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-github.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://instagram.com/penpotapp/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-instagram.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://tree.taiga.io/project/uxbox" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-taiga.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0 0 24px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot @ 2021 | Made with &lt;3 and Open Source</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
Email change

View File

@@ -0,0 +1,13 @@
Hello {{name}}!
We received a request to change your current email to {{ pending-email }}.
Click to the link below to confirm the change:
{{ public-uri }}/#/auth/verify-token?token={{token}}
If you received this email by mistake, please consider changing your password
for security reasons.
Enjoy!
The Penpot team.

View File

@@ -0,0 +1,45 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>
<strong>Feedback from:</strong><br />
{% if profile %}
<span>
<span>Name: </span>
<span><code>{{profile.fullname}}</code></span>
</span>
<br />
<span>
<span>Email: </span>
<span>{{profile.email}}</span>
</span>
<br />
<span>
<span>ID: </span>
<span><code>{{profile.id}}</code></span>
</span>
{% else %}
<span>
<span>Email: </span>
<span>{{profile.email}}</span>
</span>
{% endif %}
</p>
<p>
<strong>Subject:</strong><br />
<span>{{subject}}</span>
</p>
<p>
<strong>Message:</strong><br />
{{content|linebreaks-br|safe}}
</p>
</body>
</html>

View File

@@ -0,0 +1 @@
[PENPOT FEEDBACK]: {{subject}}

View File

@@ -0,0 +1,9 @@
{% if profile %}
Feedback profile: {{profile.fullname}} <{{profile.email}}> / {{profile.id}}
{% else %}
Feedback from: {{email}}
{% endif %}
Subject: {{subject}}
{{content}}

View File

@@ -0,0 +1,468 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png" style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;" width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">Hello!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">{{invited-by}} has invited you to join the team “{{ team }}”.</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation" style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;" valign="middle">
<a href="{{ public-uri }}/#/auth/verify-token?token={{token}}" style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;" target="_blank"> Accept invite </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">Enjoy!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:24px 0 0 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:425px;"
>
<![endif]-->
<div class="mj-column-px-425 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
>
<tr>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://penpot.app/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-uxbox.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://twitter.com/penpotapp" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-twitter.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://github.com/penpot/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-github.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://instagram.com/penpotapp/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-instagram.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://tree.taiga.io/project/uxbox" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-taiga.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0 0 24px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot @ 2021 | Made with &lt;3 and Open Source</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
Invitation to join {{team}}

View File

@@ -0,0 +1,10 @@
Hello!
{{invited-by}} has invited you to join the team “{{ team }}”.
Accept invitation using this link:
{{ public-uri }}/#/auth/verify-token?token={{token}}
Enjoy!
The Penpot team.

View File

@@ -0,0 +1,473 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png" style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;" width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">Hello {{name}}!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">We have received a request to reset your password. Click the link below to choose a new one:</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation" style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;" valign="middle">
<a href="{{ public-uri }}/#/auth/recovery?token={{token}}" style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;" target="_blank"> Reset password </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">If you received this email by mistake, you can safely ignore it. Your password won't be changed.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">Enjoy!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:24px 0 0 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:425px;"
>
<![endif]-->
<div class="mj-column-px-425 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
>
<tr>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://penpot.app/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-uxbox.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://twitter.com/penpotapp" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-twitter.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://github.com/penpot/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-github.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://instagram.com/penpotapp/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-instagram.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://tree.taiga.io/project/uxbox" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-taiga.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0 0 24px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot @ 2021 | Made with &lt;3 and Open Source</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
Password reset

View File

@@ -0,0 +1,12 @@
Hello {{name}}!
We received a request to reset your password. Click the link below to choose a
new one:
{{ public-uri }}/#/auth/recovery?token={{token}}
If you received this email by mistake, you can safely ignore it. Your password
won't be changed.
Enjoy!
The Penpot team.

View File

@@ -0,0 +1,468 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
</title>
<!--[if !mso]><!-- -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a {
padding: 0;
}
body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}
img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}
p {
display: block;
margin: 13px 0;
}
</style>
<!--[if mso]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<!--[if !mso]><!-->
<link href="https://fonts.googleapis.com/css?family=Source%20Sans%20Pro" rel="stylesheet" type="text/css">
<style type="text/css">
@import url(https://fonts.googleapis.com/css?family=Source%20Sans%20Pro);
</style>
<!--<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
.mj-column-px-425 {
width: 425px !important;
max-width: 425px;
}
}
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile {
width: 100% !important;
}
td.mj-full-width-mobile {
width: auto !important;
}
}
</style>
</head>
<body style="background-color:#E5E5E5;">
<div style="background-color:#E5E5E5;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:16px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:97px;">
<img height="32" src="{{ public-uri }}/images/email/uxbox-title.png" style="border:0;display:block;outline:none;text-decoration:none;height:32px;width:100%;font-size:13px;" width="97" />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="background:#FFFFFF;background-color:#FFFFFF;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#FFFFFF;background-color:#FFFFFF;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:24px;font-weight:600;line-height:150%;text-align:left;color:#000000;">Hello {{name}}!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">Thanks for signing up for your Penpot account! Please verify your email using the link below and get started building mockups and prototypes today!</div>
</td>
</tr>
<tr>
<td align="center" vertical-align="middle" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:separate;line-height:100%;">
<tr>
<td align="center" bgcolor="#31EFB8" role="presentation" style="border:none;border-radius:3px;cursor:auto;mso-padding-alt:10px 25px;background:#31EFB8;" valign="middle">
<a href="{{ public-uri }}/#/auth/verify-token?token={{token}}" style="display:inline-block;background:#31EFB8;color:#1F1F1F;font-family:Source Sans Pro, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:3px;" target="_blank"> Verify email </a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">Enjoy!</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:16px;line-height:150%;text-align:left;color:#000000;">The Penpot team.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:24px 0 0 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:425px;"
>
<![endif]-->
<div class="mj-column-px-425 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot is the first Open Source prototyping platform that will be embraced by multidisciplinary teams.</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<!--[if mso | IE]>
<table
align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
>
<tr>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://penpot.app/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-uxbox.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://twitter.com/penpotapp" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-twitter.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://github.com/penpot/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-github.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://instagram.com/penpotapp/" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-instagram.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
<td>
<![endif]-->
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="float:none;display:inline-table;">
<tr>
<td style="padding:0 8px;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-radius:3px;width:24px;">
<tr>
<td style="font-size:0;height:24px;vertical-align:middle;width:24px;">
<a href="https://tree.taiga.io/project/uxbox" target="_blank">
<img height="24" src="{{ public-uri }}/images/email/logo-taiga.png" style="border-radius:3px;display:block;" width="24" />
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<table
align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600"
>
<tr>
<td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;">
<![endif]-->
<div style="margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0 0 24px 0;text-align:center;">
<!--[if mso | IE]>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td
class="" style="vertical-align:top;width:600px;"
>
<![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Source Sans Pro, sans-serif;font-size:14px;line-height:150%;text-align:center;color:#64666A;">Penpot @ 2021 | Made with &lt;3 and Open Source</div>
</td>
</tr>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]>
</td>
</tr>
</table>
<![endif]-->
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
Verify email.

View File

@@ -0,0 +1,9 @@
Hello {{name}}!
Thanks for signing up for your Penpot account! Please verify your email using the
link below and get started building mockups and prototypes today!
{{ public-uri }}/#/auth/verify-token?token={{token}}
Enjoy!
The Penpot team.

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="30">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"/>
</Console>
<RollingFile name="main" fileName="logs/main.log" filePattern="logs/main-%i.log">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="50M"/>
</Policies>
<DefaultRolloverStrategy max="9"/>
</RollingFile>
<JeroMQ name="zmq">
<Property name="endpoint">tcp://localhost:45556</Property>
<JsonLayout complete="false" compact="true" includeTimeMillis="true" stacktraceAsString="true" properties="true" />
</JeroMQ>
</Appenders>
<Loggers>
<Logger name="com.zaxxer.hikari" level="error"/>
<Logger name="io.lettuce" level="error" />
<Logger name="org.eclipse.jetty" level="error" />
<Logger name="org.postgresql" level="error" />
<Logger name="app.cli" level="debug" additivity="false">
<AppenderRef ref="console"/>
</Logger>
<Logger name="app.loggers" level="debug" additivity="false">
<AppenderRef ref="main" level="debug" />
</Logger>
<Logger name="app" level="all" additivity="false">
<AppenderRef ref="main" level="trace" />
<AppenderRef ref="zmq" level="debug" />
</Logger>
<Logger name="penpot" level="debug" additivity="false">
<AppenderRef ref="main" level="debug" />
<AppenderRef ref="zmq" level="debug" />
</Logger>
<Logger name="user" level="trace" additivity="false">
<AppenderRef ref="main" level="trace" />
</Logger>
<Root level="info">
<AppenderRef ref="main" />
</Root>
</Loggers>
</Configuration>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="60">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{YYYY-MM-dd HH:mm:ss.SSS}] %level{length=1} %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.zaxxer.hikari" level="error" />
<Logger name="org.eclipse.jetty" level="error" />
<Logger name="app" level="debug" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Logger name="penpot" level="fatal" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Root level="info">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>

View File

@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono">
<style>
{% include "templates/styles.css" %}
</style>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>

View File

@@ -0,0 +1,32 @@
{% extends "templates/base.tmpl" %}
{% block title %}
Debug Main Page
{% endblock %}
{% block content %}
<nav>
<h1>Debug INDEX:</h1>
<div>[<a href="/dbg/error">ERRORS</a>]</div>
</nav>
<main class="index">
<section>
<h2>Download file data:</h2>
<desc>Given an FILE-ID, downloads the file data as file. The file data is encoded using transit.</desc>
<form method="get" action="/dbg/file/data">
<input type="text" style="width:300px" name="file-id" placeholder="file-id" />
<input type="hidden" name="download" value="1" />
<input type="submit" value="Download" />
</form>
</section>
<section>
<h2>Upload File Data:</h2>
<desc>Create a new file on your draft projects using the file downloaded from the previous section.</desc>
<form method="post" enctype="multipart/form-data" action="/dbg/file/data">
<input type="file" name="file" value="" />
<input type="submit" value="Upload" />
</form>
</section>
</main>
{% endblock %}

View File

@@ -0,0 +1,18 @@
{% extends "templates/base.tmpl" %}
{% block title %}
penpot - error list
{% endblock %}
{% block content %}
<nav>
<h1>Latest error reports:</h1>
</nav>
<main class="horizontal-list">
<ul>
{% for item in items %}
<li><a href="/dbg/error/{{item.id}}">{{item.created-at}}</a></li>
{% endfor %}
</ul>
</main>
{% endblock %}

View File

@@ -0,0 +1,98 @@
{% extends "templates/base.tmpl" %}
{% block title %}
penpot - error report {{id}}
{% endblock %}
{% block content %}
<nav>
<div>[<a href="/dbg/error">⮜</a>]</div>
<div>[<a href="#context">context</a>]</div>
<div>[<a href="#params">request params</a>]</div>
{% if data %}
<div>[<a href="#edata">error data</a>]</div>
{% endif %}
{% if spec-explain %}
<div>[<a href="#spec-explain">spec explain</a>]</div>
{% endif %}
{% if spec-problems %}
<div>[<a href="#spec-problems">spec problems</a>]</div>
{% endif %}
{% if spec-value %}
<div>[<a href="#spec-value">spec value</a>]</div>
{% endif %}
{% if trace %}
<div>[<a href="#trace">error trace</a>]</div>
{% endif %}
</nav>
<main>
<div class="table">
<div class="table-row multiline">
<div id="context" class="table-key">CONTEXT: </div>
<div class="table-val">
<h1>{{hint}}</h1>
</div>
<div class="table-val">
<pre>{{context}}</pre>
</div>
</div>
{% if params %}
<div class="table-row multiline">
<div id="params" class="table-key">REQUEST PARAMS: </div>
<div class="table-val">
<pre>{{params}}</pre>
</div>
</div>
{% endif %}
{% if data %}
<div class="table-row multiline">
<div id="edata" class="table-key">ERROR DATA: </div>
<div class="table-val">
<pre>{{data}}</pre>
</div>
</div>
{% endif %}
{% if spec-explain %}
<div class="table-row multiline">
<div id="spec-explain" class="table-key">SPEC EXPLAIN: </div>
<div class="table-val">
<pre>{{spec-explain}}</pre>
</div>
</div>
{% endif %}
{% if spec-problems %}
<div class="table-row multiline">
<div id="spec-problems" class="table-key">SPEC PROBLEMS: </div>
<div class="table-val">
<pre>{{spec-problems}}</pre>
</div>
</div>
{% endif %}
{% if spec-value %}
<div class="table-row multiline">
<div id="spec-value" class="table-key">SPEC VALUE: </div>
<div class="table-val">
<pre>{{spec-value}}</pre>
</div>
</div>
{% endif %}
{% if trace %}
<div class="table-row multiline">
<div id="trace" class="table-key">TRACE:</div>
<div class="table-val">
<pre>{{trace}}</pre>
</div>
</div>
{% endif %}
</div>
</main>
{% endblock %}

View File

@@ -0,0 +1,150 @@
* {
font-family: "JetBrains Mono", monospace;
font-size: 12px;
}
body {
margin: 0px;
padding: 0px;
}
pre {
margin: 0px;
line-height: 16px;
}
desc {
display: flex;
margin-bottom: 10px;
font-size: 10px;
color: #666;
}
input[type=text], input[type=submit] {
padding: 3px;
}
main {
margin: 20px;
}
nav {
position: fixed;
width: 100vw;
top: 0;
left: 0;
padding: 5px 20px;
display: flex;
background: #e3e3e3;
}
nav > h1 {
padding: 0px;
margin: 0px;
font-size: 11px;
}
nav > div {
text-transform: uppercase;
font-weight: bold;
}
nav > div:not(:last-child) {
margin-right: 10px;
}
.table {
margin-top: 25px;
display: flex;
flex-direction: column;
}
.table-row {
display: flex;
padding-bottom: 15px;
/* width: 100%; */
/* border: 1px solid red; */
}
.table-key {
font-weight: 600;
width: 60px;
padding: 4px;
padding-top: 40px;
margin-top: -40px;
}
.table-val {
font-weight: 200;
color: #333;
padding: 4px;
}
.multiline {
margin-top: 15px;
flex-direction: column;
}
.multiline .table-key {
margin-bottom: 10px;
border-bottom: 1px dashed #dddddd;
/* padding: 4px; */
width: unset;
}
.index {
margin-top: 40px;
}
.index > section {
padding: 10px;
background-color: #e3e3e3;
}
.index > section:not(:last-child) {
margin-bottom: 10px;
}
.index > section > h2 {
margin-top: 0px;
}
.horizontal-list {
margin: 20px;
margin-top: 40px;
}
.horizontal-list ul {
display: flex;
margin: 0px;
padding: 0px;
flex-direction: column;
flex-wrap: wrap;
height: calc(100vh - 75px);
justify-content: flex-start;
}
.horizontal-list li {
list-style: none;
padding: 0px;
margin: 0px;
line-height: 18px;
min-width: 210px;
margin: 0px 20px;
cursor: pointer;
display: flex;
justify-content: center;
border-radius: 3px;
}
.horizontal-list li:hover {
background-color: #e9e9e9;
}
.horizontal-list li > a {
text-decoration: none;
color: inherit;
}

20
backend/scripts/build Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
CURRENT_VERSION=$1;
set -ex
rm -rf target;
mkdir -p target/classes;
mkdir -p target/dist;
echo "$CURRENT_VERSION" > target/classes/version.txt;
clojure -T:build jar;
mv target/penpot.jar target/dist/penpot.jar
cp scripts/run.template.sh target/dist/run.sh;
cp scripts/manage.template.sh target/dist/manage.sh;
chmod +x target/dist/run.sh;
chmod +x target/dist/manage.sh;

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
for f in resources/emails-mjml/*/*.mjml
do
npx mjml $f -o `echo $f | sed -e "s/-mjml//" | sed -e "s/mjml/html/"`
done

View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
set +e
JAVA_CMD=$(type -p java)
set -e
if [[ ! -n "$JAVA_CMD" ]]; then
if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
JAVA_CMD="$JAVA_HOME/bin/java"
else
>&2 echo "Couldn't find 'java'. Please set JAVA_HOME."
exit 1
fi
fi
if [ -f ./environ ]; then
source ./environ
fi
exec $JAVA_CMD $JVM_OPTS -jar penpot.jar -m app.cli.manage "$@"

40
backend/scripts/repl Executable file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# export PENPOT_DATABASE_URI="postgresql://172.17.0.1:5432/penpot"
# export PENPOT_DATABASE_USERNAME="penpot"
# export PENPOT_DATABASE_PASSWORD="penpot"
# export PENPOT_DATABASE_READONLY=true
# export PENPOT_DATABASE_URI="postgresql://172.17.0.1:5432/penpot_pre"
# export PENPOT_DATABASE_USERNAME="penpot_pre"
# export PENPOT_DATABASE_PASSWORD="penpot_pre"
# export PENPOT_FLAGS="enable-asserts enable-audit-log $PENPOT_FLAGS"
# Initialize MINIO config
# mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin
# mc admin user add penpot-s3 penpot-devenv penpot-devenv
# mc admin policy set penpot-s3 readwrite user=penpot-devenv
# mc mb penpot-s3/penpot -p
# export AWS_ACCESS_KEY_ID=penpot-devenv
# export AWS_SECRET_ACCESS_KEY=penpot-devenv
# export PENPOT_ASSETS_STORAGE_BACKEND=assets-s3
# export PENPOT_STORAGE_ASSETS_S3_ENDPOINT=http://minio:9000
# export PENPOT_STORAGE_ASSETS_S3_REGION=eu-central-1
# export PENPOT_STORAGE_ASSETS_S3_BUCKET=penpot
export OPTIONS="
-A:dev \
-J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
-J-Dlog4j2.configurationFile=log4j2-devenv.xml \
-J-XX:+UseZGC \
-J-XX:-OmitStackTraceInFastThrow \
-J-Xms50m -J-Xmx1024m \
-J-Djdk.attach.allowAttachSelf \
-J-XX:+UnlockDiagnosticVMOptions \
-J-XX:+DebugNonSafepoints";
export OPTIONS_EVAL="nil"
# export OPTIONS_EVAL="(set! *warn-on-reflection* true)"
set -ex
exec clojure $OPTIONS -M -e "$OPTIONS_EVAL" -m rebel-readline.main

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set +e
JAVA_CMD=$(type -p java)
set -e
if [[ ! -n "$JAVA_CMD" ]]; then
if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
JAVA_CMD="$JAVA_HOME/bin/java"
else
>&2 echo "Couldn't find 'java'. Please set JAVA_HOME."
exit 1
fi
fi
if [ -f ./environ ]; then
source ./environ
fi
set -x
exec $JAVA_CMD $JVM_OPTS "$@" -jar penpot.jar -m app.main

23
backend/scripts/start-dev Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
export PENPOT_FLAGS="$PENPOT_FLAGS enable-asserts"
set -ex
if [ "$1" = "--watch" ]; then
echo "Start Watch..."
clojure -A:dev -M -m app.main &
PID=$!
npx nodemon \
--watch src \
--watch ../common \
--ext "clj" \
--signal SIGKILL \
--exec 'echo "(user/restart)" | nc -N localhost 6062'
kill -9 $PID
else
clojure -A:dev -M -m app.main
fi

View File

@@ -0,0 +1,168 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.cli.manage
"A manage cli api."
(:require
[app.common.logging :as l]
[app.db :as db]
[app.main :as main]
[app.rpc.mutations.profile :as profile]
[app.rpc.queries.profile :refer [retrieve-profile-data-by-email]]
[clojure.string :as str]
[clojure.tools.cli :refer [parse-opts]]
[integrant.core :as ig])
(:import
java.io.Console))
;; --- IMPL
(defn init-system
[]
(let [data (-> main/system-config
(select-keys [:app.db/pool :app.metrics/metrics])
(assoc :app.migrations/all {}))]
(-> data ig/prep ig/init)))
(defn- read-from-console
[{:keys [label type] :or {type :text}}]
(let [^Console console (System/console)]
(when-not console
(l/error :hint "no console found, can proceed")
(System/exit 1))
(binding [*out* (.writer console)]
(print label " ")
(.flush *out*))
(case type
:text (.readLine console)
:password (String. (.readPassword console)))))
(defn create-profile
[options]
(let [system (init-system)
email (or (:email options)
(read-from-console {:label "Email:"}))
fullname (or (:fullname options)
(read-from-console {:label "Full Name:"}))
password (or (:password options)
(read-from-console {:label "Password:"
:type :password}))]
(try
(db/with-atomic [conn (:app.db/pool system)]
(->> (profile/create-profile conn
{:fullname fullname
:email email
:password password
:is-active true
:is-demo false})
(profile/create-profile-relations conn)))
(when (pos? (:verbosity options))
(println "User created successfully."))
(System/exit 0)
(catch Exception _e
(when (pos? (:verbosity options))
(println "Unable to create user, already exists."))
(System/exit 1)))))
(defn reset-password
[options]
(let [system (init-system)]
(try
(db/with-atomic [conn (:app.db/pool system)]
(let [email (or (:email options)
(read-from-console {:label "Email:"}))
profile (retrieve-profile-data-by-email conn email)]
(when-not profile
(when (pos? (:verbosity options))
(println "Profile does not exists."))
(System/exit 1))
(let [password (or (:password options)
(read-from-console {:label "Password:"
:type :password}))]
(profile/update-profile-password! conn (assoc profile :password password))
(when (pos? (:verbosity options))
(println "Password changed successfully.")))))
(System/exit 0)
(catch Exception e
(when (pos? (:verbosity options))
(println "Unable to change password."))
(when (= 2 (:verbosity options))
(.printStackTrace e))
(System/exit 1)))))
;; --- CLI PARSE
(def cli-options
;; An option with a required argument
[["-u" "--email EMAIL" "Email Address"]
["-p" "--password PASSWORD" "Password"]
["-n" "--name FULLNAME" "Full Name"
:id :fullname]
["-v" nil "Verbosity level"
:id :verbosity
:default 1
:update-fn inc]
["-q" nil "Dont' print to console"
:id :verbosity
:update-fn (constantly 0)]
["-h" "--help"]])
(defn usage
[options-summary]
(->> ["Penpot CLI management."
""
"Usage: manage [options] action"
""
"Options:"
options-summary
""
"Actions:"
" create-profile Create new profile."
" reset-password Reset profile password."
""]
(str/join \newline)))
(defn error-msg [errors]
(str "The following errors occurred while parsing your command:\n\n"
(str/join \newline errors)))
(defn validate-args
"Validate command line arguments. Either return a map indicating the program
should exit (with a error message, and optional ok status), or a map
indicating the action the program should take and the options provided."
[args]
(let [{:keys [options arguments errors summary] :as opts} (parse-opts args cli-options)]
(cond
(:help options) ; help => exit OK with usage summary
{:exit-message (usage summary) :ok? true}
errors ; errors => exit with description of errors
{:exit-message (error-msg errors)}
;; custom validation on arguments
:else
(let [action (first arguments)]
(if (#{"create-profile" "reset-password"} action)
{:action (first arguments) :options options}
{:exit-message (usage summary)})))))
(defn exit [status msg]
(println msg)
(System/exit status))
(defn -main
[& args]
(let [{:keys [action options exit-message ok?]} (validate-args args)]
(if exit-message
(exit (if ok? 0 1) exit-message)
(case action
"create-profile" (create-profile options)
"reset-password" (reset-password options)))))

View File

@@ -0,0 +1,129 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.cli.migrate-media
(:require
[app.common.logging :as l]
[app.common.media :as cm]
[app.config :as cf]
[app.db :as db]
[app.main :as main]
[app.storage :as sto]
[cuerdas.core :as str]
[datoteka.core :as fs]
[integrant.core :as ig]))
(declare migrate-profiles)
(declare migrate-teams)
(declare migrate-file-media)
(defn run-in-system
[system]
(db/with-atomic [conn (:app.db/pool system)]
(let [system (assoc system ::conn conn)]
(migrate-profiles system)
(migrate-teams system)
(migrate-file-media system))
system))
(defn run
[]
(let [config (select-keys main/system-config
[:app.db/pool
:app.migrations/migrations
:app.metrics/metrics
:app.storage.s3/backend
:app.storage.db/backend
:app.storage.fs/backend
:app.storage/storage])]
(ig/load-namespaces config)
(try
(-> (ig/prep config)
(ig/init)
(run-in-system)
(ig/halt!))
(catch Exception e
(l/error :hint "unhandled exception" :cause e)))))
;; --- IMPL
(defn migrate-profiles
[{:keys [::conn] :as system}]
(letfn [(retrieve-profiles [conn]
(->> (db/exec! conn ["select * from profile"])
(filter #(not (str/empty? (:photo %))))
(seq)))]
(let [base (fs/path (cf/get :storage-fs-old-directory))
storage (-> (:app.storage/storage system)
(assoc :conn conn))]
(doseq [profile (retrieve-profiles conn)]
(let [path (fs/path (:photo profile))
full (-> (fs/join base path)
(fs/normalize))
ext (fs/ext path)
mtype (cm/format->mtype (keyword ext))
obj (sto/put-object storage {:content (sto/content full)
:content-type mtype})]
(db/update! conn :profile
{:photo-id (:id obj)}
{:id (:id profile)}))))))
(defn migrate-teams
[{:keys [::conn] :as system}]
(letfn [(retrieve-teams [conn]
(->> (db/exec! conn ["select * from team"])
(filter #(not (str/empty? (:photo %))))
(seq)))]
(let [base (fs/path (cf/get :storage-fs-old-directory))
storage (-> (:app.storage/storage system)
(assoc :conn conn))]
(doseq [team (retrieve-teams conn)]
(let [path (fs/path (:photo team))
full (-> (fs/join base path)
(fs/normalize))
ext (fs/ext path)
mtype (cm/format->mtype (keyword ext))
obj (sto/put-object storage {:content (sto/content full)
:content-type mtype})]
(db/update! conn :team
{:photo-id (:id obj)}
{:id (:id team)}))))))
(defn migrate-file-media
[{:keys [::conn] :as system}]
(letfn [(retrieve-media-objects [conn]
(->> (db/exec! conn ["select fmo.id, fmo.path, fth.path as thumbnail_path
from file_media_object as fmo
join file_media_thumbnail as fth on (fth.media_object_id = fmo.id)"])
(seq)))]
(let [base (fs/path (cf/get :storage-fs-old-directory))
storage (-> (:app.storage/storage system)
(assoc :conn conn))]
(doseq [mobj (retrieve-media-objects conn)]
(let [img-path (fs/path (:path mobj))
thm-path (fs/path (:thumbnail-path mobj))
img-path (-> (fs/join base img-path)
(fs/normalize))
thm-path (-> (fs/join base thm-path)
(fs/normalize))
img-ext (fs/ext img-path)
thm-ext (fs/ext thm-path)
img-mtype (cm/format->mtype (keyword img-ext))
thm-mtype (cm/format->mtype (keyword thm-ext))
img-obj (sto/put-object storage {:content (sto/content img-path)
:content-type img-mtype})
thm-obj (sto/put-object storage {:content (sto/content thm-path)
:content-type thm-mtype})]
(db/update! conn :file-media-object
{:media-id (:id img-obj)
:thumbnail-id (:id thm-obj)}
{:id (:id mobj)}))))))

366
backend/src/app/config.clj Normal file
View File

@@ -0,0 +1,366 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.config
"A configuration management."
(:refer-clojure :exclude [get])
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.flags :as flags]
[app.common.spec :as us]
[app.common.version :as v]
[app.util.time :as dt]
[clojure.core :as c]
[clojure.java.io :as io]
[clojure.pprint :as pprint]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[environ.core :refer [env]]
[integrant.core :as ig]))
(prefer-method print-method
clojure.lang.IRecord
clojure.lang.IDeref)
(prefer-method pprint/simple-dispatch
clojure.lang.IPersistentMap
clojure.lang.IDeref)
(defmethod ig/init-key :default
[_ data]
(d/without-nils data))
(defmethod ig/prep-key :default
[_ data]
(if (map? data)
(d/without-nils data)
data))
(def defaults
{:host "devenv"
:tenant "dev"
:database-uri "postgresql://postgres/penpot"
:database-username "penpot"
:database-password "penpot"
:default-blob-version 3
:loggers-zmq-uri "tcp://localhost:45556"
:file-change-snapshot-every 5
:file-change-snapshot-timeout "3h"
:public-uri "http://localhost:3449"
:redis-uri "redis://redis/0"
:srepl-host "127.0.0.1"
:srepl-port 6062
:assets-storage-backend :assets-fs
:storage-assets-fs-directory "assets"
:assets-path "/internal/assets/"
:rlimit-password 10
:rlimit-image 2
:rlimit-font 5
:smtp-default-reply-to "Penpot <no-reply@example.com>"
:smtp-default-from "Penpot <no-reply@example.com>"
:profile-complaint-max-age (dt/duration {:days 7})
:profile-complaint-threshold 2
:profile-bounce-max-age (dt/duration {:days 7})
:profile-bounce-threshold 10
:telemetry-uri "https://telemetry.penpot.app/"
:ldap-user-query "(|(uid=:username)(mail=:username))"
:ldap-attrs-username "uid"
:ldap-attrs-email "mail"
:ldap-attrs-fullname "cn"
:ldap-attrs-photo "jpegPhoto"
;; a server prop key where initial project is stored.
:initial-project-skey "initial-project"})
(s/def ::flags ::us/set-of-keywords)
;; DEPRECATED PROPERTIES: should be removed in 1.10
(s/def ::registration-enabled ::us/boolean)
(s/def ::smtp-enabled ::us/boolean)
(s/def ::telemetry-enabled ::us/boolean)
(s/def ::asserts-enabled ::us/boolean)
;; END DEPRECATED
(s/def ::audit-log-archive-uri ::us/string)
(s/def ::audit-log-gc-max-age ::dt/duration)
(s/def ::admins ::us/set-of-str)
(s/def ::file-change-snapshot-every ::us/integer)
(s/def ::file-change-snapshot-timeout ::dt/duration)
(s/def ::default-executor-parallelism ::us/integer)
(s/def ::blocking-executor-parallelism ::us/integer)
(s/def ::worker-executor-parallelism ::us/integer)
(s/def ::secret-key ::us/string)
(s/def ::allow-demo-users ::us/boolean)
(s/def ::assets-path ::us/string)
(s/def ::authenticated-cookie-domain ::us/string)
(s/def ::database-password (s/nilable ::us/string))
(s/def ::database-uri ::us/string)
(s/def ::database-username (s/nilable ::us/string))
(s/def ::database-readonly ::us/boolean)
(s/def ::database-min-pool-size ::us/integer)
(s/def ::database-max-pool-size ::us/integer)
(s/def ::default-blob-version ::us/integer)
(s/def ::error-report-webhook ::us/string)
(s/def ::user-feedback-destination ::us/string)
(s/def ::github-client-id ::us/string)
(s/def ::github-client-secret ::us/string)
(s/def ::gitlab-base-uri ::us/string)
(s/def ::gitlab-client-id ::us/string)
(s/def ::gitlab-client-secret ::us/string)
(s/def ::google-client-id ::us/string)
(s/def ::google-client-secret ::us/string)
(s/def ::oidc-client-id ::us/string)
(s/def ::oidc-client-secret ::us/string)
(s/def ::oidc-base-uri ::us/string)
(s/def ::oidc-token-uri ::us/string)
(s/def ::oidc-auth-uri ::us/string)
(s/def ::oidc-user-uri ::us/string)
(s/def ::oidc-scopes ::us/set-of-str)
(s/def ::oidc-roles ::us/set-of-str)
(s/def ::oidc-roles-attr ::us/keyword)
(s/def ::host ::us/string)
(s/def ::http-server-port ::us/integer)
(s/def ::http-server-host ::us/string)
(s/def ::http-server-min-threads ::us/integer)
(s/def ::http-server-max-threads ::us/integer)
(s/def ::http-session-idle-max-age ::dt/duration)
(s/def ::http-session-updater-batch-max-age ::dt/duration)
(s/def ::http-session-updater-batch-max-size ::us/integer)
(s/def ::initial-project-skey ::us/string)
(s/def ::ldap-attrs-email ::us/string)
(s/def ::ldap-attrs-fullname ::us/string)
(s/def ::ldap-attrs-photo ::us/string)
(s/def ::ldap-attrs-username ::us/string)
(s/def ::ldap-base-dn ::us/string)
(s/def ::ldap-bind-dn ::us/string)
(s/def ::ldap-bind-password ::us/string)
(s/def ::ldap-host ::us/string)
(s/def ::ldap-port ::us/integer)
(s/def ::ldap-ssl ::us/boolean)
(s/def ::ldap-starttls ::us/boolean)
(s/def ::ldap-user-query ::us/string)
(s/def ::loggers-loki-uri ::us/string)
(s/def ::loggers-zmq-uri ::us/string)
(s/def ::media-directory ::us/string)
(s/def ::media-uri ::us/string)
(s/def ::profile-bounce-max-age ::dt/duration)
(s/def ::profile-bounce-threshold ::us/integer)
(s/def ::profile-complaint-max-age ::dt/duration)
(s/def ::profile-complaint-threshold ::us/integer)
(s/def ::public-uri ::us/string)
(s/def ::redis-uri ::us/string)
(s/def ::registration-domain-whitelist ::us/set-of-str)
(s/def ::rlimit-font ::us/integer)
(s/def ::rlimit-image ::us/integer)
(s/def ::rlimit-password ::us/integer)
(s/def ::smtp-default-from ::us/string)
(s/def ::smtp-default-reply-to ::us/string)
(s/def ::smtp-host ::us/string)
(s/def ::smtp-password (s/nilable ::us/string))
(s/def ::smtp-port ::us/integer)
(s/def ::smtp-ssl ::us/boolean)
(s/def ::smtp-tls ::us/boolean)
(s/def ::smtp-username (s/nilable ::us/string))
(s/def ::srepl-host ::us/string)
(s/def ::srepl-port ::us/integer)
(s/def ::assets-storage-backend ::us/keyword)
(s/def ::fdata-storage-backend ::us/keyword)
(s/def ::storage-assets-fs-directory ::us/string)
(s/def ::storage-assets-s3-bucket ::us/string)
(s/def ::storage-assets-s3-region ::us/keyword)
(s/def ::storage-assets-s3-endpoint ::us/string)
(s/def ::storage-fdata-s3-bucket ::us/string)
(s/def ::storage-fdata-s3-region ::us/keyword)
(s/def ::storage-fdata-s3-prefix ::us/string)
(s/def ::storage-fdata-s3-endpoint ::us/string)
(s/def ::telemetry-uri ::us/string)
(s/def ::telemetry-with-taiga ::us/boolean)
(s/def ::tenant ::us/string)
(s/def ::sentry-trace-sample-rate ::us/number)
(s/def ::sentry-attach-stack-trace ::us/boolean)
(s/def ::sentry-debug ::us/boolean)
(s/def ::sentry-dsn ::us/string)
(s/def ::config
(s/keys :opt-un [::secret-key
::flags
::admins
::allow-demo-users
::audit-log-archive-uri
::audit-log-gc-max-age
::authenticated-cookie-domain
::database-password
::database-uri
::database-username
::database-readonly
::database-min-pool-size
::database-max-pool-size
::default-blob-version
::error-report-webhook
::default-executor-parallelism
::blocking-executor-parallelism
::worker-executor-parallelism
::file-change-snapshot-every
::file-change-snapshot-timeout
::user-feedback-destination
::github-client-id
::github-client-secret
::gitlab-base-uri
::gitlab-client-id
::gitlab-client-secret
::google-client-id
::google-client-secret
::oidc-client-id
::oidc-client-secret
::oidc-base-uri
::oidc-token-uri
::oidc-auth-uri
::oidc-user-uri
::oidc-scopes
::oidc-roles-attr
::oidc-roles
::host
::http-server-host
::http-server-port
::http-server-max-threads
::http-server-min-threads
::http-session-idle-max-age
::http-session-updater-batch-max-age
::http-session-updater-batch-max-size
::initial-project-skey
::ldap-attrs-email
::ldap-attrs-fullname
::ldap-attrs-photo
::ldap-attrs-username
::ldap-base-dn
::ldap-bind-dn
::ldap-bind-password
::ldap-host
::ldap-port
::ldap-ssl
::ldap-starttls
::ldap-user-query
::local-assets-uri
::loggers-loki-uri
::loggers-zmq-uri
::profile-bounce-max-age
::profile-bounce-threshold
::profile-complaint-max-age
::profile-complaint-threshold
::public-uri
::redis-uri
::registration-domain-whitelist
::registration-enabled
::rlimit-font
::rlimit-image
::rlimit-password
::sentry-dsn
::sentry-debug
::sentry-attach-stack-trace
::sentry-trace-sample-rate
::smtp-default-from
::smtp-default-reply-to
::smtp-enabled
::smtp-host
::smtp-password
::smtp-port
::smtp-ssl
::smtp-tls
::smtp-username
::srepl-host
::srepl-port
::assets-storage-backend
::storage-assets-fs-directory
::storage-assets-s3-bucket
::storage-assets-s3-region
::storage-assets-s3-endpoint
::fdata-storage-backend
::storage-fdata-s3-bucket
::storage-fdata-s3-region
::storage-fdata-s3-prefix
::storage-fdata-s3-endpoint
::telemetry-enabled
::telemetry-uri
::telemetry-referer
::telemetry-with-taiga
::tenant]))
(def default-flags
[:enable-backend-asserts
:enable-backend-api-doc
:enable-secure-session-cookies])
(defn- parse-flags
[config]
(flags/parse flags/default
default-flags
(:flags config)))
(defn read-env
[prefix]
(let [prefix (str prefix "-")
len (count prefix)]
(reduce-kv
(fn [acc k v]
(cond-> acc
(str/starts-with? (name k) prefix)
(assoc (keyword (subs (name k) len)) v)))
{}
env)))
(defn- read-config
[]
(try
(->> (read-env "penpot")
(merge defaults)
(us/conform ::config))
(catch Throwable e
(when (ex/ex-info? e)
(println ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;")
(println "Error on validating configuration:")
(println (:explain (ex-data e))
(println ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;")))
(throw e))))
(def version
(v/parse (or (some-> (io/resource "version.txt")
(slurp)
(str/trim))
"%version%")))
(def ^:dynamic config (read-config))
(def ^:dynamic flags (parse-flags config))
(def deletion-delay
(dt/duration {:days 7}))
(defn get
"A configuration getter. Helps code be more testable."
([key]
(c/get config key))
([key default]
(c/get config key default)))
;; Set value for all new threads bindings.
(alter-var-root #'*assert* (constantly (contains? flags :backend-asserts)))

439
backend/src/app/db.clj Normal file
View File

@@ -0,0 +1,439 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.db
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.geom.point :as gpt]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.transit :as t]
[app.common.uuid :as uuid]
[app.db.sql :as sql]
[app.metrics :as mtx]
[app.util.json :as json]
[app.util.migrations :as mg]
[app.util.time :as dt]
[clojure.java.io :as io]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[next.jdbc :as jdbc]
[next.jdbc.date-time :as jdbc-dt])
(:import
com.zaxxer.hikari.HikariConfig
com.zaxxer.hikari.HikariDataSource
com.zaxxer.hikari.metrics.prometheus.PrometheusMetricsTrackerFactory
java.io.InputStream
java.io.OutputStream
java.lang.AutoCloseable
java.sql.Connection
java.sql.Savepoint
org.postgresql.PGConnection
org.postgresql.geometric.PGpoint
org.postgresql.jdbc.PgArray
org.postgresql.largeobject.LargeObject
org.postgresql.largeobject.LargeObjectManager
org.postgresql.util.PGInterval
org.postgresql.util.PGobject))
(declare open)
(declare create-pool)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Initialization
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare apply-migrations!)
(s/def ::connection-timeout ::us/integer)
(s/def ::max-size ::us/integer)
(s/def ::min-size ::us/integer)
(s/def ::migrations map?)
(s/def ::name keyword?)
(s/def ::password ::us/string)
(s/def ::read-only ::us/boolean)
(s/def ::uri ::us/not-empty-string)
(s/def ::username ::us/string)
(s/def ::validation-timeout ::us/integer)
(defmethod ig/pre-init-spec ::pool [_]
(s/keys :req-un [::uri ::name
::min-size
::max-size
::connection-timeout
::validation-timeout]
:opt-un [::migrations
::username
::password
::mtx/metrics
::read-only]))
(defmethod ig/prep-key ::pool
[_ cfg]
(merge {:name :main
:min-size 0
:max-size 30
:connection-timeout 10000
:validation-timeout 10000
:idle-timeout 120000 ; 2min
:max-lifetime 1800000 ; 30m
:read-only false}
(d/without-nils cfg)))
(defmethod ig/init-key ::pool
[_ {:keys [migrations name read-only] :as cfg}]
(l/info :hint "initialize connection pool"
:name (d/name name)
:uri (:uri cfg)
:read-only read-only
:with-credentials (and (contains? cfg :username)
(contains? cfg :password))
:min-size (:min-size cfg)
:max-size (:max-size cfg))
(let [pool (create-pool cfg)]
(when-not read-only
(some->> (seq migrations) (apply-migrations! pool)))
pool))
(defmethod ig/halt-key! ::pool
[_ pool]
(.close ^HikariDataSource pool))
(defn- apply-migrations!
[pool migrations]
(with-open [conn ^AutoCloseable (open pool)]
(mg/setup! conn)
(doseq [[name steps] migrations]
(mg/migrate! conn {:name (d/name name) :steps steps}))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; API & Impl
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def initsql
(str "SET statement_timeout = 300000;\n"
"SET idle_in_transaction_session_timeout = 300000;"))
(defn- create-datasource-config
[{:keys [metrics uri] :as cfg}]
(let [config (HikariConfig.)]
(doto config
(.setJdbcUrl (str "jdbc:" uri))
(.setPoolName (d/name (:name cfg)))
(.setAutoCommit true)
(.setReadOnly (:read-only cfg))
(.setConnectionTimeout (:connection-timeout cfg))
(.setValidationTimeout (:validation-timeout cfg))
(.setIdleTimeout (:idle-timeout cfg))
(.setMaxLifetime (:max-lifetime cfg))
(.setMinimumIdle (:min-size cfg))
(.setMaximumPoolSize (:max-size cfg))
(.setConnectionInitSql initsql)
(.setInitializationFailTimeout -1))
;; When metrics namespace is provided
(when metrics
(->> (:registry metrics)
(PrometheusMetricsTrackerFactory.)
(.setMetricsTrackerFactory config)))
(some->> ^String (:username cfg) (.setUsername config))
(some->> ^String (:password cfg) (.setPassword config))
config))
(defn pool?
[v]
(instance? javax.sql.DataSource v))
(s/def ::pool pool?)
(defn closed?
[pool]
(.isClosed ^HikariDataSource pool))
(defn read-only?
[pool]
(.isReadOnly ^HikariDataSource pool))
(defn create-pool
[cfg]
(let [dsc (create-datasource-config cfg)]
(jdbc-dt/read-as-instant)
(HikariDataSource. dsc)))
(defn unwrap
[conn klass]
(.unwrap ^Connection conn klass))
(defn lobj-manager
[conn]
(let [conn (unwrap conn org.postgresql.PGConnection)]
(.getLargeObjectAPI ^PGConnection conn)))
(defn lobj-create
[manager]
(.createLO ^LargeObjectManager manager LargeObjectManager/READWRITE))
(defn lobj-open
([manager oid]
(lobj-open manager oid {}))
([manager oid {:keys [mode] :or {mode :rw}}]
(let [mode (case mode
(:r :read) LargeObjectManager/READ
(:w :write) LargeObjectManager/WRITE
(:rw :read+write) LargeObjectManager/READWRITE)]
(.open ^LargeObjectManager manager (long oid) mode))))
(defn lobj-unlink
[manager oid]
(.unlink ^LargeObjectManager manager (long oid)))
(extend-type LargeObject
io/IOFactory
(make-reader [lobj opts]
(let [^InputStream is (.getInputStream ^LargeObject lobj)]
(io/make-reader is opts)))
(make-writer [lobj opts]
(let [^OutputStream os (.getOutputStream ^LargeObject lobj)]
(io/make-writer os opts)))
(make-input-stream [lobj opts]
(let [^InputStream is (.getInputStream ^LargeObject lobj)]
(io/make-input-stream is opts)))
(make-output-stream [lobj opts]
(let [^OutputStream os (.getOutputStream ^LargeObject lobj)]
(io/make-output-stream os opts))))
(defmacro with-atomic
[& args]
`(jdbc/with-transaction ~@args))
(defn ^Connection open
[pool]
(jdbc/get-connection pool))
(defn exec!
([ds sv]
(exec! ds sv {}))
([ds sv opts]
(jdbc/execute! ds sv (assoc opts :builder-fn sql/as-kebab-maps))))
(defn exec-one!
([ds sv] (exec-one! ds sv {}))
([ds sv opts]
(jdbc/execute-one! ds sv (assoc opts :builder-fn sql/as-kebab-maps))))
(defn insert!
([ds table params] (insert! ds table params nil))
([ds table params opts]
(exec-one! ds
(sql/insert table params opts)
(assoc opts :return-keys true))))
(defn insert-multi!
([ds table cols rows] (insert-multi! ds table cols rows nil))
([ds table cols rows opts]
(exec! ds
(sql/insert-multi table cols rows opts)
(assoc opts :return-keys true))))
(defn update!
([ds table params where] (update! ds table params where nil))
([ds table params where opts]
(exec-one! ds
(sql/update table params where opts)
(assoc opts :return-keys true))))
(defn delete!
([ds table params] (delete! ds table params nil))
([ds table params opts]
(exec-one! ds
(sql/delete table params opts)
(assoc opts :return-keys true))))
(defn- is-deleted?
[{:keys [deleted-at]}]
(and (dt/instant? deleted-at)
(< (inst-ms deleted-at)
(inst-ms (dt/now)))))
(defn get-by-params
([ds table params]
(get-by-params ds table params nil))
([ds table params {:keys [check-not-found] :or {check-not-found true} :as opts}]
(let [res (exec-one! ds (sql/select table params opts))]
(when (and check-not-found (or (not res) (is-deleted? res)))
(ex/raise :type :not-found
:table table
:hint "database object not found"))
res)))
(defn get-by-id
([ds table id]
(get-by-params ds table {:id id} nil))
([ds table id opts]
(get-by-params ds table {:id id} opts)))
(defn query
([ds table params]
(query ds table params nil))
([ds table params opts]
(exec! ds (sql/select table params opts))))
(defn pgobject?
([v]
(instance? PGobject v))
([v type]
(and (instance? PGobject v)
(= type (.getType ^PGobject v)))))
(defn pginterval?
[v]
(instance? PGInterval v))
(defn pgpoint?
[v]
(instance? PGpoint v))
(defn pgarray?
([v] (instance? PgArray v))
([v type]
(and (instance? PgArray v)
(= type (.getBaseTypeName ^PgArray v)))))
(defn pgarray-of-uuid?
[v]
(and (pgarray? v) (= "uuid" (.getBaseTypeName ^PgArray v))))
(defn decode-pgarray
([v] (into [] (.getArray ^PgArray v)))
([v in] (into in (.getArray ^PgArray v)))
([v in xf] (into in xf (.getArray ^PgArray v))))
(defn pgarray->set
[v]
(set (.getArray ^PgArray v)))
(defn pgarray->vector
[v]
(vec (.getArray ^PgArray v)))
(defn pgpoint
[p]
(PGpoint. (:x p) (:y p)))
(defn create-array
[conn type objects]
(let [^PGConnection conn (unwrap conn org.postgresql.PGConnection)]
(if (coll? objects)
(.createArrayOf conn ^String type (into-array Object objects))
(.createArrayOf conn ^String type objects))))
(defn decode-pgpoint
[^PGpoint v]
(gpt/point (.-x v) (.-y v)))
(defn pginterval
[data]
(org.postgresql.util.PGInterval. ^String data))
(defn savepoint
([^Connection conn]
(.setSavepoint conn))
([^Connection conn label]
(.setSavepoint conn (name label))))
(defn rollback!
([^Connection conn]
(.rollback conn))
([^Connection conn ^Savepoint sp]
(.rollback conn sp)))
(defn interval
[data]
(cond
(integer? data)
(->> (/ data 1000.0)
(format "%s seconds")
(pginterval))
(string? data)
(pginterval data)
(dt/duration? data)
(->> (/ (.toMillis ^java.time.Duration data) 1000.0)
(format "%s seconds")
(pginterval))
:else
(ex/raise :type :not-implemented)))
(defn decode-json-pgobject
[^PGobject o]
(let [typ (.getType o)
val (.getValue o)]
(if (or (= typ "json")
(= typ "jsonb"))
(json/read val)
val)))
(defn decode-transit-pgobject
[^PGobject o]
(let [typ (.getType o)
val (.getValue o)]
(if (or (= typ "json")
(= typ "jsonb"))
(t/decode-str val)
val)))
(defn inet
[ip-addr]
(doto (org.postgresql.util.PGobject.)
(.setType "inet")
(.setValue (str ip-addr))))
(defn decode-inet
[^PGobject o]
(if (= "inet" (.getType o))
(.getValue o)
nil))
(defn tjson
"Encode as transit json."
[data]
(doto (org.postgresql.util.PGobject.)
(.setType "jsonb")
(.setValue (t/encode-str data {:type :json-verbose}))))
(defn json
"Encode as plain json."
[data]
(doto (org.postgresql.util.PGobject.)
(.setType "jsonb")
(.setValue (json/write-str data))))
;; --- Locks
(defn- xact-check-param
[n]
(cond
(uuid? n) (uuid/get-word-high n)
(int? n) n
:else (throw (IllegalArgumentException. "uuid or number allowed"))))
(defn xact-lock!
[conn n]
(let [n (xact-check-param n)]
(exec-one! conn ["select pg_advisory_xact_lock(?::bigint) as lock" n])
true))
(defn xact-try-lock!
[conn n]
(let [n (xact-check-param n)
row (exec-one! conn ["select pg_try_advisory_xact_lock(?::bigint) as lock" n])]
(:lock row)))

View File

@@ -0,0 +1,62 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.db.sql
(:refer-clojure :exclude [update])
(:require
[clojure.string :as str]
[next.jdbc.optional :as jdbc-opt]
[next.jdbc.sql.builder :as sql]))
(defn kebab-case [s] (str/replace s #"_" "-"))
(defn snake-case [s] (str/replace s #"-" "_"))
(def default-opts
{:table-fn snake-case
:column-fn snake-case})
(defn as-kebab-maps
[rs opts]
(jdbc-opt/as-unqualified-modified-maps rs (assoc opts :label-fn kebab-case)))
(defn insert
([table key-map]
(insert table key-map nil))
([table key-map opts]
(let [opts (merge default-opts opts)
opts (cond-> opts
(:on-conflict-do-nothing opts)
(assoc :suffix "ON CONFLICT DO NOTHING"))]
(sql/for-insert table key-map opts))))
(defn insert-multi
[table cols rows opts]
(let [opts (merge default-opts opts)]
(sql/for-insert-multi table cols rows opts)))
(defn select
([table where-params]
(select table where-params nil))
([table where-params opts]
(let [opts (merge default-opts opts)
opts (cond-> opts
(:for-update opts) (assoc :suffix "FOR UPDATE")
(:for-key-share opts) (assoc :suffix "FOR KEY SHARE"))]
(sql/for-query table where-params opts))))
(defn update
([table key-map where-params]
(update table key-map where-params nil))
([table key-map where-params opts]
(let [opts (merge default-opts opts)]
(sql/for-update table key-map where-params opts))))
(defn delete
([table where-params]
(delete table where-params nil))
([table where-params opts]
(let [opts (merge default-opts opts)]
(sql/for-delete table where-params opts))))

183
backend/src/app/emails.clj Normal file
View File

@@ -0,0 +1,183 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.emails
"Main api for send emails."
(:require
[app.common.logging :as l]
[app.common.spec :as us]
[app.config :as cf]
[app.db :as db]
[app.db.sql :as sql]
[app.util.emails :as emails]
[app.worker :as wrk]
[clojure.spec.alpha :as s]
[integrant.core :as ig]))
;; --- PUBLIC API
(defn render
[email-factory context]
(email-factory context))
(defn send!
"Schedule the email for sending."
[{:keys [::conn ::factory] :as context}]
(us/verify fn? factory)
(us/verify some? conn)
(let [email (factory context)]
(wrk/submit! (assoc email
::wrk/task :sendmail
::wrk/delay 0
::wrk/max-retries 1
::wrk/priority 200
::wrk/conn conn))))
;; --- BOUNCE/COMPLAINS HANDLING
(def sql:profile-complaint-report
"select (select count(*)
from profile_complaint_report
where type = 'complaint'
and profile_id = ?
and created_at > now() - ?::interval) as complaints,
(select count(*)
from profile_complaint_report
where type = 'bounce'
and profile_id = ?
and created_at > now() - ?::interval) as bounces;")
(defn allow-send-emails?
[conn profile]
(when-not (:is-muted profile false)
(let [complaint-threshold (cf/get :profile-complaint-threshold)
complaint-max-age (cf/get :profile-complaint-max-age)
bounce-threshold (cf/get :profile-bounce-threshold)
bounce-max-age (cf/get :profile-bounce-max-age)
{:keys [complaints bounces] :as result}
(db/exec-one! conn [sql:profile-complaint-report
(:id profile)
(db/interval complaint-max-age)
(:id profile)
(db/interval bounce-max-age)])]
(and (< (or complaints 0) complaint-threshold)
(< (or bounces 0) bounce-threshold)))))
(defn has-complaint-reports?
([conn email] (has-complaint-reports? conn email nil))
([conn email {:keys [threshold] :or {threshold 1}}]
(let [reports (db/exec! conn (sql/select :global-complaint-report
{:email email :type "complaint"}
{:limit 10}))]
(>= (count reports) threshold))))
(defn has-bounce-reports?
([conn email] (has-bounce-reports? conn email nil))
([conn email {:keys [threshold] :or {threshold 1}}]
(let [reports (db/exec! conn (sql/select :global-complaint-report
{:email email :type "bounce"}
{:limit 10}))]
(>= (count reports) threshold))))
;; --- EMAIL FACTORIES
(s/def ::subject ::us/string)
(s/def ::content ::us/string)
(s/def ::feedback
(s/keys :req-un [::subject ::content]))
(def feedback
"A profile feedback email."
(emails/template-factory ::feedback))
(s/def ::name ::us/string)
(s/def ::register
(s/keys :req-un [::name]))
(def register
"A new profile registration welcome email."
(emails/template-factory ::register))
(s/def ::token ::us/string)
(s/def ::password-recovery
(s/keys :req-un [::name ::token]))
(def password-recovery
"A password recovery notification email."
(emails/template-factory ::password-recovery))
(s/def ::pending-email ::us/email)
(s/def ::change-email
(s/keys :req-un [::name ::pending-email ::token]))
(def change-email
"Password change confirmation email"
(emails/template-factory ::change-email))
(s/def :internal.emails.invite-to-team/invited-by ::us/string)
(s/def :internal.emails.invite-to-team/team ::us/string)
(s/def :internal.emails.invite-to-team/token ::us/string)
(s/def ::invite-to-team
(s/keys :req-un [:internal.emails.invite-to-team/invited-by
:internal.emails.invite-to-team/token
:internal.emails.invite-to-team/team]))
(def invite-to-team
"Teams member invitation email."
(emails/template-factory ::invite-to-team))
;; --- SENDMAIL TASK
(declare send-console!)
(s/def ::username ::cf/smtp-username)
(s/def ::password ::cf/smtp-password)
(s/def ::tls ::cf/smtp-tls)
(s/def ::ssl ::cf/smtp-ssl)
(s/def ::host ::cf/smtp-host)
(s/def ::port ::cf/smtp-port)
(s/def ::default-reply-to ::cf/smtp-default-reply-to)
(s/def ::default-from ::cf/smtp-default-from)
(defmethod ig/pre-init-spec ::sendmail-handler [_]
(s/keys :opt-un [::username
::password
::tls
::ssl
::host
::port
::default-from
::default-reply-to]))
(defmethod ig/init-key ::sendmail-handler
[_ cfg]
(fn [{:keys [props] :as task}]
(let [enabled? (or (contains? cf/flags :smtp)
(cf/get :smtp-enabled)
(:enabled task))]
(if enabled?
(emails/send! cfg props)
(send-console! cfg props)))))
(defn- send-console!
[cfg email]
(let [baos (java.io.ByteArrayOutputStream.)
mesg (emails/smtp-message cfg email)]
(.writeTo mesg baos)
(let [out (with-out-str
(println "email console dump:")
(println "******** start email" (:id email) "**********")
(println (.toString baos))
(println "******** end email "(:id email) "**********"))]
(l/info :email out))))

184
backend/src/app/http.clj Normal file
View File

@@ -0,0 +1,184 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.config :as cf]
[app.http.doc :as doc]
[app.http.errors :as errors]
[app.http.middleware :as middleware]
[app.metrics :as mtx]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[reitit.ring :as rr]
[yetti.adapter :as yt])
(:import
org.eclipse.jetty.server.Server
org.eclipse.jetty.server.handler.StatisticsHandler))
(declare wrap-router)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HTTP SERVER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::handler fn?)
(s/def ::router some?)
(s/def ::port ::us/integer)
(s/def ::host ::us/string)
(s/def ::name ::us/string)
(s/def ::max-threads ::cf/http-server-max-threads)
(s/def ::min-threads ::cf/http-server-min-threads)
(defmethod ig/prep-key ::server
[_ cfg]
(merge {:name "http"
:min-threads 4
:max-threads 60
:port 6060
:host "0.0.0.0"}
(d/without-nils cfg)))
(defmethod ig/pre-init-spec ::server [_]
(s/keys :req-un [::port ::host ::name ::min-threads ::max-threads]
:opt-un [::mtx/metrics ::router ::handler]))
(defn- instrument-metrics
[^Server server metrics]
(let [stats (doto (StatisticsHandler.)
(.setHandler (.getHandler server)))]
(.setHandler server stats)
(mtx/instrument-jetty! (:registry metrics) stats)
server))
(defmethod ig/init-key ::server
[_ {:keys [handler router port name metrics host] :as opts}]
(l/info :hint "starting http server"
:port port :host host :name name
:min-threads (:min-threads opts)
:max-threads (:max-threads opts))
(let [options {:http/port port
:http/host host
:thread-pool/max-threads (:max-threads opts)
:thread-pool/min-threads (:min-threads opts)
:ring/async true}
handler (cond
(fn? handler) handler
(some? router) (wrap-router router)
:else (ex/raise :type :internal
:code :invalid-argument
:hint "Missing `handler` or `router` option."))
server (-> (yt/server handler (d/without-nils options))
(cond-> metrics (instrument-metrics metrics)))]
(assoc opts :server (yt/start! server))))
(defmethod ig/halt-key! ::server
[_ {:keys [server name port] :as opts}]
(l/info :msg "stoping http server" :name name :port port)
(yt/stop! server))
(defn- wrap-router
[router]
(let [default (rr/routes
(rr/create-resource-handler {:path "/"})
(rr/create-default-handler))
options {:middleware [middleware/wrap-server-timing]
:inject-match? false
:inject-router? false}
handler (rr/ring-handler router default options)]
(fn [request respond _]
(handler request respond (fn [cause]
(l/error :hint "unexpected error processing request"
::l/context (errors/get-error-context request cause)
:query-string (:query-string request)
:cause cause)
(respond {:status 500 :body "internal server error"}))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HTTP ROUTER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::rpc map?)
(s/def ::session map?)
(s/def ::oauth map?)
(s/def ::storage map?)
(s/def ::assets map?)
(s/def ::feedback fn?)
(s/def ::ws fn?)
(s/def ::audit-http-handler fn?)
(s/def ::debug map?)
(defmethod ig/pre-init-spec ::router [_]
(s/keys :req-un [::rpc ::session ::mtx/metrics ::ws
::oauth ::storage ::assets ::feedback
::debug ::audit-http-handler]))
(defmethod ig/init-key ::router
[_ {:keys [ws session rpc oauth metrics assets feedback debug] :as cfg}]
(rr/router
[["/metrics" {:get (:handler metrics)}]
["/assets" {:middleware [[middleware/format-response-body]
[middleware/errors errors/handle]
[middleware/cookies]
(:middleware session)]}
["/by-id/:id" {:get (:objects-handler assets)}]
["/by-file-media-id/:id" {:get (:file-objects-handler assets)}]
["/by-file-media-id/:id/thumbnail" {:get (:file-thumbnails-handler assets)}]]
["/dbg" {:middleware [[middleware/multipart-params]
[middleware/params]
[middleware/keyword-params]
[middleware/format-response-body]
[middleware/errors errors/handle]
[middleware/cookies]
[(:middleware session)]]}
["" {:get (:index debug)}]
["/error-by-id/:id" {:get (:retrieve-error debug)}]
["/error/:id" {:get (:retrieve-error debug)}]
["/error" {:get (:retrieve-error-list debug)}]
["/file/data" {:get (:retrieve-file-data debug)
:post (:upload-file-data debug)}]
["/file/changes" {:get (:retrieve-file-changes debug)}]]
["/webhooks"
["/sns" {:post (:sns-webhook cfg)}]]
["/ws/notifications"
{:middleware [[middleware/params]
[middleware/keyword-params]
[middleware/format-response-body]
[middleware/errors errors/handle]
[middleware/cookies]
[(:middleware session)]]
:get ws}]
["/api" {:middleware [[middleware/cors]
[middleware/params]
[middleware/multipart-params]
[middleware/keyword-params]
[middleware/format-response-body]
[middleware/parse-request-body]
[middleware/errors errors/handle]
[middleware/cookies]]}
["/health" {:get (:health-check debug)}]
["/_doc" {:get (doc/handler rpc)}]
["/feedback" {:middleware [(:middleware session)]
:post feedback}]
["/auth/oauth/:provider" {:post (:handler oauth)}]
["/auth/oauth/:provider/callback" {:get (:callback-handler oauth)}]
["/audit/events" {:middleware [(:middleware session)]
:post (:audit-http-handler cfg)}]
["/rpc" {:middleware [(:middleware session)]}
["/query/:type" {:get (:query-handler rpc)
:post (:query-handler rpc)}]
["/mutation/:type" {:post (:mutation-handler rpc)}]]]]))

View File

@@ -0,0 +1,128 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.assets
"Assets related handlers."
(:require
[app.common.exceptions :as ex]
[app.common.spec :as us]
[app.common.uri :as u]
[app.db :as db]
[app.metrics :as mtx]
[app.storage :as sto]
[app.util.async :as async]
[app.util.time :as dt]
[app.worker :as wrk]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[promesa.core :as p]))
(def ^:private cache-max-age
(dt/duration {:hours 24}))
(def ^:private signature-max-age
(dt/duration {:hours 24 :minutes 15}))
(defn coerce-id
[id]
(let [res (us/uuid-conformer id)]
(when-not (uuid? res)
(ex/raise :type :not-found
:hint "object not found"))
res))
(defn- get-file-media-object
[{:keys [pool] :as storage} id]
(let [id (coerce-id id)
mobj (db/exec-one! pool ["select * from file_media_object where id=?" id])]
(when-not mobj
(ex/raise :type :not-found
:hint "object does not found"))
mobj))
(defn- serve-object
[{:keys [storage] :as cfg} obj]
(let [mdata (meta obj)
backend (sto/resolve-backend storage (:backend obj))]
(case (:type backend)
:db
{:status 200
:headers {"content-type" (:content-type mdata)
"cache-control" (str "max-age=" (inst-ms cache-max-age))}
:body (sto/get-object-bytes storage obj)}
:s3
(let [{:keys [host port] :as url} (sto/get-object-url storage obj {:max-age signature-max-age})]
{:status 307
:headers {"location" (str url)
"x-host" (cond-> host port (str ":" port))
"cache-control" (str "max-age=" (inst-ms cache-max-age))}
:body ""})
:fs
(let [purl (u/uri (:assets-path cfg))
purl (u/join purl (sto/object->relative-path obj))]
{:status 204
:headers {"x-accel-redirect" (:path purl)
"content-type" (:content-type mdata)
"cache-control" (str "max-age=" (inst-ms cache-max-age))}
:body ""}))))
(defn- generic-handler
[{:keys [storage executor] :as cfg} request kf]
(async/with-dispatch executor
(let [id (get-in request [:path-params :id])
mobj (get-file-media-object storage id)
obj (sto/get-object storage (kf mobj))]
(if obj
(serve-object cfg obj)
{:status 404 :body ""}))))
(defn objects-handler
[{:keys [storage executor] :as cfg} request respond raise]
(-> (async/with-dispatch executor
(let [id (get-in request [:path-params :id])
id (coerce-id id)
obj (sto/get-object storage id)]
(if obj
(serve-object cfg obj)
{:status 404 :body ""})))
(p/then respond)
(p/catch raise)))
(defn file-objects-handler
[cfg request respond raise]
(-> (generic-handler cfg request :media-id)
(p/then respond)
(p/catch raise)))
(defn file-thumbnails-handler
[cfg request respond raise]
(-> (generic-handler cfg request #(or (:thumbnail-id %) (:media-id %)))
(p/then respond)
(p/catch raise)))
;; --- Initialization
(s/def ::storage some?)
(s/def ::assets-path ::us/string)
(s/def ::cache-max-age ::dt/duration)
(s/def ::signature-max-age ::dt/duration)
(defmethod ig/pre-init-spec ::handlers [_]
(s/keys :req-un [::storage
::wrk/executor
::mtx/metrics
::assets-path
::cache-max-age
::signature-max-age]))
(defmethod ig/init-key ::handlers
[_ cfg]
{:objects-handler (partial objects-handler cfg)
:file-objects-handler (partial file-objects-handler cfg)
:file-thumbnails-handler (partial file-thumbnails-handler cfg)})

View File

@@ -0,0 +1,201 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.awsns
"AWS SNS webhook handler for bounces."
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.db :as db]
[app.db.sql :as sql]
[app.util.http :as http]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]
[jsonista.core :as j]))
(declare parse-json)
(declare parse-notification)
(declare process-report)
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req-un [::db/pool]))
(defmethod ig/init-key ::handler
[_ cfg]
(fn [request respond _]
(try
(let [body (parse-json (slurp (:body request)))
mtype (get body "Type")]
(cond
(= mtype "SubscriptionConfirmation")
(let [surl (get body "SubscribeURL")
stopic (get body "TopicArn")]
(l/info :action "subscription received" :topic stopic :url surl)
(http/send! {:uri surl :method :post :timeout 10000}))
(= mtype "Notification")
(when-let [message (parse-json (get body "Message"))]
(let [notification (parse-notification cfg message)]
(process-report cfg notification)))
:else
(l/warn :hint "unexpected data received"
:report (pr-str body))))
(catch Throwable cause
(l/error :hint "unexpected exception on awsns handler"
:cause cause)))
(respond {:status 200 :body ""})))
(defn- parse-bounce
[data]
{:type "bounce"
:kind (str/lower (get data "bounceType"))
:category (str/lower (get data "bounceSubType"))
:feedback-id (get data "feedbackId")
:timestamp (get data "timestamp")
:recipients (->> (get data "bouncedRecipients")
(mapv (fn [item]
{:email (str/lower (get item "emailAddress"))
:status (get item "status")
:action (get item "action")
:dcode (get item "diagnosticCode")})))})
(defn- parse-complaint
[data]
{:type "complaint"
:user-agent (get data "userAgent")
:kind (get data "complaintFeedbackType")
:category (get data "complaintSubType")
:timestamp (get data "arrivalDate")
:feedback-id (get data "feedbackId")
:recipients (->> (get data "complainedRecipients")
(mapv #(get % "emailAddress"))
(mapv str/lower))})
(defn- extract-headers
[mail]
(reduce (fn [acc item]
(let [key (get item "name")
val (get item "value")]
(assoc acc (str/lower key) val)))
{}
(get mail "headers")))
(defn- extract-identity
[{:keys [tokens] :as cfg} headers]
(let [tdata (get headers "x-penpot-data")]
(when-not (str/empty? tdata)
(let [result (tokens :verify {:token tdata :iss :profile-identity})]
(:profile-id result)))))
(defn- parse-notification
[cfg message]
(let [type (get message "notificationType")
data (case type
"Bounce" (parse-bounce (get message "bounce"))
"Complaint" (parse-complaint (get message "complaint"))
{:type (keyword (str/lower type))
:message message})]
(when data
(let [mail (get message "mail")]
(when-not mail
(ex/raise :type :internal
:code :incomplete-notification
:hint "no email data received, please enable full headers report"))
(let [headers (extract-headers mail)
mail {:destination (get mail "destination")
:source (get mail "source")
:timestamp (get mail "timestamp")
:subject (get-in mail ["commonHeaders" "subject"])
:headers headers}]
(assoc data
:mail mail
:profile-id (extract-identity cfg headers)))))))
(defn- parse-json
[v]
(ex/ignoring
(j/read-value v)))
(defn- register-bounce-for-profile
[{:keys [pool]} {:keys [type kind profile-id] :as report}]
(when (= kind "permanent")
(db/with-atomic [conn pool]
(db/insert! conn :profile-complaint-report
{:profile-id profile-id
:type (name type)
:content (db/tjson report)})
;; TODO: maybe also try to find profiles by mail and if exists
;; register profile reports for them?
(doseq [recipient (:recipients report)]
(db/insert! conn :global-complaint-report
{:email (:email recipient)
:type (name type)
:content (db/tjson report)}))
(let [profile (db/exec-one! conn (sql/select :profile {:id profile-id}))]
(when (some #(= (:email profile) (:email %)) (:recipients report))
;; If the report matches the profile email, this means that
;; the report is for itself, can be caused when a user
;; registers with an invalid email or the user email is
;; permanently rejecting receiving the email. In this case we
;; have no option to mark the user as muted (and in this case
;; the profile will be also inactive.
(db/update! conn :profile
{:is-muted true}
{:id profile-id}))))))
(defn- register-complaint-for-profile
[{:keys [pool]} {:keys [type profile-id] :as report}]
(db/with-atomic [conn pool]
(db/insert! conn :profile-complaint-report
{:profile-id profile-id
:type (name type)
:content (db/tjson report)})
;; TODO: maybe also try to find profiles by email and if exists
;; register profile reports for them?
(doseq [email (:recipients report)]
(db/insert! conn :global-complaint-report
{:email email
:type (name type)
:content (db/tjson report)}))
(let [profile (db/exec-one! conn (sql/select :profile {:id profile-id}))]
(when (some #(= % (:email profile)) (:recipients report))
;; If the report matches the profile email, this means that
;; the report is for itself, rare case but can happen; In this
;; case just mark profile as muted (very rare case).
(db/update! conn :profile
{:is-muted true}
{:id profile-id})))))
(defn- process-report
[cfg {:keys [type profile-id] :as report}]
(l/trace :action "processing report" :report (pr-str report))
(cond
;; In this case we receive a bounce/complaint notification without
;; confirmed identity, we just emit a warning but do nothing about
;; it because this is not a normal case. All notifications should
;; come with profile identity.
(nil? profile-id)
(l/warn :msg "a notification without identity received from AWS"
:report (pr-str report))
(= "bounce" type)
(register-bounce-for-profile cfg report)
(= "complaint" type)
(register-complaint-for-profile cfg report)
:else
(l/warn :msg "unrecognized report received from AWS"
:report (pr-str report))))

View File

@@ -0,0 +1,227 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.debug
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.spec :as us]
[app.common.uuid :as uuid]
[app.config :as cf]
[app.db :as db]
[app.rpc.mutations.files :as m.files]
[app.rpc.queries.profile :as profile]
[app.util.async :as async]
[app.util.blob :as blob]
[app.util.template :as tmpl]
[app.util.time :as dt]
[app.worker :as wrk]
[clojure.java.io :as io]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[datoteka.core :as fs]
[fipp.edn :as fpp]
[integrant.core :as ig]
[promesa.core :as p]))
;; (selmer.parser/cache-off!)
(defn authorized?
[pool {:keys [profile-id]}]
(or (= "devenv" (cf/get :host))
(let [profile (ex/ignoring (profile/retrieve-profile-data pool profile-id))
admins (or (cf/get :admins) #{})]
(contains? admins (:email profile)))))
(defn index
[{:keys [pool]} request]
(when-not (authorized? pool request)
(ex/raise :type :authentication
:code :only-admins-allowed))
{:status 200
:headers {"content-type" "text/html"}
:body (-> (io/resource "templates/debug.tmpl")
(tmpl/render {}))})
(def sql:retrieve-range-of-changes
"select revn, changes from file_change where file_id=? and revn >= ? and revn <= ? order by revn")
(def sql:retrieve-single-change
"select revn, changes, data from file_change where file_id=? and revn = ?")
(defn prepare-response
[{:keys [params] :as request} body]
(when-not body
(ex/raise :type :not-found
:code :enpty-data
:hint "empty response"))
(cond-> {:status 200
:headers {"content-type" "application/transit+json"}
:body body}
(contains? params :download)
(update :headers assoc "content-disposition" "attachment")))
(defn retrieve-file-data
[{:keys [pool]} {:keys [params] :as request}]
(when-not (authorized? pool request)
(ex/raise :type :authentication
:code :only-admins-allowed))
(let [file-id (some-> (get-in request [:params :file-id]) uuid/uuid)
revn (some-> (get-in request [:params :revn]) d/parse-integer)]
(when-not file-id
(ex/raise :type :validation
:code :missing-arguments))
(let [data (if (integer? revn)
(some-> (db/exec-one! pool [sql:retrieve-single-change file-id revn]) :data)
(some-> (db/get-by-id pool :file file-id) :data))]
(if (contains? params :download)
(-> (prepare-response request data)
(update :headers assoc "content-type" "application/octet-stream"))
(prepare-response request (some-> data blob/decode))))))
(defn upload-file-data
[{:keys [pool]} {:keys [profile-id params] :as request}]
(let [project-id (some-> (profile/retrieve-additional-data pool profile-id) :default-project-id)
data (some-> params :file :tempfile fs/slurp-bytes blob/decode)]
(if (and data project-id)
(let [fname (str "imported-file-" (dt/now))]
(m.files/create-file pool {:id (uuid/next)
:name fname
:project-id project-id
:profile-id profile-id
:data data})
{:status 200
:body "OK"})
{:status 500
:body "error"})))
(defn retrieve-file-changes
[{:keys [pool]} request]
(when-not (authorized? pool request)
(ex/raise :type :authentication
:code :only-admins-allowed))
(let [file-id (some-> (get-in request [:params :id]) uuid/uuid)
revn (or (get-in request [:params :revn]) "latest")]
(when (or (not file-id) (not revn))
(ex/raise :type :validation
:code :invalid-arguments
:hint "missing arguments"))
(cond
(d/num-string? revn)
(let [item (db/exec-one! pool [sql:retrieve-single-change file-id (d/parse-integer revn)])]
(prepare-response request (some-> item :changes blob/decode vec)))
(str/includes? revn ":")
(let [[start end] (->> (str/split revn #":")
(map str/trim)
(map d/parse-integer))
items (db/exec! pool [sql:retrieve-range-of-changes file-id start end])]
(prepare-response request
(some->> items
(map :changes)
(map blob/decode)
(mapcat identity)
(vec))))
:else
(ex/raise :type :validation :code :invalid-arguments))))
(defn retrieve-error
[{:keys [pool]} request]
(letfn [(parse-id [request]
(let [id (get-in request [:path-params :id])
id (us/uuid-conformer id)]
(when (uuid? id)
id)))
(retrieve-report [id]
(ex/ignoring
(some-> (db/get-by-id pool :server-error-report id) :content db/decode-transit-pgobject)))
(render-template [report]
(let [context (dissoc report
:trace :cause :params :data :spec-problems
:spec-explain :spec-value :error :explain :hint)
params {:context (with-out-str (fpp/pprint context {:width 300}))
:hint (:hint report)
:spec-explain (:spec-explain report)
:spec-problems (:spec-problems report)
:spec-value (:spec-value report)
:data (:data report)
:trace (or (:trace report)
(some-> report :error :trace))
:params (:params report)}]
(-> (io/resource "templates/error-report.tmpl")
(tmpl/render params))))
]
(when-not (authorized? pool request)
(ex/raise :type :authentication
:code :only-admins-allowed))
(let [result (some-> (parse-id request)
(retrieve-report)
(render-template))]
(if result
{:status 200
:headers {"content-type" "text/html; charset=utf-8"
"x-robots-tag" "noindex"}
:body result}
{:status 404
:body "not found"}))))
(def sql:error-reports
"select id, created_at from server_error_report order by created_at desc limit 100")
(defn retrieve-error-list
[{:keys [pool]} request]
(when-not (authorized? pool request)
(ex/raise :type :authentication
:code :only-admins-allowed))
(let [items (db/exec! pool [sql:error-reports])
items (map #(update % :created-at dt/format-instant :rfc1123) items)]
{:status 200
:headers {"content-type" "text/html; charset=utf-8"
"x-robots-tag" "noindex"}
:body (-> (io/resource "templates/error-list.tmpl")
(tmpl/render {:items items}))}))
(defn health-check
"Mainly a task that performs a health check."
[{:keys [pool]} _]
(db/with-atomic [conn pool]
(db/exec-one! conn ["select count(*) as count from server_prop;"])
{:status 200 :body "Ok"}))
(defn- wrap-async
[{:keys [executor] :as cfg} f]
(fn [request respond raise]
(-> (async/with-dispatch executor
(f cfg request))
(p/then respond)
(p/catch raise))))
(defmethod ig/pre-init-spec ::handlers [_]
(s/keys :req-un [::db/pool ::wrk/executor]))
(defmethod ig/init-key ::handlers
[_ cfg]
{:index (wrap-async cfg index)
:health-check (wrap-async cfg health-check)
:retrieve-file-data (wrap-async cfg retrieve-file-data)
:retrieve-file-changes (wrap-async cfg retrieve-file-changes)
:retrieve-error (wrap-async cfg retrieve-error)
:retrieve-error-list (wrap-async cfg retrieve-error-list)
:upload-file-data (wrap-async cfg upload-file-data)})

View File

@@ -0,0 +1,54 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.doc
"API autogenerated documentation."
(:require
[app.common.data :as d]
[app.config :as cf]
[app.util.services :as sv]
[app.util.template :as tmpl]
[clojure.java.io :as io]
[clojure.spec.alpha :as s]
[pretty-spec.core :as ps]))
(defn get-spec-str
[k]
(with-out-str
(ps/pprint (s/form k)
{:ns-aliases {"clojure.spec.alpha" "s"
"clojure.core.specs.alpha" "score"
"clojure.core" nil}})))
(defn prepare-context
[rpc]
(letfn [(gen-doc [type [name f]]
(let [mdata (meta f)]
;; (prn name mdata)
{:type (d/name type)
:name (d/name name)
:auth (:auth mdata true)
:docs (::sv/docs mdata)
:spec (get-spec-str (::sv/spec mdata))}))]
{:query-methods
(into []
(map (partial gen-doc :query))
(->> rpc :methods :query (sort-by first)))
:mutation-methods
(into []
(map (partial gen-doc :mutation))
(->> rpc :methods :mutation (sort-by first)))}))
(defn handler
[rpc]
(let [context (prepare-context rpc)]
(if (contains? cf/flags :backend-api-doc)
(fn [_ respond _]
(respond {:status 200
:body (-> (io/resource "api-doc.tmpl")
(tmpl/render context))}))
(fn [_ respond _]
(respond {:status 404 :body ""})))))

View File

@@ -0,0 +1,136 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.errors
"A errors handling for the http server."
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]))
(defn- parse-client-ip
[{:keys [headers] :as request}]
(or (some-> (get headers "x-forwarded-for") (str/split ",") first)
(get headers "x-real-ip")
(get request :remote-addr)))
(defn get-error-context
[request error]
(let [data (ex-data error)]
(merge
{:path (:uri request)
:method (:request-method request)
:hint (ex-message error)
:params (:params request)
:spec-problems (some->> data ::s/problems (take 10) seq vec)
:spec-value (some->> data ::s/value)
:data (some-> data (dissoc ::s/problems ::s/value ::s/spec))
:ip-addr (parse-client-ip request)
:profile-id (:profile-id request)}
(let [headers (:headers request)]
{:user-agent (get headers "user-agent")
:frontend-version (get headers "x-frontend-version" "unknown")})
(when (and data (::s/problems data))
{:spec-explain (us/pretty-explain data)}))))
(defmulti handle-exception
(fn [err & _rest]
(let [edata (ex-data err)]
(or (:type edata)
(class err)))))
(defmethod handle-exception :authentication
[err _]
{:status 401 :body (ex-data err)})
(defmethod handle-exception :restriction
[err _]
{:status 400 :body (ex-data err)})
(defmethod handle-exception :validation
[err _]
(let [data (ex-data err)
explain (us/pretty-explain data)]
{:status 400
:body (-> data
(dissoc ::s/problems)
(dissoc ::s/value)
(cond-> explain (assoc :explain explain)))}))
(defmethod handle-exception :assertion
[error request]
(let [edata (ex-data error)]
(l/error ::l/raw (ex-message error)
::l/context (get-error-context request error)
:cause error)
{:status 500
:body {:type :server-error
:code :assertion
:data (dissoc edata ::s/problems ::s/value ::s/spec)}}))
(defmethod handle-exception :not-found
[err _]
{:status 404 :body (ex-data err)})
(defmethod handle-exception :default
[error request]
(let [edata (ex-data error)]
;; NOTE: this is a special case for the idle-in-transaction error;
;; when it happens, the connection is automatically closed and
;; next-jdbc combines the two errors in a single ex-info. We only
;; need the :handling error, because the :rollback error will be
;; always "connection closed".
(if (and (ex/exception? (:rollback edata))
(ex/exception? (:handling edata)))
(handle-exception (:handling edata) request)
(do
(l/error ::l/raw (ex-message error)
::l/context (get-error-context request error)
:cause error)
{:status 500
:body {:type :server-error
:code :unexpected
:hint (ex-message error)
:data edata}}))))
(defmethod handle-exception org.postgresql.util.PSQLException
[error request]
(let [state (.getSQLState ^java.sql.SQLException error)]
(l/error ::l/raw (ex-message error)
::l/context (get-error-context request error)
:cause error)
(cond
(= state "57014")
{:status 504
:body {:type :server-timeout
:code :statement-timeout
:hint (ex-message error)}}
(= state "25P03")
{:status 504
:body {:type :server-timeout
:code :idle-in-transaction-timeout
:hint (ex-message error)}}
:else
{:status 500
:body {:type :server-error
:code :psql-exception
:hint (ex-message error)
:state state}})))
(defn handle
[error req]
(if (or (instance? java.util.concurrent.CompletionException error)
(instance? java.util.concurrent.ExecutionException error))
(handle-exception (.getCause ^Throwable error) req)
(handle-exception error req)))

View File

@@ -0,0 +1,78 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.feedback
"A general purpose feedback module."
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.spec :as us]
[app.config :as cf]
[app.db :as db]
[app.emails :as eml]
[app.rpc.queries.profile :as profile]
[app.worker :as wrk]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[promesa.core :as p]
[promesa.exec :as px]))
(declare ^:private send-feedback)
(declare ^:private handler)
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req-un [::db/pool ::wrk/executor]))
(defmethod ig/init-key ::handler
[_ {:keys [executor] :as cfg}]
(let [enabled? (contains? cf/flags :user-feedback)]
(if enabled?
(fn [request respond raise]
(-> (px/submit! executor #(handler cfg request))
(p/then' respond)
(p/catch raise)))
(fn [_ _ raise]
(raise (ex/error :type :validation
:code :feedback-disabled
:hint "feedback module is disabled"))))))
(defn- handler
[{:keys [pool] :as cfg} {:keys [profile-id] :as request}]
(let [ftoken (cf/get :feedback-token ::no-token)
token (get-in request [:headers "x-feedback-token"])
params (d/merge (:params request)
(:body-params request))]
(cond
(uuid? profile-id)
(let [profile (profile/retrieve-profile-data pool profile-id)
params (assoc params :from (:email profile))]
(send-feedback pool profile params))
(= token ftoken)
(send-feedback cfg nil params))
{:status 204 :body ""}))
(s/def ::content ::us/string)
(s/def ::from ::us/email)
(s/def ::subject ::us/string)
(s/def ::feedback
(s/keys :req-un [::from ::subject ::content]))
(defn- send-feedback
[pool profile params]
(let [params (us/conform ::feedback params)
destination (cf/get :feedback-destination)]
(eml/send! {::eml/conn pool
::eml/factory eml/feedback
:from destination
:to destination
:profile profile
:reply-to (:from params)
:email (:from params)
:subject (:subject params)
:content (:content params)})
nil))

View File

@@ -0,0 +1,198 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.middleware
(:require
[app.common.logging :as l]
[app.common.transit :as t]
[app.config :as cf]
[app.util.json :as json]
[ring.core.protocols :as rp]
[ring.middleware.cookies :refer [wrap-cookies]]
[ring.middleware.keyword-params :refer [wrap-keyword-params]]
[ring.middleware.multipart-params :refer [wrap-multipart-params]]
[ring.middleware.params :refer [wrap-params]]
[yetti.adapter :as yt]))
(defn wrap-server-timing
[handler]
(letfn [(get-age [start]
(float (/ (- (System/nanoTime) start) 1000000000)))
(update-headers [headers start]
(assoc headers "Server-Timing" (str "total;dur=" (get-age start))))]
(fn [request respond raise]
(let [start (System/nanoTime)]
(handler request #(respond (update % :headers update-headers start)) raise)))))
(defn wrap-parse-request-body
[handler]
(letfn [(parse-transit [body]
(let [reader (t/reader body)]
(t/read! reader)))
(parse-json [body]
(json/read body))
(handle-request [{:keys [headers body] :as request}]
(let [ctype (get headers "content-type")]
(case ctype
"application/transit+json"
(let [params (parse-transit body)]
(-> request
(assoc :body-params params)
(update :params merge params)))
"application/json"
(let [params (parse-json body)]
(-> request
(assoc :body-params params)
(update :params merge params)))
request)))
(handle-exception [cause]
(let [data {:type :validation
:code :unable-to-parse-request-body
:hint "malformed params"}]
(l/error :hint (ex-message cause) :cause cause)
{:status 400
:headers {"content-type" "application/transit+json"}
:body (t/encode-str data {:type :json-verbose})}))]
(fn [request respond raise]
(try
(let [request (handle-request request)]
(handler request respond raise))
(catch Exception cause
(respond (handle-exception cause)))))))
(def parse-request-body
{:name ::parse-request-body
:compile (constantly wrap-parse-request-body)})
(defn buffered-output-stream
"Returns a buffered output stream that ignores flush calls. This is
needed because transit-java calls flush very aggresivelly on each
object write."
[^java.io.OutputStream os ^long chunk-size]
(proxy [java.io.BufferedOutputStream] [os (int chunk-size)]
;; Explicitly do not forward flush
(flush [])
(close []
(proxy-super flush)
(proxy-super close))))
(def ^:const buffer-size (:http/output-buffer-size yt/base-defaults))
(defn wrap-format-response-body
[handler]
(letfn [(transit-streamable-body [data opts]
(reify rp/StreamableResponseBody
(write-body-to-stream [_ _ output-stream]
;; Use the same buffer as jetty output buffer size
(try
(with-open [bos (buffered-output-stream output-stream buffer-size)]
(let [tw (t/writer bos opts)]
(t/write! tw data)))
(catch org.eclipse.jetty.io.EofException _cause
;; Do nothing, EOF means client closes connection abruptly
nil)
(catch Throwable cause
(l/warn :hint "unexpected error on encoding response"
:cause cause))))))
(impl-format-response-body [response {:keys [query-params] :as request}]
(let [body (:body response)
opts {:type (if (contains? query-params "transit_verbose") :json-verbose :json)}]
(cond
(:ws response)
response
(coll? body)
(-> response
(update :headers assoc "content-type" "application/transit+json")
(assoc :body (transit-streamable-body body opts)))
(nil? body)
(assoc response :status 204 :body "")
:else
response)))
(handle-response [response request]
(cond-> response
(map? response) (impl-format-response-body request)))]
(fn [request respond raise]
(handler request
(fn [response]
(respond (handle-response response request)))
raise))))
(def format-response-body
{:name ::format-response-body
:compile (constantly wrap-format-response-body)})
(defn wrap-errors
[handler on-error]
(fn [request respond _]
(handler request respond (fn [cause]
(-> cause (on-error request) respond)))))
(def errors
{:name ::errors
:compile (constantly wrap-errors)})
(def cookies
{:name ::cookies
:compile (constantly wrap-cookies)})
(def params
{:name ::params
:compile (constantly wrap-params)})
(def multipart-params
{:name ::multipart-params
:compile (constantly wrap-multipart-params)})
(def keyword-params
{:name ::keyword-params
:compile (constantly wrap-keyword-params)})
(def server-timing
{:name ::server-timing
:compile (constantly wrap-server-timing)})
(defn wrap-cors
[handler]
(if-not (contains? cf/flags :cors)
handler
(letfn [(add-cors-headers [response request]
(-> response
(update
:headers
(fn [headers]
(-> headers
(assoc "access-control-allow-origin" (get-in request [:headers "origin"]))
(assoc "access-control-allow-methods" "GET,POST,DELETE,OPTIONS,PUT,HEAD,PATCH")
(assoc "access-control-allow-credentials" "true")
(assoc "access-control-expose-headers" "x-requested-with, content-type, cookie")
(assoc "access-control-allow-headers" "x-frontend-version, content-type, accept, x-requested-width"))))))]
(fn [request respond raise]
(if (= (:request-method request) :options)
(-> {:status 200 :body ""}
(add-cors-headers request)
(respond))
(handler request
(fn [response]
(respond (add-cors-headers response request)))
raise))))))
(def cors
{:name ::cors
:compile (constantly wrap-cors)})

View File

@@ -0,0 +1,411 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.oauth
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.uri :as u]
[app.config :as cf]
[app.db :as db]
[app.loggers.audit :as audit]
[app.rpc.queries.profile :as profile]
[app.util.http :as http]
[app.util.time :as dt]
[clojure.data.json :as json]
[clojure.set :as set]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]
[promesa.exec :as px]))
;; TODO: make it fully async (?)
(defn- build-redirect-uri
[{:keys [provider] :as cfg}]
(let [public (u/uri (:public-uri cfg))]
(str (assoc public :path (str "/api/auth/oauth/" (:name provider) "/callback")))))
(defn- build-auth-uri
[{:keys [provider] :as cfg} state]
(let [params {:client_id (:client-id provider)
:redirect_uri (build-redirect-uri cfg)
:response_type "code"
:state state
:scope (str/join " " (:scopes provider []))}
query (u/map->query-string params)]
(-> (u/uri (:auth-uri provider))
(assoc :query query)
(str))))
(defn retrieve-access-token
[{:keys [provider] :as cfg} code]
(try
(let [params {:client_id (:client-id provider)
:client_secret (:client-secret provider)
:code code
:grant_type "authorization_code"
:redirect_uri (build-redirect-uri cfg)}
req {:method :post
:headers {"content-type" "application/x-www-form-urlencoded"}
:uri (:token-uri provider)
:body (u/map->query-string params)}
res (http/send! req)]
(when (= 200 (:status res))
(let [data (json/read-str (:body res))]
{:token (get data "access_token")
:type (get data "token_type")})))
(catch Exception e
(l/warn :hint "unexpected error on retrieve-access-token" :cause e)
nil)))
(defn- qualify-props
[provider props]
(reduce-kv (fn [result k v]
(assoc result (keyword (:name provider) (name k)) v))
{}
props))
(defn- retrieve-user-info
[{:keys [provider] :as cfg} tdata]
(try
(let [req {:uri (:user-uri provider)
:headers {"Authorization" (str (:type tdata) " " (:token tdata))}
:timeout 6000
:method :get}
res (http/send! req)]
(when (= 200 (:status res))
(let [info (json/read-str (:body res) :key-fn keyword)]
{:backend (:name provider)
:email (:email info)
:fullname (:name info)
:props (->> (dissoc info :name :email)
(qualify-props provider))})))
(catch Exception e
(l/warn :hint "unexpected exception on retrieve-user-info" :cause e)
nil)))
(s/def ::backend ::us/not-empty-string)
(s/def ::email ::us/not-empty-string)
(s/def ::fullname ::us/not-empty-string)
(s/def ::props (s/map-of ::us/keyword any?))
(s/def ::info
(s/keys :req-un [::backend
::email
::fullname
::props]))
(defn retrieve-info
[{:keys [tokens provider] :as cfg} request]
(let [state (get-in request [:params :state])
state (tokens :verify {:token state :iss :oauth})
info (some->> (get-in request [:params :code])
(retrieve-access-token cfg)
(retrieve-user-info cfg))]
(when-not (s/valid? ::info info)
(l/warn :hint "received incomplete profile info object (please set correct scopes)"
:info (pr-str info))
(ex/raise :type :internal
:code :unable-to-auth
:hint "no user info"))
;; If the provider is OIDC, we can proceed to check
;; roles if they are defined.
(when (and (= "oidc" (:name provider))
(seq (:roles provider)))
(let [provider-roles (into #{} (:roles provider))
profile-roles (let [attr (cf/get :oidc-roles-attr :roles)
roles (get info attr)]
(cond
(string? roles) (into #{} (str/words roles))
(vector? roles) (into #{} roles)
:else #{}))]
;; check if profile has a configured set of roles
(when-not (set/subset? provider-roles profile-roles)
(ex/raise :type :internal
:code :unable-to-auth
:hint "not enough permissions"))))
(cond-> info
(some? (:invitation-token state))
(assoc :invitation-token (:invitation-token state))
;; If state token comes with props, merge them. The state token
;; props can contain pm_ and utm_ prefixed query params.
(map? (:props state))
(update :props merge (:props state)))))
;; --- HTTP HANDLERS
(defn extract-utm-props
"Extracts additional data from user params."
[params]
(reduce-kv (fn [params k v]
(let [sk (name k)]
(cond-> params
(str/starts-with? sk "utm_")
(assoc (->> sk str/kebab (keyword "penpot")) v))))
{}
params))
(defn- retrieve-profile
[{:keys [pool] :as cfg} info]
(with-open [conn (db/open pool)]
(some->> (:email info)
(profile/retrieve-profile-data-by-email conn)
(profile/populate-additional-data conn)
(profile/decode-profile-row))))
(defn- redirect-response
[uri]
{:status 302
:headers {"location" (str uri)}
:body ""})
(defn- generate-error-redirect
[cfg error]
(let [uri (-> (u/uri (:public-uri cfg))
(assoc :path "/#/auth/login")
(assoc :query (u/map->query-string {:error "unable-to-auth" :hint (ex-message error)})))]
(redirect-response uri)))
(defn- generate-redirect
[{:keys [tokens session audit] :as cfg} request info profile]
(if profile
(let [sxf ((:create session) (:id profile))
token (or (:invitation-token info)
(tokens :generate {:iss :auth
:exp (dt/in-future "15m")
:profile-id (:id profile)}))
params {:token token}
uri (-> (u/uri (:public-uri cfg))
(assoc :path "/#/auth/verify-token")
(assoc :query (u/map->query-string params)))]
(when (fn? audit)
(audit :cmd :submit
:type "mutation"
:name "login"
:profile-id (:id profile)
:ip-addr (audit/parse-client-ip request)
:props (audit/profile->props profile)))
(->> (redirect-response uri)
(sxf request)))
(let [info (assoc info
:iss :prepared-register
:is-active true
:exp (dt/in-future {:hours 48}))
token (tokens :generate info)
params (d/without-nils
{:token token
:fullname (:fullname info)})
uri (-> (u/uri (:public-uri cfg))
(assoc :path "/#/auth/register/validate")
(assoc :query (u/map->query-string params)))]
(redirect-response uri))))
(defn- auth-handler
[{:keys [tokens executor] :as cfg} {:keys [params] :as request} respond _]
(px/run!
executor
(fn []
(let [invitation (:invitation-token params)
props (extract-utm-props params)
state (tokens :generate
{:iss :oauth
:invitation-token invitation
:props props
:exp (dt/in-future "15m")})
uri (build-auth-uri cfg state)]
(respond
{:status 200
:body {:redirect-uri uri}})))))
(defn- callback-handler
[{:keys [executor] :as cfg} request respond _]
(px/run!
executor
(fn []
(try
(let [info (retrieve-info cfg request)
profile (retrieve-profile cfg info)]
(respond (generate-redirect cfg request info profile)))
(catch Exception cause
(l/warn :hint "error on oauth process" :cause cause)
(respond (generate-error-redirect cfg cause)))))))
;; --- INIT
(declare initialize)
(s/def ::public-uri ::us/not-empty-string)
(s/def ::session map?)
(s/def ::tokens fn?)
(s/def ::rpc map?)
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req-un [::public-uri ::session ::tokens ::rpc ::db/pool]))
(defn wrap-handler
[cfg handler]
(fn [request respond raise]
(let [provider (get-in request [:path-params :provider])
provider (get-in @cfg [:providers provider])]
(if provider
(handler (assoc @cfg :provider provider)
request
respond
raise)
(raise
(ex/error
:type :not-found
:provider provider
:hint "provider not configured"))))))
(defmethod ig/init-key ::handler
[_ cfg]
(let [cfg (initialize cfg)]
{:handler (wrap-handler cfg auth-handler)
:callback-handler (wrap-handler cfg callback-handler)}))
(defn- discover-oidc-config
[{:keys [base-uri] :as opts}]
(let [discovery-uri (u/join base-uri ".well-known/openid-configuration")
response (ex/try (http/send! {:method :get :uri (str discovery-uri)}))]
(cond
(ex/exception? response)
(do
(l/warn :hint "unable to discover oidc configuration"
:discover-uri (str discovery-uri)
:cause response)
nil)
(= 200 (:status response))
(let [data (json/read-str (:body response))]
{:token-uri (get data "token_endpoint")
:auth-uri (get data "authorization_endpoint")
:user-uri (get data "userinfo_endpoint")})
:else
(do
(l/warn :hint "unable to discover OIDC configuration"
:uri (str discovery-uri)
:response-status-code (:status response))
nil))))
(defn- obfuscate-string
[s]
(if (< (count s) 10)
(apply str (take (count s) (repeat "*")))
(str (subs s 0 5)
(apply str (take (- (count s) 5) (repeat "*"))))))
(defn- initialize-oidc-provider
[cfg]
(let [opts {:base-uri (cf/get :oidc-base-uri)
:client-id (cf/get :oidc-client-id)
:client-secret (cf/get :oidc-client-secret)
:token-uri (cf/get :oidc-token-uri)
:auth-uri (cf/get :oidc-auth-uri)
:user-uri (cf/get :oidc-user-uri)
:scopes (cf/get :oidc-scopes #{"openid" "profile" "email"})
:roles-attr (cf/get :oidc-roles-attr)
:roles (cf/get :oidc-roles)
:name "oidc"}]
(if (and (string? (:base-uri opts))
(string? (:client-id opts))
(string? (:client-secret opts)))
(do
(l/debug :hint "initialize oidc provider" :name "generic-oidc"
:opts (update opts :client-secret obfuscate-string))
(if (and (string? (:token-uri opts))
(string? (:user-uri opts))
(string? (:auth-uri opts)))
(do
(l/debug :hint "initialized with user provided configuration")
(assoc-in cfg [:providers "oidc"] opts))
(do
(l/debug :hint "trying to discover oidc provider configuration using BASE_URI")
(if-let [opts' (discover-oidc-config opts)]
(do
(l/debug :hint "discovered opts" :additional-opts opts')
(assoc-in cfg [:providers "oidc"] (merge opts opts')))
cfg))))
cfg)))
(defn- initialize-google-provider
[cfg]
(let [opts {:client-id (cf/get :google-client-id)
:client-secret (cf/get :google-client-secret)
:scopes #{"openid" "email" "profile"}
:auth-uri "https://accounts.google.com/o/oauth2/v2/auth"
:token-uri "https://oauth2.googleapis.com/token"
:user-uri "https://openidconnect.googleapis.com/v1/userinfo"
:name "google"}]
(if (and (string? (:client-id opts))
(string? (:client-secret opts)))
(do
(l/info :action "initialize" :provider "google"
:opts (pr-str (update opts :client-secret obfuscate-string)))
(assoc-in cfg [:providers "google"] opts))
cfg)))
(defn- initialize-github-provider
[cfg]
(let [opts {:client-id (cf/get :github-client-id)
:client-secret (cf/get :github-client-secret)
:scopes #{"read:user" "user:email"}
:auth-uri "https://github.com/login/oauth/authorize"
:token-uri "https://github.com/login/oauth/access_token"
:user-uri "https://api.github.com/user"
:name "github"}]
(if (and (string? (:client-id opts))
(string? (:client-secret opts)))
(do
(l/info :action "initialize" :provider "github"
:opts (pr-str (update opts :client-secret obfuscate-string)))
(assoc-in cfg [:providers "github"] opts))
cfg)))
(defn- initialize-gitlab-provider
[cfg]
(let [base (cf/get :gitlab-base-uri "https://gitlab.com")
opts {:base-uri base
:client-id (cf/get :gitlab-client-id)
:client-secret (cf/get :gitlab-client-secret)
:scopes #{"read_user"}
:auth-uri (str base "/oauth/authorize")
:token-uri (str base "/oauth/token")
:user-uri (str base "/api/v4/user")
:name "gitlab"}]
(if (and (string? (:client-id opts))
(string? (:client-secret opts)))
(do
(l/info :action "initialize" :provider "gitlab"
:opts (pr-str (update opts :client-secret obfuscate-string)))
(assoc-in cfg [:providers "gitlab"] opts))
cfg)))
(defn- initialize
[cfg]
(let [cfg (agent cfg :error-mode :continue)]
(send-off cfg initialize-google-provider)
(send-off cfg initialize-gitlab-provider)
(send-off cfg initialize-github-provider)
(send-off cfg initialize-oidc-provider)
cfg))

View File

@@ -0,0 +1,270 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.session
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.config :as cfg]
[app.db :as db]
[app.db.sql :as sql]
[app.metrics :as mtx]
[app.util.async :as aa]
[app.util.time :as dt]
[app.worker :as wrk]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[ring.middleware.session.store :as rss]))
;; A default cookie name for storing the session. We don't allow to configure it.
(def token-cookie-name "auth-token")
;; A cookie that we can use to check from other sites of the same domain if a user
;; is registered. Is not intended for on premise installations, although nothing
;; prevents using it if some one wants to.
(def authenticated-cookie-name "authenticated")
(deftype DatabaseStore [pool tokens]
rss/SessionStore
(read-session [_ token]
(db/exec-one! pool (sql/select :http-session {:id token})))
(write-session [_ _ data]
(let [profile-id (:profile-id data)
user-agent (:user-agent data)
token (tokens :generate {:iss "authentication"
:iat (dt/now)
:uid profile-id})
now (dt/now)
params {:user-agent user-agent
:profile-id profile-id
:created-at now
:updated-at now
:id token}]
(db/insert! pool :http-session params)
token))
(delete-session [_ token]
(db/delete! pool :http-session {:id token})
nil))
(deftype MemoryStore [cache tokens]
rss/SessionStore
(read-session [_ token]
(get @cache token))
(write-session [_ _ data]
(let [profile-id (:profile-id data)
user-agent (:user-agent data)
token (tokens :generate {:iss "authentication"
:iat (dt/now)
:uid profile-id})
params {:user-agent user-agent
:profile-id profile-id
:id token}]
(swap! cache assoc token params)
token))
(delete-session [_ token]
(swap! cache dissoc token)
nil))
;; --- IMPL
(defn- create-session
[store request profile-id]
(let [params {:user-agent (get-in request [:headers "user-agent"])
:profile-id profile-id}]
(rss/write-session store nil params)))
(defn- delete-session
[store {:keys [cookies] :as request}]
(when-let [token (get-in cookies [token-cookie-name :value])]
(rss/delete-session store token)))
(defn- retrieve-session
[store token]
(when token
(rss/read-session store token)))
(defn- retrieve-from-request
[store {:keys [cookies] :as request}]
(->> (get-in cookies [token-cookie-name :value])
(retrieve-session store)))
(defn- add-cookies
[response token]
(let [cors? (contains? cfg/flags :cors)
secure? (contains? cfg/flags :secure-session-cookies)
authenticated-cookie-domain (cfg/get :authenticated-cookie-domain)]
(update response :cookies
(fn [cookies]
(cond-> cookies
:always
(assoc token-cookie-name {:path "/"
:http-only true
:value token
:same-site (if cors? :none :lax)
:secure secure?})
(some? authenticated-cookie-domain)
(assoc authenticated-cookie-name {:domain authenticated-cookie-domain
:path "/"
:value true
:same-site :strict
:secure secure?}))))))
(defn- clear-cookies
[response]
(let [authenticated-cookie-domain (cfg/get :authenticated-cookie-domain)]
(assoc response :cookies {token-cookie-name {:path "/"
:value ""
:max-age -1}
authenticated-cookie-name {:domain authenticated-cookie-domain
:path "/"
:value ""
:max-age -1}})))
(defn- middleware
[events-ch store handler]
(fn [request respond raise]
(if-let [{:keys [id profile-id] :as session} (retrieve-from-request store request)]
(do
(a/>!! events-ch id)
(l/set-context! {:profile-id profile-id})
(handler (assoc request :profile-id profile-id :session-id id) respond raise))
(handler request respond raise))))
;; --- STATE INIT: SESSION
(s/def ::tokens fn?)
(defmethod ig/pre-init-spec ::session [_]
(s/keys :req-un [::db/pool ::tokens]))
(defmethod ig/prep-key ::session
[_ cfg]
(d/merge {:buffer-size 128}
(d/without-nils cfg)))
(defmethod ig/init-key ::session
[_ {:keys [pool tokens] :as cfg}]
(let [events-ch (a/chan (a/dropping-buffer (:buffer-size cfg)))
store (if (db/read-only? pool)
(->MemoryStore (atom {}) tokens)
(->DatabaseStore pool tokens))]
(when (db/read-only? pool)
(l/warn :hint "sessions module initialized with in-memory store"))
(-> cfg
(assoc ::events-ch events-ch)
(assoc :middleware (partial middleware events-ch store))
(assoc :create (fn [profile-id]
(fn [request response]
(let [token (create-session store request profile-id)]
(add-cookies response token)))))
(assoc :delete (fn [request response]
(delete-session store request)
(-> response
(assoc :status 204)
(assoc :body "")
(clear-cookies)))))))
(defmethod ig/halt-key! ::session
[_ data]
(a/close! (::events-ch data)))
;; --- STATE INIT: SESSION UPDATER
(declare update-sessions)
(s/def ::session map?)
(s/def ::max-batch-age ::cfg/http-session-updater-batch-max-age)
(s/def ::max-batch-size ::cfg/http-session-updater-batch-max-size)
(defmethod ig/pre-init-spec ::updater [_]
(s/keys :req-un [::db/pool ::wrk/executor ::mtx/metrics ::session]
:opt-un [::max-batch-age
::max-batch-size]))
(defmethod ig/prep-key ::updater
[_ cfg]
(merge {:max-batch-age (dt/duration {:minutes 5})
:max-batch-size 200}
(d/without-nils cfg)))
(defmethod ig/init-key ::updater
[_ {:keys [session metrics] :as cfg}]
(l/info :action "initialize session updater"
:max-batch-age (str (:max-batch-age cfg))
:max-batch-size (str (:max-batch-size cfg)))
(let [input (aa/batch (::events-ch session)
{:max-batch-size (:max-batch-size cfg)
:max-batch-age (inst-ms (:max-batch-age cfg))})]
(a/go-loop []
(when-let [[reason batch] (a/<! input)]
(let [result (a/<! (update-sessions cfg batch))]
(mtx/run! metrics {:id :session-update-total :inc 1})
(cond
(ex/exception? result)
(l/error :task "updater"
:hint "unexpected error on update sessions"
:cause result)
(= :size reason)
(l/debug :task "updater"
:hint "update sessions"
:reason (name reason)
:count result))
(recur))))))
(defn- update-sessions
[{:keys [pool executor]} ids]
(aa/with-thread executor
(db/exec-one! pool ["update http_session set updated_at=now() where id = ANY(?)"
(into-array String ids)])
(count ids)))
;; --- STATE INIT: SESSION GC
(declare sql:delete-expired)
(s/def ::max-age ::dt/duration)
(defmethod ig/pre-init-spec ::gc-task [_]
(s/keys :req-un [::db/pool]
:opt-un [::max-age]))
(defmethod ig/prep-key ::gc-task
[_ cfg]
(merge {:max-age (dt/duration {:days 15})}
(d/without-nils cfg)))
(defmethod ig/init-key ::gc-task
[_ {:keys [pool max-age] :as cfg}]
(l/debug :hint "initializing session gc task" :max-age max-age)
(fn [_]
(db/with-atomic [conn pool]
(let [interval (db/interval max-age)
result (db/exec-one! conn [sql:delete-expired interval interval])
result (:next.jdbc/update-count result)]
(l/debug :task "gc"
:hint "clean http sessions"
:deleted result)
result))))
(def ^:private
sql:delete-expired
"delete from http_session
where updated_at < now() - ?::interval
or (updated_at is null and
created_at < now() - ?::interval)")

View File

@@ -0,0 +1,144 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.http.websocket
"A penpot notification service for file cooperative edition."
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.db :as db]
[app.metrics :as mtx]
[app.util.websocket :as ws]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[integrant.core :as ig]
[yetti.websocket :as yws]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; WEBSOCKET HANDLER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare send-presence!)
(defmulti handle-message
(fn [_wsp message] (:type message)))
(defmethod handle-message :connect
[wsp _]
(let [{:keys [msgbus file-id team-id session-id ::ws/output-ch]} @wsp
sub-ch (a/chan (a/dropping-buffer 32))]
(swap! wsp assoc :sub-ch sub-ch)
;; Start a subscription forwarding goroutine
(a/go-loop []
(when-let [val (a/<! sub-ch)]
(when-not (= (:session-id val) session-id)
;; If we receive a connect message of other user, we need
;; to send an update presence to all participants.
(when (= :connect (:type val))
(a/<! (send-presence! @wsp :presence)))
;; Then, just forward the message
(a/>! output-ch val))
(recur)))
(a/go
(a/<! (msgbus :sub {:topics [file-id team-id] :chan sub-ch}))
(a/<! (send-presence! @wsp :connect)))))
(defmethod handle-message :disconnect
[wsp _]
(a/close! (:sub-ch @wsp))
(send-presence! @wsp :disconnect))
(defmethod handle-message :keepalive
[_ _]
(a/go :nothing))
(defmethod handle-message :pointer-update
[wsp message]
(let [{:keys [profile-id file-id session-id msgbus]} @wsp]
(msgbus :pub {:topic file-id
:message (assoc message
:profile-id profile-id
:session-id session-id)})))
(defmethod handle-message :default
[_ message]
(a/go
(l/log :level :warn
:msg "received unexpected message"
:message message)))
;; --- IMPL
(defn- send-presence!
([ws] (send-presence! ws :presence))
([{:keys [msgbus session-id profile-id file-id]} type]
(msgbus :pub {:topic file-id
:message {:type type
:session-id session-id
:profile-id profile-id}})))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HTTP HANDLER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare retrieve-file)
(s/def ::msgbus fn?)
(s/def ::file-id ::us/uuid)
(s/def ::session-id ::us/uuid)
(s/def ::handler-params
(s/keys :req-un [::file-id ::session-id]))
(defmethod ig/pre-init-spec ::handler [_]
(s/keys :req-un [::msgbus ::db/pool ::mtx/metrics]))
(defmethod ig/init-key ::handler
[_ {:keys [pool] :as cfg}]
(fn [{:keys [profile-id params] :as req} respond raise]
(let [params (us/conform ::handler-params params)
file (retrieve-file pool (:file-id params))
cfg (-> (merge cfg params)
(assoc :profile-id profile-id)
(assoc :team-id (:team-id file)))]
(cond
(not profile-id)
(raise (ex/error :type :authentication
:hint "Authentication required."))
(not file)
(raise (ex/error :type :not-found
:code :object-not-found))
(not (yws/upgrade-request? req))
(raise (ex/error :type :validation
:code :websocket-request-expected
:hint "this endpoint only accepts websocket connections"))
:else
(->> (ws/handler handle-message cfg)
(yws/upgrade req)
(respond))))))
(def ^:private
sql:retrieve-file
"select f.id as id,
p.team_id as team_id
from file as f
join project as p on (p.id = f.project_id)
where f.id = ?")
(defn- retrieve-file
[conn id]
(db/exec-one! conn [sql:retrieve-file id]))

View File

@@ -0,0 +1,346 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.loggers.audit
"Services related to the user activity (audit log)."
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.common.transit :as t]
[app.common.uuid :as uuid]
[app.config :as cf]
[app.db :as db]
[app.util.async :as aa]
[app.util.http :as http]
[app.util.time :as dt]
[app.worker :as wrk]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]
[lambdaisland.uri :as u]
[promesa.core :as p]
[promesa.exec :as px]))
(defn parse-client-ip
[{:keys [headers] :as request}]
(or (some-> (get headers "x-forwarded-for") (str/split ",") first)
(get headers "x-real-ip")
(get request :remote-addr)))
(defn profile->props
[profile]
(-> profile
(select-keys [:is-active :is-muted :auth-backend :email :default-team-id :default-project-id :fullname :lang])
(merge (:props profile))
(d/without-nils)))
(defn clean-props
[{:keys [profile-id] :as event}]
(let [invalid-keys #{:session-id
:password
:old-password
:token}
xform (comp
(remove (fn [kv]
(qualified-keyword? (first kv))))
(remove (fn [kv]
(contains? invalid-keys (first kv))))
(remove (fn [[k v]]
(and (= k :profile-id)
(= v profile-id))))
(filter (fn [[_ v]]
(or (string? v)
(keyword? v)
(uuid? v)
(boolean? v)
(number? v)))))]
(update event :props #(into {} xform %))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; HTTP Handler
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare persist-http-events)
(s/def ::profile-id ::us/uuid)
(s/def ::name ::us/string)
(s/def ::type ::us/string)
(s/def ::props (s/map-of ::us/keyword any?))
(s/def ::timestamp dt/instant?)
(s/def ::context (s/map-of ::us/keyword any?))
(s/def ::frontend-event
(s/keys :req-un [::type ::name ::props ::timestamp ::profile-id]
:opt-un [::context]))
(s/def ::frontend-events (s/every ::frontend-event))
(defmethod ig/init-key ::http-handler
[_ {:keys [executor pool] :as cfg}]
(if (or (db/read-only? pool) (not (contains? cf/flags :audit-log)))
(do
(l/warn :hint "audit log http handler disabled or db is read-only")
(fn [_ respond _]
(respond {:status 204 :body ""})))
(letfn [(handler [{:keys [params profile-id] :as request}]
(let [events (->> (:events params)
(remove #(not= profile-id (:profile-id %)))
(us/conform ::frontend-events))
ip-addr (parse-client-ip request)
cfg (-> cfg
(assoc :source "frontend")
(assoc :events events)
(assoc :ip-addr ip-addr))]
(persist-http-events cfg)))
(handle-error [cause]
(let [xdata (ex-data cause)]
(if (= :spec-validation (:code xdata))
(l/error ::l/raw (str "spec validation on persist-events:\n" (us/pretty-explain xdata)))
(l/error :hint "error on persist-events" :cause cause))))]
(fn [request respond _]
;; Fire and forget, log error in case of errro
(-> (px/submit! executor #(handler request))
(p/catch handle-error))
(respond {:status 204 :body ""})))))
(defn- persist-http-events
[{:keys [pool events ip-addr source] :as cfg}]
(let [columns [:id :name :source :type :tracked-at :profile-id :ip-addr :props :context]
prepare-xf (map (fn [event]
[(uuid/next)
(:name event)
source
(:type event)
(:timestamp event)
(:profile-id event)
(db/inet ip-addr)
(db/tjson (:props event))
(db/tjson (d/without-nils (:context event)))]))]
(when (seq events)
(->> (into [] prepare-xf events)
(db/insert-multi! pool :audit-log columns)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Collector
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Defines a service that collects the audit/activity log using
;; internal database. Later this audit log can be transferred to
;; an external storage and data cleared.
(declare persist-events)
(defmethod ig/pre-init-spec ::collector [_]
(s/keys :req-un [::db/pool ::wrk/executor]))
(s/def ::ip-addr string?)
(s/def ::backend-event
(s/keys :req-un [::type ::name ::profile-id]
:opt-un [::ip-addr ::props]))
(def ^:private backend-event-xform
(comp
(filter #(us/valid? ::backend-event %))
(map clean-props)))
(defmethod ig/init-key ::collector
[_ {:keys [pool] :as cfg}]
(cond
(not (contains? cf/flags :audit-log))
(do
(l/info :hint "audit log collection disabled")
(constantly nil))
(db/read-only? pool)
(do
(l/warn :hint "audit log collection disabled, db is read-only")
(constantly nil))
:else
(let [input (a/chan 512 backend-event-xform)
buffer (aa/batch input {:max-batch-size 100
:max-batch-age (* 10 1000) ; 10s
:init []})]
(l/info :hint "audit log collector initialized")
(a/go-loop []
(when-let [[_type events] (a/<! buffer)]
(let [res (a/<! (persist-events cfg events))]
(when (ex/exception? res)
(l/error :hint "error on persisting events" :cause res))
(recur))))
(fn [& {:keys [cmd] :as params}]
(case cmd
:stop
(a/close! input)
:submit
(let [params (-> params
(dissoc :cmd)
(assoc :tracked-at (dt/now)))]
(when-not (a/offer! input params)
(l/warn :hint "activity channel is full"))))))))
(defn- persist-events
[{:keys [pool executor] :as cfg} events]
(letfn [(event->row [event]
[(uuid/next)
(:name event)
(:type event)
(:profile-id event)
(:tracked-at event)
(some-> (:ip-addr event) db/inet)
(db/tjson (:props event))
"backend"])]
(aa/with-thread executor
(when (seq events)
(db/with-atomic [conn pool]
(db/insert-multi! conn :audit-log
[:id :name :type :profile-id :tracked-at :ip-addr :props :source]
(sequence (keep event->row) events)))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Archive Task
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This is a task responsible to send the accumulated events to an
;; external service for archival.
(declare archive-events)
(s/def ::uri ::us/string)
(s/def ::tokens fn?)
(defmethod ig/pre-init-spec ::archive-task [_]
(s/keys :req-un [::db/pool ::tokens]
:opt-un [::uri]))
(defmethod ig/init-key ::archive-task
[_ {:keys [uri] :as cfg}]
(fn [props]
;; NOTE: this let allows overwrite default configured values from
;; the repl, when manually invoking the task.
(let [enabled (or (contains? cf/flags :audit-log-archive)
(:enabled props false))
uri (or uri (:uri props))
cfg (assoc cfg :uri uri)]
(when (and enabled (not uri))
(ex/raise :type :internal
:code :task-not-configured
:hint "archive task not configured, missing uri"))
(when enabled
(loop []
(let [res (archive-events cfg)]
(when (= res :continue)
(aa/thread-sleep 200)
(recur))))))))
(def sql:retrieve-batch-of-audit-log
"select * from audit_log
where archived_at is null
order by created_at asc
limit 1000
for update skip locked;")
(defn archive-events
[{:keys [pool uri tokens] :as cfg}]
(letfn [(decode-row [{:keys [props ip-addr context] :as row}]
(cond-> row
(db/pgobject? props)
(assoc :props (db/decode-transit-pgobject props))
(db/pgobject? context)
(assoc :context (db/decode-transit-pgobject context))
(db/pgobject? ip-addr "inet")
(assoc :ip-addr (db/decode-inet ip-addr))))
(row->event [row]
(select-keys row [:type
:name
:source
:created-at
:tracked-at
:profile-id
:ip-addr
:props
:context]))
(send [events]
(let [token (tokens :generate {:iss "authentication"
:iat (dt/now)
:uid uuid/zero})
body (t/encode {:events events})
headers {"content-type" "application/transit+json"
"origin" (cf/get :public-uri)
"cookie" (u/map->query-string {:auth-token token})}
params {:uri uri
:timeout 6000
:method :post
:headers headers
:body body}
resp (http/send! params)]
(if (= (:status resp) 204)
true
(do
(l/warn :hint "unable to archive events"
:resp-status (:status resp))
false))))
(mark-as-archived [conn rows]
(db/exec-one! conn ["update audit_log set archived_at=now() where id = ANY(?)"
(->> (map :id rows)
(into-array java.util.UUID)
(db/create-array conn "uuid"))]))]
(db/with-atomic [conn pool]
(let [rows (db/exec! conn [sql:retrieve-batch-of-audit-log])
xform (comp (map decode-row)
(map row->event))
events (into [] xform rows)]
(when-not (empty? events)
(l/debug :action "archive-events" :uri uri :events (count events))
(when (send events)
(mark-as-archived conn rows)
:continue))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GC Task
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def sql:clean-archived
"delete from audit_log
where archived_at is not null
and archived_at < now() - ?::interval")
(defn- clean-archived
[{:keys [pool max-age]}]
(let [interval (db/interval max-age)
result (db/exec-one! pool [sql:clean-archived interval])
result (:next.jdbc/update-count result)]
(l/debug :action "clean archived audit log" :removed result)
result))
(s/def ::max-age ::cf/audit-log-gc-max-age)
(defmethod ig/pre-init-spec ::gc-task [_]
(s/keys :req-un [::db/pool ::max-age]))
(defmethod ig/init-key ::gc-task
[_ cfg]
(fn [_]
(clean-archived cfg)))

View File

@@ -0,0 +1,92 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.loggers.database
"A specific logger impl that persists errors on the database."
(:require
[app.common.logging :as l]
[app.common.uuid :as uuid]
[app.config :as cf]
[app.db :as db]
[app.util.async :as aa]
[app.worker :as wrk]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Error Listener
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare handle-event)
(defonce enabled (atom true))
(defn- persist-on-database!
[{:keys [pool] :as cfg} {:keys [id] :as event}]
(when-not (db/read-only? pool)
(db/insert! pool :server-error-report {:id id :content (db/tjson event)})))
(defn- parse-event-data
[event]
(reduce-kv
(fn [acc k v]
(cond
(= k :id) (assoc acc k (uuid/uuid v))
(= k :profile-id) (assoc acc k (uuid/uuid v))
(str/blank? v) acc
:else (assoc acc k v)))
{}
event))
(defn parse-event
[event]
(-> (parse-event-data event)
(assoc :tenant (cf/get :tenant))
(assoc :host (cf/get :host))
(assoc :public-uri (cf/get :public-uri))
(assoc :version (:full cf/version))
(update :id #(or % (uuid/next)))))
(defn handle-event
[{:keys [executor] :as cfg} event]
(aa/with-thread executor
(try
(let [event (parse-event event)
uri (cf/get :public-uri)]
(l/debug :hint "registering error on database" :id (:id event)
:uri (str uri "/dbg/error/" (:id event)))
(persist-on-database! cfg event))
(catch Exception cause
(l/warn :hint "unexpected exception on database error logger" :cause cause)))))
(defmethod ig/pre-init-spec ::reporter [_]
(s/keys :req-un [::wrk/executor ::db/pool ::receiver]))
(defn error-event?
[event]
(= "error" (:logger/level event)))
(defmethod ig/init-key ::reporter
[_ {:keys [receiver] :as cfg}]
(l/info :msg "initializing database error persistence")
(let [output (a/chan (a/sliding-buffer 5) (filter error-event?))]
(receiver :sub output)
(a/go-loop []
(let [msg (a/<! output)]
(if (nil? msg)
(l/info :msg "stoping error reporting loop")
(do
(a/<! (handle-event cfg msg))
(recur)))))
output))
(defmethod ig/halt-key! ::reporter
[_ output]
(a/close! output))

View File

@@ -0,0 +1,99 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.loggers.loki
"A Loki integration."
(:require
[app.common.logging :as l]
[app.common.spec :as us]
[app.config :as cfg]
[app.util.async :as aa]
[app.util.http :as http]
[app.util.json :as json]
[app.worker :as wrk]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[integrant.core :as ig]))
(declare handle-event)
(s/def ::uri ::us/string)
(s/def ::receiver fn?)
(defmethod ig/pre-init-spec ::reporter [_]
(s/keys :req-un [::wrk/executor ::receiver]
:opt-un [::uri]))
(defmethod ig/init-key ::reporter
[_ {:keys [receiver uri] :as cfg}]
(when uri
(l/info :msg "initializing loki reporter" :uri uri)
(let [input (a/chan (a/dropping-buffer 512))]
(receiver :sub input)
(a/go-loop []
(let [msg (a/<! input)]
(if (nil? msg)
(l/info :msg "stoping error reporting loop")
(do
(a/<! (handle-event cfg msg))
(recur)))))
input)))
(defmethod ig/halt-key! ::reporter
[_ output]
(when output
(a/close! output)))
(defn- prepare-payload
[event]
(let [labels {:host (cfg/get :host)
:tenant (cfg/get :tenant)
:version (:full cfg/version)
:logger (:logger/name event)
:level (:logger/level event)}]
{:streams
[{:stream labels
:values [[(str (* (inst-ms (:created-at event)) 1000000))
(str (:message event)
(when-let [error (:trace event)]
(str "\n" error)))]]}]}))
(defn- send-log
[uri payload i]
(try
(let [response (http/send! {:uri uri
:timeout 6000
:method :post
:headers {"content-type" "application/json"}
:body (json/write payload)})]
(cond
(= (:status response) 204)
true
(= (:status response) 400)
(do
(l/error :hint "error on sending log to loki (no retry)"
:rsp (pr-str response))
true)
:else
(do
(l/error :hint "error on sending log to loki" :try i
:rsp (pr-str response))
false)))
(catch Exception e
(l/error :hint "error on sending message to loki" :cause e :try i)
false)))
(defn- handle-event
[{:keys [executor uri]} event]
(aa/with-thread executor
(let [payload (prepare-payload event)]
(loop [i 1]
(when (and (not (send-log uri payload i)) (< i 20))
(Thread/sleep (* i 2000))
(recur (inc i)))))))

View File

@@ -0,0 +1,80 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.loggers.mattermost
"A mattermost integration for error reporting."
(:require
[app.common.logging :as l]
[app.config :as cf]
[app.db :as db]
[app.loggers.database :as ldb]
[app.util.async :as aa]
[app.util.http :as http]
[app.util.json :as json]
[app.worker :as wrk]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[integrant.core :as ig]))
(defonce enabled (atom true))
(defn- send-mattermost-notification!
[cfg {:keys [host id public-uri] :as event}]
(try
(let [uri (:uri cfg)
text (str "Exception on (host: " host ", url: " public-uri "/dbg/error/" id ")\n"
(when-let [pid (:profile-id event)]
(str "- profile-id: #uuid-" pid "\n")))
rsp (http/send! {:uri uri
:method :post
:headers {"content-type" "application/json"}
:body (json/write-str {:text text})})]
(when (not= (:status rsp) 200)
(l/error :hint "error on sending data to mattermost"
:response (pr-str rsp))))
(catch Exception e
(l/error :hint "unexpected exception on error reporter"
:cause e))))
(defn handle-event
[{:keys [executor] :as cfg} event]
(aa/with-thread executor
(try
(let [event (ldb/parse-event event)]
(when @enabled
(send-mattermost-notification! cfg event)))
(catch Exception e
(l/warn :hint "unexpected exception on error reporter" :cause e)))))
(s/def ::uri ::cf/error-report-webhook)
(defmethod ig/pre-init-spec ::reporter [_]
(s/keys :req-un [::wrk/executor ::db/pool ::receiver]
:opt-un [::uri]))
(defmethod ig/init-key ::reporter
[_ {:keys [receiver uri] :as cfg}]
(when uri
(l/info :msg "initializing mattermost error reporter" :uri uri)
(let [output (a/chan (a/sliding-buffer 128)
(filter (fn [event]
(= (:logger/level event) "error"))))]
(receiver :sub output)
(a/go-loop []
(let [msg (a/<! output)]
(if (nil? msg)
(l/info :msg "stoping error reporting loop")
(do
(a/<! (handle-event cfg msg))
(recur)))))
output)))
(defmethod ig/halt-key! ::reporter
[_ output]
(when output
(a/close! output)))

View File

@@ -0,0 +1,170 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.loggers.sentry
"A mattermost integration for error reporting."
(:require
[app.common.logging :as l]
[app.common.uuid :as uuid]
[app.config :as cf]
[app.db :as db]
[app.util.async :as aa]
[app.worker :as wrk]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig])
(:import
io.sentry.Scope
io.sentry.IHub
io.sentry.Hub
io.sentry.NoOpHub
io.sentry.protocol.User
io.sentry.SentryOptions
io.sentry.SentryLevel
io.sentry.ScopeCallback))
(defonce enabled (atom true))
(defn- parse-context
[event]
(reduce-kv
(fn [acc k v]
(cond
(= k :id) (assoc acc k (uuid/uuid v))
(= k :profile-id) (assoc acc k (uuid/uuid v))
(str/blank? v) acc
:else (assoc acc k v)))
{}
(:context event)))
(defn- parse-event
[event]
(assoc event :context (parse-context event)))
(defn- build-sentry-options
[cfg]
(let [version (:base cf/version)]
(doto (SentryOptions.)
(.setDebug (:debug cfg false))
(.setTracesSampleRate (:traces-sample-rate cfg 1.0))
(.setDsn (:dsn cfg))
(.setServerName (cf/get :host))
(.setEnvironment (cf/get :tenant))
(.setAttachServerName true)
(.setAttachStacktrace (:attach-stack-trace cfg false))
(.setRelease (str "backend@" (if (= version "0.0.0") "develop" version))))))
(defn handle-event
[^IHub shub event]
(letfn [(set-user! [^Scope scope {:keys [context] :as event}]
(let [user (User.)]
(.setIpAddress ^User user ^String (:ip-addr context))
(when-let [pid (:profile-id context)]
(.setId ^User user ^String (str pid)))
(.setUser scope ^User user)))
(set-level! [^Scope scope]
(.setLevel scope SentryLevel/ERROR))
(set-context! [^Scope scope {:keys [context] :as event}]
(let [uri (str (cf/get :public-uri) "/dbg/error-by-id/" (:id context))]
(.setContexts scope "detailed_error_uri" ^String uri))
(when-let [vers (:frontend-version event)]
(.setContexts scope "frontend_version" ^String vers))
(when-let [puri (:public-uri event)]
(.setContexts scope "public_uri" ^String (str puri)))
(when-let [uagent (:user-agent context)]
(.setContexts scope "user_agent" ^String uagent))
(when-let [tenant (:tenant event)]
(.setTag scope "tenant" ^String tenant))
(when-let [type (:error-type context)]
(.setTag scope "error_type" ^String (str type)))
(when-let [code (:error-code context)]
(.setTag scope "error_code" ^String (str code)))
)
(capture [^Scope scope {:keys [context error] :as event}]
(let [msg (str (:message error) "\n\n"
"======================================================\n"
"=================== Params ===========================\n"
"======================================================\n"
(:params context) "\n"
(when (:explain context)
(str "======================================================\n"
"=================== Explain ==========================\n"
"======================================================\n"
(:explain context) "\n"))
(when (:data context)
(str "======================================================\n"
"=================== Error Data =======================\n"
"======================================================\n"
(:data context) "\n"))
(str "======================================================\n"
"=================== Stack Trace ======================\n"
"======================================================\n"
(:trace error))
"\n")]
(set-user! scope event)
(set-level! scope)
(set-context! scope event)
(.captureMessage ^IHub shub msg)
))
]
(when @enabled
(.withScope ^IHub shub (reify ScopeCallback
(run [_ scope]
(->> event
(parse-event)
(capture scope))))))
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Error Listener
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::receiver any?)
(s/def ::dsn ::cf/sentry-dsn)
(s/def ::trace-sample-rate ::cf/sentry-trace-sample-rate)
(s/def ::attach-stack-trace ::cf/sentry-attach-stack-trace)
(s/def ::debug ::cf/sentry-debug)
(defmethod ig/pre-init-spec ::reporter [_]
(s/keys :req-un [::wrk/executor ::db/pool ::receiver]
:opt-un [::dsn ::trace-sample-rate ::attach-stack-trace]))
(defmethod ig/init-key ::reporter
[_ {:keys [receiver dsn executor] :as cfg}]
(l/info :msg "initializing sentry reporter" :dsn dsn)
(let [opts (build-sentry-options cfg)
shub (if dsn
(Hub. ^SentryOptions opts)
(NoOpHub/getInstance))
output (a/chan (a/sliding-buffer 128)
(filter #(= (:level %) "error")))]
(receiver :sub output)
(a/go-loop []
(let [event (a/<! output)]
(if (nil? event)
(do
(l/info :msg "stoping error reporting loop")
(.close ^IHub shub))
(do
(a/<! (aa/with-thread executor (handle-event shub event)))
(recur)))))
output))
(defmethod ig/halt-key! ::reporter
[_ output]
(when output
(a/close! output)))

View File

@@ -0,0 +1,106 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.loggers.zmq
"A generic ZMQ listener."
(:require
[app.common.exceptions :as ex]
[app.common.logging :as l]
[app.common.spec :as us]
[app.util.json :as json]
[app.util.time :as dt]
[clojure.core.async :as a]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[integrant.core :as ig])
(:import
org.zeromq.SocketType
org.zeromq.ZMQ$Socket
org.zeromq.ZContext))
(declare prepare)
(declare start-rcv-loop)
(s/def ::endpoint ::us/string)
(defmethod ig/pre-init-spec ::receiver [_]
(s/keys :opt-un [::endpoint]))
(defmethod ig/init-key ::receiver
[_ {:keys [endpoint] :as cfg}]
(l/info :msg "initializing ZMQ receiver" :bind endpoint)
(let [buffer (a/chan 1)
output (a/chan 1 (comp (filter map?)
(keep prepare)))
mult (a/mult output)]
(when endpoint
(a/thread (start-rcv-loop {:out buffer :endpoint endpoint})))
(a/pipe buffer output)
(with-meta
(fn [cmd ch]
(case cmd
:sub (a/tap mult ch)
:unsub (a/untap mult ch))
ch)
{::output output
::buffer buffer
::mult mult})))
(defmethod ig/halt-key! ::receiver
[_ f]
(a/close! (::buffer (meta f))))
(def ^:private json-mapper
(json/mapper
{:encode-key-fn str/camel
:decode-key-fn (comp keyword str/kebab)}))
(defn- start-rcv-loop
([] (start-rcv-loop nil))
([{:keys [out endpoint] :or {endpoint "tcp://localhost:5556"}}]
(let [out (or out (a/chan 1))
zctx (ZContext.)
socket (.. zctx (createSocket SocketType/SUB))]
(.. socket (connect ^String endpoint))
(.. socket (subscribe ""))
(.. socket (setReceiveTimeOut 5000))
(loop []
(let [msg (.recv ^ZMQ$Socket socket)
msg (ex/ignoring (json/read msg json-mapper))
msg (if (nil? msg) :empty msg)]
(if (a/>!! out msg)
(recur)
(do
(.close ^java.lang.AutoCloseable socket)
(.close ^java.lang.AutoCloseable zctx))))))))
(s/def ::logger-name string?)
(s/def ::level string?)
(s/def ::thread string?)
(s/def ::time-millis integer?)
(s/def ::message string?)
(s/def ::context-map map?)
(s/def ::throw map?)
(s/def ::log4j-event
(s/keys :req-un [::logger-name ::level ::thread ::time-millis ::message]
:opt-un [::context-map ::thrown]))
(defn- prepare
[event]
(if (s/valid? ::log4j-event event)
(merge {:message (:message event)
:created-at (dt/instant (:time-millis event))
:logger/name (:logger-name event)
:logger/level (str/lower (:level event))}
(when-let [thrown (:thrown event)]
{:trace (:extended-stack-trace thrown)})
(:context-map event))
(do
(l/warn :hint "invalid event" :event event)
nil)))

368
backend/src/app/main.clj Normal file
View File

@@ -0,0 +1,368 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.main
(:require
[app.common.logging :as l]
[app.config :as cf]
[app.util.time :as dt]
[integrant.core :as ig])
(:gen-class))
(def system-config
{:app.db/pool
{:uri (cf/get :database-uri)
:username (cf/get :database-username)
:password (cf/get :database-password)
:read-only (cf/get :database-readonly false)
:metrics (ig/ref :app.metrics/metrics)
:migrations (ig/ref :app.migrations/all)
:name :main
:min-size (cf/get :database-min-pool-size 0)
:max-size (cf/get :database-max-pool-size 30)}
;; Default thread pool for IO operations
[::default :app.worker/executor]
{:parallelism (cf/get :default-executor-parallelism 60)
:prefix :default}
;; Constrained thread pool. Should only be used from high demand
;; RPC methods.
[::blocking :app.worker/executor]
{:parallelism (cf/get :blocking-executor-parallelism 20)
:prefix :blocking}
;; Dedicated thread pool for backround tasks execution.
[::worker :app.worker/executor]
{:parallelism (cf/get :worker-executor-parallelism 10)
:prefix :worker}
:app.worker/executors
{:default (ig/ref [::default :app.worker/executor])
:worker (ig/ref [::worker :app.worker/executor])
:blocking (ig/ref [::blocking :app.worker/executor])}
:app.worker/executors-monitor
{:metrics (ig/ref :app.metrics/metrics)
:executors (ig/ref :app.worker/executors)}
:app.migrations/migrations
{}
:app.metrics/metrics
{}
:app.migrations/all
{:main (ig/ref :app.migrations/migrations)}
:app.msgbus/msgbus
{:backend (cf/get :msgbus-backend :redis)
:redis-uri (cf/get :redis-uri)}
:app.tokens/tokens
{:keys (ig/ref :app.setup/keys)}
:app.storage/gc-deleted-task
{:pool (ig/ref :app.db/pool)
:storage (ig/ref :app.storage/storage)
:min-age (dt/duration {:hours 2})}
:app.storage/gc-touched-task
{:pool (ig/ref :app.db/pool)}
:app.http.session/session
{:pool (ig/ref :app.db/pool)
:tokens (ig/ref :app.tokens/tokens)}
:app.http.session/gc-task
{:pool (ig/ref :app.db/pool)
:max-age (cf/get :http-session-idle-max-age)}
:app.http.session/updater
{:pool (ig/ref :app.db/pool)
:metrics (ig/ref :app.metrics/metrics)
:executor (ig/ref [::worker :app.worker/executor])
:session (ig/ref :app.http.session/session)
:max-batch-age (cf/get :http-session-updater-batch-max-age)
:max-batch-size (cf/get :http-session-updater-batch-max-size)}
:app.http.awsns/handler
{:tokens (ig/ref :app.tokens/tokens)
:pool (ig/ref :app.db/pool)}
:app.http/server
{:port (cf/get :http-server-port)
:host (cf/get :http-server-host)
:router (ig/ref :app.http/router)
:metrics (ig/ref :app.metrics/metrics)
:max-threads (cf/get :http-server-max-threads)
:min-threads (cf/get :http-server-min-threads)}
:app.http/router
{:assets (ig/ref :app.http.assets/handlers)
:feedback (ig/ref :app.http.feedback/handler)
:session (ig/ref :app.http.session/session)
:sns-webhook (ig/ref :app.http.awsns/handler)
:oauth (ig/ref :app.http.oauth/handler)
:debug (ig/ref :app.http.debug/handlers)
:ws (ig/ref :app.http.websocket/handler)
:metrics (ig/ref :app.metrics/metrics)
:public-uri (cf/get :public-uri)
:storage (ig/ref :app.storage/storage)
:tokens (ig/ref :app.tokens/tokens)
:audit-http-handler (ig/ref :app.loggers.audit/http-handler)
:rpc (ig/ref :app.rpc/rpc)}
:app.http.debug/handlers
{:pool (ig/ref :app.db/pool)
:executor (ig/ref [::default :app.worker/executor])}
:app.http.websocket/handler
{:pool (ig/ref :app.db/pool)
:metrics (ig/ref :app.metrics/metrics)
:msgbus (ig/ref :app.msgbus/msgbus)}
:app.http.assets/handlers
{:metrics (ig/ref :app.metrics/metrics)
:assets-path (cf/get :assets-path)
:storage (ig/ref :app.storage/storage)
:executor (ig/ref [::default :app.worker/executor])
:cache-max-age (dt/duration {:hours 24})
:signature-max-age (dt/duration {:hours 24 :minutes 5})}
:app.http.feedback/handler
{:pool (ig/ref :app.db/pool)
:executor (ig/ref [::default :app.worker/executor])}
:app.http.oauth/handler
{:rpc (ig/ref :app.rpc/rpc)
:session (ig/ref :app.http.session/session)
:pool (ig/ref :app.db/pool)
:tokens (ig/ref :app.tokens/tokens)
:audit (ig/ref :app.loggers.audit/collector)
:executor (ig/ref [::default :app.worker/executor])
:public-uri (cf/get :public-uri)}
:app.rpc/rpc
{:pool (ig/ref :app.db/pool)
:session (ig/ref :app.http.session/session)
:tokens (ig/ref :app.tokens/tokens)
:metrics (ig/ref :app.metrics/metrics)
:storage (ig/ref :app.storage/storage)
:msgbus (ig/ref :app.msgbus/msgbus)
:public-uri (cf/get :public-uri)
:audit (ig/ref :app.loggers.audit/collector)
:executors (ig/ref :app.worker/executors)}
:app.worker/worker
{:executor (ig/ref [::worker :app.worker/executor])
:tasks (ig/ref :app.worker/registry)
:metrics (ig/ref :app.metrics/metrics)
:pool (ig/ref :app.db/pool)}
:app.worker/scheduler
{:executor (ig/ref [::worker :app.worker/executor])
:tasks (ig/ref :app.worker/registry)
:pool (ig/ref :app.db/pool)
:schedule
[{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :file-media-gc}
{:cron #app/cron "0 0 * * * ?" ;; hourly
:task :file-xlog-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :storage-deleted-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :storage-touched-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :session-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :objects-gc}
{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :tasks-gc}
(when (cf/get :fdata-storage-backed)
{:cron #app/cron "0 0 * * * ?" ;; hourly
:task :file-offload})
(when (contains? cf/flags :audit-log-archive)
{:cron #app/cron "0 */5 * * * ?" ;; every 5m
:task :audit-log-archive})
(when (contains? cf/flags :audit-log-gc)
{:cron #app/cron "0 0 0 * * ?" ;; daily
:task :audit-log-gc})
(when (or (contains? cf/flags :telemetry)
(cf/get :telemetry-enabled))
{:cron #app/cron "0 30 */3,23 * * ?"
:task :telemetry})]}
:app.worker/registry
{:metrics (ig/ref :app.metrics/metrics)
:tasks
{:sendmail (ig/ref :app.emails/sendmail-handler)
:objects-gc (ig/ref :app.tasks.objects-gc/handler)
:file-media-gc (ig/ref :app.tasks.file-media-gc/handler)
:file-xlog-gc (ig/ref :app.tasks.file-xlog-gc/handler)
:storage-deleted-gc (ig/ref :app.storage/gc-deleted-task)
:storage-touched-gc (ig/ref :app.storage/gc-touched-task)
:tasks-gc (ig/ref :app.tasks.tasks-gc/handler)
:telemetry (ig/ref :app.tasks.telemetry/handler)
:session-gc (ig/ref :app.http.session/gc-task)
:file-offload (ig/ref :app.tasks.file-offload/handler)
:audit-log-archive (ig/ref :app.loggers.audit/archive-task)
:audit-log-gc (ig/ref :app.loggers.audit/gc-task)}}
:app.emails/sendmail-handler
{:host (cf/get :smtp-host)
:port (cf/get :smtp-port)
:ssl (cf/get :smtp-ssl)
:tls (cf/get :smtp-tls)
:username (cf/get :smtp-username)
:password (cf/get :smtp-password)
:metrics (ig/ref :app.metrics/metrics)
:default-reply-to (cf/get :smtp-default-reply-to)
:default-from (cf/get :smtp-default-from)}
:app.tasks.tasks-gc/handler
{:pool (ig/ref :app.db/pool)
:max-age cf/deletion-delay}
:app.tasks.objects-gc/handler
{:pool (ig/ref :app.db/pool)
:storage (ig/ref :app.storage/storage)
:max-age cf/deletion-delay}
:app.tasks.file-media-gc/handler
{:pool (ig/ref :app.db/pool)
:max-age cf/deletion-delay}
:app.tasks.file-xlog-gc/handler
{:pool (ig/ref :app.db/pool)
:max-age (dt/duration {:hours 72})}
:app.tasks.file-offload/handler
{:pool (ig/ref :app.db/pool)
:max-age (dt/duration {:seconds 5})
:storage (ig/ref :app.storage/storage)
:backend (cf/get :fdata-storage-backed :fdata-s3)}
:app.tasks.telemetry/handler
{:pool (ig/ref :app.db/pool)
:version (:full cf/version)
:uri (cf/get :telemetry-uri)
:sprops (ig/ref :app.setup/props)}
:app.srepl/server
{:port (cf/get :srepl-port)
:host (cf/get :srepl-host)}
:app.setup/props
{:pool (ig/ref :app.db/pool)
:key (cf/get :secret-key)}
:app.setup/keys
{:props (ig/ref :app.setup/props)}
:app.loggers.zmq/receiver
{:endpoint (cf/get :loggers-zmq-uri)}
:app.loggers.audit/http-handler
{:pool (ig/ref :app.db/pool)
:executor (ig/ref [::worker :app.worker/executor])}
:app.loggers.audit/collector
{:pool (ig/ref :app.db/pool)
:executor (ig/ref [::worker :app.worker/executor])}
:app.loggers.audit/archive-task
{:uri (cf/get :audit-log-archive-uri)
:tokens (ig/ref :app.tokens/tokens)
:pool (ig/ref :app.db/pool)}
:app.loggers.audit/gc-task
{:max-age (cf/get :audit-log-gc-max-age cf/deletion-delay)
:pool (ig/ref :app.db/pool)}
:app.loggers.loki/reporter
{:uri (cf/get :loggers-loki-uri)
:receiver (ig/ref :app.loggers.zmq/receiver)
:executor (ig/ref [::worker :app.worker/executor])}
:app.loggers.mattermost/reporter
{:uri (cf/get :error-report-webhook)
:receiver (ig/ref :app.loggers.zmq/receiver)
:pool (ig/ref :app.db/pool)
:executor (ig/ref [::worker :app.worker/executor])}
:app.loggers.database/reporter
{:receiver (ig/ref :app.loggers.zmq/receiver)
:pool (ig/ref :app.db/pool)
:executor (ig/ref [::worker :app.worker/executor])}
:app.storage/storage
{:pool (ig/ref :app.db/pool)
:backends
{:assets-s3 (ig/ref [::assets :app.storage.s3/backend])
:assets-db (ig/ref [::assets :app.storage.db/backend])
:assets-fs (ig/ref [::assets :app.storage.fs/backend])
:tmp (ig/ref [::tmp :app.storage.fs/backend])
:fdata-s3 (ig/ref [::fdata :app.storage.s3/backend])
;; keep this for backward compatibility
:s3 (ig/ref [::assets :app.storage.s3/backend])
:fs (ig/ref [::assets :app.storage.fs/backend])}}
[::fdata :app.storage.s3/backend]
{:region (cf/get :storage-fdata-s3-region)
:bucket (cf/get :storage-fdata-s3-bucket)
:endpoint (cf/get :storage-fdata-s3-endpoint)
:prefix (cf/get :storage-fdata-s3-prefix)}
[::assets :app.storage.s3/backend]
{:region (cf/get :storage-assets-s3-region)
:endpoint (cf/get :storage-assets-s3-endpoint)
:bucket (cf/get :storage-assets-s3-bucket)}
[::assets :app.storage.fs/backend]
{:directory (cf/get :storage-assets-fs-directory)}
[::tmp :app.storage.fs/backend]
{:directory "/tmp/penpot"}
[::assets :app.storage.db/backend]
{:pool (ig/ref :app.db/pool)}})
(def system nil)
(defn start
[]
(ig/load-namespaces system-config)
(alter-var-root #'system (fn [sys]
(when sys (ig/halt! sys))
(-> system-config
(ig/prep)
(ig/init))))
(l/info :msg "welcome to penpot"
:version (:full cf/version)))
(defn stop
[]
(alter-var-root #'system (fn [sys]
(when sys (ig/halt! sys))
nil)))
(defn -main
[& _args]
(start))

335
backend/src/app/media.clj Normal file
View File

@@ -0,0 +1,335 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.media
"Media & Font postprocessing."
(:require
[app.common.data :as d]
[app.common.exceptions :as ex]
[app.common.media :as cm]
[app.common.spec :as us]
[app.config :as cf]
[app.util.svg :as svg]
[buddy.core.bytes :as bb]
[buddy.core.codecs :as bc]
[clojure.java.io :as io]
[clojure.java.shell :as sh]
[clojure.spec.alpha :as s]
[cuerdas.core :as str]
[datoteka.core :as fs])
(:import
java.io.ByteArrayInputStream
java.io.OutputStream
org.apache.commons.io.IOUtils
org.im4java.core.ConvertCmd
org.im4java.core.IMOperation
org.im4java.core.Info))
(s/def ::image-content-type cm/valid-image-types)
(s/def ::font-content-type cm/valid-font-types)
(s/def :internal.http.upload/filename ::us/string)
(s/def :internal.http.upload/size ::us/integer)
(s/def :internal.http.upload/content-type ::us/string)
(s/def :internal.http.upload/tempfile any?)
(s/def ::upload
(s/keys :req-un [:internal.http.upload/filename
:internal.http.upload/size
:internal.http.upload/tempfile
:internal.http.upload/content-type]))
(defn validate-media-type
([mtype] (validate-media-type mtype cm/valid-image-types))
([mtype allowed]
(when-not (contains? allowed mtype)
(ex/raise :type :validation
:code :media-type-not-allowed
:hint "Seems like you are uploading an invalid media object"))))
(defmulti process :cmd)
(defmulti process-error class)
(defmethod process :default
[{:keys [cmd] :as params}]
(ex/raise :type :internal
:code :not-implemented
:hint (str/fmt "No impl found for process cmd: %s" cmd)))
(defmethod process-error :default
[error]
(throw error))
(defn run
[params]
(try
(process params)
(catch Throwable e
(process-error e))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; --- Thumbnails Generation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(s/def ::cmd keyword?)
(s/def ::path (s/or :path fs/path?
:string string?
:file fs/file?))
(s/def ::input
(s/keys :req-un [::path]
:opt-un [::cm/mtype]))
(s/def ::width integer?)
(s/def ::height integer?)
(s/def ::format #{:jpeg :webp :png})
(s/def ::quality #(< 0 % 101))
(s/def ::thumbnail-params
(s/keys :req-un [::cmd ::input ::format ::width ::height]))
;; Related info on how thumbnails generation
;; http://www.imagemagick.org/Usage/thumbnails/
(defn- generic-process
[{:keys [input format operation] :as params}]
(let [{:keys [path mtype]} input
format (or (cm/mtype->format mtype) format)
ext (cm/format->extension format)
tmp (fs/create-tempfile :suffix ext)]
(doto (ConvertCmd.)
(.run operation (into-array (map str [path tmp]))))
(let [thumbnail-data (fs/slurp-bytes tmp)]
(fs/delete tmp)
(assoc params
:format format
:mtype (cm/format->mtype format)
:size (alength ^bytes thumbnail-data)
:data (ByteArrayInputStream. thumbnail-data)))))
(defmethod process :generic-thumbnail
[{:keys [quality width height] :as params}]
(us/assert ::thumbnail-params params)
(let [op (doto (IMOperation.)
(.addImage)
(.autoOrient)
(.strip)
(.thumbnail ^Integer (int width) ^Integer (int height) ">")
(.quality (double quality))
(.addImage))]
(generic-process (assoc params :operation op))))
(defmethod process :profile-thumbnail
[{:keys [quality width height] :as params}]
(us/assert ::thumbnail-params params)
(let [op (doto (IMOperation.)
(.addImage)
(.autoOrient)
(.strip)
(.thumbnail ^Integer (int width) ^Integer (int height) "^")
(.gravity "center")
(.extent (int width) (int height))
(.quality (double quality))
(.addImage))]
(generic-process (assoc params :operation op))))
(defn get-basic-info-from-svg
[{:keys [tag attrs] :as data}]
(when (not= tag :svg)
(ex/raise :type :validation
:code :unable-to-parse-svg
:hint "uploaded svg has invalid content"))
(reduce (fn [default f]
(if-let [res (f attrs)]
(reduced res)
default))
{:width 100 :height 100}
[(fn parse-width-and-height
[{:keys [width height]}]
(when (and (string? width)
(string? height))
(let [width (d/parse-double width)
height (d/parse-double height)]
(when (and width height)
{:width (int width)
:height (int height)}))))
(fn parse-viewbox
[{:keys [viewBox]}]
(let [[x y width height] (->> (str/split viewBox #"\s+" 4)
(map d/parse-double))]
(when (and x y width height)
{:width (int width)
:height (int height)})))]))
(defmethod process :info
[{:keys [input] :as params}]
(us/assert ::input input)
(let [{:keys [path mtype]} input]
(if (= mtype "image/svg+xml")
(let [info (some-> path slurp svg/pre-process svg/parse get-basic-info-from-svg)]
(when-not info
(ex/raise :type :validation
:code :invalid-svg-file
:hint "uploaded svg does not provides dimensions"))
(assoc info :mtype mtype))
(let [instance (Info. (str path))
mtype' (.getProperty instance "Mime type")]
(when (and (string? mtype)
(not= mtype mtype'))
(ex/raise :type :validation
:code :media-type-mismatch
:hint (str "Seems like you are uploading a file whose content does not match the extension."
"Expected: " mtype ". Got: " mtype')))
;; For an animated GIF, getImageWidth/Height returns the delta size of one frame (if no frame given
;; it returns size of the last one), whereas getPageWidth/Height always return the full size of
;; any frame.
{:width (.getPageWidth instance)
:height (.getPageHeight instance)
:mtype mtype}))))
(defmethod process-error org.im4java.core.InfoException
[error]
(ex/raise :type :validation
:code :invalid-image
:hint "invalid image"
:cause error))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Fonts Generation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defmethod process :generate-fonts
[{:keys [input] :as params}]
(letfn [(ttf->otf [data]
(let [input-file (fs/create-tempfile :prefix "penpot")
output-file (fs/path (str input-file ".otf"))
_ (with-open [out (io/output-stream input-file)]
(IOUtils/writeChunked ^bytes data ^OutputStream out)
(.flush ^OutputStream out))
res (sh/sh "fontforge" "-lang=ff" "-c"
(str/fmt "Open('%s'); Generate('%s')"
(str input-file)
(str output-file)))]
(when (zero? (:exit res))
(fs/slurp-bytes output-file))))
(otf->ttf [data]
(let [input-file (fs/create-tempfile :prefix "penpot")
output-file (fs/path (str input-file ".ttf"))
_ (with-open [out (io/output-stream input-file)]
(IOUtils/writeChunked ^bytes data ^OutputStream out)
(.flush ^OutputStream out))
res (sh/sh "fontforge" "-lang=ff" "-c"
(str/fmt "Open('%s'); Generate('%s')"
(str input-file)
(str output-file)))]
(when (zero? (:exit res))
(fs/slurp-bytes output-file))))
(ttf-or-otf->woff [data]
(let [input-file (fs/create-tempfile :prefix "penpot" :suffix "")
output-file (fs/path (str input-file ".woff"))
_ (with-open [out (io/output-stream input-file)]
(IOUtils/writeChunked ^bytes data ^OutputStream out)
(.flush ^OutputStream out))
res (sh/sh "sfnt2woff" (str input-file))]
(when (zero? (:exit res))
(fs/slurp-bytes output-file))))
(ttf-or-otf->woff2 [data]
(let [input-file (fs/create-tempfile :prefix "penpot" :suffix "")
output-file (fs/path (str input-file ".woff2"))
_ (with-open [out (io/output-stream input-file)]
(IOUtils/writeChunked ^bytes data ^OutputStream out)
(.flush ^OutputStream out))
res (sh/sh "woff2_compress" (str input-file))]
(when (zero? (:exit res))
(fs/slurp-bytes output-file))))
(woff->sfnt [data]
(let [input-file (fs/create-tempfile :prefix "penpot" :suffix "")
_ (with-open [out (io/output-stream input-file)]
(IOUtils/writeChunked ^bytes data ^OutputStream out)
(.flush ^OutputStream out))
res (sh/sh "woff2sfnt" (str input-file)
:out-enc :bytes)]
(when (zero? (:exit res))
(:out res))))
;; Documented here:
;; https://docs.microsoft.com/en-us/typography/opentype/spec/otff#table-directory
(get-sfnt-type [data]
(let [buff (bb/slice data 0 4)
type (bc/bytes->hex buff)]
(case type
"4f54544f" :otf
"00010000" :ttf
(ex/raise :type :internal
:code :unexpected-data
:hint "unexpected font data"))))
(gen-if-nil [val factory]
(if (nil? val)
(factory)
val))]
(let [current (into #{} (keys input))]
(cond
(contains? current "font/ttf")
(let [data (get input "font/ttf")]
(-> input
(update "font/otf" gen-if-nil #(ttf->otf data))
(update "font/woff" gen-if-nil #(ttf-or-otf->woff data))
(assoc "font/woff2" (ttf-or-otf->woff2 data))))
(contains? current "font/otf")
(let [data (get input "font/otf")]
(-> input
(update "font/woff" gen-if-nil #(ttf-or-otf->woff data))
(assoc "font/ttf" (otf->ttf data))
(assoc "font/woff2" (ttf-or-otf->woff2 data))))
(contains? current "font/woff")
(let [data (get input "font/woff")
sfnt (woff->sfnt data)]
(when-not sfnt
(ex/raise :type :validation
:code :invalid-woff-file
:hint "invalid woff file"))
(let [stype (get-sfnt-type sfnt)]
(cond-> input
true
(-> (assoc "font/woff" data)
(assoc "font/woff2" (ttf-or-otf->woff2 sfnt)))
(= stype :otf)
(-> (assoc "font/otf" sfnt)
(assoc "font/ttf" (otf->ttf sfnt)))
(= stype :ttf)
(-> (assoc "font/otf" (ttf->otf sfnt))
(assoc "font/ttf" sfnt)))))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Utility functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn configure-assets-storage
"Given storage map, returns a storage configured with the appropriate
backend for assets."
([storage]
(assoc storage :backend (cf/get :assets-storage-backend :assets-fs)))
([storage conn]
(-> storage
(assoc :conn conn)
(assoc :backend (cf/get :assets-storage-backend :assets-fs)))))

273
backend/src/app/metrics.clj Normal file
View File

@@ -0,0 +1,273 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.metrics
(:refer-clojure :exclude [run!])
(:require
[app.common.logging :as l]
[clojure.spec.alpha :as s]
[integrant.core :as ig])
(:import
io.prometheus.client.CollectorRegistry
io.prometheus.client.Counter
io.prometheus.client.Counter$Child
io.prometheus.client.Gauge
io.prometheus.client.Gauge$Child
io.prometheus.client.Summary
io.prometheus.client.Summary$Child
io.prometheus.client.Summary$Builder
io.prometheus.client.Histogram
io.prometheus.client.Histogram$Child
io.prometheus.client.exporter.common.TextFormat
io.prometheus.client.hotspot.DefaultExports
io.prometheus.client.jetty.JettyStatisticsCollector
org.eclipse.jetty.server.handler.StatisticsHandler
java.io.StringWriter))
(set! *warn-on-reflection* true)
(declare create-registry)
(declare create)
(declare handler)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; METRICS SERVICE PROVIDER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def default-metrics
{:update-file-changes
{:name "rpc_update_file_changes_total"
:help "A total number of changes submitted to update-file."
:type :counter}
:update-file-bytes-processed
{:name "rpc_update_file_bytes_processed_total"
:help "A total number of bytes processed by update-file."
:type :counter}
:rpc-mutation-timing
{:name "rpc_mutation_timing"
:help "RPC mutation method call timming."
:labels ["name"]
:type :histogram}
:rpc-query-timing
{:name "rpc_query_timing"
:help "RPC query method call timing."
:labels ["name"]
:type :histogram}
:websocket-active-connections
{:name "websocket_active_connections"
:help "Active websocket connections gauge"
:type :gauge}
:websocket-messages-total
{:name "websocket_message_total"
:help "Counter of processed messages."
:labels ["op"]
:type :counter}
:websocket-session-timing
{:name "websocket_session_timing"
:help "Websocket session timing (seconds)."
:type :summary}
:session-update-total
{:name "http_session_update_total"
:help "A counter of session update batch events."
:type :counter}
:tasks-timing
{:name "penpot_tasks_timing"
:help "Background tasks timing (milliseconds)."
:labels ["name"]
:type :summary}
:rlimit-queued-submissions
{:name "penpot_rlimit_queued_submissions"
:help "Current number of queued submissions on RLIMIT."
:labels ["name"]
:type :gauge}
:rlimit-used-permits
{:name "penpot_rlimit_used_permits"
:help "Current number of used permits on RLIMIT."
:labels ["name"]
:type :gauge}
:rlimit-acquires-total
{:name "penpot_rlimit_acquires_total"
:help "Total number of acquire operations on RLIMIT."
:labels ["name"]
:type :counter}
:executors-active-threads
{:name "penpot_executors_active_threads"
:help "Current number of threads available in the executor service."
:labels ["name"]
:type :gauge}
:executors-completed-tasks
{:name "penpot_executors_completed_tasks_total"
:help "Aproximate number of completed tasks by the executor."
:labels ["name"]
:type :counter}
:executors-running-threads
{:name "penpot_executors_running_threads"
:help "Current number of threads with state RUNNING."
:labels ["name"]
:type :gauge}
:executors-queued-submissions
{:name "penpot_executors_queued_submissions"
:help "Current number of queued submissions."
:labels ["name"]
:type :gauge}})
(defmethod ig/init-key ::metrics
[_ _]
(l/info :action "initialize metrics")
(let [registry (create-registry)
definitions (reduce-kv (fn [res k v]
(->> (assoc v :registry registry)
(create)
(assoc res k)))
{}
default-metrics)]
{:handler (partial handler registry)
:definitions definitions
:registry registry}))
(s/def ::handler fn?)
(s/def ::registry #(instance? CollectorRegistry %))
(s/def ::metrics
(s/keys :req-un [::registry ::handler]))
(defn- handler
[registry _ respond _]
(let [samples (.metricFamilySamples ^CollectorRegistry registry)
writer (StringWriter.)]
(TextFormat/write004 writer samples)
(respond {:headers {"content-type" TextFormat/CONTENT_TYPE_004}
:body (.toString writer)})))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Implementation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def default-empty-labels (into-array String []))
(def default-quantiles
[[0.5 0.01]
[0.90 0.01]
[0.99 0.001]])
(def default-histogram-buckets
[1 5 10 25 50 75 100 250 500 750 1000 2500 5000 7500])
(defn run!
[{:keys [definitions]} {:keys [id] :as params}]
(when-let [mobj (get definitions id)]
((::fn mobj) params)
true))
(defn create-registry
[]
(let [registry (CollectorRegistry.)]
(DefaultExports/register registry)
registry))
(defn- is-array?
[o]
(let [oc (class o)]
(and (.isArray ^Class oc)
(= (.getComponentType oc) String))))
(defn make-counter
[{:keys [name help registry reg labels] :as props}]
(let [registry (or registry reg)
instance (.. (Counter/build)
(name name)
(help help))
_ (when (seq labels)
(.labelNames instance (into-array String labels)))
instance (.register instance registry)]
{::instance instance
::fn (fn [{:keys [inc labels] :or {inc 1 labels default-empty-labels}}]
(let [instance (.labels instance (if (is-array? labels) labels (into-array String labels)))]
(.inc ^Counter$Child instance (double inc))))}))
(defn make-gauge
[{:keys [name help registry reg labels] :as props}]
(let [registry (or registry reg)
instance (.. (Gauge/build)
(name name)
(help help))
_ (when (seq labels)
(.labelNames instance (into-array String labels)))
instance (.register instance registry)]
{::instance instance
::fn (fn [{:keys [inc dec labels val] :or {labels default-empty-labels}}]
(let [instance (.labels ^Gauge instance (if (is-array? labels) labels (into-array String labels)))]
(cond (number? inc) (.inc ^Gauge$Child instance (double inc))
(number? dec) (.dec ^Gauge$Child instance (double dec))
(number? val) (.set ^Gauge$Child instance (double val)))))}))
(defn make-summary
[{:keys [name help registry reg labels max-age quantiles buckets]
:or {max-age 3600 buckets 12 quantiles default-quantiles} :as props}]
(let [registry (or registry reg)
builder (doto (Summary/build)
(.name name)
(.help help))
_ (when (seq quantiles)
(.maxAgeSeconds ^Summary$Builder builder ^long max-age)
(.ageBuckets ^Summary$Builder builder buckets))
_ (doseq [[q e] quantiles]
(.quantile ^Summary$Builder builder q e))
_ (when (seq labels)
(.labelNames ^Summary$Builder builder (into-array String labels)))
instance (.register ^Summary$Builder builder registry)]
{::instance instance
::fn (fn [{:keys [val labels] :or {labels default-empty-labels}}]
(let [instance (.labels ^Summary instance (if (is-array? labels) labels (into-array String labels)))]
(.observe ^Summary$Child instance val)))}))
(defn make-histogram
[{:keys [name help registry reg labels buckets]
:or {buckets default-histogram-buckets}}]
(let [registry (or registry reg)
instance (doto (Histogram/build)
(.name name)
(.help help)
(.buckets (into-array Double/TYPE buckets)))
_ (when (seq labels)
(.labelNames instance (into-array String labels)))
instance (.register instance registry)]
{::instance instance
::fn (fn [{:keys [val labels] :or {labels default-empty-labels}}]
(let [instance (.labels ^Histogram instance (if (is-array? labels) labels (into-array String labels)))]
(.observe ^Histogram$Child instance val)))}))
(defn create
[{:keys [type] :as props}]
(case type
:counter (make-counter props)
:gauge (make-gauge props)
:summary (make-summary props)
:histogram (make-histogram props)))
(defn instrument-jetty!
[^CollectorRegistry registry ^StatisticsHandler handler]
(doto (JettyStatisticsCollector. handler)
(.register registry))
nil)

View File

@@ -0,0 +1,214 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.migrations
(:require
[app.migrations.migration-0023 :as mg0023]
[app.util.migrations :as mg]
[integrant.core :as ig]))
(def migrations
[{:name "0001-add-extensions"
:fn (mg/resource "app/migrations/sql/0001-add-extensions.sql")}
{:name "0002-add-profile-tables"
:fn (mg/resource "app/migrations/sql/0002-add-profile-tables.sql")}
{:name "0003-add-project-tables"
:fn (mg/resource "app/migrations/sql/0003-add-project-tables.sql")}
{:name "0004-add-tasks-tables"
:fn (mg/resource "app/migrations/sql/0004-add-tasks-tables.sql")}
{:name "0005-add-libraries-tables"
:fn (mg/resource "app/migrations/sql/0005-add-libraries-tables.sql")}
{:name "0006-add-presence-tables"
:fn (mg/resource "app/migrations/sql/0006-add-presence-tables.sql")}
{:name "0007-drop-version-field-from-page-table"
:fn (mg/resource "app/migrations/sql/0007-drop-version-field-from-page-table.sql")}
{:name "0008-add-generic-token-table"
:fn (mg/resource "app/migrations/sql/0008-add-generic-token-table.sql")}
{:name "0009-drop-profile-email-table"
:fn (mg/resource "app/migrations/sql/0009-drop-profile-email-table.sql")}
{:name "0010-add-http-session-table"
:fn (mg/resource "app/migrations/sql/0010-add-http-session-table.sql")}
{:name "0011-add-session-id-field-to-page-change-table"
:fn (mg/resource "app/migrations/sql/0011-add-session-id-field-to-page-change-table.sql")}
{:name "0012-make-libraries-linked-to-a-file"
:fn (mg/resource "app/migrations/sql/0012-make-libraries-linked-to-a-file.sql")}
{:name "0013-mark-files-shareable"
:fn (mg/resource "app/migrations/sql/0013-mark-files-shareable.sql")}
{:name "0014-refactor-media-storage.sql"
:fn (mg/resource "app/migrations/sql/0014-refactor-media-storage.sql")}
{:name "0015-improve-tasks-tables"
:fn (mg/resource "app/migrations/sql/0015-improve-tasks-tables.sql")}
{:name "0016-truncate-and-alter-tokens-table"
:fn (mg/resource "app/migrations/sql/0016-truncate-and-alter-tokens-table.sql")}
{:name "0017-link-files-to-libraries"
:fn (mg/resource "app/migrations/sql/0017-link-files-to-libraries.sql")}
{:name "0018-add-file-trimming-triggers"
:fn (mg/resource "app/migrations/sql/0018-add-file-trimming-triggers.sql")}
{:name "0019-add-improved-scheduled-tasks"
:fn (mg/resource "app/migrations/sql/0019-add-improved-scheduled-tasks.sql")}
{:name "0020-minor-fixes-to-media-object"
:fn (mg/resource "app/migrations/sql/0020-minor-fixes-to-media-object.sql")}
{:name "0021-http-session-improvements"
:fn (mg/resource "app/migrations/sql/0021-http-session-improvements.sql")}
{:name "0022-page-file-refactor"
:fn (mg/resource "app/migrations/sql/0022-page-file-refactor.sql")}
{:name "0023-adapt-old-pages-and-files"
:fn mg0023/migrate}
{:name "0024-mod-profile-table"
:fn (mg/resource "app/migrations/sql/0024-mod-profile-table.sql")}
{:name "0025-del-generic-tokens-table"
:fn (mg/resource "app/migrations/sql/0025-del-generic-tokens-table.sql")}
{:name "0026-mod-file-library-rel-table-synced-date"
:fn (mg/resource "app/migrations/sql/0026-mod-file-library-rel-table-synced-date.sql")}
{:name "0027-mod-file-table-ignore-sync"
:fn (mg/resource "app/migrations/sql/0027-mod-file-table-ignore-sync.sql")}
{:name "0028-add-team-project-profile-rel-table"
:fn (mg/resource "app/migrations/sql/0028-add-team-project-profile-rel-table.sql")}
{:name "0029-del-project-profile-rel-indexes"
:fn (mg/resource "app/migrations/sql/0029-del-project-profile-rel-indexes.sql")}
{:name "0030-mod-file-table-add-missing-index"
:fn (mg/resource "app/migrations/sql/0030-mod-file-table-add-missing-index.sql")}
{:name "0031-add-conversation-related-tables"
:fn (mg/resource "app/migrations/sql/0031-add-conversation-related-tables.sql")}
{:name "0032-del-unused-tables"
:fn (mg/resource "app/migrations/sql/0032-del-unused-tables.sql")}
{:name "0033-mod-comment-thread-table"
:fn (mg/resource "app/migrations/sql/0033-mod-comment-thread-table.sql")}
{:name "0034-mod-profile-table-add-props-field"
:fn (mg/resource "app/migrations/sql/0034-mod-profile-table-add-props-field.sql")}
{:name "0035-add-storage-tables"
:fn (mg/resource "app/migrations/sql/0035-add-storage-tables.sql")}
{:name "0036-mod-storage-referenced-tables"
:fn (mg/resource "app/migrations/sql/0036-mod-storage-referenced-tables.sql")}
{:name "0037-del-obsolete-triggers"
:fn (mg/resource "app/migrations/sql/0037-del-obsolete-triggers.sql")}
{:name "0038-add-storage-on-delete-triggers"
:fn (mg/resource "app/migrations/sql/0038-add-storage-on-delete-triggers.sql")}
{:name "0039-fix-some-on-delete-triggers"
:fn (mg/resource "app/migrations/sql/0039-fix-some-on-delete-triggers.sql")}
{:name "0040-add-error-report-tables"
:fn (mg/resource "app/migrations/sql/0040-add-error-report-tables.sql")}
{:name "0041-mod-pg-storage-options"
:fn (mg/resource "app/migrations/sql/0041-mod-pg-storage-options.sql")}
{:name "0042-add-server-prop-table"
:fn (mg/resource "app/migrations/sql/0042-add-server-prop-table.sql")}
{:name "0043-drop-old-tables-and-fields"
:fn (mg/resource "app/migrations/sql/0043-drop-old-tables-and-fields.sql")}
{:name "0044-add-storage-refcount"
:fn (mg/resource "app/migrations/sql/0044-add-storage-refcount.sql")}
{:name "0045-add-index-to-file-change-table"
:fn (mg/resource "app/migrations/sql/0045-add-index-to-file-change-table.sql")}
{:name "0046-add-profile-complaint-table"
:fn (mg/resource "app/migrations/sql/0046-add-profile-complaint-table.sql")}
{:name "0047-mod-file-change-table"
:fn (mg/resource "app/migrations/sql/0047-mod-file-change-table.sql")}
{:name "0048-mod-storage-tables"
:fn (mg/resource "app/migrations/sql/0048-mod-storage-tables.sql")}
{:name "0049-mod-http-session-table"
:fn (mg/resource "app/migrations/sql/0049-mod-http-session-table.sql")}
{:name "0050-mod-server-prop-table"
:fn (mg/resource "app/migrations/sql/0050-mod-server-prop-table.sql")}
{:name "0051-mod-file-library-rel-table"
:fn (mg/resource "app/migrations/sql/0051-mod-file-library-rel-table.sql")}
{:name "0052-del-legacy-user-and-team"
:fn (mg/resource "app/migrations/sql/0052-del-legacy-user-and-team.sql")}
{:name "0053-add-team-font-variant-table"
:fn (mg/resource "app/migrations/sql/0053-add-team-font-variant-table.sql")}
{:name "0054-add-audit-log-table"
:fn (mg/resource "app/migrations/sql/0054-add-audit-log-table.sql")}
{:name "0055-mod-file-media-object-table"
:fn (mg/resource "app/migrations/sql/0055-mod-file-media-object-table.sql")}
{:name "0056-add-missing-index-on-deleted-at"
:fn (mg/resource "app/migrations/sql/0056-add-missing-index-on-deleted-at.sql")}
{:name "0057-del-profile-on-delete-trigger"
:fn (mg/resource "app/migrations/sql/0057-del-profile-on-delete-trigger.sql")}
{:name "0058-del-team-on-delete-trigger"
:fn (mg/resource "app/migrations/sql/0058-del-team-on-delete-trigger.sql")}
{:name "0059-mod-audit-log-table"
:fn (mg/resource "app/migrations/sql/0059-mod-audit-log-table.sql")}
{:name "0060-mod-file-change-table"
:fn (mg/resource "app/migrations/sql/0060-mod-file-change-table.sql")}
{:name "0061-mod-file-table"
:fn (mg/resource "app/migrations/sql/0061-mod-file-table.sql")}
{:name "0062-fix-metadata-media"
:fn (mg/resource "app/migrations/sql/0062-fix-metadata-media.sql")}
{:name "0063-add-share-link-table"
:fn (mg/resource "app/migrations/sql/0063-add-share-link-table.sql")}
{:name "0064-mod-audit-log-table"
:fn (mg/resource "app/migrations/sql/0064-mod-audit-log-table.sql")}
{:name "0065-add-trivial-spelling-fixes"
:fn (mg/resource "app/migrations/sql/0065-add-trivial-spelling-fixes.sql")}
{:name "0066-add-frame-thumbnail-table"
:fn (mg/resource "app/migrations/sql/0066-add-frame-thumbnail-table.sql")}
])
(defmethod ig/init-key ::migrations [_ _] migrations)

View File

@@ -0,0 +1,61 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) UXBOX Labs SL
(ns app.migrations.migration-0023
(:require
[app.db :as db]
[app.util.blob :as blob]))
(defn decode-row
[{:keys [data] :as row}]
(when row
(cond-> row
data (assoc :data (blob/decode data)))))
(defn retrieve-files
[conn]
(->> (db/exec! conn ["select * from file;"])
(map decode-row)))
(defn retrieve-pages
[conn file-id]
(->> (db/query conn :page {:file-id file-id})
(map decode-row)
(sort-by :ordering)))
(def empty-file-data
{:version 1
:pages []
:pages-index {}})
(defn pages->data
[pages]
(reduce (fn [acc {:keys [id data name] :as page}]
(let [data (-> data
(dissoc :version)
(assoc :id id :name name))]
(-> acc
(update :pages (fnil conj []) id)
(update :pages-index assoc id data))))
empty-file-data
pages))
(defn migrate-file
[conn {:keys [id] :as file}]
(let [pages (retrieve-pages conn (:id file))
data (pages->data pages)]
(db/update! conn :file
{:data (blob/encode data)}
{:id id})))
(defn migrate
[conn]
(let [files (retrieve-files conn)]
(doseq [file files]
(when (nil? (:data file))
(migrate-file conn file)))
(db/exec-one! conn ["drop table page cascade;"])))

View File

@@ -0,0 +1,25 @@
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE FUNCTION update_modified_at()
RETURNS TRIGGER AS $updt$
BEGIN
NEW.modified_at := clock_timestamp();
RETURN NEW;
END;
$updt$ LANGUAGE plpgsql;
CREATE TABLE pending_to_delete (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
type text NOT NULL,
data jsonb NOT NULL
);
CREATE FUNCTION handle_delete()
RETURNS TRIGGER AS $pagechange$
BEGIN
INSERT INTO pending_to_delete (type, data)
VALUES (TG_TABLE_NAME, row_to_json(OLD));
RETURN OLD;
END;
$pagechange$ LANGUAGE plpgsql;

View File

@@ -0,0 +1,149 @@
CREATE TABLE profile (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz NULL,
fullname text NOT NULL DEFAULT '',
email text NOT NULL,
photo text NOT NULL,
password text NOT NULL,
lang text NULL,
theme text NULL,
is_demo boolean NOT NULL DEFAULT false
);
CREATE UNIQUE INDEX profile__email__idx
ON profile (email)
WHERE deleted_at IS null;
CREATE INDEX profile__is_demo
ON profile (is_demo)
WHERE deleted_at IS null
AND is_demo IS true;
INSERT INTO profile (id, fullname, email, photo, password)
VALUES ('00000000-0000-0000-0000-000000000000'::uuid,
'System Profile',
'system@uxbox.io',
'',
'!');
--- NOTE: this table is deleted in the next migrations
CREATE TABLE profile_email (
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
verified_at timestamptz NULL DEFAULT NULL,
email text NOT NULL,
is_main boolean NOT NULL DEFAULT false,
is_verified boolean NOT NULL DEFAULT false
);
CREATE INDEX profile_email__profile_id__idx
ON profile_email (profile_id);
CREATE UNIQUE INDEX profile_email__email__idx
ON profile_email (email);
CREATE TABLE team (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz NULL,
name text NOT NULL,
photo text NOT NULL,
is_default boolean NOT NULL DEFAULT false
);
CREATE TRIGGER team__modified_at__tgr
BEFORE UPDATE ON team
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
INSERT INTO team (id, name, photo, is_default)
VALUES ('00000000-0000-0000-0000-000000000000'::uuid,
'System Team',
'',
true);
CREATE TABLE team_profile_rel (
team_id uuid NOT NULL REFERENCES team(id) ON DELETE CASCADE,
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE RESTRICT,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
is_admin boolean DEFAULT false,
is_owner boolean DEFAULT false,
can_edit boolean DEFAULT false,
PRIMARY KEY (team_id, profile_id)
);
COMMENT ON TABLE team_profile_rel
IS 'Relation between teams and profiles (NM)';
CREATE TRIGGER team_profile_rel__modified_at__tgr
BEFORE UPDATE ON team_profile_rel
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE profile_attr (
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
key text NOT NULL,
val bytea NOT NULL,
PRIMARY KEY (key, profile_id)
);
CREATE INDEX profile_attr__profile_id__idx
ON profile_attr(profile_id);
CREATE TRIGGER profile_attr__modified_at__tgr
BEFORE UPDATE ON profile_attr
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
--- NOTE: this table is removed in the following migrations
CREATE TABLE password_recovery_token (
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
token text NOT NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
used_at timestamptz NULL,
PRIMARY KEY (profile_id, token)
);
CREATE TABLE session (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
profile_id uuid REFERENCES profile(id) ON DELETE CASCADE,
user_agent text NULL
);
CREATE INDEX session__profile_id__idx
ON session(profile_id);

View File

@@ -0,0 +1,215 @@
CREATE TABLE project (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
team_id uuid NOT NULL REFERENCES team(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
is_default boolean NOT NULL DEFAULT false,
name text NOT NULL
);
CREATE INDEX project__team_id__idx
ON project(team_id);
CREATE TABLE project_profile_rel (
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
project_id uuid NOT NULL REFERENCES project(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
is_owner boolean DEFAULT false,
is_admin boolean DEFAULT false,
can_edit boolean DEFAULT false,
PRIMARY KEY (profile_id, project_id)
);
CREATE INDEX project_profile_rel__profile_id__idx
ON project_profile_rel(profile_id);
CREATE INDEX project_profile_rel__project_id__idx
ON project_profile_rel(project_id);
CREATE TABLE file (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id uuid NOT NULL REFERENCES project(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL
);
CREATE TABLE file_profile_rel (
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
is_owner boolean DEFAULT false,
is_admin boolean DEFAULT false,
can_edit boolean DEFAULT false,
PRIMARY KEY (file_id, profile_id)
);
COMMENT ON TABLE file_profile_rel
IS 'Relation between files and profiles (NM)';
CREATE INDEX file_profile_rel__profile_id__idx
ON file_profile_rel(profile_id);
CREATE INDEX file_profile_rel__file_id__idx
ON file_profile_rel(file_id);
CREATE TRIGGER file_profile_rel__modified_at__tgr
BEFORE UPDATE ON file_profile_rel
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE file_image (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL,
path text NOT NULL,
width int NOT NULL,
height int NOT NULL,
mtype text NOT NULL,
thumb_path text NOT NULL,
thumb_width int NOT NULL,
thumb_height int NOT NULL,
thumb_quality int NOT NULL,
thumb_mtype text NOT NULL
);
CREATE INDEX file_image__file_id__idx
ON file_image(file_id);
CREATE TRIGGER file_image__modified_at__tgr
BEFORE UPDATE ON file_image
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TRIGGER file_image__on_delete__tgr
AFTER DELETE ON file_image
FOR EACH ROW EXECUTE PROCEDURE handle_delete();
CREATE TABLE page (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
version bigint NOT NULL DEFAULT 0,
revn bigint NOT NULL DEFAULT 0,
share_token text NULL DEFAULT NULL,
ordering smallint NOT NULL,
name text NOT NULL,
data bytea NOT NULL
);
CREATE INDEX page__file_id__idx
ON page(file_id);
ALTER TABLE page
ALTER COLUMN data SET STORAGE EXTERNAL,
ALTER COLUMN share_token SET STORAGE PLAIN;
CREATE FUNCTION handle_page_update()
RETURNS TRIGGER AS $pagechange$
DECLARE
current_dt timestamptz := clock_timestamp();
proj_id uuid;
BEGIN
NEW.modified_at := current_dt;
UPDATE file
SET modified_at = current_dt
WHERE id = OLD.file_id
RETURNING project_id
INTO STRICT proj_id;
--- Update projects modified_at attribute when a
--- page of that project is modified.
UPDATE project
SET modified_at = current_dt
WHERE id = proj_id;
RETURN NEW;
END;
$pagechange$ LANGUAGE plpgsql;
CREATE TRIGGER page__on_update__tgr
BEFORE UPDATE ON page
FOR EACH ROW EXECUTE PROCEDURE handle_page_update();
CREATE TABLE page_version (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
page_id uuid NOT NULL REFERENCES page(id) ON DELETE CASCADE,
profile_id uuid NULL REFERENCES profile(id) ON DELETE SET NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
version bigint NOT NULL DEFAULT 0,
label text NOT NULL DEFAULT '',
data bytea NOT NULL,
changes bytea NULL DEFAULT NULL
);
CREATE INDEX page_version__profile_id__idx
ON page_version(profile_id);
CREATE INDEX page_version__page_id__idx
ON page_version(page_id);
CREATE TRIGGER page_version__modified_at__tgr
BEFORE UPDATE ON page_version
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE page_change (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
page_id uuid NOT NULL REFERENCES page(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
revn bigint NOT NULL DEFAULT 0,
label text NOT NULL DEFAULT '',
data bytea NOT NULL,
changes bytea NULL DEFAULT NULL
);
CREATE INDEX page_change__page_id__idx
ON page_change(page_id);
CREATE TRIGGER page_change__modified_at__tgr
BEFORE UPDATE ON page_change
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();

View File

@@ -0,0 +1,40 @@
CREATE TABLE task (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
completed_at timestamptz NULL DEFAULT NULL,
scheduled_at timestamptz NOT NULL,
priority smallint DEFAULT 100,
queue text NOT NULL,
name text NOT NULL,
props bytea NOT NULL,
error text NULL DEFAULT NULL,
retry_num smallint NOT NULL DEFAULT 0,
status text NOT NULL DEFAULT 'new'
);
CREATE INDEX task__scheduled_at__queue__idx
ON task (scheduled_at, queue);
CREATE TRIGGER task__modified_at__tgr
BEFORE UPDATE ON task
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE scheduled_task (
id text PRIMARY KEY,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
executed_at timestamptz NULL DEFAULT NULL,
cron_expr text NOT NULL
);
CREATE TRIGGER scheduled_task__modified_at__tgr
BEFORE UPDATE ON scheduled_task
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();

View File

@@ -0,0 +1,136 @@
CREATE TABLE image_library (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
team_id uuid NOT NULL REFERENCES team(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL
);
CREATE INDEX image_library__team_id__idx
ON image_library(team_id);
CREATE TRIGGER image_library__modified_at__tgr
BEFORE UPDATE ON image_library
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE image (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
library_id uuid NOT NULL REFERENCES image_library(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL,
path text NOT NULL,
width int NOT NULL,
height int NOT NULL,
mtype text NOT NULL,
thumb_path text NOT NULL,
thumb_width int NOT NULL,
thumb_height int NOT NULL,
thumb_quality int NOT NULL,
thumb_mtype text NOT NULL
);
CREATE INDEX image__library_id__idx
ON image(library_id);
CREATE TRIGGER image__modified_at__tgr
BEFORE UPDATE ON image
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TRIGGER image__on_delete__tgr
AFTER DELETE ON image
FOR EACH ROW EXECUTE PROCEDURE handle_delete();
CREATE TABLE icon_library (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
team_id uuid NOT NULL REFERENCES team(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL
);
CREATE INDEX icon_colection__team_id__idx
ON icon_library (team_id);
CREATE TRIGGER icon_library__modified_at__tgr
BEFORE UPDATE ON icon_library
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE icon (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
library_id uuid REFERENCES icon_library(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL,
content text NOT NULL,
metadata bytea NOT NULL
);
CREATE INDEX icon__library_id__idx
ON icon(library_id);
CREATE TRIGGER icon__modified_at__tgr
BEFORE UPDATE ON icon
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE color_library (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
team_id uuid NOT NULL REFERENCES team(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL
);
CREATE INDEX color_colection__team_id__idx
ON color_library (team_id);
CREATE TRIGGER color_library__modified_at__tgr
BEFORE UPDATE ON color_library
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE color (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
library_id uuid REFERENCES color_library(id) ON DELETE CASCADE,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
deleted_at timestamptz DEFAULT NULL,
name text NOT NULL,
content text NOT NULL
);
CREATE INDEX color__library_id__idx
ON color(library_id);
CREATE TRIGGER color__modified_at__tgr
BEFORE UPDATE ON color
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();

View File

@@ -0,0 +1,9 @@
CREATE TABLE presence (
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
profile_id uuid NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
session_id uuid NOT NULL,
updated_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY (file_id, session_id, profile_id)
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE page
DROP COLUMN version;

View File

@@ -0,0 +1,14 @@
--- Delete previously token related tables
DROP TABLE password_recovery_token;
--- Create a new generic table for store tokens.
CREATE TABLE generic_token (
token text PRIMARY KEY,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
valid_until timestamptz NOT NULL,
content bytea NOT NULL
);
COMMENT ON TABLE generic_token IS 'Table for generic tokens storage';

View File

@@ -0,0 +1,6 @@
DROP INDEX profile_email__profile_id__idx;
DROP INDEX profile_email__email__idx;
DROP TABLE profile_email;
ALTER TABLE profile
ADD COLUMN pending_email text NULL;

View File

@@ -0,0 +1,14 @@
DROP TABLE session;
CREATE TABLE http_session (
id text PRIMARY KEY,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
profile_id uuid REFERENCES profile(id) ON DELETE CASCADE,
user_agent text NULL
);
CREATE INDEX http_session__profile_id__idx
ON http_session(profile_id);

View File

@@ -0,0 +1,2 @@
ALTER TABLE page_change
ADD COLUMN session_id uuid DEFAULT NULL;

View File

@@ -0,0 +1,21 @@
TRUNCATE TABLE color;
TRUNCATE TABLE color_library CASCADE;
TRUNCATE TABLE image;
TRUNCATE TABLE image_library CASCADE;
TRUNCATE TABLE icon;
TRUNCATE TABLE icon_library CASCADE;
ALTER TABLE color
DROP COLUMN library_id,
ADD COLUMN file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE;
CREATE INDEX color__file_id__idx
ON color(file_id);
ALTER TABLE image
DROP COLUMN library_id,
ADD COLUMN file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE;
CREATE INDEX image__file_id__idx
ON image(file_id);

View File

@@ -0,0 +1,9 @@
ALTER TABLE file
ADD COLUMN is_shared BOOLEAN NOT NULL DEFAULT false;
UPDATE file
SET is_shared = true
WHERE project_id IN (SELECT id
FROM project
WHERE team_id = uuid_nil());

View File

@@ -0,0 +1,46 @@
ALTER TABLE image
RENAME TO media_object;
ALTER TABLE media_object
ADD COLUMN is_local boolean NOT NULL DEFAULT false;
INSERT INTO media_object
(id, file_id, created_at, modified_at, deleted_at, name, path,
width, height, mtype, thumb_path, thumb_width, thumb_height,
thumb_quality, thumb_mtype, is_local)
(SELECT id, file_id, created_at, modified_at, deleted_at, name, path,
width, height, mtype, thumb_path, thumb_width, thumb_height,
thumb_quality, thumb_mtype, true
FROM file_image);
CREATE TABLE media_thumbnail (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
media_object_id uuid NOT NULL REFERENCES media_object(id) ON DELETE CASCADE,
mtype text NOT NULL,
path text NOT NULL,
width int NOT NULL,
height int NOT NULL,
quality int NOT NULL
);
CREATE INDEX media_thumbnail__media_object_id__idx
ON media_thumbnail(media_object_id);
INSERT INTO media_thumbnail
(media_object_id, mtype, path, width, height, quality)
(SELECT id, thumb_mtype, thumb_path, thumb_width, thumb_height, thumb_quality
FROM media_object);
ALTER TABLE media_object
DROP COLUMN thumb_mtype,
DROP COLUMN thumb_path,
DROP COLUMN thumb_width,
DROP COLUMN thumb_height,
DROP COLUMN thumb_quality;
DROP TABLE color_library;
DROP TABLE icon;
DROP TABLE icon_library;
DROP TABLE image_library;
DROP TABLE file_image;

View File

@@ -0,0 +1,37 @@
DROP TABLE IF EXISTS task;
CREATE TABLE task (
id uuid DEFAULT uuid_generate_v4(),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
completed_at timestamptz NULL DEFAULT NULL,
scheduled_at timestamptz NOT NULL,
priority smallint DEFAULT 100,
queue text NOT NULL,
name text NOT NULL,
props jsonb NOT NULL,
error text NULL DEFAULT NULL,
retry_num smallint NOT NULL DEFAULT 0,
max_retries smallint NOT NULL DEFAULT 3,
status text NOT NULL DEFAULT 'new',
PRIMARY KEY (id, status)
) PARTITION BY list(status);
CREATE TABLE task_completed partition OF task FOR VALUES IN ('completed', 'failed');
CREATE TABLE task_default partition OF task default;
CREATE INDEX task__scheduled_at__queue__idx
ON task (scheduled_at, queue)
WHERE status = 'new' or status = 'retry';
ALTER TABLE task
ALTER COLUMN queue SET STORAGE external,
ALTER COLUMN name SET STORAGE external,
ALTER COLUMN props SET STORAGE external,
ALTER COLUMN status SET STORAGE external,
ALTER COLUMN error SET STORAGE external;

View File

@@ -0,0 +1,3 @@
delete from generic_token;
alter table generic_token drop column content;
alter table generic_token add column content jsonb not null;

View File

@@ -0,0 +1,15 @@
CREATE TABLE file_library_rel (
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
library_file_id uuid NOT NULL REFERENCES file(id) ON DELETE RESTRICT,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY (file_id, library_file_id)
);
COMMENT ON TABLE file_library_rel
IS 'Relation between files and the shared library files they use (NM)';
CREATE INDEX file_library_rel__file_id__idx
ON file_library_rel(file_id);

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