Compare commits

...

782 Commits

Author SHA1 Message Date
Kitaiti Makoto 3cb6f86ea2 Install remove-dup-image into Docker image 2021-03-29 00:34:30 +09:00
Kitaiti Makoto e0f91f7481 Add remove-dup-images command 2021-03-28 20:54:53 +09:00
Kitaiti Makoto 58324945cc Add migration to add index to medias.file_path for SQLite3 2021-03-28 17:34:41 +09:00
KitaitiMakoto 16953ea907 Merge pull request 'Upsert posts and media when fetching remote posts' (#912) from upsert into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/912
2021-03-27 19:27:59 +00:00
Kitaiti Makoto d3c2dc8286 Add changelog on upsert 2021-03-28 04:27:06 +09:00
Kitaiti Makoto ebb0b45299 Create blog_authors only when needed 2021-03-28 04:26:17 +09:00
Kitaiti Makoto 702aa11ecf Don't drop path components of image URI 2021-03-28 04:26:17 +09:00
Kitaiti Makoto 33221d386e Upsert Post in from_activity() 2021-03-28 04:26:17 +09:00
Kitaiti Makoto 589c159eb9 Call Post::publish_updated() only for local posts 2021-03-28 04:26:17 +09:00
Kitaiti Makoto ea1f4d48d5 Upsert Media in from_activity() 2021-03-28 04:26:17 +09:00
Kitaiti Makoto 462c5a1d42 Define Media::find_by_file_path() 2021-03-28 04:26:17 +09:00
Kitaiti Makoto f90d7ddee3 Add SQL to add/drop index to/from medias.file_path 2021-03-28 04:26:17 +09:00
Kitaiti Makoto 175055cf9d Add migration to add index to medias.file_path
% diesel migration generate medias_index_file_path
2021-03-28 04:26:17 +09:00
KitaitiMakoto fe92d95f6c Merge pull request 'Make actors subscribe to channel once' (#913) from remote-fetch-once into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/913
2021-03-27 19:25:22 +00:00
Kitaiti Makoto 8e50d95a7a Fix code according to clippy 2021-03-28 03:46:37 +09:00
Kitaiti Makoto 9ed36b2aa3 Add changelog on actor subscription fix 2021-03-28 03:12:20 +09:00
Kitaiti Makoto 722165a734 Upgrade lexical-core crate 2021-03-28 01:39:41 +09:00
Kitaiti Makoto 74f99e2588 Upgrade Rust version 2021-03-28 01:39:26 +09:00
Kitaiti Makoto 77c08845b5 [BUG FIX]Make SearchActor subscribe to channel once 2021-03-27 23:55:26 +09:00
Kitaiti Makoto 2bfc26faf2 [BUG FIX]Make RemoveFetchActor subscribe to channel once 2021-03-27 23:54:09 +09:00
KitaitiMakoto c26f2623a8 Merge pull request 'Fix #905 Prevent remote image duplication' (#907) from dup-remote-image into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/907
2021-02-18 06:10:27 +00:00
Kitaiti Makoto 451c3b5c88 Add TODO comments 2021-02-18 11:35:39 +09:00
Kitaiti Makoto af5674074d Revert "Save remote post only when it doesn't exist on local"
This reverts commit 37cbf537bb.
2021-02-18 11:34:20 +09:00
Kitaiti Makoto 28380021a7 Determine file path of mirror of remote image using the URI 2021-02-18 01:23:57 +09:00
Kitaiti Makoto 37cbf537bb Save remote post only when it doesn't exist on local 2021-02-16 23:48:09 +09:00
KitaitiMakoto 9345a1b7a9 Merge pull request 'Make images in post card links' (#900) from image-link into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/900
2021-02-15 01:42:21 +00:00
Kitaiti Makoto d18f1d6d1d Indicate images in post card clickable 2021-02-15 10:17:41 +09:00
Kitaiti Makoto 621258481d Make images in post card link 2021-02-15 10:17:22 +09:00
KitaitiMakoto ce285bac17 Merge pull request 'Make links in menu work on iOS' (#899) from menu into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/899
2021-02-14 15:02:03 +00:00
KitaitiMakoto a7e45bee11 Merge pull request 'Make it possible to open menu on iOS mobile devices' (#897) from menu into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/897
2021-02-14 14:56:55 +00:00
KitaitiMakoto 73e075e216 Merge pull request 'Fix #890 Fix interact URI used from remote account to remote account' (#898) from remote-follow-from-remote into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/898
2021-02-14 14:40:25 +00:00
Kitaiti Makoto b7c7b6da9f Percent encode remote interact URI 2021-02-14 22:59:01 +09:00
Kitaiti Makoto 703328601c [BUG FIX] Don't append host part twice to remote interact URI 2021-02-14 22:15:32 +09:00
Kitaiti Makoto b2e7664339 Extract User::acct_authority() method 2021-02-14 22:14:44 +09:00
Kitaiti Makoto ed22c6b103 Make links in menu work on iOS 2021-02-13 23:40:18 +09:00
Kitaiti Makoto 94ccbd6190 Move Rust flag for plume-front to .cargo/config.toml from env var 2021-02-13 22:53:20 +09:00
Kitaiti Makoto 77edc4849f Add current pull request to changelog 2021-02-13 22:23:03 +09:00
Kitaiti Makoto 07da97f434 Revert "Remove unused diesel_cli from Docker env image"
This reverts commit 056d68804a.
2021-02-13 19:36:57 +09:00
Kitaiti Makoto 89dd6be7dd Fix design 2021-02-12 19:28:45 +09:00
Kitaiti Makoto 60c1a4264e Fix indentation 2021-02-12 19:21:36 +09:00
Kitaiti Makoto c4c177c530 Remove unnecessary CSS properties 2021-02-12 19:21:02 +09:00
Kitaiti Makoto 4a5bffbd57 Update base Docker image for buildenv 2021-02-12 19:10:54 +09:00
Kitaiti Makoto 49b2296015 Revert "Install rustfmt and cargo-clippy explicitly in dev env"
This reverts commit 347bc653d8.
2021-02-12 19:08:33 +09:00
Kitaiti Makoto 0ef4a06565 Revert "Install zip package in Docker dev image"
This reverts commit b55c2ff2f0.
2021-02-12 19:07:26 +09:00
Kitaiti Makoto 16b1337d67 Add WAI-ARIA attributes to menu 2021-02-12 18:54:42 +09:00
Kitaiti Makoto 6599179174 Use document() function 2021-02-12 18:48:33 +09:00
Kitaiti Makoto f2411f4607 Use a element instead of nav to capture touchend event 2021-02-12 18:26:05 +09:00
Kitaiti Makoto 2c3d429b8e Suppress Clippy 2021-02-12 18:20:48 +09:00
Kitaiti Makoto 7562cf1e75 Open menu even when focus-within code doesn't work 2021-02-12 18:18:45 +09:00
Kitaiti Makoto de1c3f3245 Move document() from plume_front::editor to plume_front 2021-02-12 18:12:38 +09:00
Kitaiti Makoto 5d38c3ad70 Fix file name 2021-02-12 18:11:49 +09:00
Kitaiti Makoto b55c2ff2f0 Install zip package in Docker dev image 2021-02-12 14:38:15 +09:00
Kitaiti Makoto 056d68804a Remove unused diesel_cli from Docker env image 2021-02-12 14:35:06 +09:00
Kitaiti Makoto 347bc653d8 Install rustfmt and cargo-clippy explicitly in dev env 2021-02-12 14:34:32 +09:00
Kitaiti Makoto 6fcece3bc0 Follow file name change 2021-02-12 13:31:22 +09:00
Kitaiti Makoto e119c5bde9 Update Docker image for testing 2021-02-12 13:10:32 +09:00
Kitaiti Makoto 1bc2749e1b Return when required element is not present 2021-02-12 05:00:42 +09:00
Kitaiti Makoto 58bb07d11d Remove unused stdweb crate from dependencies 2021-02-12 05:00:42 +09:00
Kitaiti Makoto affe24b9c6 Replace cargo-web with wasm-pack on build environment 2021-02-12 05:00:34 +09:00
Kitaiti Makoto 0bcf063b05 Remove old plume_front::main 2021-02-12 03:20:33 +09:00
Kitaiti Makoto 24ecb15119 Remplement plume_front::editor using web-sys 2021-02-12 03:19:46 +09:00
Kitaiti Makoto 208c515d70 Remove prefix 'web_sys' 2021-02-11 01:24:41 +09:00
Kitaiti Makoto d0ada7fc53 Reimplement search() in web-sys 2021-02-11 01:19:42 +09:00
Kitaiti Makoto d86bd898cb Prepare JavaScript on build process 2021-02-11 01:19:32 +09:00
Kitaiti Makoto db581a955b Reimplement menu() in web-sys 2021-02-10 23:51:09 +09:00
Kitaiti Makoto 0b8b1bf25f Load new JavaScript file 2021-02-10 23:50:41 +09:00
Kitaiti Makoto faab5f6b3b Make plume-front's type cdylib 2021-02-10 21:53:59 +09:00
Kitaiti Makoto 6387a1334b Add wasm-bindgen to plume-front's dependencies 2021-02-10 21:51:57 +09:00
KitaitiMakoto 10be055381 Merge pull request 'Fix #892 Build client for every inbox in broadcast()' (#895) from broadcast-timeout into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/895
2021-02-09 13:56:16 +00:00
Kitaiti Makoto 24c9c7b5a1 Build client for every inbox in broadcast() 2021-02-09 18:15:14 +09:00
KitaitiMakoto ac48744aca Merge pull request 'Fix #872 Include (request-target) and Host header to HTTP Signature' (#884) from httpsig into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/884
2021-02-06 19:19:36 +00:00
KitaitiMakoto f2d2ecb247 Merge pull request 'Raise jobs on CI' (#893) from ci-jobs into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/893
2021-02-06 19:18:21 +00:00
Kitaiti Makoto 1d46bf8d50 Reduce start jobs on CI 2021-02-07 03:28:07 +09:00
Kitaiti Makoto 4353f2a92d raise jobs on CI 2021-02-07 03:13:38 +09:00
Kitaiti Makoto 1b9aeae53c Add test for signagure() 2021-02-05 10:34:33 +09:00
Kitaiti Makoto 540b9af873 Add changelog about (request-target) 2021-02-04 22:14:25 +09:00
Kitaiti Makoto d08d2c6958 Care the case of invalid header value 2021-02-04 17:10:05 +09:00
Kitaiti Makoto 348259a14b Care about error case 2021-02-04 15:31:57 +09:00
KitaitiMakoto e68ca1151d Merge pull request 'Close #888 Extract DbConn from PlumeRocket' (#889) from extract-dbconn into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/889
2021-01-31 17:32:46 +00:00
Kitaiti Makoto 3c15f5a82f Merge branch 'main' into extract-dbconn 2021-02-01 02:31:45 +09:00
Kitaiti Makoto 5ba823990a Don't panic in loop 2021-02-01 01:36:36 +09:00
Kitaiti Makoto c82c38fe52 Comment on database connections 2021-02-01 01:16:52 +09:00
Kitaiti Makoto e7ab80d5c8 Move worker tasks in routes::user::details to RemoteFetchActor 2021-02-01 00:51:37 +09:00
Kitaiti Makoto 61b68c3a42 Initialize RemoteFetchActor 2021-02-01 00:50:48 +09:00
Kitaiti Makoto 6401cb6fb7 Define User::remote_user_found() and publish_remote_user_found() 2021-02-01 00:48:22 +09:00
Kitaiti Makoto 9d37408535 Define RemoteFetchActor 2021-01-31 22:56:17 +09:00
Kitaiti Makoto ded64e1cf0 Add USER_CHAN 2021-01-31 22:55:52 +09:00
Kitaiti Makoto 3b766fc427 Define UserEvent 2021-01-31 22:55:28 +09:00
Kitaiti Makoto ad285898f6 Replace PlumeRocket.conn with DbConn 2021-01-31 21:58:44 +09:00
Kitaiti Makoto 78be49d57d Make tests follow API changes 2021-01-31 21:58:44 +09:00
Kitaiti Makoto 25e52788c5 Replace PlumeRocket with DbConn where possible 2021-01-31 21:58:09 +09:00
Kitaiti Makoto 5d25a64f13 Remove DbConn from PlumeRocket 2021-01-31 21:58:09 +09:00
Kitaiti Makoto 0dc89fbf23 Set default log level to warn 2021-01-31 21:58:03 +09:00
KitaitiMakoto 94ed0eec2a Merge pull request 'Set default log level to warn' (#886) from loglevel-warn into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/886
2021-01-25 07:40:09 +00:00
Kitaiti Makoto d70e585b64 Set default log level to warn 2021-01-25 16:39:25 +09:00
KitaitiMakoto 8f55e50c6e Merge pull request 'Add default log level in .env.sample' (#885) from loglevel into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/885
2021-01-25 01:43:19 +00:00
Kitaiti Makoto c113c99e1d Add default log level in .env.sample 2021-01-25 09:41:40 +09:00
Kitaiti Makoto 191239584b Define RequestTarget 2021-01-25 02:16:53 +09:00
Kitaiti Makoto bd1caaf5da Include (request-target) and Host header to HTTP Signature 2021-01-25 02:16:53 +09:00
KitaitiMakoto 76f7b5e7ac Merge pull request 'Add shortcut links to edit page' (#883) from shortcut-links into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/883
2021-01-24 17:16:11 +00:00
Kitaiti Makoto afe449b951 Set ROCKET_SECRET_KEY on CI 2021-01-25 01:25:37 +09:00
Kitaiti Makoto 29f0712ea1 Init search index on CI 2021-01-25 00:46:26 +09:00
Kitaiti Makoto d091c24f79 Specify cpu count to build plume-cli 2021-01-25 00:27:45 +09:00
Kitaiti Makoto f9e7d2bb23 Remove all instances before testing 2021-01-25 00:06:40 +09:00
Kitaiti Makoto dbf36ddf05 Cache fetched instance 2021-01-25 00:06:40 +09:00
Kitaiti Makoto 8b00853e88 Make instance for search actor remote 2021-01-25 00:06:35 +09:00
Kitaiti Makoto 84a3d53075 Use uri! macro to generate URI strings 2021-01-24 23:30:24 +09:00
Kitaiti Makoto 7967dd91c2 Remove needless option; duplicated to env var 2021-01-24 23:30:24 +09:00
Kitaiti Makoto b5eb2628f9 Don't remove records after testing 2021-01-24 23:30:20 +09:00
Kitaiti Makoto 4ef6561cc6 Extract login() from test function 2021-01-24 21:38:51 +09:00
Kitaiti Makoto 7f54f418a8 Suppress clippy 2021-01-24 19:49:49 +09:00
Kitaiti Makoto 8f90ea18bf Add tests for edit link presence 2021-01-24 19:37:49 +09:00
Kitaiti Makoto e12528aae4 Extract launch_rocket() from main() as public within crate scope 2021-01-24 19:28:05 +09:00
Kitaiti Makoto 042a1fd2b0 Use Post::get_blog_fqn() in post_card template 2021-01-20 10:39:11 +09:00
Kitaiti Makoto be99fe5f99 Implement Post::get_blog_fqn() 2021-01-20 10:38:32 +09:00
Kitaiti Makoto 4a212e5f9e Use soft tabs instead of hard tabs in SCSS files 2021-01-17 23:14:46 +09:00
Kitaiti Makoto c253bdee54 Show edit link in post cards 2021-01-17 23:14:46 +09:00
KitaitiMakoto 46fc030df4 Merge pull request 'Search Actor' (#870) from search-actor into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/870
2021-01-17 14:13:54 +00:00
Kitaiti Makoto 02277b1ace Specify features on running migration on CI 2021-01-16 17:38:35 +09:00
Kitaiti Makoto ac507d1d42 Fix CI command 2021-01-16 16:50:57 +09:00
Kitaiti Makoto 5148349098 Add changlog about actor and searcher 2021-01-16 16:44:39 +09:00
Kitaiti Makoto e817941cc5 Update pot 2021-01-16 16:44:20 +09:00
Kitaiti Makoto 06962514fe Run database migration on CI 2021-01-16 16:39:12 +09:00
Kitaiti Makoto c3c8f6804b Remove transaction from test search::tests::search for CI 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 6dd730030d Wrap Post in PostEvent with Arc
See https://github.com/riker-rs/riker/issues/153
2021-01-16 16:39:12 +09:00
Kitaiti Makoto 6c1dd6608d Add test for search actor 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 42fb0cf825 Use pattern match instead of unwrap() 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 2483303138 SearchActor waits for transaction commit 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 47e67d9b64 Add methods to clear data of instances and users table for testing 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 1d042e1bb2 Add methods to clear data of instances and users table for testing 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 31418b1079 Fix search::tests::search to use searcher directly instead of actor 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 68d79bfa9c Publish PostUpdated only when the post is published 2021-01-16 16:39:12 +09:00
Kitaiti Makoto a46b718937 Ignore search::tests::search 2021-01-16 16:39:12 +09:00
Kitaiti Makoto 5570494a37 Update pot 2021-01-16 16:39:12 +09:00
Kitaiti Makoto a0cd9dd6bd Fix tests to follow API changes 2021-01-16 16:39:12 +09:00
Kitaiti Makoto cd5895d560 Update pot 2021-01-16 16:39:11 +09:00
Kitaiti Makoto fc8ee1c3bc Remove searcher from arguments of Post::delete() and dependented methods 2021-01-16 16:38:18 +09:00
Kitaiti Makoto 2a8cc5f3ba Send event to channel when post deleted 2021-01-16 16:36:14 +09:00
Kitaiti Makoto 82524c9dca Update pot 2021-01-16 16:35:27 +09:00
Kitaiti Makoto 864379fb81 Remove searcher from arguments of Post::update() 2021-01-16 16:34:36 +09:00
Kitaiti Makoto aae2073146 Send event to channel when post updated 2021-01-16 16:33:29 +09:00
Kitaiti Makoto 69963689f9 Update pot 2021-01-16 16:33:29 +09:00
Kitaiti Makoto 6ad3359609 Remove searcher from arguments of Post::insert() 2021-01-16 16:25:36 +09:00
Kitaiti Makoto 6a2ba2260d Send event to channel when post published 2021-01-16 16:25:36 +09:00
Kitaiti Makoto ccbf2124cb Run cargo fmt 2021-01-16 16:22:39 +09:00
Kitaiti Makoto a733ece26e Suppress clippy 2021-01-16 16:22:39 +09:00
Kitaiti Makoto 16624fd742 Run cargo fmt 2021-01-16 16:22:39 +09:00
Kitaiti Makoto e18be6ec95 Initialize SearchActor at start 2021-01-16 16:22:39 +09:00
Kitaiti Makoto 1bfed0294f Define SearchActor::init() 2021-01-16 16:22:39 +09:00
Kitaiti Makoto d4d32bcc11 Define ACTOR_SYS and POST_CHAN 2021-01-16 16:22:39 +09:00
Kitaiti Makoto 0a148721de Define SearchActor 2021-01-16 16:22:39 +09:00
Kitaiti Makoto cfe097edf4 Define PostEvent 2021-01-16 16:22:39 +09:00
Kitaiti Makoto 578768d7df Remove unnecessary attribute to suppress clippy 2021-01-16 16:22:39 +09:00
Kitaiti Makoto 996dc309f7 Make Searcher::open_or_create() accept path and tokenizers 2021-01-16 16:22:38 +09:00
Kitaiti Makoto 09d9164a1c Extract Searcher::open_or_recreate() from main() 2021-01-16 16:22:38 +09:00
Kitaiti Makoto 43f32d30cb Add once_cell to dependdencies 2021-01-16 16:22:38 +09:00
Kitaiti Makoto b1d7b3969d Add Riker to dependencies 2021-01-16 16:20:49 +09:00
KitaitiMakoto 89fa208bec Update CHANGELOG (#881)
Update CHANGELOG

Co-authored-by: Kitaiti Makoto <KitaitiMakoto@gmail.com>
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/881
2021-01-16 05:49:12 +00:00
KitaitiMakoto a11205324b Merge pull request 'Upgrade Tantivy to 0.13.3' (#878) from upgrade-tantivy into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/878
2021-01-16 05:40:14 +00:00
Kitaiti Makoto 7d17b12000 Upgrade lindera-tantivy to 0.7.1 2021-01-16 13:34:15 +09:00
Kitaiti Makoto 885dcf91fe Remove redundant imports 2021-01-16 12:53:05 +09:00
Kitaiti Makoto 192c0f8efd Remove unused lifetime 2021-01-16 12:21:49 +09:00
Kitaiti Makoto 35e71b0f8a Replace string range access with strip_prefix() 2021-01-16 12:20:21 +09:00
Kitaiti Makoto 1a24ba44b2 Remove redundant imports 2021-01-16 12:12:13 +09:00
Kitaiti Makoto 7c00d4a88a Remove no-landing-pads option from CI environment 2021-01-16 12:03:56 +09:00
Kitaiti Makoto 476310a217 Update plume.pot 2021-01-16 01:15:48 +09:00
Kitaiti Makoto 26ffde726f Run cargo fmt 2021-01-16 01:13:45 +09:00
Kitaiti Makoto 3fd89e6b48 Remove unnecessary wraps 2021-01-16 01:05:42 +09:00
Kitaiti Makoto be939cf169 Suppress clippy 2021-01-16 00:59:07 +09:00
Kitaiti Makoto 4a15bef34f Impl From<ListType> for i32 instead of Into<i32> for ListType 2021-01-16 00:49:34 +09:00
Kitaiti Makoto 6eee4b0b65 Define custom errors 2021-01-16 00:43:41 +09:00
Kitaiti Makoto f720dcbe9a Remove underscore prefix from route methods to suppress clippy 2021-01-15 23:58:48 +09:00
Kitaiti Makoto 33fceddc08 Use is_empty() instead of comparing with "" 2021-01-15 23:25:07 +09:00
Kitaiti Makoto dfe83aafc5 Replace as_ref().map() with as_deref() 2021-01-15 23:21:33 +09:00
Kitaiti Makoto 0775c8f3f9 Fix redundant method chains 2021-01-15 23:19:47 +09:00
Kitaiti Makoto 4cdc1a3655 Use char instead of one length &str 2021-01-15 23:01:37 +09:00
Kitaiti Makoto bbd415c392 Use strip_prefix() instead of range access 2021-01-15 23:00:15 +09:00
Kitaiti Makoto a236f33269 Remove unused macro_use 2021-01-15 22:38:40 +09:00
Kitaiti Makoto 9b593c76e4 Remove unused doc comments 2021-01-15 22:36:59 +09:00
Kitaiti Makoto 012c8d2026 Remove redundant imports 2021-01-15 22:35:19 +09:00
Kitaiti Makoto cb05571339 Upgrade tantivy to 0.13.3 2021-01-15 10:19:54 +09:00
Kitaiti Makoto 64e4550dea Update rust-toolchain to nightly-2021-01-15 2021-01-15 10:19:12 +09:00
KitaitiMakoto ec8c17482d Merge pull request 'proxy support' (#829) from dr-bonez/Plume:feature/proxy into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/829
Reviewed-by: KitaitiMakoto <kitaitimakoto@noreply@joinplu.me>
2021-01-13 14:20:36 +00:00
Aiden McClelland f167aad0fb fix doc tests 2021-01-11 13:29:01 -07:00
Aiden McClelland 24aac22b89 proxy support 2021-01-11 13:27:52 -07:00
KitaitiMakoto 615a5fe346 Merge pull request 'Update CHANGELOG' (#877) from changelog into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/877
2021-01-11 18:15:58 +00:00
Kitaiti Makoto a6699a7319 Add about translation languages to CHANGELOG 2021-01-12 03:12:59 +09:00
Kitaiti Makoto 0f408bc738 Update CHANGELOG 2021-01-12 03:11:29 +09:00
KitaitiMakoto 44a7953c20 Merge pull request 'GitHub 838: Fix menu animation not opening on iOS' (#876) from ios_nav_menu_animation_fixed-4 into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/876
2021-01-11 17:53:30 +00:00
Marek Ľach 21069ea18e Fix code formatting 2021-01-11 18:04:21 +01:00
Marek Ľach 1e1fd49c8c Update _header.scss 2021-01-11 17:48:39 +01:00
Marek Ľach 84621d1d27 Update _header.scss 2021-01-11 01:40:17 +01:00
Marek Ľach ba4476bf5a Update _header.scss 2021-01-11 01:34:09 +01:00
KITAITI Makoto f87bc455b7 Merge branch 'main' into ios_nav_menu_animation_fixed-4 2021-01-11 09:26:37 +09:00
KitaitiMakoto 76ec0d2b13 Merge pull request 'Initialize tracing subscriber' (#875) from init-tracing into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/875
2021-01-11 00:24:54 +00:00
Kitaiti Makoto 4d547082e0 Update pot 2021-01-11 09:15:45 +09:00
Kitaiti Makoto b9b9af6c44 Initialize tracing subscriber 2021-01-11 09:15:34 +09:00
Kitaiti Makoto 4a4534d6f3 Run cargo fmt 2021-01-11 09:05:31 +09:00
Kitaiti Makoto 894c4fee2c Add tracing-subscriber to dependencies 2021-01-11 09:05:28 +09:00
Kitaiti Makoto 27a33c833d Run cargo fmt 2021-01-11 08:38:41 +09:00
Marek Ľach b52d8e4e26 Fix menu animation not working on mobile iOS (also Midori) 2021-01-10 21:23:11 +01:00
Marek Ľach b059fb48fc Update _header.scss
The menu does not open on iOS Safari because of how it can't handle translateZ, and needs an -webkit specific prefix for the @keyframes property for the animation to work. This PR fixes the issue.
2021-01-10 18:32:21 +01:00
KitaitiMakoto f33b057961 Merge pull request 'Add SQlite journal files to .gitignore' (#874) from ignore-journal into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/874
2021-01-10 09:08:36 +00:00
Kitaiti Makoto 663ca4f530 Add SQlite journal files to .gitignore 2021-01-10 18:05:17 +09:00
KitaitiMakoto 5892c0b088 Merge pull request 'Remove SQLite journal files' (#873) from sqlite-journal into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/873
2021-01-10 06:31:14 +00:00
Kitaiti Makoto 044a24eac8 Remove SQLite journal files 2021-01-10 10:27:53 +09:00
Kitaiti Makoto b93ebedaf3 Revert "Initialize Rocket early to initialize logger early"
This reverts commit 30093d3a9f.
2021-01-09 18:41:47 +09:00
KitaitiMakoto 8539bdaf72 Merge pull request 'Fix #623 tracing crate' (#868) from logging into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/868

I read tracing's documentation and thought that is what I need. I decided use it instead of log crate. Thank you for info, igalic.
2021-01-06 13:38:48 +00:00
Kitaiti Makoto c1abd3d6f9 Use eprintln! instead of println! for console message 2021-01-06 21:40:14 +09:00
Kitaiti Makoto becb40544c Replace println!()s with logging macros 2021-01-06 21:40:14 +09:00
Kitaiti Makoto ee96d2b754 Fix a typo 2021-01-06 21:40:14 +09:00
Kitaiti Makoto 30093d3a9f Initialize Rocket early to initialize logger early 2021-01-06 21:40:14 +09:00
Kitaiti Makoto 29f2239e3f Extract dotenv initialization from init_pool because it affects not only database 2021-01-06 21:40:14 +09:00
Kitaiti Makoto 7f1b33a567 Add tracing crate to dependences 2021-01-06 21:40:07 +09:00
KitaitiMakoto d0dd23a1af Merge pull request 'Percent encode URI for remote_interact' (#866) from encode-remote-interact into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/866
2021-01-02 21:28:27 +00:00
Kitaiti Makoto f8774223d4 Update pot file 2021-01-03 05:51:38 +09:00
Kitaiti Makoto bca870f1f8 Percent encode URI for remote_interact 2021-01-03 05:49:45 +09:00
KitaitiMakoto 64d38c88e8 Merge pull request 'Add scripts to make prebuilt binaries' (#864) from prebuild-script into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/864
2021-01-02 16:46:02 +00:00
Kitaiti Makoto 3ac94b3e43 Add script to prebuild in Docker container 2021-01-02 23:51:09 +09:00
Kitaiti Makoto 254eef6a2a Add prebuild script 2021-01-02 23:48:30 +09:00
KitaitiMakoto f1255f477f Merge pull request 'Add translated languages to plume-front' (#863) from add-langs-front into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/863
2021-01-02 14:36:22 +00:00
Kitaiti Makoto 6c7b95c1b9 Add translated languages to plume-front 2021-01-02 23:29:46 +09:00
KitaitiMakoto e7d17caf9d Merge pull request 'Update crates' (#858) from update-crates into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/858
2021-01-02 14:23:45 +00:00
KitaitiMakoto 71dd80f125 Merge pull request 'Add translated languages' (#862) from add-langs into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/862
2021-01-02 14:21:25 +00:00
KitaitiMakoto ed4761e841 Merge pull request 'fix-test' (#861) from fix-test into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/861
2021-01-02 14:20:49 +00:00
Kitaiti Makoto fe05f9a58e cargo fmt 2021-01-02 22:54:46 +09:00
Kitaiti Makoto 51e5a401a5 Update Welsh translation 2021-01-02 22:45:04 +09:00
Kitaiti Makoto f1990b782d Fix tests 2021-01-02 22:15:26 +09:00
KitaitiMakoto 4e3ed0f4c1 Merge pull request 'add dir to allowed attributes' (#860) from dir-safestring into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/860
Reviewed-by: Mina Galić <me+git@igalic.co>
Reviewed-by: KitaitiMakoto <kitaitimakoto@noreply@joinplu.me>
2021-01-02 10:46:32 +00:00
Trinity Pointard fdb58215c0 add dir to allowed attributes 2021-01-02 00:26:56 +01:00
Kitaiti Makoto 47c8711933 Run cargo fmt 2021-01-02 07:10:10 +09:00
Kitaiti Makoto 20a099c16f Replace Syntect's deprecated APIs with new APIs 2021-01-02 06:47:55 +09:00
Kitaiti Makoto 3824e4ba25 Upgrade shrinkwraprs 2021-01-02 06:04:59 +09:00
Kitaiti Makoto b163fc8423 Remove unused serde_qs crate 2021-01-02 04:32:41 +09:00
Kitaiti Makoto b50f723a4d Upgrade Ructe 2021-01-02 04:24:06 +09:00
Kitaiti Makoto b778933c64 Upgrade rpassword 2021-01-02 04:04:17 +09:00
Kitaiti Makoto 12b97ce713 Remove unused colored crate 2021-01-02 03:16:22 +09:00
Kitaiti Makoto 4025a45d52 Upgrade whatlang 2020-12-30 22:36:47 +09:00
Kitaiti Makoto 8a6d832513 Upgrade rocket 2020-12-30 22:35:24 +09:00
Kitaiti Makoto 0b0b3a158f Upgrade diesel 2020-12-30 22:31:02 +09:00
Kitaiti Makoto 6b745ca8f0 Upgrade dotenv 2020-12-30 22:28:34 +09:00
Kitaiti Makoto 1f0cb7e05c Uninstall syntect 2020-12-30 21:27:15 +09:00
Kitaiti Makoto c59821945d Remove dependency to syntect from root package 2020-12-30 21:26:41 +09:00
Kitaiti Makoto 1a723b78b7 Install syntect 2020-12-30 21:23:52 +09:00
Kitaiti Makoto e7ff7e3263 Upgrade syntect to 0.4.5 2020-12-30 21:23:41 +09:00
KitaitiMakoto 3a6c1aeeef Merge pull request 'Bump version to development version' (#856) from dev-version into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/856
2020-12-29 14:30:43 +00:00
Kitaiti Makoto 567e011a66 Update dependencies 2020-12-29 22:52:11 +09:00
Kitaiti Makoto eaf63e0b17 start next development iteration 2020-12-29 18:01:18 +09:00
Kitaiti Makoto 63b31a9154 Fix changelog about security fix scope 2020-12-29 17:58:24 +09:00
KitaitiMakoto 5885cb5b09 Merge pull request 'Release 0.6.0' (#855) from release0.6.0 into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/855
2020-12-29 07:31:59 +00:00
Kitaiti Makoto f5ca464b16 Fix Matrix room ID in README 2020-12-29 16:29:43 +09:00
Kitaiti Makoto 1c40d5d3bc Add release date to CHANGELOG 2020-12-29 16:27:29 +09:00
Kitaiti Makoto 7e1abc527f Re-version to v0.6.0 2020-12-29 16:27:20 +09:00
KitaitiMakoto 39b2ef72fd Merge pull request 'Update CHANGELOG' (#854) from changelog into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/854
2020-12-28 13:19:41 +00:00
Kitaiti Makoto 17b081a21f Mark 0.6.0 unreleased 2020-12-28 22:18:46 +09:00
Kitaiti Makoto c482b1b552 Run cargo fmt 2020-12-28 22:15:45 +09:00
Kitaiti Makoto 8b16b9aaa4 Add changelog about support for RTL languages 2020-12-28 22:15:14 +09:00
KitaitiMakoto 11acc4172c Merge pull request 'add support for right to left languages in post content' (#853) from bidi-md into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/853
Reviewed-by: KitaitiMakoto <kitaitimakoto@noreply@joinplu.me>
2020-12-28 12:22:24 +00:00
Trinity Pointard 6187c62cb3 add bidi via forked pulldown-cmark 2020-12-27 21:02:37 +01:00
Trinity Pointard d6b5b9a721 upgrade to pulldown v0.8 2020-12-27 20:38:23 +01:00
KitaitiMakoto 80675f85f3 Merge pull request 'resynth1943/patch-1' (#852) from resynth1943/patch-1 into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/852
2020-12-27 16:44:10 +00:00
Resynth 07a6be424f Update alias 2020-12-26 12:48:39 +00:00
KitaitiMakoto 8cc56d8d81 Merge pull request 'Validate proofing for all activities' (#851) from prevent-spoof into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/851
2020-12-24 06:23:49 +00:00
Resynth f8cabcc904 Change riot.im link to matrix.to 2020-12-23 20:59:22 +00:00
Kitaiti Makoto d6a946f5b9 Validate spoofing for all activities 2020-12-22 16:31:12 +09:00
Kitaiti Makoto 2a5a2ec4d2 (cargo-release) start next development iteration {{next_version}} 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 106e9417d3 (cargo-release) version {{version}} 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 2660efec16 Define tag-name for cargo-release 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 1eaa5a6e31 Add pre-release-hook to release.toml of subcrates to prevent running
one of root crate
2020-12-19 11:24:59 +00:00
Kitaiti Makoto b2c26f03e8 Pull master branch from Crowdin 2020-12-19 11:24:59 +00:00
Kitaiti Makoto a75cdaa870 Move security fix to next release in CHANGELOG 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 2047355d46 Validate attributedTo in the case it is an object 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 17bbcd1a4b Add changelog about security fix 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 5c8170a97d Validate spoofing of Create activity 2020-12-19 11:24:59 +00:00
Kitaiti Makoto beaeaf743a Add test for preventing spoofing 2020-12-19 11:24:59 +00:00
Kitaiti Makoto fe641620a6 Update translations 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 3e1a6e61ad Add *.pot 2020-12-19 11:24:59 +00:00
Kitaiti Makoto 45b46838ae Merge branch 'main' of git.joinplu.me:Plume/Plume into main 2020-12-19 07:26:11 +09:00
Kitaiti Makoto 46cdde8687 (cargo-release) start next development iteration {{next_version}} 2020-12-19 07:22:24 +09:00
Kitaiti Makoto 6b0dfb729c (cargo-release) version {{version}} 2020-12-19 07:22:19 +09:00
Kitaiti Makoto 75a4d1abf1 Define tag-name for cargo-release 2020-12-19 07:03:40 +09:00
Kitaiti Makoto 984c0cda6b Add pre-release-hook to release.toml of subcrates to prevent running
one of root crate
2020-12-19 06:57:09 +09:00
Kitaiti Makoto 902612a470 Pull master branch from Crowdin 2020-12-19 06:21:59 +09:00
Kitaiti Makoto e311d4d423 Move security fix to next release in CHANGELOG 2020-12-19 06:04:23 +09:00
Kitaiti Makoto aa33c8e7d3 Merge branch 'validate-attributed-to' into main 2020-12-19 06:01:45 +09:00
Kitaiti Makoto 60e6d49319 Update translations 2020-12-19 05:59:58 +09:00
Kitaiti Makoto 6dbd9b76fb Add *.pot 2020-12-19 05:56:36 +09:00
KitaitiMakoto e3877d3022 Fill changelogs for the next release (#842)
Clarify purpose of adding Vazir font

Fill changelogs for the next release

Co-authored-by: Kitaiti Makoto <KitaitiMakoto@gmail.com>
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/842
2020-12-18 14:30:51 +00:00
KitaitiMakoto 4c11df65dc Merge pull request 'Pull request template' (#848) from pr-template into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/848
2020-12-13 10:03:21 +00:00
Kitaiti Makoto f8cfb8cacf Move GitHub pull request template 2020-12-13 19:01:55 +09:00
Kitaiti Makoto 9a7e10b560 Merge branch 'main' of git.joinplu.me:Plume/Plume into main 2020-12-13 19:01:16 +09:00
KitaitiMakoto e131330175 Add guide to GitHub pull request (#847)
Add guide to pull request

Co-authored-by: Kitaiti Makoto <KitaitiMakoto@gmail.com>
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/847
2020-12-13 09:57:48 +00:00
KITAITI Makoto b9066cb7d0 Update issue templates
Guide to use Gitea issues.
2020-12-13 18:50:50 +09:00
KitaitiMakoto 4c4d9fafd5 Merge pull request 'Fix CI environment' (#843) from fix-ci-env into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/843
2020-12-10 16:31:16 +00:00
Kitaiti Makoto bbdf2a8293 Merge branch 'main' into validate-attributed-to 2020-12-11 01:14:22 +09:00
KitaitiMakoto 0d3e1a233f Merge pull request 'Update Cargo.lock' (#844) from cargo-lock into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/844
2020-12-10 16:13:37 +00:00
Kitaiti Makoto 712bc2afbe Update Cargo.lock 2020-12-11 01:12:15 +09:00
Kitaiti Makoto 2eadb80435 Validate attributedTo in the case it is an object 2020-12-11 00:35:20 +09:00
Kitaiti Makoto de05b9e176 Add changelog about security fix 2020-12-09 23:45:56 +09:00
Kitaiti Makoto 5bf1e81f0b Merge branch 'main' into validate-attributed-to 2020-12-09 23:43:29 +09:00
Kitaiti Makoto 55abbff9b8 Use Caddy v2 on build env 2020-12-08 21:51:09 +09:00
Kitaiti Makoto 5f89401a7c Update Rust on buildenv image 2020-12-08 20:06:21 +09:00
KitaitiMakoto 7bd3c1b01e Merge pull request 'Fix #763 Update Dockerfile.dev' (#841) from update-dockerfile-dev into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/841
2020-12-07 02:06:00 +00:00
KitaitiMakoto 961806247c Merge branch 'main' into update-dockerfile-dev 2020-12-07 02:05:34 +00:00
Kitaiti Makoto ac7ffae121 Update plumeorg/plume-buildenv used on CI 2020-12-07 07:50:33 +09:00
Kitaiti Makoto 5321f3cf18 Add clang dependency in Dockerfile.dev 2020-12-07 07:47:11 +09:00
KitaitiMakoto 5099a00c6b Merge pull request 'better-caching' (#840) from better-caching into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/840
2020-12-06 17:32:33 +00:00
KitaitiMakoto d44c034f6a Merge branch 'main' into better-caching 2020-12-06 17:31:53 +00:00
KitaitiMakoto 963e742dcf Merge pull request 'Run cargo fmt' (#839) from fmt into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/839
2020-12-06 17:05:39 +00:00
Kitaiti Makoto 50462204e8 Run cargo fmt 2020-12-07 02:04:37 +09:00
KitaitiMakoto 174ed738bd Merge pull request 'Update Docker image for testing' (#838) from update-build-image into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/838
2020-12-06 17:02:22 +00:00
Kitaiti Makoto f8d098f353 Update Docker image for testing 2020-12-07 01:58:41 +09:00
KitaitiMakoto f5b18dffaf cargo release helper (again) (#835)
remove tag-prefix deletion

as discussed here: https://github.com/igalic/Plume/pull/1

Update all versions numbers

Update Crowdin config to v3 + Pull translations with cargo release

Follow a more standard CHANGELOG format

add release.toml configuration file for cargo-release

and also add overrides in all other crates, since we only have one
CHANGELOG.md: https://github.com/sunng87/cargo-release/issues/205
we might wanna have that looked at or fixed

ignore .vscode/

add / backfill Changelog.md

Co-authored-by: Mina Galić <me+git@igalic.co>
Co-authored-by: Ana Gelez <ana@gelez.xyz>
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/835
2020-12-06 15:52:27 +00:00
KitaitiMakoto 002d1f1720 Merge pull request 'Update distro of Docker image for testing' (#834) from test-buster into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/834
2020-12-06 13:28:54 +00:00
Kitaiti Makoto 23a5634035 Update distro of Docker image for testing 2020-12-06 22:26:30 +09:00
Kitaiti Makoto 5cd8ae9106 Validate spoofing of Create activity 2020-12-03 19:20:10 +09:00
Kitaiti Makoto 350697f89a Run cargo fmt 2020-12-03 19:20:10 +09:00
Kitaiti Makoto 569979374f Add test for preventing spoofing 2020-12-03 19:20:10 +09:00
KitaitiMakoto 3c666080a9 Merge pull request 'Keep tags as-is' (#832) from KitaitiMakoto/Plume:keep-tag into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/832
Reviewed-by: kiwii <kiwii@noreply@joinplu.me>
2020-11-22 16:21:42 +00:00
Kitaiti Makoto 4e6d7b70cf Keep tags as-is 2020-11-22 22:24:43 +09:00
kiwii a59f167771 Merge pull request 'PR #818 from Github' (#831) from gh-pr-818 into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/831
2020-11-22 11:45:47 +00:00
Ana Gelez f28ab19dc0 Merge branch 'serra-allgood/#754-display-error-for-duplicated-blocklist-email' of https://github.com/serra-allgood/Plume into gh-pr-818 2020-11-22 12:43:46 +01:00
KitaitiMakoto 6dd4080d65 Merge pull request 'Remove link to unimplemented page(timeline edit)' (#827) from KitaitiMakoto/Plume:feed-edit-button into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/827
Reviewed-by: Mina Galić <me+git@igalic.co>
2020-11-15 17:10:55 +00:00
Kitaiti Makoto eac76e6806 Merge remote-tracking branch 'upstream/main' into feed-edit-button 2020-11-12 00:05:42 +09:00
trinity-1686a 0cd26dfbf4 fix test following ldap udpate
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/828
Reviewed-by: Mina Galić <me+git@igalic.co>
2020-10-08 19:18:04 +00:00
Trinity Pointard 3de009713d try fixing clippy and fmt 2020-10-08 20:24:03 +02:00
Trinity Pointard 69bcb01715 fix test following ldap udpate 2020-10-08 19:59:54 +02:00
trinity-1686a 9ec2d93f50 implement login via LDAP
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/826
Reviewed-by: Mina Galić <me+git@igalic.co>
2020-10-08 16:11:35 +00:00
Trinity Pointard 4da9b24cb1 cargo fmt 2020-10-07 23:40:27 +02:00
Trinity Pointard f40634aa97 address comments 2020-10-07 23:39:38 +02:00
Kitaiti Makoto 83282e0736 Remove link to unimplemented page 2020-10-06 19:47:35 +09:00
Serra Allgood 43fde90387 Fix displaying not found page when submitting a duplicated blocklist email
Signed-off-by: Serra Allgood <serra@allgood.dev>
2020-10-05 20:17:30 -07:00
Trinity Pointard ccba8163c9 fix compilation issue with cli 2020-10-04 23:53:14 +02:00
Trinity Pointard 8975b0f9e9 cargo fmt 2020-10-04 12:18:54 +02:00
Trinity Pointard d626f3366d add support for ldap 2020-10-04 12:18:22 +02:00
Trinity Pointard b24f195e10 refactor login
first step toward ldap
should have no functionnal change
2020-10-03 13:21:31 +02:00
Mina Galić 003dcf861a Merge pull request 'CSS Fix: My title is displayed at the wrong position on Webkit browsers' (#825) from quentin/Plume:pr/flex into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/825
Reviewed-by: Mina Galić <me+git@igalic.co>
2020-09-29 07:15:06 +00:00
Quentin Dufour 5d8efa77a3 Fix title 2020-09-25 11:19:24 +02:00
kiwii fb6d49cc6e Merge pull request 'GPU acceleration for the mobile menu' (#818) from gpu-acceleration into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/818
Reviewed-by: kiwii <kiwii@noreply@joinplu.me>
2020-08-27 10:29:34 +00:00
Mina Galić 48776939f4 Merge branch 'main' into gpu-acceleration 2020-08-19 19:53:39 +00:00
Marek Ľach 104b6c1d0c GPU acceleration for the mobile menu
Reimplements #810, but for all browsers.
2020-08-19 21:34:07 +02:00
Mina Galić 3881927550 Merge pull request 'mobile-margins' (#817) from mobile-margins into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/817
Reviewed-by: Mina Galić <me+git@igalic.co>
2020-08-19 11:35:04 +00:00
Ana Gelez 0bec13edc0 Improve responsiveness 2020-08-11 20:13:27 +02:00
Ana Gelez 191d6da486 Move header-related style to _header.scss
It seems to fix the overflowing menu items on small screens too
2020-08-11 20:13:27 +02:00
kiwii 9aaff1a484 Merge pull request 'Use result of local storage insert operation to suppress Clippy' (#810) from KitaitiMakoto/Plume:suppress-clippy into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/810
Reviewed-by: kiwii <kiwii@noreply@joinplu.me>
2020-07-25 17:28:26 +00:00
Kitaiti Makoto 36fd55a7e4 Use result of local storage insert operation to suppress Clippy 2020-07-25 20:13:41 +09:00
kiwii fc474bf8d1 Merge pull request '[BUG FIX]Make it possible to switch to rich text editor' (#808) from KitaitiMakoto/Plume:richtexteditor into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/808
Reviewed-by: kiwii <kiwii@noreply@joinplu.me>
2020-07-23 18:25:53 +00:00
Kitaiti Makoto a050deb557 [BUG FIX]Make it possible to switch to rich text editor 2020-07-23 23:36:09 +09:00
kiwii 6de9a1f1c8 Merge pull request 'Recreate search index if its format is outdated' (#802) from KitaitiMakoto/Plume:invalid-index into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/802
Reviewed-by: Mina Galić <me+git@igalic.co>
2020-07-19 12:04:43 +00:00
Kitaiti Makoto 5e30bede40 Don't care about needless return value of closures 2020-07-19 08:24:17 +09:00
Kitaiti Makoto 5cca66b346 Add action user can take to error message 2020-07-19 07:16:34 +09:00
Kitaiti Makoto 484659fde2 Run cargo fmt 2020-07-18 22:52:39 +09:00
Kitaiti Makoto 5fc827c1c9 Re-initialize search index when recreating is failed 2020-07-18 21:00:58 +09:00
Kitaiti Makoto 50753b3a65 Recreate search index if its format is outdated 2020-07-18 09:40:58 +09:00
Kitaiti Makoto c5d03d300b Cause IndexInvalidDataError when search index is invalid 2020-07-18 09:40:47 +09:00
kiwii 010eac6c4a Merge pull request 'upgrade rocket* to the latest stable' (#800) from igalic/Plume:update/rocket into main
Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/800
Reviewed-by: kiwii <kiwii@noreply@joinplu.me>
2020-07-17 13:39:12 +00:00
Mina Galić a107d35492 upgrade rocket* to the latest stable
before we embark on upgrading to async, and all the refactoring that
this will bring on us (see #797 & #799), we should keep our `main`
branch as stable and current as possible.
Let's start by upgrading rocket and its dependencies.
2020-07-17 09:38:55 +02:00
Kitaiti Makoto f9beb2383b Update lindera-tantivy to v0.1.3 2020-07-05 17:59:51 +02:00
Chosto 7e78cffcaa Bump Docker base images to buster flavor (#797) 2020-07-02 12:46:56 +02:00
Ana Gelez 719fec0828 Add a comment 2020-06-25 22:26:44 +02:00
Ana Gelez 90fdade566 Better caching
Based on @trinity-1686a's patch: https://github.com/Plume-org/Plume/issues/786#issuecomment-647170325
2020-06-25 22:20:31 +02:00
TheMasix 28576c1fa3 Add Vazir Font (#787)
* Add Vazir Font

* Add Vazir Font License

* fix prettier problem

* Shabnam added
2020-06-24 15:48:04 +02:00
Gelez d99b42582d Add Persian to the list of languages (#782) 2020-06-17 18:33:58 +02:00
KITAITI Makoto 92a386277b Switchable tokenizer (#776)
* [REFACTORING]Rename whitespace_tokenizer to tag_tokenizer for
registration

Name representing its purpose is preferred.

* Add lindera-tantivy to plume-model's dependencies

* Install lindera-tantivy

* Add SearchTokenizerConfig struct

* Add search tokenizers to config option

* Use CONFIG for tokenizers

* Use enum to hold tokenizer config instead of initializing on config phase

* Use guard instead of duplicate default values

* Use as_deref() instead of guard

* Move SearchTokenizer from plume-models to plume-models::search::tokenizer

* Rename SearchTokenizer to TokenizerKind

* Define SearchTokenierConfig::determine_tokenizer()

* Use determine_tokenizer in SearchTokenizerConfig::init()

* Pass tokenizer config to Searcher methods

* Add LowerCase filter to Lindera tokenizer

* Add test for Lindera tokenizer

* Define SEARCH_LANG env to specify tokenizers set

* Run cargo fmt

* Make Lindera tokenizer optional

* Fix typos
2020-06-17 16:57:28 +02:00
Gelez 297d9fcf40 Don't show boosts and likes for "all" and "local" in timelines (#781)
Fixes #711
2020-06-15 19:50:28 +02:00
KITAITI Makoto ef70cb93e6 Upgrade Tantivy to v0.12.0 (#771)
* Upgrade Tantivy to 0.12.0

* Follow Tantivy Tokenizer's new type definition

* Wrap tokenizers with TextAnalyzer to use filter methods

* Replace async IndexWriter::garbage_collect_files with sync functions

* Update Cargo.toml
2020-05-20 13:31:45 +02:00
Daniel Watkins efb76a3c17 remove dependency on runtime-fmt (#773)
Per the issue, "runtime-fmt uses perma-unstable rust APIs and is
therefore susceptible to breakage".

This replaces the two calls to rt_format! with .replace() and drops the
dependency.

Fixes #769
2020-05-18 20:18:07 +02:00
KITAITI Makoto 197f0d7ecd Add test for hash including ZWSP (#772)
* Add test for hash including ZWSP

* Run cargo fmt
2020-05-17 13:53:31 +02:00
KITAITI Makoto 3be842c653 Make database connections configurable by environment variables (#768)
* Make env DB_MAX_SIZE and DB_MIN_IDLE recognizable

* Make database max size and minimum idle configurable

* Restore file permission

* Fail fast
2020-05-06 19:27:59 +02:00
KITAITI Makoto dabe904642 Escape expressions in @Html (#767) 2020-05-05 23:48:29 +02:00
KITAITI Makoto 180e34b07c Fix Atom feed datetime format (#766) 2020-05-04 23:46:59 +02:00
KITAITI Makoto 847d6f7fac Fix Atom feed (#764)
* Percent-encode URI segments in ap_url

* Fix invalid Atoms

* Remove redundant clone according to cargo clippy

* Revert "Percent-encode URI segments in ap_url"

This reverts commit 8253aa79bd.
ActivityPub(JSON-LD) accepts URI.
See https://github.com/Plume-org/Plume/pull/764#issuecomment-623105734

* Use absolute IRI for IDs in Atom

* Reuse formatted string

* Use parent element's creation date for Atom updated if there's no post

* Remove uncecessary UTC conversion

* Extract routes::build_atom_feed function
2020-05-04 15:28:52 +02:00
KITAITI Makoto 6a3f210dfc Keep atmarks and hashes in link (#765)
* [REFACTORING]Use DocumentContext during parsing Markdown

* Add test case for hash in link

* Make DocumentContext derive Debug

* Add in_link field in DocumentContext

* Don't make hash words tags in link

* Add test for atmark in link

* Don't make atmark words in link mentions
2020-05-03 14:50:32 +02:00
KITAITI Makoto 73aa301d4a Fix user subscription URI so that plume::routes:interact accept it (#762) 2020-05-02 12:07:45 +02:00
KITAITI Makoto b3d367b174 Use plural form for 0 in French (#760)
See https://github.com/Plume-org/Plume/issues/745
2020-04-30 15:35:12 +02:00
KITAITI Makoto edaccd1a31 Fixes #757 Allow Unicode hashtags (#758)
* Add test for Persian language hashtags

See https://github.com/Plume-org/Plume/issues/757

* Add regex-syntax with unicode-perl feature to dependencies

* Install regex-syntax

* Allow hashtag to use Unicode word characters

* Run cargo fmt
2020-04-29 15:13:31 +02:00
Floréal Toumikian e1bd2eab75 Updated: Cargo.lock (#753) 2020-04-19 09:34:05 +02:00
KITAITI Makoto ac7a05b09a Make blocklist deletion possible (#750) 2020-04-18 11:46:10 +02:00
KITAITI Makoto 71e0a35e06 Use LenientForm instead Form for CSRF protected pages (#751) 2020-04-18 11:45:28 +02:00
KITAITI Makoto c217e5e9b3 Move stylesheets for header from _global.sccss to _header.scss (#749) 2020-04-14 23:32:27 +02:00
KITAITI Makoto 8ba0c17db5 Build app and po files before upload pos to Crowdin (#748) 2020-04-14 20:51:53 +02:00
Floréal Toumikian 4e43c676b4 Fixed: #713: Disply likes and boosts on post cards (#744)
This is a basic and simple way to display them. No interaction possible.

Alos, this patch is not optimised. as everytime a partial post_card is
called, `Post::count_likes()` and `Post::count_reshares()` are called
which means quite a few more quesies are sent to database unless diesel
uses some cache mechanisem.

A way to enhance this this would be to keep a count of likes and reshares
are kept in Post model / table.
2020-04-12 21:29:48 +02:00
KITAITI Makoto b834d1c282 Fix #701 Preferable default theme (#746)
* Make it possible to update users.preferred_theme to NULL

* Make preferred them null when 'Default theme' is selected

* Run cargo fmt
2020-04-12 17:36:00 +02:00
Kenneth Steimel 506fe9955d Fixed #734 , passowrds are now hidden on the remote_interact pages (#741)
* Fixed #734 , passowrds are now hidden on the remote_interact pages

* Update templates/remote_interact_base.rs.html

Co-Authored-By: Floréal Toumikian <floreal+github@nimukaito.net>

Co-authored-by: Floréal Toumikian <floreal+github@nimukaito.net>
2020-04-09 20:55:22 +02:00
KemoNine 02c528cae4 Bump llvm -> 9.0.0 (fixes arm builds) (#737) 2020-01-29 21:37:54 +01:00
Christopher James Halse Rogers 2a58835f92 Snapcraft updates (#731)
* snap: Update rust compiler

* snap: Fix the build.

We now need libclang

* snap: Fix the non-x86 builds.

The goddamned environment variable is SNAPCRAFT_ARCH_TRIPLE*T*

* snap: Mark as stable.

The snap works fine; we don't need to warn people away
2020-01-22 14:10:49 +02:00
Ana Gelez 5f8d6b8e0e Rust 2018! (#726) 2020-01-21 07:02:03 +01:00
fdb-hiroshima 3663bffe5c Update compiler (#725)
* update compiler to recent nightly

* cargo fmt

* fix clippy

but ructe code is still complaining

* update circleci and rocket_csrf

* fix last clippy problems

* cargo fmt

* fix build issue

was caused be improper handling of recursive template (comment) by old ructe, which is fixed on newer version
2020-01-19 12:52:32 +01:00
KemoNine 72464fb428 Add missing dep on clang needed for crate builds (#724) 2020-01-15 10:03:52 +01:00
Wilfried OLLIVIER 23049b638c WIP: Fix RSS issues (#720)
* Add id field to RSS feed

* Add published field to RSS feed
2020-01-13 19:30:32 -05:00
Violet White f3c05dae62 Email blocklisting (#718)
* Interface complete for the email blacklisting

* Everything seems to work

* Neutralize language

* fix clippy warnings

* Add missing spaces

* Added matching test

* Correct primary key datatype for postgresql

* Address review comments

* Add placeholder when empty. Fix missing 'i'
2020-01-12 19:41:35 +01:00
Violet White e6bdeb7c4b Fix #699 (#719) 2020-01-12 13:24:41 +01:00
Violet White 458baf5f78 Syntax highlighting (#691)
* Syntax highlighting mostly... Exists.

* Add dependency to dockerfile

* Handle non-existent languages better

* Make the default a bit nicer

* Improve highlighting. Clean up function

* Add dark theme, add the comment scope to the allowed classes

* update build env

* Address review comments

* Use find_syntax_by_token which produces the desired behavior

* Change flat_map into flatten
(commit cargo.lock)
2019-12-30 14:35:27 +01:00
Ana Gelez 597778fd2f release Alpha 4 (#709)
* Update version numbers

* Update translations again

* Translations?

* This time translations should be here
2019-12-22 15:04:09 +01:00
Violet White e53574970c Fix issue #705 (#708)
* Fix issue #705

* Add canonical links to blogs too
2019-12-16 22:55:02 +01:00
Marek Ľach 9ede06e7a3 Make the comment syntax consistent across all CSS (#707)
* Update _article.scss

* Update _dark_variables.scss

* Update _forms.scss

* Update _global.scss

* Update _header.scss

* Update _variables.scss
2019-12-16 22:28:48 +01:00
fdb-hiroshima a9441a8804 Fix lettre (#706)
* Use lettre from crates.io instead of git

* fix previous migration

they were failing on some versions of sqlite and postgres
2019-12-16 20:22:46 +01:00
fdb-hiroshima 6c8944315a remove use of rust in migration (#704)
* remove use of rust in migration

rewrite use_timelines_for_feed in pure sql
delete tantivy related migration. It will require reintroducing tantivy
initialisation in docs

fix #702

* Fill timeline from migrations

should fix #692 , but probably require some testing
2019-12-14 21:06:07 +01:00
Wilfried OLLIVIER 3bd2305115 Fix #637 : Markdown footnotes (#700)
* Ensure footnotes classes generated are not filtered

pulldown-cmark add somes classes when footnotes html is generated. This commit ensure they are not filtered by html sanitizer

* Add some footnotes styling
2019-11-20 16:16:38 +01:00
Ana Gelez 7f296b2ef2 Use the "classic" editor by default (#697) 2019-11-16 18:53:27 +01:00
Marek Ľach c66ef5f85d Fix the navigation menu not opening on touch (#690)
* Fix iOS menu issue

* Fix burger menu iOS trigger

* Modify the menu script to work on iOS too

* Update main.rs

* Update main.rs

* Update main.rs
2019-11-16 18:52:30 +01:00
Christopher James Halse Rogers df6f398efc Various snap fixes (#698)
* snap: Store media in the proper directory

* snap/set-environment: Exit successfully when not enabled.

This lets us unconditionally run things under `set-environment` and let it
handle the case where the necessary configuration hasn't yet been set.

* snap: Set the version based on git tags

This will make the version something like `0.3.0-alpha-2-65-g29178aa` at the moment,
as that was the most recent tag, but the commit tagged as `0.4.0` will get *that* as
the version

* snap: Force-install cargo-web

This makes building the *second* time work; otherwise there might be
an existing cargo-web install, and cargo will refuse to overwrite it.
2019-11-16 13:19:46 +01:00
fdb-hiroshima c484ca6afe make search items optional (#693)
* make search items optional

cf https://github.com/Plume-org/Plume/issues/692#issuecomment-550224029

* eindente
2019-11-10 15:37:51 +01:00
Violet White f0846ff546 Make the search index creation during migration respect SEARCH_INDEX (#689)
* Make the search index creation during migration respect SEARCH_INDEX

* Make the search subcommand respect it too
2019-11-03 17:51:10 +01:00
Violet White c0469c69c1 Add autosaving to the editor (#688)
* Add autosaving to the editor

* It saves the subtitle, tags, and license now

* Save the cover too

* Fix broken autosave again

* Use set_value instead of a multitude of setters. Implement debouncing

* Remove unsafe code, remove generic getters when possible
2019-11-02 15:14:41 +01:00
Ana Gelez 865f372d5a Add a sample .env file (#687)
* Add a sample .env file

As requested in https://github.com/Plume-org/docs/pull/60

* Keep domain names consistent
2019-10-30 15:38:39 +01:00
Violet White 52d860d402 Paginate the outbox responses. Fixes #669 (#681)
* Paginate the outbox responses. Fixes #669

* Address Ana's review

* Make outbox_fetch page through instance outboxes

* Fix infinite loop in fetch_outbox

* Fix off by one
2019-10-30 11:22:28 +01:00
Violet White 866465c603 Add environmental variable to control path of media (#683) 2019-10-28 22:28:28 +01:00
fdb-hiroshima dd6d39135e re-add empty strings in translation (#682) 2019-10-24 16:44:14 +02:00
Violet white 028c4fdbc6 Fix that bug :D 2019-10-24 12:05:13 +02:00
Ryo Nakano b4882533f8 Escape href quotation marks (#678) 2019-10-17 09:12:24 +02:00
Ryo Nakano fc9e69d811 Don't split sentences for translations (#677) 2019-10-16 20:07:58 +02:00
fdb-hiroshima 006b44f580 Add support for generic timeline (#525)
* Begin adding support for timeline

* fix some bugs with parser

* fmt

* add error reporting for parser

* add tests for timeline query parser

* add rejection tests for parse

* begin adding support for lists

also run migration before compiling, so schema.rs is up to date

* add sqlite migration

* end adding lists

still miss tests and query integration

* cargo fmt

* try to add some tests

* Add some constraint to db, and fix list test

and refactor other tests to use begin_transaction

* add more tests for lists

* add support for lists in query executor

* add keywords for including/excluding boosts and likes

* cargo fmt

* add function to list lists used by query

will make it easier to warn users when creating timeline with unknown lists

* add lang support

* add timeline creation error message when using unexisting lists

* Update .po files

* WIP: interface for timelines

* don't use diesel for migrations

not sure how it passed the ci on the other branch

* add some tests for timeline

add an int representing the order of timelines (first one will be on
top, second just under...)
use first() instead of limit(1).get().into_iter().nth(0)
remove migrations from build artifacts as they are now compiled in

* cargo fmt

* remove timeline order

* fix tests

* add tests for timeline creation failure

* cargo fmt

* add tests for timelines

* add test for matching direct lists and keywords

* add test for language filtering

* Add a more complex test for Timeline::matches, and fix TQ::matches for TQ::Or

* Make the main crate compile + FMT

* Use the new timeline system

- Replace the old "feed" system with timelines
- Display all timelines someone can access on their home page (either their personal ones, or instance timelines)
- Remove functions that were used to get user/local/federated feed
- Add new posts to timelines
- Create a default timeline called "My feed" for everyone, and "Local feed"/"Federated feed" with timelines

@fdb-hiroshima I don't know if that's how you pictured it? If you imagined it differently I can of course make changes.

I hope I didn't forgot anything…

* Cargo fmt

* Try to fix the migration

* Fix tests

* Fix the test (for real this time ?)

* Fix the tests ? + fmt

* Use Kind::Like and Kind::Reshare when needed

* Forgot to run cargo fmt once again

* revert translations

* fix reviewed stuff

* reduce code duplication by macros

* cargo fmt
2019-10-07 19:08:20 +02:00
Christopher James Halse Rogers a0e3fe8c94 snap: Fix build for non-Tier-1 Rust platforms (#672) 2019-10-05 13:28:45 +02:00
Christopher James Halse Rogers e54fffccdf snap: *Another* fix for building (#668) 2019-09-20 09:26:04 +02:00
Christopher James Halse Rogers b36e12b654 snap: Ensure cargo-web doesn't erroneously adopt our workspace. (#667) 2019-09-18 16:24:15 +02:00
Christopher James Halse Rogers b5eecbf2e7 Add Snapcraft metadata and install/maintenance hooks (#666)
* Add Snapcraft metadata and install/maintenance hooks

* Move set-environment script into snap/local

* snap: Remove diesel-cli part.

This *was* necessary as of 0.3.0, but now `plm migrations run` does the job.

* snap: Add an actual description

* snap: Add an 'enabled' config item.

Don't try to run until enabled is set, and automatically run the
migrations when we are enabled
2019-09-16 12:33:25 +02:00
Ana Gelez 309e1200d0 Make a distinction between moderators and admins (#619)
* Make a distinction between moderators and admins

And rework the user list in the moderation interface, to be able to run the same action on many users,
and to have a huge list of actions whithout loosing space.

* Make user's role an enum + make it impossible for a moderator to escalate privileges

With the help of diesel-derive-enum (maybe it could be used in other places too?)

Also, moderators are still able to grant or revoke moderation rights to other people, but maybe only admins should be able to do it?

* Cargo fmt

* copy/pasting is bad

* Remove diesel-derive-enum and use an integer instead

It was not compatible with both Postgres and SQlite, because for one it generated a schema
with the "User_role" type, but for the other it was "Text"…

* Reset translations

* Use an enum to avoid magic numbers + fix the tests

* Reset translations

* Fix down.sql
2019-09-13 12:28:36 +02:00
fdb-hiroshima 12c80f9981 delete notification on user deletion (#658)
* delete notification on user deletion

fix #651

* use the correct id for deletion

* add regression test

* push helpers too

* revert CI changes
2019-09-13 11:29:52 +02:00
Ana Gelez d4a1bd6de7 Fix logo URL (#664) 2019-09-06 10:06:16 +02:00
fdb-hiroshima d46af6fe5b order media so that latest added are top (#660)
* order media so that latest added are top

partial fix for #621

* also order paginated medias
2019-08-28 11:37:03 +02:00
fdb-hiroshima ddbec3f204 fill entirely user on creation (#657)
fix #635
2019-08-27 22:28:40 +02:00
fdb-hiroshima 83cad55b22 update default license (#659)
fix #595
2019-08-27 21:47:45 +02:00
fdb-hiroshima bf7603d439 don't index drafts (#656) 2019-08-27 18:40:59 +02:00
Ana Gelez 8ab690001d Replace the input! macro with an Input builder (#646)
* Replace the input! macro with an Input builder

* Use a BTreeMap instead of an HashMap

Followinf @fdb-hiroshima's advice

* Rename Input::to_html to Input::html

To make clippy happy

* Wrap error messages in red paragraphs
2019-08-27 16:50:24 +02:00
Requiem 935d331e97 Fix issue #642, frontend not in english if the user language does not exist (#648)
* syntax and names

* Solve the issue #642, by searching index of english language code in catalog.
2019-08-23 11:02:24 +02:00
Ana Gelez 28fb50438e Fix theme caching (#647) 2019-08-21 21:41:11 +02:00
Ana Gelez a6c84daa1a Theming (#624)
* Theming

- Custom CSS for blogs
- Custom themes for instance
- New dark theme
- UI to choose your instance theme
- Option to disable blog themes if you prefer to only have the instance theme
- UI to choose a blog theme
2019-08-21 00:42:04 +02:00
fdb-hiroshima fb60236a54 update dependancies (#643)
* Bump activitystreams-derive from 0.1.0 to 0.1.1
* Bump tantivy from 0.9.1 to 0.10.1
* Bump rpassword from 3.0.2 to 4.0.1
* Bump num_cpus from 1.10.0 to 1.10.1
* Bump serde_qs from 0.4.6 to 0.5.0
* Bump stdweb-internal-runtime from 0.1.3 to 0.1.4
* [Security] Bump smallvec from 0.6.9 to 0.6.10
* Bump chrono from 0.4.6 to 0.4.7
* Bump bcrypt from 0.4.0 to 0.5.0
* Bump serde_json from 1.0.39 to 1.0.40
* Bump tokio from 0.1.21 to 0.1.22
* Bump scheduled-thread-pool from 0.2.0 to 0.2.2
* Bump stdweb from 0.4.14 to 0.4.18
* Bump hyper from 0.12.29 to 0.12.33
* Bump reqwest from 0.9.17 to 0.9.19
* Bump url from 1.7.2 to 2.1.0
2019-08-14 15:04:30 +02:00
fdb-hiroshima 4f7c20fc26 Fix some federation issue (#573)
* send scheme as part of webfinger remote follow template

fix tsileo/microblog.pub#49

* bump webfinger to 0.4.1

* cargo fmt

* revert translations

* Use group: prefix for blog webfinger queries
2019-07-31 11:38:49 +02:00
Mostafa Ahangarha 54c6d21fc5 WIP - initial RTL support #575 (#577)
* initial RTL support

* fix dir in template-util

* fix dir in blogs new

* fix dir in blogs details

* fix dir in posts new

* fix dir in posts details

* fix dir in posts remote

* Fix dir in partials

some parts should be recheck carefully in real usage
2019-07-11 09:34:27 +02:00
Wilfried OLLIVIER c031804464 Add clap to plume in order to print help and version (#631)
* Add clap in order to print help and version

Related to https://github.com/Plume-org/Plume/issues/594

* Update after_help text message
2019-07-03 19:36:42 +01:00
fdb-hiroshima 5289fe872a don't ignore dotenv errors (#630) 2019-07-03 09:30:44 +02:00
Baptiste Gelez 7ea4acc289 Use futures and tokio to send activities (#620)
* Use futures and tokio to send activities

* Reset .po files

* Cargo fmt + small enhancements

- better error messages
- removed a TODO

* Log all messages at the same time when federation succeeds
2019-06-27 17:46:05 +01:00
Baptiste Gelez 6dbc043a7e Update some documents (#616)
* Redirect to the code of conduct in the docs

To centralize it, and because the version in the docs is more up-to-date

* Remove obsolete issue template

* Rework README
2019-06-15 21:42:24 +01:00
KemoNine fb1668ede7 Update dependencies which depended on nix -- fixes arm32 builds (#615) 2019-06-14 09:35:09 +02:00
Igor Galić 3d27e283ad add enum containing all successful route returns (#614)
* add enum containing all successful route returns

This enum derives `Responder`, so it can be used as route result.
We also implement `From`, so it can be converted

* disable clippy warning about this enum

There's no use trying to chase this warning.
The next warning will be about `Redirect`, which itself is 360 byte,
according to @fdb-hiroshima (thanks for the research!)

So, if anything, we can try to get Rocket to work on that!

* refactor routes/posts to only use one level of Result

* admin settings error is not an ErrorPage, so dont use Result<>

* refactor: use early return to remove indent of main logic

This diff is absolutely atrocious.
but the resulting readability is worth it

* refactor routes/post for early returns & RespondOrRedirect

* refactor routes/session for early returns & use RespondOrRedirect

* refactor routes/user -- add another field to enum

* refactor routes/blogs for early returns & RespondOrRedirect

* refactor routes/blogs for early returns & RespondOrRedirect

This is a final refactor of `pub fn update()` for readability.
We're removing at least one indentation level.
2019-06-14 09:33:30 +02:00
Rob Watson 4b205fa995 Store password reset requests in database (#610)
* Store password reset requests in database

Signed-off-by: Rob Watson <rfwatson@users.noreply.github.com>

* Refactor password reset request expiry handling

* Integrate sqlite

* Fix formatting
2019-06-04 19:55:17 +01:00
KemoNine e7126ae335 Fix arm builds (#612) 2019-06-04 19:18:36 +01:00
Marek Ľach b2312d7f1b Update textarea overflow to scroll (#609)
* Update textarea overflow to scroll

* Update _forms.scss

* Update _forms.scss
2019-06-02 21:35:09 +01:00
Rob Watson bffce041d7 Confirm deletion of blog (#602) 2019-05-29 13:51:53 +01:00
Marek Ľach 037674ae13 Direct follow-up to #578 (#603) 2019-05-29 12:26:37 +01:00
Igor Galić 8c59c822b6 refactor code to use Shrinkwraprs and diesel-derive-newtype (#598)
* add shrinkwraprs and implement Id thru it

This also means we can automatically convert Id to String without using
.into()!

* cleanup with the help of clippy!

* cleanup with the help of cargo fmt!

* remove extra block

* Shrinkwrap Page, ContentLen and RemoteForm

* translations
2019-05-25 19:23:45 +01:00
Marek Ľach 59023e9602 Prevent comment form submit button distortion on iOS (#592)
Forgot about that one the last time :-)
2019-05-20 19:29:23 +01:00
Baptiste Gelez ad3a8b92d1 Theme update (#553)
* Start to update the theme

- Ligther colors
- No more border radius
- Buttons are now always colored
- Start to redesign the post page (according to the Figma mockups)

* Fix build script: it now recompiles everytime a scss file changed

* Make sure the article illustrations are not too big

* Make articles wider (70 characters)

* Better contrast between gray shades

* Various improvements

* Better mobile style

* New style for the footer

* Improve comment style

* Better responsiveness again

* Limit the size of the article cover

* Last details?

- Improve buttons on the media page
- Improve lists

* Pin the stdweb version that we use

It changed because I removed Cargo.lock to handle a merge conflict

I could have updated cargo web too, but it mean I should have re-built
the CI docker image and it was taking forever.

* Better contrast for links in the header of the article

* Add a basic privacy policy

* Remove "also"

* Fix a few issues

- Don't watch static/css in build.rs
- Another shade of white
- Remove useless margin rule for error messages
2019-05-18 13:09:51 +01:00
Marek Ľach c67f65e684 Fix occurrences of 'have been' to 'has been' (#578)
* Update comments.rs

* Update medias.rs

* Update posts.rs

* Update user.rs

* Update posts.rs

* Update user.rs
2019-05-14 11:54:16 +01:00
Baptiste Gelez d78b3a05ec Fix Crowdin upload (#576) 2019-05-12 20:14:59 +01:00
fdb-hiroshima 5579f64dd0 update dependancies (#574)
[Security] Bump ammonia from 2.0.0 to 2.1.1
Bump bcrypt from 0.2.2 to 0.4.0
Bump clap from 2.32.0 to 2.33.0
Bump colored from 1.7.0 to 1.8.0
Bump ctrlc from 3.1.1 to 3.1.2
Bump diesel from 1.4.1 to 1.4.2
Bump dotenv from 0.13.0 to 0.14.0
Bump hyper from 0.12.25 to 0.12.28
Bump openssl from 0.10.19 to 0.10.22
Bump proc-macro2 from 0.4.27 to 0.4.30
Bump reqwest from 0.9.11 to 0.9.16
Bump rpassword from 2.1.0 to 3.0.2
Bump serde_derive from 1.0.80 to 1.0.82
Bump serde_derive from 1.0.89 to 1.0.91
Bump serde from 1.0.89 to 1.0.91
Bump serde_qs from 0.4.5 to 0.4.6
Bump stdweb from 0.4.14 to 0.4.17
Bump syn from 0.11.11 to 0.15.27
Bump whatlang from 0.7.0 to 0.7.1
2019-05-12 10:41:47 +02:00
fdb-hiroshima 773fbfe7c8 cache local instance (#572)
* cache local instance

fix #564

* don't use local instance cache for plm

* use instance cache for plm, but initialize it

* cargo fmt
2019-05-10 21:59:34 +01:00
fdb-hiroshima 5b50f90d2b use openssl instead of sha256sum for build.rs (#568)
* use openssl instead of sha256sum for build.rs

* use a more portable flag for stat
2019-05-10 16:15:30 +02:00
fdb-hiroshima 90f6ef0380 upload artifact of wasm binary (#571)
fix #570
2019-05-10 15:38:43 +02:00
Marek Ľach 33619abdfb Fix certain improper rendering of forms (#560) 2019-05-06 19:18:53 +01:00
fdb-hiroshima c52aac012c make hashtags work in profile summary (#562)
* make hashtags work in profile summary

fix #541

* cargo fmt
2019-05-04 17:33:50 +02:00
fdb-hiroshima c9070930d2 Improve notification management (#561)
* Don't notify for comment when mentioned

fix #505

* Don't save notification for remote users

fix #472
2019-05-04 17:15:41 +02:00
fdb-hiroshima 918bda14ec rewrite circleci config (#558)
* rewrite circleci config with better syntax

and try using grcov for coverage

* attempt to use less memory and to rerun if memory lack

* actually remove use of kcov

* use the right var

* try looping

* run test serialized

* use feature where we should and make macro path independant

* cargo fmt and remove some '"'

* add zip to dependancies

* reduce number of used thread after first failure

* push translations to crowdin on commit to master

* don't cache result of coverage
2019-05-04 15:35:21 +02:00
fdb-hiroshima 33a0c7dcd3 reduce reqwest timeout to 5s (#557) 2019-04-30 23:30:13 +02:00
Baptiste Gelez 8f1ab3485e Add some feedback when performing some actions (#552)
* Add a way to display flash messages

* Make the flash messages look nice

* Add actual feedback messages

* cargo fmt

* Move flash messages to PlumeRocket

And add trait to convert PlumeRocket to BaseContext

* Remove useless lifetime
2019-04-30 11:04:25 +01:00
fdb-hiroshima 18ae6e26b3 remove the new index lock tantivy uses (#556) 2019-04-29 18:08:32 +01:00
fdb-hiroshima 49bb8cb0bc import migrations and don't require diesel_cli for admins (#555)
* import migrations via macro

* panic on database not to the latest migration

* add subcommand to plm

* create migration that run tantivy index creation

* remove diesel_cli from places it was

* use our migration system for tests

* create table __diesel_schema_migrations if needed
2019-04-29 16:30:20 +02:00
Baptiste Gelez ec57f1e687 Remove Canapi (#540)
* Remove Canapi

It added more complexity than it helped.

* Fail if there are many blog, but none was specified

* cargo fmt
2019-04-28 22:17:21 +01:00
Baptiste Gelez 787eb7f399 Federate user deletion (#551)
* Federate user deletion

- When someone deletes their account
- When a local user is banned

Fixes #509

* cargo fmt
2019-04-28 18:01:41 +01:00
Marek Ľach 85aa0883c8 Update follow_remote.rs.html grammar (#548)
* Update follow_remote.rs.html

* Update follow_remote.rs.html
2019-04-26 18:31:43 +01:00
Marek Ľach ff92ac0763 Make comments in styleshhets a bit clearer (#545)
* Update _variables.scss

* Make comments in stylesheets a bit more clear
2019-04-24 18:22:37 +02:00
fdb-hiroshima a20d2df50a Upload artifacts to pull request deploy environment (#539) 2019-04-20 23:07:50 +02:00
Baptiste Gelez 29e11f552f Remove r (#535)
I don't know why it was here 🤷‍♀️
2019-04-19 19:13:11 +01:00
Baptiste Gelez 3ad1f6968c Version bump: 0.3.0 (alpha 2) (#529) 2019-04-19 15:49:46 +01:00
Baptiste Gelez b572a1bd74 Fix #504 (#532)
- Add the `spaced` class to some article cards, to make them wider even on desktop
- Fix the CSS to always have a small margin for cards on mobile
2019-04-19 15:49:22 +01:00
fdb-hiroshima 6acb962e72 strip binary before packing (#533)
reduce by 35-40% size of binaries and archive
2019-04-19 16:13:40 +02:00
fdb-hiroshima 6bb4f8514f remove test after running it, and bump cache version (#531)
fix #523
2019-04-19 14:00:51 +01:00
Baptiste Gelez 68dd8602b2 New Crowdin translations (#479)
Enjoy!
2019-04-19 13:59:03 +01:00
fdb-hiroshima 4d4f2ba6ed increase default character limit (#530)
fix #524
2019-04-19 12:00:39 +01:00
fdb-hiroshima 3d82265b85 try to build release plume&plm on ci (#528)
ref Plume-org/docs#27
I should archive the artifacts before uploading
2019-04-19 11:36:45 +01:00
fdb-hiroshima 0d708e1639 Add support for remote interact (#519)
Add support for remote interaction ([this thing](https://eldritch.cafe/users/Barmaid/remote_follow) in mastodon)

- [x] create the endpoint dispatching remote interactions to local pages
- [x] add this endpoint to web-finger
- [x] propose remote interaction when following and not connected
- [x] propose remote interaction when liking/sharing and not connected
- [x] propose remote interaction when commenting and not connected
- [x] fetch posts/comments we don't know but remote interaction was requested for ?
2019-04-17 21:09:07 +01:00
Baptiste Gelez 12efe721cc Big refactoring of the Inbox (#443)
* Big refactoring of the Inbox

We now have a type that routes an activity through the registered handlers
until one of them matches.

Each Actor/Activity/Object combination is represented by an implementation of AsObject

These combinations are then registered on the Inbox type, which will try to deserialize
the incoming activity in the requested types.

Advantages:
- nicer syntax: the final API is clearer and more idiomatic
- more generic: only two traits (`AsActor` and `AsObject`) instead of one for each kind of activity
- it is easier to see which activities we handle and which one we don't

* Small fixes

- Avoid panics
- Don't search for AP ID infinitely
- Code style issues

* Fix tests

* Introduce a new trait: FromId

It should be implemented for any AP object.

It allows to look for an object in database using its AP ID, or to dereference it if it was not present in database

Also moves the inbox code to plume-models to test it (and write a basic test for each activity type we handle)

* Use if let instead of match

* Don't require PlumeRocket::intl for tests

* Return early and remove a forgotten dbg!

* Add more tests to try to understand where the issues come from

* Also add a test for comment federation

* Don't check creation_date is the same for blogs

* Make user and blog federation more tolerant to errors/missing fields

* Make clippy happy

* Use the correct Accept header when dereferencing

* Fix follow approval with Mastodon

* Add spaces to characters that should not be in usernames

And validate blog names too

* Smarter dereferencing: only do it once for each actor/object

* Forgot some files

* Cargo fmt

* Delete plume_test

* Delete plume_tests

* Update get_id docs + Remove useless : Sized

* Appease cargo fmt

* Remove dbg! + Use as_ref instead of clone when possible + Use and_then instead of map when possible

* Remove .po~

* send unfollow to local instance

* read cover from update activity

* Make sure "cc" and "to" are never empty

and fix a typo in a constant name

* Cargo fmt
2019-04-17 18:31:47 +01:00
fdb-hiroshima c19c094e0c add diverse links and meta to head (#522) 2019-04-09 15:33:34 +02:00
Marek Ľach de296b633f Standard smallest screen is 600px (#520)
For devices that have a screen size so small they have to use the `max-width` property in CSS, the standard of a screen-size that has to be used here is `phones 600px and smaller`, not `900px`, which would have to use the `min-width` property instead, that would mean a widescreen size, because `min-width` means `a screen size of 900px, or more`, including desktops.
2019-04-08 21:48:15 +01:00
Baptiste Gelez d7de09ab81 Fix Atom feed link on user page (#518) 2019-04-07 05:53:38 +02:00
Baptiste Gelez 7645fdbf35 Fix tabs on user page (#516)
The "Articles" tab was always selected.
2019-04-06 19:03:00 +01:00
Baptiste Gelez 1bc2684af1 Run cargo fmt on plume-front (#515)
When `editor-improvements` was merged it was not run, because Travis was still used, but now it makes Circle CI fail on master.
2019-04-06 18:57:25 +01:00
fdb-hiroshima 12c2078c89 Hide cw pictures behind a summary/details (#483)
* Hide cw pictures behind a summary/details
* refactor md_to_html a bit and add cw support
* use random id for cw checkbox
2019-04-06 19:20:33 +02:00
fdb-hiroshima eabe73ddc0 Add tests for plume webserver (#513)
* begin setup front-end test environment with selenium
* run migrations before tests
* use https for tests
2019-04-06 17:41:57 +02:00
Baptiste Gelez 1f7ff62c19 Editor improvements (#486)
- Make it possible to insert new paragraphs in the article body
- Make it impossible to copy formatted HTML (to make media insertion from markdown code work correctly)

TODO:

- [x] make it possible to escape draft mode
- [x] display errors from the server
- [x] button to go back to the "normal" editor
- [x] Avoid publishing placeholders
2019-04-06 14:20:12 +01:00
Marek Ľach 38701c8a40 Corrected grammar pointed out by translators (#514)
The user 'UniqueActive' pointed these issues out on Crowdin.

Thank you!
2019-04-04 20:06:37 +01:00
Marek Ľach 723d2c4600 Grammar corrections followup to #510 (#512)
A very small commit, but let's do all the string corrections while I am already at it :-)

Wraps up #510
2019-04-02 14:08:07 +01:00
fdb-hiroshima 26fc2cde5d use circleci instead of travis (#511)
Upgrade rust-toolchain
Upgrade Tantivy
Warning: tantivy now use a different file format, search index may need to be deleted and recreated to work as intended
try to run compile twice in a row because sometime oomk is evil
2019-04-01 20:28:23 +02:00
Marek Ľach 2d12524cd1 English source strings corrected (#510)
Requires .po/.pot files to be rebuilt

This resolves #508
2019-04-01 19:09:29 +01:00
Hugh a674df3a77 Some corrections to English UI text (#506)
* Update some UI strings for more natural English

* Correct message text

* Correct message text

* Update the strings everywhere

Because they are also used as base messages for other languages
2019-03-29 20:12:21 +01:00
Valentin Brandl c7ee779f51 Delete notifications when deleting comments (#499)
* Implement find_for_comment for notifications

* Delete notifications when deleting a comment

This should tackle #463

* Apply rustfmt

* Implement `find_for_mention` and remove order by from `find_for_comment`

There is no need to order the notifications

* Delete notifications for mentions

* Fix notifications for comments and mentions
2019-03-26 12:45:17 +01:00
Valentin Brandl f0d6b9d1e8 Fix issue with sqlite migrations for comment_seers (#503) 2019-03-26 08:57:46 +01:00
Baptiste Gelez 21cb0ef437 Always use GMT as a timezone for federation (#502)
To prevent a bug with Mastodon
2019-03-25 14:13:54 +01:00
Jean Lucas e93b8f4444 Change "Welcome on" to "Welcome to" (#501)
"Welcome on [noun]" is not grammatically correct as an introduction in
English. Let's fix that.
2019-03-25 08:57:26 +01:00
Baptiste Gelez bdfad844d7 Edit blogs, and add blog icons and banners (#460)
Also adds a parameter to `md_to_html` to only render inline elements (so that we don't have titles or images in blog descriptions). And moves the delete button for the blog on the edition page.

I still have to update the SQLite migration once others PRs with migrations will be merged.

Also, there will be a problem when you edit a blog while not owning its banner or icon: when validating they will be reset to their default values… I don't see a good solution to this until we have a better way to handle uploads with Rocket (the same is probably happening for articles btw).

And the icon/banner are not federated yet, I don't know if I should add it to this PR or if it can come after?

![image](https://user-images.githubusercontent.com/16254623/53894510-7d853300-4030-11e9-8a2c-f5c0b0c7f512.png)
![image](https://user-images.githubusercontent.com/16254623/53894539-8b3ab880-4030-11e9-8113-685a27be8d7c.png)

Fixes #453
Fixes #454
2019-03-22 19:51:36 +01:00
fdb-hiroshima 6cd9c8a01a Print help when subcommand is given without arguments (#498)
Fix #490
2019-03-21 23:25:22 +01:00
fdb-hiroshima ace6181c99 Allow to change logo from .env (#497)
Fix #273
2019-03-21 11:51:41 +01:00
fdb-hiroshima 65bb50e88f Centralize configuration and add some new config (#494)
Ideally, if someone could review the idea in [this comment](https://github.com/Plume-org/Plume/issues/273#issuecomment-474982184), I'd like to add the implementation to this pr too
2019-03-21 10:30:33 +01:00
Atul Bhosale b945d1f602 Run 'cargo fmt' to format code (#489) 2019-03-20 17:56:17 +01:00
Igor Galić 732f514da7 Refactor with the help of Clippy (#462)
We add clippy as our build — also rectifying the missing `plume-cli` build!

In the next step we follow clippy's advise and fix some of the "simple" mistakes in our code, such as style or map usage.

Finally, we refactor some hard bits that need extraction of new types, or refactoring of function call-types, especially those that thread thru macros, and, of course functions with ~15 parameters should probably be rethought.
2019-03-19 14:37:56 +01:00
fdb-hiroshima 570d7fe2d0 Add markdown support for summary (#482)
* Add markdown support for summary

* Save both md and html summary
2019-03-17 20:11:29 +01:00
fdb-hiroshima 191eb89958 Display error message when signin up with unmatching password (#484)
Fix #329
2019-03-17 20:10:45 +01:00
fdb-hiroshima a2b2e37aa0 Caching (#480)
* add basic caching support

* Use hash of static dir instead of rand

* Add support for ETag
2019-03-16 15:33:28 +01:00
Baptiste Gelez 90baf9beb1 Update Crowdin configuration file 2019-03-15 16:45:17 +01:00
Baptiste Gelez 9076dbaadc New editor (#458)
With this PR, when JS is activated and WASM supported, the article editor will be dynamically replaced with `contenteditable`s elements. This makes the editing interface simpler and less like a regular form. It will also allow us to easily add visual formatting with native browser APIs (and to insert images or videos directly). Here is a little demo:

![peek 05-03-2019 16-12](https://user-images.githubusercontent.com/16254623/53815536-1dc05680-3f62-11e9-94d3-b363ed84eb97.gif)

There is still a lot to do, but it is a good first step.

Fixes #255
2019-03-15 16:06:10 +01:00
Baptiste Gelez ffcbc0fde3 Update Crowdin configuration file 2019-03-15 14:41:51 +01:00
Kenneth Steimel 4ff56c6407 Added coloration for selections and contrasting (#476)
color for anchor elements when selected
2019-03-13 21:54:48 +01:00
Baptiste Gelez 42dca3daae Remove some unused #[derive] (#473)
We used to need them, probably when we were using Tera.
2019-03-12 19:40:54 +01:00
Baptiste Gelez 6405bd7261 Update issue templates (#471)
Use two different templates instead of one: one for bugs, one for feature requests.
2019-03-12 17:20:53 +01:00
Baptiste Gelez b52b8fc880 Fix wrong condition, resulting in 404 for valid NodeInfo endpoints (#464)
* Fix wrong condition, resulting in 404 for valid NodeInfo endpoints

* Forgot to remove that dbg!
2019-03-12 17:00:23 +01:00
Baptiste Gelez fe6e69d7c4 Add a fqn field to blogs and users (#457)
Fixes #319
2019-03-06 18:28:10 +01:00
Baptiste Gelez eff2698664 Slightly improve the media experience (#452)
* Slightly improve the media experience

- Use a grid to display the list of media
- Add icons for non-image media preview
- Paginate the gallery
- Add links to the gallery in the editor and in the profile settings to make it more discoverable when you need it

Fixes #432

* Allow video and audio tags in SafeString

Otherwise we can't display their preview, nor show them in articles

Also show controls by default for these two elements

* Show fallback images for audio and unknown files, to make them more visible

* Add a new constructor to SafeString when the input is trusted and doesn't need to be escaped.

And use it to generate media previews.

* Make it possible to insert video/audio in articles
2019-03-06 14:11:36 +01:00
Baptiste Gelez a5e0486da0 Make media extension parsing safer (#459)
Only keep it if contains letters and numbers only, otherwise remove it.

To be merged before #452
2019-03-06 14:09:43 +01:00
Baptiste Gelez 2a188abfa1 Fix follow IDs (#455)
* Generate valid IDs for Follow

Fixes #449

* Use the new post-insert hook for all the models

* Fix plume-cli build
2019-03-04 21:35:03 +01:00
Baptiste Gelez 9b48b8a846 Update dependencies (#456)
(whatlang especially, since it received an update that removes many build dependencies, making our total dependency count go from 512 to 478)
2019-03-04 20:46:26 +01:00
Baptiste Gelez a2b9d7ec44 Password reset (#448)
* Password reset

* Various improvements and fixes for password reset

- Reorganize src/mail.rs to make it  cleaner
- add a build_mail function
- only make the requests invalid after 2 hours
- avoid infintely-growing list of requests by deleting them once completed, or after 24 hours
- avoid sending many requests for the same user
- validate the password reset form

* Avoid locking so many times

Fix durations

* Remove old requests even if the current one is not valid

* Remove unused feature

* Also remove the custom_derive and plugin features while we are at it

* Forgot a 0 è_é

* Avoid panicking while owning a request lock

* Use master branch of lettre so that we can build with the latest OpenSSL

* Fix the debug mailer
2019-02-27 13:29:26 +01:00
Baptiste Gelez e28371bbe4 Add a page listing people someone follows (#444)
Nothing exceptional, the layout is the same as the followers page.

Fixes #325
2019-02-26 13:13:00 +01:00
zcdunn 7bac70a483 Update nodeinfo (#446)
Fix #433

I added the repo link to Cargo.toml so that `software.repository` could be configurable like @rhaamo suggested. I don't know if it's ok to include `software.repository` without bumping the schema version, but I didn't know if that would break any clients that parse nodeinfo with a hardcoded schema version.
2019-02-17 13:42:59 +01:00
fdb-hiroshima 64d1944715 Upgrade tantivy to 0.8.2 (#445)
Fix arm build
2019-02-14 08:46:37 +01:00
Baptiste Gelez 576a4ed499 Pull i18n from Funkwhale's weblate (#439)
* Added translation using Weblate (Arabic)

* Translated using Weblate (Arabic)

Currently translated at 66.7% (124 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/ar/

* Translated using Weblate (English)

Currently translated at 100.0% (186 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/en/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (186 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/ja/

* Translated using Weblate (Arabic)

Currently translated at 68.8% (128 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/ar/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 96.8% (180 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/nb/

* Translated using Weblate (Arabic)

Currently translated at 95.7% (178 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/ar/

* Added translation using Weblate (Spanish)

* Translated using Weblate (Spanish)

Currently translated at 3.8% (7 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/es/

* Added translation using Weblate (Portuguese (Portugal))

* Translated using Weblate (Arabic)

Currently translated at 99.5% (185 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/ar/

* Translated using Weblate (Portuguese (Portugal))

Currently translated at 95.7% (178 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/pt_PT/

* Translated using Weblate (Spanish)

Currently translated at 26.9% (50 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/es/

* Translated using Weblate (Spanish)

Currently translated at 34.9% (65 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/es/

* Translated using Weblate (Spanish)

Currently translated at 34.9% (65 of 186 strings)

Translation: Plume/Plume
Translate-URL: https://translate.funkwhale.audio/projects/plume/Plume/es/
2019-02-13 13:39:42 +01:00
Baptiste Gelez 77bfe635d7 Update dependencies (#440) 2019-02-13 13:39:30 +01:00
marcin mikołajczak a8b1f1107e i18n: Update Polish translation 🇵🇱 (#441) 2019-02-05 16:48:58 +01:00
Baptiste Gelez 7eef4643c8 Update rocket_i18n and add gettext_macros (#431)
Internationalization now uses proc-macros that generate the .pot file
automatically.
2019-02-02 15:23:50 +01:00
David Baucum 8696185d1e Fixed spelling error in instance command (#438) 2019-01-29 00:09:59 +01:00
Baptiste Gelez 5880dc1957 Improve search UI (#375) 2019-01-28 13:12:56 +01:00
fdb-hiroshima 716c58cb71 Lowercase extension before detemining media type (#437) 2019-01-27 13:44:09 +01:00
fdb-hiroshima e77e4d86e8 Better big form handling (#430)
* Allow customizing max form size from env vars

* Add error page for unprocessable entities

And change default http port to 7878

* Improve char counter: under the editor, more discrete, and give it a default value
2019-01-27 10:55:22 +01:00
zcdunn 06d6bd361a Add categories to web manifest (#434)
This pull request add a `categories` key to the web manifest. The categories key was [recently added](https://www.aaron-gustafson.com/notebook/categories-land-in-the-web-app-manifest/ "Blog post detailing the addition of categories to the spec") to the Web Manifest spec and is a list of categorizations you want to apply to your site that serves as a hint to search engines and webapp catalogs.

The categories can be anything and there is no standardized list of vaues. The W3C is maintaining a list of commonly used values [here](https://github.com/w3c/manifest/wiki/Categories). I added _social_ to Plume's manifest based on that list, but I think eventually allowing a user defined list would be better. I don't know if there's anything in Plume currently that would enable that.
2019-01-24 13:16:48 +01:00
KemoNine a2ddfb0ee9 Fix Plume arm builds (#427)
llvm latest svn commit is broken as of 2019/01/12. This patch pins the llvm+lld versions used for arm compiles.

It also tweaks the architecture detection to be more reliable in multi-lib/multi-arch situations where the CPU is 64bit but the runtime is 32bit.
2019-01-18 20:57:20 +01:00
fdb-hiroshima 944a9d08a7 Update dependencies (#428)
* Bump serde from 1.0.82 to 1.0.84
* Bump ructe from 0.5.4 to 0.5.6
* Bump colored from 1.6.1 to 1.7.0
* Bump itertools from 0.7.11 to 0.8.0
* Bump ammonia from 1.2.0 to 2.0.0
* Bump hyper from 0.12.19 to 0.12.20
* Bump serde_derive from 1.0.80 to 1.0.84
* Bump stdweb from 0.4.12 to 0.4.13
* Bump rsass from 0.9.4 to 0.9.6
* Bump failure from 0.1.3 to 0.1.5
* Bump reqwest from 0.9.5 to 0.9.8
* Bump serde_derive from 0.7.1 to 0.8.0
2019-01-18 19:22:36 +01:00
Dominique Feyer 09a26b4602 Better contrast for input fields (#417)
* Better contrat for input fields

This change set a white background for input field (text, select and textarea)
to have a better contrast with the page background and improve accessibility for
people with vision problem, and just crappy screen.

This change also remove the round corner for the input to have a clear difference
between editing field and buttons.

This max-width of the form element are a bit bigger too.

* Less space between label and input
2019-01-09 18:57:48 +01:00
Dominique Feyer 0490b698cb Use multi step build to limit the docker image size (#416)
* Use multi step build to limit the image size

This change replace the Dockerfile with a multi step build to avoid huge image
size (the new image should be around 130Mo including all layers), compared to
more that 1Go with the full build chain. It's also more safe. This image does
not include cargo (not needed in production), so the old Dockerfile is available
and renamed Dockerfile.slim for those who use Docker for development setup.

* Use correct path for local repository

* Use sleep between chmod and execution
2019-01-09 17:48:18 +01:00
Dominique Feyer 671c340aa8 Better header line height (#418)
This change also remote all units for line-height to have more consistent styles and better cascading support. This solve the too small line height for multi line header in article and also add styling for h1 to h6 (previously h3 to h6 was not styled at all)
2019-01-09 17:46:03 +01:00
fdb-hiroshima c4a4ea5b6c Support blind key rotation (#399)
* Allow receiving objects with new unknown key

* Rotate key after sending Delete activity

* Do the right check
2019-01-05 22:30:28 +01:00
fdb-hiroshima aa72334dc6 Allow for media cover deletion (#387)
* Allow for media cover deletion

Fix #356

* Fix sqlite migrations
2019-01-05 22:11:54 +01:00
fdb-hiroshima 7c8599b0a2 Disallow interaction with medias owned by others (#410)
Notably prevent media deletion by other users
2019-01-05 22:09:57 +01:00
fdb-hiroshima c502ae73f6 Encode redirect messages into valid url data (#409)
Ref #408
2019-01-05 19:36:55 +01:00
Marcin Mikołajczak 2993379aaf i18n: Update Polish translation (#407) 2019-01-04 18:46:48 +01:00
fdb-hiroshima 2333d898b9 Add new subcomand for plm to reset password (#406)
* Add new subcomand for plm to reset password

* Verify user exist before asking for new password
2019-01-03 16:45:27 +01:00
KemoNine dfa89e227a Plume front arm support (#402)
* Update plume-front build to use a shell script that adds the necessary dependencies on arm (x86 left untouched inside the script)

* Fix cleanup portion of plume-front.sh

* Break wasm dependencies for arm out so they are run before the main builds to improve layer caching on subsequent docker builds

* Fixup dockerfile so wasm-deps can run properly and with fewer assumptions

* Move new scripts to script/ folder

* Remove saving of path as it's not actually not necessary

* Add rust-toolchain to early copy so it pulls the right rust release (addresses #400)
2018-12-31 18:46:20 +01:00
fdb-hiroshima 2896eb1705 Fix login issue (#401)
Regression introduced by 4059a840be
2018-12-31 11:45:59 +01:00
Marek Ľach 3128e6a3b9 Tags grammar and admin string corrections (#397) 2018-12-29 17:40:11 +01:00
Baptiste Gelez 80a4dae8bd Avoid panics (#392)
- Use `Result` as much as possible
- Display errors instead of panicking

TODO (maybe in another PR? this one is already quite big):
- Find a way to merge Ructe/ErrorPage types, so that we can have routes returning `Result<X, ErrorPage>` instead of panicking when we have an `Error`
- Display more details about the error, to make it easier to debug

(sorry, this isn't going to be fun to review, the diff is huge, but it is always the same changes)
2018-12-29 09:36:07 +01:00
Marek Ľach 4059a840be Batch of correnctions for text strings in plume.pot (#395) 2018-12-27 14:13:00 +01:00
Marek Ľach e2d5a5057c Update edit.rs.html string (#389) 2018-12-26 13:05:06 +01:00
fdb-hiroshima ccba485215 Trim email and username (#386)
Also forbid whitespaces in username
Fix #385
2018-12-25 18:00:21 +01:00
Marek Ľach 9b3b79ef9c A small batch of rephrashings for text strings (#378)
* A small batch of rephrashings for text strings

* Update plume.pot
2018-12-25 16:00:00 +01:00
Marek Ľach 07ecbde93c Small changes to text strings (#379) 2018-12-25 15:59:54 +01:00
Marek Ľach fefb189056 Expanded search text strings (#380) 2018-12-25 15:56:30 +01:00
Marek Ľach ec4b9d5067 Text strings for articles (#381) 2018-12-25 15:55:48 +01:00
Marek Ľach 8f6333029d Article detail text strings update (#382) 2018-12-25 15:55:18 +01:00
Marek Ľach 040a3b8688 Media upload strings update (#383) 2018-12-25 15:54:35 +01:00
Marek Ľach b5ddca2f64 Media details small strings correction (#384) 2018-12-25 15:54:08 +01:00
Baptiste Gelez 3fce5d6a14 Use Rust for the front-end too (#374)
Rust can compile to WASM, so let's use it for front-end code as well.

To compile the front-end:

```
cargo install cargo-web
cargo web deploy -p plume-front
```
2018-12-25 11:51:40 +01:00
Marek Ľach 22bc8c1d40 Text strings updated (#377)
* Texts strings updated

* Update plume.pot

* Update plume.pot

* Update plume.pot

* Update plume.pot

* Update plume.pot
2018-12-24 19:04:25 +01:00
Marek Ľach aa6c1ffd64 Change title from Edit account to Create account (#376) 2018-12-24 19:03:54 +01:00
Baptiste Gelez 4ec2480f50 Post creation API (#307) 2018-12-24 16:42:40 +01:00
fdb-hiroshima fdfeeed6d9 Comment visibility (#364)
Add some support for comment visibility, fix #217 

This add a new column to comment, denoting if they are public or not, and a new table linking private comments to those allowed to read them. There is currently no way to write a private comment from Plume.
Git is having a hard time what happened in Comment::from_activity, but most of it is just re-indentation because a new block was needed to please the borrow checker. I've marked with comments where things actually changed.
At this point only mentioned users can see private comments, even when posted as "follower only" or equivalent.

What should we do when someone isn't allowed to see a comment? Hide the whole thread, or just the comment? If hiding just the comment, should we mark there is a comment one can't see, but answers they can, or put other comments like if they answered to the same comment the hidden one do?
2018-12-24 11:23:04 +01:00
Marek Ľach 2621549f5e An attempt to fix disorted submit button on mobile devices like iPhone - please review (#370)
* Update _forms.scss

* Update _forms.scss

* Update _forms.scss
2018-12-23 17:30:57 +01:00
Baptiste Gelez 8ff6332784 I'm not the only one who made Plume è_é (#373) 2018-12-23 17:29:08 +01:00
Baptiste Gelez 04625b3fea Use Route159 for comment deletion button (#372)
For some reason it was not what was used.
2018-12-23 15:58:25 +01:00
Baptiste Gelez 5a682419cb Remove the docs folder (#371)
Since documentation now has its own repo.

I also modified a bit the dockerfile to make the image lighter.
2018-12-23 15:24:55 +01:00
fdb-hiroshima 5c5cf36b0d Allow for comment deletion (#363)
* Allow for comment deletion

Receive and emit deletion activity
Add button to delete comment

* Remove debug print and fix copy-past typo

* Improve style of comment deletion button
2018-12-23 11:13:36 +01:00
fdb-hiroshima 0df9c4d400 Give reshare and like ap_url before inserting (#369)
Fix #367
2018-12-23 11:13:02 +01:00
fdb-hiroshima 0ea1d57e48 Fix some federation issues (#357)
* Fix some follow issues

Fix not receiving notifications when followed by remote users
Fix imposibility to be unfollowed by Mastodon/Pleroma users (tested only against Pleroma)

* Fix notification on every post

* Fix issues with federation

Send Link instead of Object when emiting Follow request
Receive both Link and Object for Follow request
Don't panic when fetching user with no followers or posts from Pleroma
Reorder follower routes so Activity Pub one is reachable

* Generate absolute urls for mentions and tags

* Verify author when undoing activity by Link
2018-12-23 11:12:15 +01:00
fdb-hiroshima ab2998e214 Make Plume compile on release (#365)
* Remove use of String for body parameters

Create SignedJson and implement FromData for it

* Make Travis test on release

* Remove warning when installing and fix coverage
2018-12-22 18:27:21 +01:00
Baptiste Gelez 718e23ac85 Update README.md
Links to joinplu.me

Say that we have a CoC

Remove link to baptiste.gelez.xyz
2018-12-21 19:53:09 +01:00
Marcin Mikołajczak 61a79f426b i18n: Update Polish translation (#366) 2018-12-20 19:57:53 +01:00
fdb-hiroshima ce08346487 Remove ap_url from mention (#362) 2018-12-18 15:03:47 +01:00
Baptiste Gelez 9e799f2cf2 Use SCSS (#355)
- Use variables
- Split everything in various files

The SCSS is compiled with `cargo build`/`run`

I also fixed a few visual issues.
2018-12-15 22:06:27 +01:00
Baptiste Gelez 38302203f4 Count items in database as much as possible (#344)
* Count items in database as much as possible

* Fix the tests

* Remove two useless queries

* Run pragma directive before each sqlite connection

* Pragma for tests too

* Remove debug messages
2018-12-14 23:16:18 +01:00
Baptiste Gelez b0089e59b7 Remove useless pagination routes (#351)
Rocket 0.4 let us have routes with optional query parameter
2018-12-13 22:20:19 +01:00
Baptiste Gelez e139008d35 Fix reshare button style 2018-12-13 21:56:26 +01:00
Trinity Pointard 21fe63665d Upgrade rocket_csrf
Fix #346
2018-12-13 10:22:43 +01:00
Trinity Pointard 2870642cfa Fix mentions containing underscores
Fix #338
2018-12-12 10:50:55 +01:00
Trinity Pointard fcbaf6eee3 Allow to keep query params in paginate
Fix #349
2018-12-12 00:52:26 +01:00
Kristof De Jaeger 144f5966dd Add a space between u-url class and href (#347)
There's a missing space, which probably causes the h-feed not to parse.
You can always use http://xray.p3k.io/ to validate the microformats on a page.

e.g. http://xray.p3k.io/parse?url=https%3A%2F%2Fbaptiste.gelez.xyz%2F%7E%2FFederationTesting%2Fplume-and-the-indie-web&pretty=true is fine, so that's good!

However, the h-feed isn't parsing right - http://xray.p3k.io/parse?expect=feed&url=https%3A%2F%2Fbaptiste.gelez.xyz%2F%40%2F0x1C3B00DA&pretty=true (you can always add 'expect=feed' to the get params if you are really sure it needs to be a feed)
2018-12-11 12:30:23 +01:00
Baptiste Gelez 61b6ceed92 Add some constraint at database level (#342)
* Add some constraint at database level

Fixes #79 and should fix #201 and #113 as well

* Fix tests

Delete duplicated data before adding constraints (only with Postgres, there is no way to do it with Sqlite with complex constraints like the one we are using)

Remove the constraint on media path

* We don't need to drop the media unique constraint anymore

Because we deleted it
2018-12-09 18:44:26 +01:00
Baptiste Gelez b73fbd3768 License federation (#343)
* Federate license

* Make it possible to use no license
2018-12-09 18:43:34 +01:00
fdb-hiroshima e9f2f769be Add microformat tags (#341)
Close #229 
Adding `<div>` might have broken the layout in some places. I've tried to fix it, tell me if I missed it somewhere
2018-12-08 21:52:46 +01:00
Ryo Nakano 4182e67dbf Update Japanese translation (#339) 2018-12-08 15:39:47 +01:00
fdb-hiroshima e1ecc7289f Upgrade plume dependencies (#332)
* Bump base64 from 0.9.3 to 0.10.0
* Bump bcrypt from 0.2.0 to 0.2.1
* Bump canapi from 0.1.0 to 0.2.0
* Bump failure from 0.1.2 to 0.1.3
* Bump hyper from 0.11.27 to 0.12.11
* Bump hyper from 0.11.27 to 0.12.16
* Bump lazy_static from 1.1.0 to 1.2.0
* Bump multipart from 0.15.3 to 0.15.4
* Bump openssl from 0.10.12 to 0.10.15
* Bump pulldown-cmark from 0.1.2 to 0.2.0
* Bump reqwest from 0.9.2 to 0.9.5
* Bump rocket from 0.4.0-rc.1 to 0.4.0
* Bump rpassword from 2.0.0 to 2.1.0
* Bump ructe from 0.5.2 to 0.5.4
* Bump serde_derive from 1.0.79 to 1.0.80
* Bump serde from 1.0.79 to 1.0.80
* Bump serde_json from 1.0.32 to 1.0.33
* Bump tera from 0.11.17 to 0.11.20
* Bump url from 1.7.1 to 1.7.2
* Bump validator to from 0.7.2 to 0.8.0
* Bump validator_derive from 0.7.2 to 0.8.0
* Bump whatlang from 0.5.0 to 0.6.0
* Remove hyper from plume-common dependencies
* Remove rpassword from Plume dependancies
* Upgrade compiler to nightly-2018-12-06
2018-12-07 21:00:12 +01:00
Trinity Pointard b4e4b497ee Works on template
Use uri! to generate links instead of hardcoded urls
Fix #110
Fix invalid links needing to be POST forms
Translate login message for boost and like directly from template
Put js for search in its own file
2018-12-07 12:10:03 +01:00
Baptiste Gelez 70af57c6e1 Use Ructe (#327)
All the template are now compiled at compile-time with the `ructe` crate.

I preferred to use it instead of askama because it allows more complex Rust expressions, where askama only supports a small subset of expressions and doesn't allow them everywhere (for instance, `{{ macro!() | filter }}` would result in a parsing error).

The diff is quite huge, but there is normally no changes in functionality.

Fixes #161 and unblocks #110 and #273
2018-12-06 18:54:16 +01:00
Trinity Pointard 5f059c3e98 Fix issues with tags and mentions
Fix issue where leading @ or # of a mention/hashtag get duplicated
Fix issue where normal tags were being overwritten by hashtags
2018-12-06 15:10:07 +01:00
Trinity Pointard d6e220cc8d Actually index post_id in tantivy
Otherwise you can't remove/edit a document
2018-12-04 06:43:32 +01:00
Trinity Pointard 39deede935 Verify signature date
Fix #286
Remove indexed from post_id search field as it was added by mistake
2018-12-04 00:08:55 +01:00
Ryo Nakano 5ff3b65cc5 i18n: Add Japanese translation (#333)
Browsing the Demo instance, I sometimes found Japanese articles. So I decided to translate Plume into Japanese.
2018-12-03 19:06:10 +01:00
Trinity Pointard 24071a6229 Make plm search use cwd if no directory is given and update doc 2018-12-02 20:01:48 +01:00
Trinity Pointard ed71d24fe9 Verify remote user name and media url 2018-12-02 19:09:17 +01:00
fdb-hiroshima 449641d158 Add a search engine into Plume (#324)
* Add search engine to the model

Add a Tantivy based search engine to the model
Implement most required functions for it

* Implement indexing and plm subcommands

Implement indexation on insert, update and delete
Modify func args to get the indexer where required
Add subcommand to initialize, refill and unlock search db

* Move to a new threadpool engine allowing scheduling

* Autocommit search index every half an hour

* Implement front part of search

Add default fields for search
Add new routes and templates for search and result
Implement FromFormValue for Page to reuse it on search result pagination
Add optional query parameters to paginate template's macro
Update to newer rocket_csrf, don't get csrf token on GET forms

* Handle process termination to release lock

Handle process termination
Add tests to search

* Add proper support for advanced search

Add an advanced search form to /search, in template and route
Modify Tantivy schema, add new tokenizer for some properties
Create new String query parser
Create Tantivy query AST from our own

* Split search.rs, add comment and tests

Split search.rs into multiple submodules
Add comments and tests for Query
Make user@domain be treated as one could assume
2018-12-02 17:37:51 +01:00
Trinity Pointard 9714bafded Verify username for special characters on signup 2018-12-02 12:43:03 +01:00
fdb-hiroshima 74c398d60c Run cargo clippy on whole project (#322)
* Run cargo clippy on plume-common

Run clippy on plume-common and adjuste code accordingly

* Run cargo clippy on plume-model

Run clippy on plume-model and adjuste code accordingly

* Reduce need for allocation in plume-common

* Reduce need for allocation in plume-model

add a quick compilation failure if no database backend is enabled

* Run cargo clippy on plume-cli

* Run cargo clippy on plume
2018-11-26 10:21:52 +01:00
fdb-hiroshima 8a4702df92 Add unit tests for main model parts (#310)
Add tests for following models:
- Blog
- Instance
- Media
- User
2018-11-24 12:44:17 +01:00
KokaKiwi 0b9727ed28 Generate valid follow Accept activity URI (#317)
For now it only generate a "fake" URI for accept follow activities, but it should be possible to get the URI dereferencable later.

Also I don't know if this URI looks ok, I tried to get something kind of future-proof, but I don't really know about the actual URIs conventions.

Closes #313
2018-11-23 13:23:46 +01:00
KokaKiwi 100f6307a7 Set Content-Type for ActivityPub request to correct value. (#315) 2018-11-23 13:18:33 +01:00
KokaKiwi 67fe28177e Decode unfollow activities in inbox properly (#316) 2018-11-23 13:17:37 +01:00
Trinity Pointard 00a205a882 Update debian installation doc
fix #305
Update debian installation doc
Remove need for libpq when compiling with sqlite backend
Remove some unneaded features of multipart to speed up compilation
2018-11-21 10:09:23 +01:00
Aaron W. Swenson 3ecd0e3c34 Correct Gentoo emerge instructions (#311)
Emerge doesn't care what order the packages are given; it'll figure out the correct build order and pull in the proper dependencies. Adding the -u switch will only perform the emerge if the package is not yet installed or needs to be updated. This avoids wasting time performing an emerge on something that has already been emerged.

While harmless, it is unnecessary to explicitly include eselect-postgresql in the list as the dev-db/postgresql ebuilds declare it as a dependency. There is no "sqlite3" or "libsqlite3-dev" ebuilds, so that command would fail.
2018-11-10 12:30:12 +01:00
Baptiste Gelez a64c4912cf Add support for CW in comments (#308)
All the backend/federation code was already, I just added the UI 🤷‍♀️ 

Fixes #253
2018-11-07 15:57:31 +01:00
Baptiste Gelez b28411da99 Test with PostgreSQL too (#309)
* Test with PostgreSQL too

* Add 'test' to Travis build stages

* Add test coverage for postgresql
2018-11-07 15:50:24 +01:00
Baptiste Gelez 3690e4cfb9 Fix the path of the media directory for Docker setups 2018-11-06 10:56:42 +01:00
Baptiste Gelez 94904fa3d5 Escape titles in RSS feeds 2018-11-06 10:49:46 +01:00
Baptiste Gelez f0b911a328 Fix RSS feed link on blog pages 2018-11-06 10:41:17 +01:00
Alexander d724eba772 i18n: Add Russian translation (#306) 2018-11-05 19:18:46 +01:00
Trinity Pointard dca91945af Try to take advantage of travis cache and build stages 2018-11-04 20:27:27 +01:00
Baptiste Gelez 8d5eaaec6a Add Codecov badge 2018-11-02 10:02:31 +01:00
Baptiste Gelez 6b2d9d4221 Tests infrastructure for plume-models (#302)
First step for testing `plume-models`. I only added one test for the moment, but we should add more in future PRs.
2018-11-01 22:23:38 +01:00
Marcin Mikołajczak 1bcde7fb86 i18n: Update Polish translation 2018-11-01 12:47:28 +01:00
Baptiste Gelez 57cf55fecc Fix RSS feed icon
Closes #289
2018-10-31 18:17:13 +01:00
Baptiste Gelez 67077267cf Add OpenGraph metadata 2018-10-31 16:14:26 +01:00
Baptiste Gelez 68a30cc80e Fix spacing for the delete article button 2018-10-31 15:22:49 +01:00
Baptiste Gelez 185cb5142a Better style for subtitles 2018-10-31 15:19:42 +01:00
Baptiste Gelez 25b7399e7f Only list images for possible covers 2018-10-31 15:07:40 +01:00
Baptiste Gelez f593ce40af Remove some debug messages 2018-10-31 15:07:40 +01:00
Baptiste Gelez 464832bb31 Avoid template errors when form.cover is not defined 2018-10-31 15:07:40 +01:00
Baptiste Gelez 1a49569bf2 Better style for <select> 2018-10-31 15:07:40 +01:00
Baptiste Gelez 4a2f5aeeeb Display article covers 2018-10-31 15:07:40 +01:00
Baptiste Gelez 95326c09e0 Federate article covers 2018-10-31 15:07:40 +01:00
Baptiste Gelez 485aac2e20 Add an interface to select an article illustration 2018-10-31 15:07:40 +01:00
Baptiste Gelez ab5edbc6a5 Add a cover field to posts
Referencing the media to use to illustrate the article
2018-10-31 15:07:40 +01:00
Baptiste Gelez 9f1b37648e Fix error in de.po 2018-10-31 15:06:00 +01:00
Baptiste Gelez f6227e7a42 Nicer default avatar 2018-10-31 15:03:21 +01:00
Baptiste Gelez 8e8aae17b1 Nginx docs: add 'unsafe-inline' to CSP header (to allow avatars to be loaded) 2018-10-31 14:56:17 +01:00
Baptiste Gelez 2e072affb5 Fix editor auto-expansion (#293) 2018-10-30 18:16:24 +01:00
Baptiste Gelez e26a150164 Make Authorization optional for read routes
Only require it when reading draft articles.
2018-10-30 18:13:49 +01:00
Baptiste Gelez c341179150 ApiToken: rename what to scope 2018-10-30 18:13:49 +01:00
Baptiste Gelez 28fbf35779 Use PhantomData intead of two Options useless for Authorization
And remove some warnings about unused parameters
2018-10-30 18:13:49 +01:00
fdb-hiroshima 9784d754b2 Use the full URL to refer to the Apps API
Co-Authored-By: BaptisteGelez <baptiste@gelez.xyz>
2018-10-30 18:13:49 +01:00
Baptiste Gelez 647a5af070 Make it impossible to know if an username is used or not with the API 2018-10-30 18:13:49 +01:00
Baptiste Gelez 0dbf9f519e AppEndpoint.name is required for both the client and server 2018-10-30 18:13:49 +01:00
Baptiste Gelez 31641b1ea1 New request guard: Authorization<Action, Scope>
Filter requests that don't have an API token authorized to read or write
a specific scope;
2018-10-30 18:13:49 +01:00
Baptiste Gelez cd4ae5b7f5 Document API authentication and apps API 2018-10-30 18:13:49 +01:00
Baptiste Gelez 9a13d804c5 impl FromRequest for ApiToken
and use it for the posts API
2018-10-30 18:13:49 +01:00
Baptiste Gelez 663ec52fea Disable CSRF for the whole API 2018-10-30 18:13:49 +01:00
Baptiste Gelez 2394ff424b Add an ApiToken model, and an endpoint to get one 2018-10-30 18:13:49 +01:00
Baptiste Gelez f2190adfc2 Add an API endpoint to register apps 2018-10-30 18:13:49 +01:00
Baptiste Gelez 4c8a727e9e Add a model for external apps
Stores their name, website, and credentials
2018-10-30 18:13:49 +01:00
Trinity Pointard 76ca76f068 Update tags and hashtags on remote post edition 2018-10-29 20:54:27 +01:00
Trinity Pointard c4fc656809 Update mentions on remote post edition 2018-10-29 20:54:27 +01:00
Trinity Pointard f147885f08 Detect if tags are hashtags when receiving new posts 2018-10-29 20:54:27 +01:00
Trinity Pointard 9d7ae694a8 Delete notification on post deletion 2018-10-29 20:54:27 +01:00
Trinity Pointard 2523f3b523 Prevent duplication of mention on post update
and delete mentions and notifications of user no longer mentioned
2018-10-29 20:54:27 +01:00
Trinity Pointard 1689813df4 Deduplicate tags and mentions
Use set to work on tags and mentions, allowing deduplication of them,
and clearer code
May also help with distinguishing tags and hashtags latter
2018-10-29 20:54:27 +01:00
fdb-hiroshima 83d6da29a5 Fix typos
Remove line breaks where not needed
2018-10-29 20:31:25 +01:00
Baptiste Gelez 1a2de6c88f Fix the NodeInfo example
Forgot to change that when I copy/pasted it from the source
code.
2018-10-29 20:31:25 +01:00
Baptiste Gelez 175a9edb77 Add documentation for our ActivityPub implementation
Fixes #262
2018-10-29 20:31:25 +01:00
Baptiste Gelez 6efcba46ad Merge pull request #297 from maximesrd/patch-8
Added startup script for openrc
2018-10-29 19:35:57 +01:00
Baptiste Gelez 8c2e0e680a Merge pull request #294 from silkevicious/master
Added Italian translation
2018-10-29 19:28:38 +01:00
maximesrd ae4c7e559c Added startup script for openrc 2018-10-29 12:39:14 +01:00
Trinity Pointard 0bb2e6293a Send Create activity when undrafting post
Send a Create activity when a post get undrafted, instead of sending an
	Update activity for a non federated post
Fix #221
2018-10-28 11:42:01 +01:00
Trinity Pointard cbbd0ca920 Group post by 12 instead of 10
Fix #251
2018-10-28 11:26:24 +01:00
Trinity Pointard 0bb719830a Fix incorrect media link
Fix #292
2018-10-27 19:21:50 +02:00
Sylke Vicious 9871f03d29 Added italian translation 2018-10-27 08:35:24 +02:00
Sylke Vicious 999e213eda Added IT to LINGUAS files 2018-10-27 08:34:51 +02:00
Baptiste Gelez b28c1a7568 Merge pull request #288 from maximesrd/patch-7
Adding MIGRATION_DIRECTORY
2018-10-22 19:24:20 +01:00
Baptiste Gelez 9000f2ba62 Merge pull request #287 from maximesrd/patch-6
Variable name error
2018-10-22 19:23:53 +01:00
maximesrd 15eac79123 Adding MIGRATION_DIRECTORY 2018-10-22 20:17:27 +02:00
maximesrd bbcea45e4b Variable name error 2018-10-22 20:13:15 +02:00
Baptiste Gelez fcf911fac9 ActivityPub: don't delete anything if the actor is not authorized 2018-10-22 16:29:25 +01:00
Baptiste Gelez fc5acac861 Merge pull request #283 from Plume-org/hashtags
Support hashtags
2018-10-21 13:53:15 +01:00
Baptiste Gelez 9187aefda0 Merge pull request #282 from Plume-org/blog-deletion
Add support for blog deletion
2018-10-21 13:39:41 +01:00
Trinity Pointard d47aff70f7 Add new string to translate for blog deletion 2018-10-21 12:09:22 +02:00
Trinity Pointard 9a8758d7fc Hide hashtags from tag list 2018-10-20 23:45:29 +02:00
Trinity Pointard 95ea248518 Add support for hashtag on user interface
Add migration to fix typo
Add support for linking hashtags with posts
Rework tag search page so it says a nicer message than page not found
when no post use that tag
Add new string to translation
2018-10-20 19:27:49 +02:00
Trinity Pointard 4fa3a0f6ee Add support for hashtags in md parser 2018-10-20 16:38:16 +02:00
Trinity Pointard eca458b0e5 Add support for blog deletion
fix #181
2018-10-20 15:03:59 +02:00
Trinity Pointard a6e73f4667 Allow tag deletion
Fix #232
2018-10-20 14:05:41 +02:00
Baptiste Gelez 879fde81ba Merge pull request #281 from Plume-org/panic-refactor
Panic less and with better messages
2018-10-20 10:56:29 +01:00
Trinity Pointard fd92383f87 Normalize panic message and return 400 or 404 when suitable 2018-10-20 11:04:20 +02:00
Trinity Pointard 4e6f3209d5 Normalize panic message
Change all unwrap to expect
Normalize expect's messages
Don't panic where it could be avoided easily
2018-10-20 08:44:33 +02:00
Baptiste Gelez 630ad0920d Merge pull request #279 from PhieF/patch-1
Apache config wasn't working
2018-10-18 19:21:09 +01:00
Baptiste Gelez 370dafc2dc Merge pull request #280 from anoadragon453/anoa/welcome
Fix Welcome banner grammar
2018-10-18 19:20:45 +01:00
Andrew Morgan 7eebfe991b Welcome on -> Welcome to 2018-10-18 17:52:26 +02:00
PhieF ca19747d2b Apache config wasn't working
SSLStaplingCache needs to be outside of VirtualHost and adding missing </Directory>
2018-10-18 14:49:53 +02:00
Bat 9d70eeae61 Don't register the media serving route (they are now served with other static files)
And remove some unused imports
2018-10-12 20:48:11 +01:00
Bat dde4583fd3 Database setup in Docker install instructions 2018-10-12 20:41:05 +01:00
Bat ab20fec147 Fix MIGRATION_DIR for Docker 2018-10-12 20:38:54 +01:00
Bat 14969d489c Save medias in static/media
Fixes #272
2018-10-12 20:32:34 +01:00
Baptiste Gelez f7c37ca6ca Merge pull request #277 from oliof/patch-1
Add caddyserver example configuration
2018-10-12 19:57:14 +01:00
Harald Wagener 5e248cc99f Add caddyserver example configuration
Add caddyserver example configuration
2018-10-12 20:50:41 +02:00
Trinity Pointard f9498828c4 Modify post slug only when it's still drafted
Fix #207
2018-10-11 14:23:23 +02:00
Trinity Pointard ed5bafbbc4 Update webfinger and reqwest
Update webfinger to 0.3.1
Update reqwest to 0.9
Fix #257
2018-10-11 13:51:45 +02:00
Baptiste Gelez 8fdb55a501 Merge pull request #256 from Plume-org/verify-signature
Verify activity's signature
2018-10-10 21:31:11 +01:00
Baptiste Gelez 09e7226c23 Don't lowercase URL for requests signatures 2018-10-10 20:23:39 +00:00
Trinity Pointard ba4695f490 Add support for signature verification on pseudo header
Add support for pseudo-header '(request-target)'
Add some logging for denied request
2018-10-10 21:10:43 +02:00
Baptiste Gelez ce09ca14c4 Merge pull request #276 from midzer/patch-1
Update de.po
2018-10-10 17:55:44 +01:00
midzer dda41b1c57 Update de.po 2018-10-10 18:51:10 +02:00
Bat d77d064a85 Add links to API.md and CLI.md on the docs homepage 2018-10-09 21:39:30 +01:00
Baptiste Gelez 3901ae835f Merge pull request #274 from Plume-org/logo
New logo!
2018-10-09 20:03:29 +01:00
Bat 1b9c3f69bf Add icons to Web Manifest 2018-10-09 19:38:01 +01:00
Bat 25f47a7951 Add a favicon 2018-10-09 19:23:36 +01:00
Bat 45c31b1c8a Add the new logo the header 2018-10-09 15:37:40 +01:00
Bat d5ba8864c3 Import @trwnh's logos
I would have liked to merge their commits in Plume's repository, but I have no idea how it could be done.

For reference, here is the repository they come from: https://github.com/trwnh/plumeLogos
2018-10-09 15:22:07 +01:00
Bat 3f18cdd38b Add .swp to .gitignore 2018-10-08 20:42:40 +01:00
Baptiste Gelez da7bfd50d0 Merge pull request #271 from yannicka/master
Update French translation
2018-10-08 20:11:35 +01:00
Yannick Armand 14bfb410ab Update French translation 2018-10-08 21:07:36 +02:00
Bat 3b7842d040 Rocket should manage DbConn, not Option<DbConn>
Otherwise it fails when using DbConn as a request guard
2018-10-08 20:02:17 +01:00
Bat 4f84b2a3ed Impl SQL traits for SafeString only for the selected backend
Fixes #269
2018-10-08 18:58:15 +01:00
Baptiste Gelez 0469b8dae2 Merge pull request #266 from Plume-org/cc-by-sa
Change default license to CC-BY-SA
2018-10-07 21:28:43 +01:00
Baptiste Gelez 3a13d80dc6 Merge pull request #267 from Plume-org/db-url
Replace DB_URL with DATABASE_URL
2018-10-07 21:28:28 +01:00
Bat fe3df74986 Fix Docker build (forgot --features)
And update diesel_cli in Docker too
2018-10-07 19:12:10 +01:00
Bat 9cc795d8be Replace DB_URL with DATABASE_URL
This way it is shared with diesel, which simplifies a lot the setup

Also fixes a few issues in the documentation, that are not directly related
2018-10-07 11:00:50 +01:00
Bat 915b9bb0e5 Use env!("CARGO_PKG_VERSION") instead of hardcoding version when possible
See https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates
2018-10-06 18:55:30 +01:00
Baptiste Gelez 7a64005ca9 Merge pull request #265 from Plume-org/sqlite-docs
Update docs for SQlite
2018-10-06 18:25:23 +01:00
Bat 387efbf3e9 Change default license to CC-BY-SA
Fixes #258
2018-10-06 18:19:45 +01:00
Bat f60f427358 Document --features 2018-10-06 16:39:33 +01:00
Bat a0920eb6cf Rephrase Mac OS dependencies installation 2018-10-06 16:35:39 +01:00
Bat b09360b270 Docs: correct dependencies for SQlite 2018-10-06 16:34:09 +01:00
Baptiste Gelez 046c9a011e Merge pull request #264 from maximesrd/patch-5
Missing dependencies
2018-10-06 16:29:10 +01:00
maximesrd 65900af763 Missing dependencies
sqlite was missing, which caused the compilation to fail, even if the database used is postgresql
2018-10-06 17:12:30 +02:00
Bat f84fb47fe7 Update docs for SQlite 2018-10-06 16:06:50 +01:00
Baptiste Gelez 00fe11fcbb Merge pull request #261 from Plume-org/setup-tools
CLI tools
2018-10-06 14:28:13 +01:00
Bat 478e9dcac9 Show your own posts in your feed
Fixes #213
2018-10-06 13:42:57 +01:00
Baptiste Gelez 4b8c090def Merge pull request #249 from Plume-org/delete-posts
Delete posts when deleting account
2018-10-06 13:05:22 +01:00
Bat 4d382d8014 Fix compatibility with SQlite
Also fixes a bug in plume-models
2018-10-06 12:59:08 +01:00
Bat d08c21d58d Delete posts when deleting account 2018-10-06 12:37:28 +01:00
Bat 5fa7a2a742 Remove legacy setup script 2018-10-06 12:31:00 +01:00
Bat caa4c38948 Update installation and update docs with the new plm tool
Also updates the Docker files
2018-10-06 12:19:48 +01:00
Bat d0d1210e21 Document new command-line tools 2018-10-06 12:19:48 +01:00
Bat d48a7796f1 User creation CLI tool 2018-10-06 12:19:48 +01:00
Bat 0da5d2e927 Improve the plm instance new command
Add long arguments
Fix the help messages
Actually write to StdOut when needed
Fallback to BASE_URL first if domain is not specified
2018-10-06 12:19:48 +01:00
Bat 6723432e52 CLI tools
- New sub-crate: plume-cli
- Creates a binary called 'plm'
- Uses clap to parse CLI arguments
- Add a first command: plm instance new (to init the local instance)
2018-10-06 12:19:48 +01:00
Baptiste Gelez b464671cf0 Merge pull request #226 from igalic/feat/sqlite
Add SQLite as supported database
2018-10-06 12:15:00 +01:00
Trinity Pointard 0d6a2af851 Code style improvement 2018-10-06 10:57:37 +02:00
Trinity Pointard 3466e55548 Implement JSON-ld signature verification
Implement JSON-ld signature verification
Move signature verification functions to the proper file
2018-10-06 10:06:06 +02:00
Trinity Pointard 62c94ed463 Refactor and verify http signature on personnal inbox
Verify signature on personnal inbox
Reduce code duplication
Put Headers in plume-models
2018-10-03 20:48:25 +02:00
Trinity Pointard 0a5d435249 Verify http signatures 2018-10-03 09:31:38 +02:00
Baptiste Gelez 96a97e4949 Fix a typo in README 2018-10-02 13:20:54 +01:00
Trinity Pointard d3ed2d8af5 Fix regression and update rocket_csrf
Fix account creation, introduced by fceb9ab
Update to latest rocket_csrf
2018-10-02 11:51:12 +02:00
Baptiste Gelez 6738883f2b Merge pull request #250 from fdb-hiroshima/feature/underlined_links
Add link underline for main body
2018-10-01 12:42:54 +01:00
Bat 07f2c979ec Make the REST API compatible with SQlite 2018-09-30 14:21:07 +01:00
Bat bd80430b1b Document model macros 2018-09-30 14:13:56 +02:00
Bat 743620eb6a Fix the SQlite build 2018-09-30 14:13:56 +02:00
Bat 535c68b423 Run Travis for SQlite too 2018-09-30 14:13:55 +02:00
Bat 38d737ed0c Introduce features to choose between SQlite or Postgres 2018-09-30 14:13:54 +02:00
Igor Galić 88456faf84 align types between sqlite & postgres
this one's achieved by adding "NOT NULL" at the *correct* position in
SQLite's create tables.
2018-09-30 14:13:53 +02:00
Igor Galić b28bef20a7 align types between sqlite & postgres
use DATETIME for SQLite's time type. This way, Diesel picks up on what
it's supposed to be.
2018-09-30 14:13:52 +02:00
Igor Galić 1f8680c4c5 add sqlite migrations
we move our PostgreSQL specific migrations to a subdirectory.
The SQLite migrations have been created by running `diesel` against a
copy, and then fixing what's broken.
In the end i reduced all modifications to a single create, since we
*are* starting out fresh with SQLite.

n.b.: i'm not entirely happy with the results yet, because diesel
heavily modifies our `plume-models/src/schema.rs`.
I'll keep fiddling until we have the same types between the two
databases.
2018-09-30 14:13:52 +02:00
Igor Galić e5691f7b23 add sqlite as diesel dependency 2018-09-30 14:13:42 +02:00
Trinity Pointard d610ed1641 Add verify() to the Signer trait
And implement it for Blog and User
2018-09-30 12:08:04 +02:00
Trinity Pointard eafe1ed490 Add content digest to signed http headers
Sign the Digest HTTP header
2018-09-30 12:08:04 +02:00
Trinity Pointard fceb9ab0cd Update cookie management a bit
Update to latest rocket_csrf
Make user_id a samesite lax cookie (see https://github.com/Plume-org/Plume/issues/233#issuecomment-422660275)
2018-09-30 11:56:12 +02:00
Dominik Pataky 31a3e6c825 Revert icon injection 2018-09-29 21:42:51 +02:00
Dominik Pataky 83c4387e94 Add link underline for main body; add link icon
Links in the main body part are now underlined on mouse hover.
<a> tags in the article content are expanded by an icon from
FontAwesome.

Fixes #140
2018-09-29 21:41:02 +02:00
Baptiste Gelez 1e3f40833d Add a link to Loomio in the README 2018-09-29 19:25:27 +01:00
Bat 6f8630df2e Use <div> for avatars
<img> is displayed as an error without src, in Chrome

Fixes #222
2018-09-29 18:29:22 +01:00
Baptiste Gelez 05f3ecabd6 Merge pull request #248 from maximesrd/patch-4
Bad commands in the update guide
2018-09-29 17:03:33 +01:00
maximesrd a1530791ef Update UPDATE.md 2018-09-29 18:00:48 +02:00
Baptiste Gelez 236cf14406 Merge pull request #245 from Plume-org/rest-api
Some API endpoints for articles
2018-09-29 16:33:31 +01:00
Bat 72fd9eb610 API: Filter posts in the list 2018-09-29 15:45:27 +01:00
maximesrd 3b288c2dad Update UPDATE.md 2018-09-29 15:34:59 +02:00
maximesrd b97b0233da Update UPDATE.md 2018-09-29 15:34:29 +02:00
maximesrd db4c939be8 Bad commands 2018-09-29 15:02:17 +02:00
Baptiste Gelez 975f8d0393 Merge pull request #246 from fediverse-pl/master
i18n: Update Polish translation
2018-09-27 19:25:12 +01:00
Marcin Mikołajczak 47eeed1008 i18n: Update Polish translation
Signed-off-by: Marcin Mikołajczak <me@m4sk.in>
2018-09-27 12:42:09 +02:00
Bat f893056d6d Mount the API endpoints 2018-09-25 20:45:32 +01:00
Bat 472da486e9 Fix the canapi::Provider impl for Post 2018-09-25 20:10:18 +01:00
Baptiste Gelez ba3dd3304c Merge pull request #243 from rhonda/master
Updated German translation
2018-09-25 15:38:58 +01:00
Rhonda D'Vine 88d8fb95c3 Updated German translation 2018-09-25 16:27:59 +02:00
Baptiste Gelez 9650fdbfb5 Merge pull request #242 from Atul9/fix-broken-link
#227 Fix broken link on blog page
2018-09-24 20:35:20 +01:00
Atul Bhosale 3dce53d899 Fix broken link on blog page 2018-09-24 23:46:32 +05:30
Baptiste Gelez 05fb7c9b42 Merge pull request #238 from Plume-org/csrf-issues
Fix CSRF issues
2018-09-21 13:37:35 +01:00
Baptiste Gelez 7afe249a75 Merge pull request #240 from OpenAlgeria/patch-1
Update INSTALL.md
2018-09-20 19:23:49 +01:00
OpenAlgeria 5d21e26406 Update INSTALL.md 2018-09-20 15:21:32 +02:00
Bat d8ca1d70b7 Fix CSRF issues
GET routes are not protected against CSRF. This commit changes the needed URLs to
POST and replace simple links with forms.

Thanks @fdb-hiroshima for noticing it!
2018-09-19 18:13:07 +01:00
Trinity Pointard f0fb030c7f Update recommended nginx config
Update recommended nginx config to allow iframes
close #234
2018-09-19 18:18:39 +02:00
Bat 1500267125 Add canapi and try to use for the API 2018-09-19 15:49:34 +01:00
Trinity Pointard fab6360100 Be less restrictive on authorized html tags
Allow users to add ids to tags
Allow users to use iframes
2018-09-19 10:51:27 +02:00
Baptiste Gelez 2bc6052a35 Replace plume by DATABASE_NAME in the docs
To make it clearer you can have multiple Plume instances/databases on the same server, and that this part of the URL may change too.
2018-09-18 21:40:20 +01:00
Baptiste Gelez d8bfd6d39f Create ISSUE_TEMPLATE.md 2018-09-18 15:40:17 +01:00
Baptiste Gelez 064c5961e7 Add a CoC
Finally!
2018-09-18 13:59:43 +01:00
Baptiste Gelez eb24ba1774 Merge pull request #223 from igalic/fix/safe-string
make blog/instance description a SafeString
2018-09-14 20:56:13 +01:00
Igor Galić fb074e6344 render SafeString thru |safe
thanks again to @fdb-hiroshima for pointing me in the right direction!
2018-09-14 21:44:32 +02:00
Igor Galić 06718a5c8a directly use SafeString in InstanceSettingsForm 2018-09-14 20:25:16 +02:00
Igor Galić d62c72dde0 allocate new SafeString in FromFormValue impl
thanks to @fdb-hiroshima for this review!
2018-09-14 19:50:59 +02:00
Igor Galić 0897088aa5 add implementation for FromFormValue for SafeString
thanks again to @pwoolcoc for this!
2018-09-14 18:26:42 +02:00
Igor Galić 65e213309b do not allocate empty strings
follow review from @pwoolcoc, and do not use

    SafeString::new(&<String>::new())

since this makes an allocation which will then just be thrown away.
Instead, we pass ""
2018-09-14 18:24:27 +02:00
Igor Galić f5c299f23c make blog/instance description a SafeString
long_description & short_description's documentation say they can be
Markdown, but they are String, not SafeString.

This led to escaped strings being printed in the editor
https://github.com/Plume-org/Plume/issues/220
2018-09-14 15:14:24 +02:00
Baptiste Gelez d355379e01 Merge pull request #219 from igalic/fix/env-howto
improve installation "docs"
2018-09-13 19:38:00 +01:00
Igor Galić e7b5d81687 gitignore docker-compose.yml 2018-09-13 17:21:20 +02:00
Igor Galić dfc76757bb fix comment in docker.sample.env
docker's sample .env file under docs/ which contains the wrong command
to generate a rocket secret_key
2018-09-13 17:18:25 +02:00
Bat 5b138df8ce Remove duplicated message in gl.po 2018-09-12 17:07:41 +01:00
Bat 0200a7b223 Only send notifications for mentions if the post is not a draft 2018-09-12 17:00:00 +01:00
Bat b01212f4a6 Make it impossible to view drafts if you are not the author
Even if you got the URL
2018-09-12 16:58:38 +01:00
727 changed files with 77786 additions and 12191 deletions
+10
View File
@@ -0,0 +1,10 @@
[target.wasm32-unknown-unknown]
# required for clippy
rustflags = [
"--cfg", "web_sys_unstable_apis",
]
[target.x86_64-unknown-linux-gnu]
rustflags = [
"--cfg", "web_sys_unstable_apis",
]
+261
View File
@@ -0,0 +1,261 @@
version: 2.1
executors:
default:
parameters:
postgres:
type: boolean
default: false
selenium:
type: boolean
default: false
docker:
- image: plumeorg/plume-buildenv:v0.4.0
- image: <<#parameters.postgres>>circleci/postgres:9.6-alpine<</parameters.postgres>><<^parameters.postgres>>alpine:latest<</parameters.postgres>>
environment:
POSTGRES_USER: postgres
POSTGRES_DB: plume
- image: <<#parameters.selenium>>elgalu/selenium:latest<</parameters.selenium>><<^parameters.selenium>>alpine:latest<</parameters.selenium>>
working_directory: ~/projects/Plume
environment:
RUST_TEST_THREADS: 1
FEATURES: <<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
DATABASE_URL: <<#parameters.postgres>>postgres://postgres@localhost/plume<</parameters.postgres>><<^parameters.postgres>>plume.sqlite<</parameters.postgres>>
ROCKET_SECRET_KEY: VN5xV1DN7XdpATadOCYcuGeR/dV0hHfgx9mx9TarLdM=
commands:
restore_env:
description: checkout and pull cache
parameters:
cache:
type: enum
default: none
enum: ["none", "clippy", "postgres", "sqlite", "release-postgres", "release-sqlite"]
steps:
- checkout
- run: git config --global --remove-section url."ssh://git@github.com"
- restore_cache:
keys:
- v0-<< parameters.cache >>-{{ checksum "Cargo.lock" }}-{{ .Branch }}
- v0-<< parameters.cache >>-{{ checksum "Cargo.lock" }}-master
cache:
description: push cache
parameters:
cache:
type: enum
enum: ["clippy", "postgres", "sqlite", "release-postgres", "release-sqlite"]
steps:
- save_cache:
key: v0-<< parameters.cache >>-{{ checksum "Cargo.lock" }}-{{ .Branch }}
paths:
- ~/.cargo/
- ./target
clippy:
description: run cargo clippy
parameters:
package:
type: string
default: plume
no_feature:
type: boolean
default: false
steps:
- run: cargo clippy <<^parameters.no_feature>>--no-default-features --features="${FEATURES}"<</parameters.no_feature>> --release -p <<parameters.package>> -- -D warnings
run_with_coverage:
description: run command with environment for coverage
parameters:
cmd:
type: string
steps:
- run: |
export RUSTFLAGS="-Zprofile -Zfewer-names -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Clink-arg=-Xlinker -Clink-arg=--no-keep-memory -Clink-arg=-Xlinker -Clink-arg=--reduce-memory-overheads"
export CARGO_INCREMENTAL=0
<< parameters.cmd >>
upload_coverage:
description: merge coverage files and upload to codecov.io
parameters:
type:
type: string
steps:
- run: zip -0 ccov.zip `find . -name 'plume*.gc*' -o -name 'plm*.gc*'`
- run: grcov ccov.zip -s . -t lcov --llvm --branch --ignore-not-existing --ignore '/*' -o lcov.info
- run: bash <(curl -s https://codecov.io/bash) -f lcov.info -F <<parameters.type>>
- run: find . -name 'plume*.gc*' -delete -o -name 'plm*.gc*' -delete
- run: rm ccov.zip lcov.info
build:
description: build a package
parameters:
package:
type: string
default: plume
release:
type: boolean
default: false
steps:
- run: |
cmd="cargo build <<#parameters.release>>--release<</parameters.release>> --no-default-features --features="${FEATURES}" -p <<parameters.package>> -j"
for i in 16 4 2 1 1; do
$cmd $i && exit 0
done
exit 1
jobs:
cargo fmt:
executor:
name: default
steps:
- restore_env
- run: cargo fmt --all -- --check
clippy:
parameters:
postgres:
type: boolean
executor:
name: default
postgres: << parameters.postgres >>
steps:
- restore_env:
cache: clippy
- clippy
- clippy:
package: plume-cli
- clippy:
package: plume-front
no_feature: true
- cache:
cache: clippy
unit:
parameters:
postgres:
type: boolean
executor:
name: default
postgres: << parameters.postgres >>
steps:
- restore_env:
cache: <<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
- run_with_coverage:
cmd: |
cargo build -p plume-cli --no-default-features --features=${FEATURES} -j 4
./target/debug/plm migration run
./target/debug/plm search init
cmd="cargo test --all --exclude plume-front --exclude plume-macro --no-run --no-default-features --features=${FEATURES} -j"
for i in 16 4 2 1 1; do
$cmd $i && break
done
cargo test --all --exclude plume-front --exclude plume-macro --no-default-features --features="${FEATURES}" -j1
- upload_coverage:
type: unit
- cache:
cache: <<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
integration:
parameters:
postgres:
type: boolean
executor:
name: default
postgres: << parameters.postgres >>
selenium: true
steps:
- restore_env:
cache: <<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
- run: wasm-pack build --target web --release plume-front
- run_with_coverage:
cmd: |
cmd="cargo install --debug --no-default-features --features="${FEATURES}",test --force --path . -j"
for i in 16 4 2 1 1; do
$cmd $i && exit 0
done
exit 1
- run_with_coverage:
cmd: |
cmd="cargo install --debug --no-default-features --features="${FEATURES}" --force --path plume-cli -j"
for i in 16 4 2 1 1; do
$cmd $i && exit 0
done
exit 1
- run:
name: run test
command: ./script/run_browser_test.sh
environment:
BROWSER: firefox
- upload_coverage:
type: integration
- cache:
cache: <<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
release:
parameters:
postgres:
type: boolean
executor:
name: default
postgres: << parameters.postgres >>
steps:
- restore_env:
cache: release-<<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
- run: wasm-pack build --target web --release plume-front
- build:
package: plume
release: true
- build:
package: plume-cli
release: true
- cache:
cache: release-<<#parameters.postgres>>postgres<</ parameters.postgres>><<^parameters.postgres>>sqlite<</parameters.postgres>>
- run: ./script/generate_artifact.sh
- unless:
condition: << parameters.postgres >>
steps:
- run: ./script/upload_test_environment.sh
- store_artifacts:
path: plume.tar.gz
destination: plume.tar.gz
- store_artifacts:
path: wasm.tar.gz
destination: wasm.tar.gz
push translations:
executor:
name: default
steps:
- restore_env:
cache: none
- run: cargo build
- run: crowdin upload -b master
workflows:
version: 2
build and test:
jobs:
- cargo fmt
- clippy:
postgres: false
- clippy:
postgres: true
- unit:
postgres: false
- unit:
postgres: true
- integration:
postgres: false
- integration:
postgres: true
- release:
postgres: false
- release:
postgres: true
- push translations:
filters:
branches:
only:
- /^master/
@@ -0,0 +1,3 @@
localhost {
reverse_proxy localhost:7878
}
@@ -0,0 +1,39 @@
FROM debian:buster-20210208
ENV PATH="/root/.cargo/bin:${PATH}"
#install native/circleci/build dependancies
RUN apt update &&\
apt install -y --no-install-recommends git ssh tar gzip ca-certificates default-jre&&\
echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
| tee -a /etc/apt/sources.list.d/caddy-fury.list &&\
apt update &&\
apt install -y --no-install-recommends binutils-dev build-essential cmake curl gcc gettext git libcurl4-openssl-dev libdw-dev libelf-dev libiberty-dev libpq-dev libsqlite3-dev libssl-dev make openssl pkg-config postgresql postgresql-contrib python zlib1g-dev python3-pip zip unzip libclang-dev clang caddy&&\
rm -rf /var/lib/apt/lists/*
#install and configure rust
RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2021-01-15 -y &&\
rustup component add rustfmt clippy &&\
rustup component add rust-std --target wasm32-unknown-unknown
#compile some deps
RUN cargo install wasm-pack &&\
cargo install grcov &&\
strip /root/.cargo/bin/* &&\
rm -fr ~/.cargo/registry
#set some compilation parametters
COPY cargo_config /root/.cargo/config
#install selenium for front end tests
RUN pip3 install selenium
#configure caddy
COPY Caddyfile /Caddyfile
#install crowdin
RUN mkdir /crowdin && cd /crowdin &&\
curl -O https://downloads.crowdin.com/cli/v2/crowdin-cli.zip &&\
unzip crowdin-cli.zip && rm crowdin-cli.zip &&\
cd * && mv crowdin-cli.jar /usr/local/bin && cd && rm -rf /crowdin &&\
/bin/echo -e '#!/bin/sh\njava -jar /usr/local/bin/crowdin-cli.jar $@' > /usr/local/bin/crowdin &&\
chmod +x /usr/local/bin/crowdin
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
[ "$1" = "" ] && echo "you must provide one argument, the build version" && exit 1
docker build -t plumeorg/plume-buildenv:$1 .
docker push plumeorg/plume-buildenv:$1
@@ -0,0 +1,3 @@
[target.x86_64-unknown-linux-gnu]
# link dead code for coverage, attempt to reduce linking memory usage to not get killed
rustflags = ["-Clink-args=-Xlinker --no-keep-memory -Xlinker --reduce-memory-overheads"]
+26
View File
@@ -0,0 +1,26 @@
codecov:
notify:
require_ci_to_pass: yes
coverage:
precision: 2
round: down
range: "70...100"
status:
project: no
patch: no
changes: no
parsers:
gcov:
branch_detection:
conditional: yes
loop: yes
method: no
macro: no
comment:
layout: "header, diff"
behavior: default
require_changes: no
+3 -2
View File
@@ -5,10 +5,11 @@ end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,rs,css,tera}]
[*.{js,rs,css,tera,html}]
charset = utf-8
indent_size = 4
[*.{rs,tera,css}]
[*.{rs,tera,css,html}]
indent_style = space
indent_size = 4
Executable
+59
View File
@@ -0,0 +1,59 @@
# This file contains your instance configuration
# Some documentation about these variables is available here:
# https://docs.joinplu.me/environment/
## GENERAL SETTINGS ##
# The directory containing database migrations
# For Postgres: migrations/postgres
# For SQlite: migrations/sqlite
MIGRATION_DIRECTORY=migrations/postgres
# The URL of your database (or its path for SQlite databases)
DATABASE_URL=postgres://plume:plume@localhost/plume
# The domain of your instance
BASE_URL=plu.me
# Log level for each crate
RUST_LOG=warn,html5ever=warn,hyper=warn,tantivy=warn
# The secret key for private cookies and CSRF protection
# You can generate one with `openssl rand -base64 32`
ROCKET_SECRET_KEY=
# Port and address which Plume will use
ROCKET_PORT=7878
ROCKET_ADDRESS=127.0.0.1
## MAIL CONFIG ##
#MAIL_SERVER=smtp.plu.me
#MAIL_ADDRESS=no-reply@plu.me
#MAIL_USER=plume
#MAIL_PASSWORD=
#MAIL_HELO_NAME=no-reply@plu.me
## ADVANCED OPTIONS ##
#MEDIA_UPLOAD_DIRECTORY=static/media
#SEARCH_INDEX=search_index
# Sample logo configuration
#PLUME_LOGO=icons/trwnh/paragraphs/plumeParagraphs.svg
#PLUME_LOGO_FAVICON=icons/trwnh/paragraphs/plumeParagraphs32.png
#PLUME_LOGO_48=icons/trwnh/paragraphs/plumeParagraphs48.png
#PLUME_LOGO_72=icons/trwnh/paragraphs/plumeParagraphs72.png
#PLUME_LOGO_96=icons/trwnh/paragraphs/plumeParagraphs96.png
#PLUME_LOGO_144=icons/trwnh/paragraphs/plumeParagraphs144.png
#PLUME_LOGO_160=icons/trwnh/paragraphs/plumeParagraphs160.png
#PLUME_LOGO_192=icons/trwnh/paragraphs/plumeParagraphs192.png
#PLUME_LOGO_256=icons/trwnh/paragraphs/plumeParagraphs256.png
#PLUME_LOGO_512=icons/trwnh/paragraphs/plumeParagraphs512.png
## LDAP CONFIG ##
# the object that will be bound is "${USER_NAME_ATTR}=${username},${BASE_DN}"
#LDAP_ADDR=ldap://127.0.0.1:1389
#LDAP_BASE_DN="ou=users,dc=your-org,dc=eu"
#LDAP_USER_NAME_ATTR=cn
#LDAP_USER_MAIL_ATTR=mail
#LDAP_TLS=false
+28
View File
@@ -0,0 +1,28 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: 'C: Bug'
assignees: ''
---
<!--
We would appreciated if you report a bug at our Gitea instance's issue page:
https://git.joinplu.me/Plume/Plume/issues
You can login to the Gitea with your GitHub account.
We welcome to receive bug reports here, GitHub, too.
-->
<!-- Describe your bug, explaining how to reproduce it, and what was expected -->
<!-- Please fill the following information when relevant (or remove them if not) -->
- **Plume version:** You can find it in the footer of your instance. If you know the exact commit, please also add it.
- **Operating system:**
- **Web Browser:**
+29
View File
@@ -0,0 +1,29 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
<!--
We would appreciated if you request a feature at our Gitea instance's issue page:
https://git.joinplu.me/Plume/Plume/issues
You can login to the Gitea with your GitHub account.
We welcome to receive feature requests here, GitHub, too.
-->
**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.
+7
View File
@@ -0,0 +1,7 @@
<!--
We would appreciated if you report a bug at our Gitea instance's pull request page:
https://git.joinplu.me/Plume/Plume/pulls
You can login to the Gitea with your GitHub account.
We welcome to receive pull requests here, GitHub, too.
-->
+15 -3
View File
@@ -1,10 +1,22 @@
rls
/target
**/*.rs.bk
rls
translations
po/*.po~
*.po~
.env
Rocket.toml
media
!.gitkeep
static
docker-compose.yml
*.db
*.sqlite
*.sqlite3
*.swp
tags.*
!tags.rs
search_index
.buildconfig
__pycache__
.vscode/
*-journal
-4
View File
@@ -1,4 +0,0 @@
language: rust
rust:
- nightly
cache: cargo
+214
View File
@@ -0,0 +1,214 @@
# Changelog
<!-- next-header -->
## [Unreleased] - ReleaseDate
### Added
- Allow `dir` attributes for LtoR text in RtoL document (#860)
- More translation languages (#862)
- Proxy support (#829)
- Riker a actor system library (#870)
- (request-target) and Host header in HTTP Signature (#872)
### Changed
- Upgrade some dependent crates (#858)
- Use tracing crate (#868)
- Update Rust version to nightly-2021-01-15 (#878)
- Upgrade Tantivy to 0.13.3 and lindera-tantivy to 0.7.1 (#878)
- Run searcher on actor system (#870)
### Fixed
- Percent-encode URI for remote_interact (#866, #857)
- Menu animation not opening on iOS (#876, #897)
- Make actors subscribe to channel once (#913)
- Upsert posts and media instead of trying to insert and fail (#912)
## [[0.6.0]] - 2020-12-29
### Added
- Vazir font for better support of languages written in Arabic script (#787)
- Login via LDAP (#826)
- cargo-release (#835)
- Care about weak ETag header for better caching (#840)
- Support for right to left languages in post content (#853)
### Changed
- Bump Docker base images to Buster flavor (#797)
- Upgrade Rocket to 0.4.5 (#800)
- Keep tags as-is (#832)
- Update Docker image for testing (#838)
- Update Dockerfile.dev (#841)
### Fixed
- Recreate search index if its format is outdated (#802)
- Make it possible to switch to rich text editor (#808)
- Fix margins for the mobile devices (#817)
- GPU acceleration for the mobile menu (#818)
- Natural title position for RtoL languages (#825)
- Remove link to unimplemented page (#827)
- Fix displaying not found page when submitting a duplicated blocklist email (#831)
### Security
- Validate spoofing of activity
## [0.5.0] - 2020-06-21
### Added
- Email blocklisting (#718)
- Syntax highlighting (#691)
- Persian localization (#782)
- Switchable tokenizer - enables Japanese full-text search (#776)
- Make database connections configurable by environment variables (#768)
### Changed
- Display likes and boost on post cards (#744)
- Rust 2018 (#726)
- Bump to LLVM to 9.0.0 to fix ARM builds (#737)
- Remove dependency on runtime-fmt (#773)
- Drop the -alpha suffix in release names, it is implied that Plume is not stable yet because of the 0 major version (Plume 1.0.0 will be the first stable release).
### Fixed
- Fix parsing of mentions inside a Markdown code block (be430c6)
- Fix RSS issues (#720)
- Fix Atom feed (#764)
- Fix default theme (#746)
- Fix shown password on remote interact pages (#741)
- Allow unicode hashtags (#757)
- Fix French grammar for for 0 (#760)
- Don't show boosts and likes for "all" and "local" in timelines (#781)
- Fix liking and boosting posts on remote instances (#762)
## [0.4.0] - 2019-12-23
### Added
- Add support for generic timeline (#525)
- Federate user deletion (#551)
- import migrations and don't require diesel_cli for admins (#555)
- Cache local instance (#572)
- Initial RTL support #575 (#577)
- Confirm deletion of blog (#602)
- Make a distinction between moderators and admins (#619)
- Theming (#624)
- Add clap to plume in order to print help and version (#631)
- Add Snapcraft metadata and install/maintenance hooks (#666)
- Add environmental variable to control path of media (#683)
- Add autosaving to the editor (#688)
- CI: Upload artifacts to pull request deploy environment (#539)
- CI: Upload artifact of wasm binary (#571)
### Changed
- Update follow_remote.rs.html grammar (#548)
- Add some feedback when performing some actions (#552)
- Theme update (#553)
- Remove the new index lock tantivy uses (#556)
- Reduce reqwest timeout to 5s (#557)
- Improve notification management (#561)
- Fix occurrences of 'have been' to 'has been' (#578) + Direct follow-up to #578 (#603)
- Store password reset requests in database (#610)
- Use futures and tokio to send activities (#620)
- Don't ignore dotenv errors (#630)
- Replace the input! macro with an Input builder (#646)
- Update default license (#659)
- Paginate the outbox responses. Fixes #669 (#681)
- Use the "classic" editor by default (#697)
- Fix issue #705 (#708)
- Make comments in styleshhets a bit clearer (#545)
- Rewrite circleci config (#558)
- Use openssl instead of sha256sum for build.rs (#568)
- Update dependencies (#574)
- Refactor code to use Shrinkwraprs and diesel-derive-newtype (#598)
- Add enum containing all successful route returns (#614)
- Update dependencies which depended on nix -- fixes arm32 builds (#615)
- Update some documents (#616)
- Update dependencies (#643)
- Make the comment syntax consistent across all CSS (#487)
### Fixed
- Remove r (#535)
- Fix certain improper rendering of forms (#560)
- make hashtags work in profile summary (#562)
- Fix some federation issue (#573)
- Prevent comment form submit button distortion on iOS (#592)
- Update textarea overflow to scroll (#609)
- Fix arm builds (#612)
- Fix theme caching (#647)
- Fix issue #642, frontend not in English if the user language does not exist (#648)
- Don't index drafts (#656)
- Fill entirely user on creation (#657)
- Delete notification on user deletion (#658)
- Order media so that latest added are top (#660)
- Fix logo URL (#664)
- Snap: Ensure cargo-web doesn't erroneously adopt our workspace. (#667)
- Snap: Another fix for building (#668)
- Snap: Fix build for non-Tier-1 Rust platforms (#672)
- Don't split sentences for translations (#677)
- Escape href quotation marks (#678)
- Re-add empty strings in translation (#682)
- Make the search index creation during migration respect SEARCH_INDEX (#689)
- Fix the navigation menu not opening on touch (#690)
- Make search items optional (#693)
- Various snap fixes (#698)
- Fix #637 : Markdown footnotes (#700)
- Fix lettre (#706)
- CI: Fix Crowdin upload (#576)
### Removed
- Remove the Canapi dependency (#540)
- Remove use of Rust in migrations (#704)
## [0.3.0] - 2019-04-19
### Added
- Cover for articles (#299, #387)
- Password reset (#448)
- New editor (#293, #458, #482, #483, #486, #530)
- Search (#324, #375, #445)
- Edit blogs (#460, #494, #497)
- Hashtags in articles (#283, #295)
- API endpoints (#245, #285, #307)
- A bunch of new translations! (#479, #501, #506, #510, #512, #514)
### Changed
- Federation improvements (#216, #217, #357, #364, #399, #443, #446, #455, #502, #519)
- Improved build process (#281, #374, #392, #402, #489, #498, #503, #511, #513, #515, #528)
### Fixes
- UI usability fixes (#370, #386, #401, #417, #418, #444, #452, #480, #516, #518, #522, #532)
## [0.2.0] - 2018-09-12
### Added
- Article publishing, or save as a draft
- Like, or boost an article
- Basic Markdown editor
- Federated commenting system
- User account creation
- Limited federation on other platforms and subscribing to users
- Ability to create multiple blogs
<!-- next-url -->
[Unreleased]: https://github.com/Plume-org/Plume/compare/0.6.0...HEAD
[[0.6.0]]: https://github.com/Plume-org/Plume/compare/0.5.0...0.6.0
[0.5.0]: https://github.com/Plume-org/Plume/compare/0.4.0-alpha-4...0.5.0
[0.4.0]: https://github.com/Plume-org/Plume/compare/0.3.0-alpha-2...0.4.0-alpha-4
[0.3.0]: https://github.com/Plume-org/Plume/compare/0.2.0-alpha-1...0.3.0-alpha-2
[0.2.0]: https://github.com/Plume-org/Plume/releases/tag/0.2.0-alpha-1
+2
View File
@@ -0,0 +1,2 @@
You can read our Code of Conduct [here](https://docs.joinplu.me/organization/code-of-conduct).
By contributing to this repository, you agree to be bound by this Code of Conduct.
Generated
+3795 -1466
View File
File diff suppressed because it is too large Load Diff
+57 -34
View File
@@ -1,34 +1,62 @@
[package]
authors = ["Bat' <baptiste@gelez.xyz>"]
authors = ["Plume contributors"]
name = "plume"
version = "0.2.0"
version = "0.6.1-dev"
repository = "https://github.com/Plume-org/Plume"
edition = "2018"
[dependencies]
activitypub = "0.1.3"
askama_escape = "0.1"
atom_syndication = "0.6"
colored = "1.6"
dotenv = "0.13"
failure = "0.1"
gettext-rs = "0.4"
clap = "2.33"
dotenv = "0.15.0"
gettext = { git = "https://github.com/Plume-org/gettext/", rev = "294c54d74c699fbc66502b480a37cc66c1daa7f3" }
gettext-macros = { git = "https://github.com/Plume-org/gettext-macros/", rev = "a7c605f7edd6bfbfbfe7778026bfefd88d82db10" }
gettext-utils = { git = "https://github.com/Plume-org/gettext-macros/", rev = "a7c605f7edd6bfbfbfe7778026bfefd88d82db10" }
guid-create = "0.1"
heck = "0.3.0"
multipart = "0.15"
rpassword = "2.0"
lettre = "0.9.2"
lettre_email = "0.9.2"
num_cpus = "1.10"
rocket = "0.4.6"
rocket_contrib = { version = "0.4.5", features = ["json"] }
rocket_i18n = { git = "https://github.com/Plume-org/rocket_i18n", rev = "e922afa7c366038b3433278c03b1456b346074f2" }
rpassword = "4.0"
scheduled-thread-pool = "0.2.2"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
tera = "0.11"
validator = "0.7"
validator_derive = "0.7"
webfinger = "0.3"
workerpool = "1.1"
shrinkwraprs = "0.2.1"
validator = "0.8"
validator_derive = "0.8"
webfinger = "0.4.1"
tracing = "0.1.22"
tracing-subscriber = "0.2.15"
riker = "0.4.2"
[[bin]]
name = "plume"
path = "src/main.rs"
[dependencies.chrono]
features = ["serde"]
version = "0.4"
[dependencies.ctrlc]
features = ["termination"]
version = "3.1.2"
[dependencies.diesel]
features = ["postgres", "r2d2", "chrono"]
version = "*"
features = ["r2d2", "chrono"]
version = "1.4.5"
[dependencies.multipart]
default-features = false
features = ["server"]
version = "0.16"
[dependencies.plume-api]
path = "plume-api"
[dependencies.plume-common]
path = "plume-common"
@@ -36,26 +64,21 @@ path = "plume-common"
[dependencies.plume-models]
path = "plume-models"
[dependencies.rocket]
git = "https://github.com/SergioBenitez/Rocket"
rev = "55459db7732b9a240826a5c120c650f87e3372ce"
[dependencies.rocket_codegen]
git = "https://github.com/SergioBenitez/Rocket"
rev = "55459db7732b9a240826a5c120c650f87e3372ce"
[dependencies.rocket_contrib]
features = ["tera_templates", "json"]
git = "https://github.com/SergioBenitez/Rocket"
rev = "55459db7732b9a240826a5c120c650f87e3372ce"
[dependencies.rocket_csrf]
git = "https://github.com/fdb-hiroshima/rocket_csrf"
rev = "5d23ba4c6c2ee4c41040d428d24344db3d29997f"
rev = "29910f2829e7e590a540da3804336577b48c7b31"
[dependencies.rocket_i18n]
git = "https://github.com/BaptisteGelez/rocket_i18n"
rev = "75a3bfd7b847324c078a355a7f101f8241a9f59b"
[build-dependencies]
ructe = "0.13.0"
rsass = "0.9"
[features]
default = ["postgres"]
postgres = ["plume-models/postgres", "diesel/postgres"]
sqlite = ["plume-models/sqlite", "diesel/sqlite"]
debug-mailer = []
test = []
search-lindera = ["plume-models/search-lindera"]
[workspace]
members = ["plume-models", "plume-common"]
members = ["plume-api", "plume-cli", "plume-models", "plume-common", "plume-front", "plume-macro"]
+34 -7
View File
@@ -1,6 +1,7 @@
FROM rust:1-stretch
FROM rust:1-buster as builder
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
gettext \
postgresql-client \
libpq-dev \
@@ -9,12 +10,38 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
make \
openssl \
libssl-dev
libssl-dev \
clang
WORKDIR /scratch
COPY script/wasm-deps.sh .
RUN chmod a+x ./wasm-deps.sh && sleep 1 && ./wasm-deps.sh
WORKDIR /app
COPY Cargo.toml Cargo.lock ./
RUN cargo install diesel_cli --no-default-features --features postgres --version '=1.2.0'
COPY Cargo.toml Cargo.lock rust-toolchain ./
RUN cargo install wasm-pack
COPY . .
RUN cargo build
RUN rm -rf target/debug/incremental
CMD ["cargo", "run"]
RUN chmod a+x ./script/plume-front.sh && sleep 1 && ./script/plume-front.sh
RUN cargo install --path ./ --force --no-default-features --features postgres
RUN cargo install --path plume-cli --force --no-default-features --features postgres
RUN cargo clean
FROM debian:buster-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libpq5 \
libssl1.1
WORKDIR /app
COPY --from=builder /app /app
COPY --from=builder /usr/local/cargo/bin/plm /bin/
COPY --from=builder /usr/local/cargo/bin/plume /bin/
COPY --from=builder /usr/local/cargo/bin/remove-dup-images /bin/
CMD ["plume"]
EXPOSE 7878
+34
View File
@@ -0,0 +1,34 @@
FROM rust:1-buster
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
gettext \
postgresql-client \
libpq-dev \
git \
curl \
gcc \
make \
openssl \
libssl-dev\
clang
WORKDIR /scratch
COPY script/wasm-deps.sh .
RUN chmod a+x ./wasm-deps.sh && sleep 1 && ./wasm-deps.sh
WORKDIR /app
COPY Cargo.toml Cargo.lock rust-toolchain ./
RUN cargo install diesel_cli --no-default-features --features postgres --version '=1.3.0'
RUN cargo install wasm-pack
COPY . .
RUN chmod a+x ./script/plume-front.sh && sleep 1 && ./script/plume-front.sh
RUN cargo install --path ./ --force --no-default-features --features postgres
RUN cargo install --path plume-cli --force --no-default-features --features postgres
RUN cargo clean
CMD ["plume"]
EXPOSE 7878
+49 -7
View File
@@ -1,13 +1,55 @@
# Plume [![Build Status](https://travis-ci.org/Plume-org/Plume.svg?branch=master)](https://travis-ci.org/Plume-org/Plume)
<h1 align="center">
<img src="https://raw.githubusercontent.com/Plume-org/Plume/master/assets/icons/trwnh/feather/plumeFeather64.png" alt="Plume's logo">
Plume
</h1>
<p align="center">
<a href="https://github.com/Plume-org/Plume/"><img alt="CircleCI" src="https://img.shields.io/circleci/build/gh/Plume-org/Plume.svg"></a>
<a href="https://codecov.io/gh/Plume-org/Plume"><img src="https://codecov.io/gh/Plume-org/Plume/branch/master/graph/badge.svg" alt="Code coverage"></a>
<a title="Crowdin" target="_blank" href="https://crowdin.com/project/plume"><img src="https://d322cqt584bo4o.cloudfront.net/plume/localized.svg"></a>
<a href="https://hub.docker.com/r/plumeorg/plume"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/plumeorg/plume.svg"></a>
<a href="https://liberapay.com/Plume"><img alt="Liberapay patrons" src="https://img.shields.io/liberapay/patrons/Plume.svg"></a>
</p>
<p align="center">
<a href="https://joinplu.me/">Website</a>
<a href="https://docs.joinplu.me/">Documentation</a>
<a href="https://docs.joinplu.me/contribute">Contribute</a>
<a href="https://joinplu.me/#instances">Instances list</a>
</p>
Federated blogging engine, based on ActivityPub. It uses the Rocket framework, and Diesel to interact with the database.
Plume is a **federated blogging engine**, based on *ActivityPub*. It is written in *Rust*, with the *Rocket* framework, and *Diesel* to interact with the database.
The front-end uses *Ructe* templates, *WASM* and *SCSS*.
[**Demo instance**](https://baptiste.gelez.xyz/)
## Features
It is not yet ready for production use, but we have all the basic features (account management, blogs, articles, comments, etc) and a basic federation.
A lot of features are still missing, but what is already here should be quite stable. Current and planned features include:
Feel free to join our Matrix room: `#plume:disroot.org` to discuss about the project!
- **A blog-centric approach**: you can create as much blogs as you want with your account, to keep your different publications separated.
- **Media management**: you can upload pictures to illustrate your articles, but also audio files if you host a podcast, and manage them all from Plume.
- **Federation**: Plume is part of a network of interconnected websites called the Fediverse. Each of these websites (often called *instances*) have their own
rules and thematics, but they can all communicate with each other.
- **Collaborative writing**: invite other people to your blogs, and write articles together.
If you are interested in coding, check out the [development guide](https://github.com/Plume-org/Plume/blob/master/docs/DEVELOPMENT.md). You can also help by reporting issues, suggesting features, or writing documentation for instance.
## Get involved
If you would like to help by translating Plume, we also have [a guide for you](https://github.com/Plume-org/Plume/blob/master/docs/INTERNATIONALIZATION.md)!
If you want to have regular news about the project, the best place is probably [our blog](https://fediverse.blog/~/PlumeDev), or our Matrix room: [`#plume-blog:matrix.org`](https://matrix.to/#/#plume-blog:matrix.org).
If you want to contribute more, a good first step is to read [our contribution guides](https://docs.joinplu.me/contribute). We accept all kind of contribution:
- [Back-end or front-end development](https://docs.joinplu.me/contribute/development/)
- [Translations](https://docs.joinplu.me/contribute/translations/)
- [Documentation](https://docs.joinplu.me/contribute/documentation/)
- UI and/or UX design (we don't have a dedicated guide yet, but [we can talk](https://docs.joinplu.me/contribute/discussion/) to see how we can work together!)
- [Taking part in discussions](https://docs.joinplu.me/contribute/discussion/)
- [Financial support](https://docs.joinplu.me/contribute/donations/)
But this list is not exhaustive and if you want to contribute differently you are welcome too!
As we want the various spaces related to the project (GitHub, Matrix, Loomio, etc) to be as safe as possible for everyone, we adopted [a code of conduct](https://docs.joinplu.me/organization/code-of-conduct). Please read it and make sure you accept it before contributing.
## Starting your own instance
We provide various way to install Plume: from source, with pre-built binaries, with Docker or with YunoHost.
For detailed explanations, please refer to [the documentation](https://docs.joinplu.me/installation/).
+21
View File
@@ -0,0 +1,21 @@
# plumeLogos
Logos designed for Plume, a federated blogging platform similar to Medium. Licensed under CC0.
# 1st place design - "Feather"
Path | Filled | Silhouette
--- | --- | ---
![plumeFeather](https://raw.githubusercontent.com/trwnh/plumeLogos/master/plumeFeather/plumeFeather512.png) | ![plumeFeatherFilled](https://raw.githubusercontent.com/trwnh/plumeLogos/master/plumeFeatherFilled/plumeFeatherFilled512.png) | ![plumeFeatherBlack](https://raw.githubusercontent.com/trwnh/plumeLogos/master/plumeFeatherBlack/plumeFeatherBlack512.png)
# 2nd place design - "Paragraphs"
Filled | Silhouette
--- | ---
![plumeParagraphs](https://raw.githubusercontent.com/trwnh/plumeLogos/master/plumeParagraphs/plumeParagraphs512.png) | ![plumeParagraphsBlack](https://raw.githubusercontent.com/trwnh/plumeLogos/master/plumeParagraphsBlack/plumeParagraphsBlack512.png)
# Links
You may find me at the following locations:
- Website: http://trwnh.com
- ActivityPub: https://mastodon.social/@trwnh
If you'd like to support me, you can do so:
- One-time: https://paypal.me/trwnh
- Recurring: https://liberapay.com/trwnh
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+98
View File
@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg15"
inkscape:export-filename="D:\Graphics\PlumeLogo\bitmap2.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="avatar.svg">
<defs
id="defs9" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="279.74234"
inkscape:cy="218.7282"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
inkscape:window-width="2560"
inkscape:window-height="1537"
inkscape:window-x="1192"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:date></dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Abdullah Tarawneh (trwnh.com)</dc:title>
</cc:Agent>
</dc:creator>
<dc:description></dc:description>
<dc:contributor>
<cc:Agent>
<dc:title>trwnh</dc:title>
</cc:Agent>
</dc:contributor>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53331)">
<rect
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:4.85634375;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
id="rect841"
width="135.46666"
height="135.46666"
x="8.8817842e-016"
y="161.53331" />
<path
style="fill:#23f0c7;fill-opacity:1;stroke:#6457a6;stroke-width:2.91530514;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 28.826096,270.43068 c -6.976501,7.08897 -7.436088,4.96174 -4.772319,-1.71088 l 8.05564,-13.88309 c 1.101374,0.27652 9.473163,-37.68433 37.333861,-55.89472 -6.28866,10.76816 -2.671731,12.82203 -2.671731,12.82203 5.003859,-14.9808 9.310078,-20.98157 45.239673,-26.39697 -10.33969,7.78434 -4.40034,28.13223 -34.187672,37.65383 8.649305,-1.86369 17.608827,-5.95826 21.60301,-10.68238 -2.21961,15.27854 -35.385456,41.08338 -57.858054,44.32106 z"
id="path872"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg169"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="plumeFeatherBlack.svg"
inkscape:export-filename="D:\Graphics\PlumeLogo\plumeFeatherFilled16.png"
inkscape:export-xdpi="3.0000005"
inkscape:export-ydpi="3.0000005">
<title
id="title8">Plume Logo - Feather (Black)</title>
<defs
id="defs163" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="126.20524"
inkscape:cy="304.85245"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1200"
inkscape:window-height="1577"
inkscape:window-x="3752"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true" />
<metadata
id="metadata166">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Plume Logo - Feather (Black)</dc:title>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:date>2018/10/07</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Abdullah Tarawneh (trwnh.com)</dc:title>
</cc:Agent>
</dc:creator>
<dc:description>A Plume concept logo, with a soft stylized feather. Solid black fill, no path.</dc:description>
<dc:contributor>
<cc:Agent>
<dc:title>trwnh</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<path
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.2751441;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;paint-order:normal"
d="M 11.343027,288.41445 C 1.112349,298.81005 0.43838995,295.69058 4.3446684,285.90553 L 16.157848,265.54671 c 1.615107,0.40548 13.891904,-55.26212 54.748175,-81.96673 -9.221995,15.79094 -3.917955,18.80285 -3.917955,18.80285 7.337901,-21.96856 13.652749,-30.76839 66.341642,-38.70978 -15.16261,11.41531 -6.45286,41.25445 -50.134453,55.21738 12.683753,-2.73301 25.822443,-8.73747 31.679703,-15.66516 -3.25494,22.40519 -51.89095,60.24666 -84.84585,64.99456 z"
id="path872"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg169"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="plumeFeatherFilled.svg"
inkscape:export-filename="D:\Graphics\PlumeLogo\plumeFeather16.png"
inkscape:export-xdpi="3.0000005"
inkscape:export-ydpi="3.0000005">
<title
id="title8">Plume Logo - Feather (Filled)</title>
<defs
id="defs163" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="126.20524"
inkscape:cy="304.85245"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1200"
inkscape:window-height="1577"
inkscape:window-x="3752"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true" />
<metadata
id="metadata166">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Plume Logo - Feather (Filled)</dc:title>
<dc:date>2018/10/07</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Abdullah Tarawneh (trwnh.com)</dc:title>
</cc:Agent>
</dc:creator>
<dc:description>A Plume concept logo, with a soft stylized feather. Solid path, solid fill.</dc:description>
<dc:contributor>
<cc:Agent>
<dc:title>trwnh</dc:title>
</cc:Agent>
</dc:contributor>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<path
style="fill:#7765e3;fill-opacity:1;stroke:#6457a6;stroke-width:4.2751441;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="M 11.343027,288.41445 C 1.112349,298.81005 0.43838995,295.69058 4.3446684,285.90553 L 16.157848,265.54671 c 1.615107,0.40548 13.891904,-55.26212 54.748175,-81.96673 -9.221995,15.79094 -3.917955,18.80285 -3.917955,18.80285 7.337901,-21.96856 13.652749,-30.76839 66.341642,-38.70978 -15.16261,11.41531 -6.45286,41.25445 -50.134453,55.21738 12.683753,-2.73301 25.822443,-8.73747 31.679703,-15.66516 -3.25494,22.40519 -51.89095,60.24666 -84.84585,64.99456 z"
id="path872"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg169"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="plumeFeather.svg">
<title
id="title8">Plume Logo - Feather</title>
<defs
id="defs163" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="126.20524"
inkscape:cy="304.85245"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1200"
inkscape:window-height="1577"
inkscape:window-x="3752"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true" />
<metadata
id="metadata166">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Plume Logo - Feather</dc:title>
<dc:date>2018/10/07</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Abdullah Tarawneh (trwnh.com)</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>trwnh</dc:title>
</cc:Agent>
</dc:contributor>
<dc:description>A Plume concept logo, with a soft stylized feather. Solid path, no fill.</dc:description>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<path
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:4.2751441;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="M 11.343027,288.41445 C 1.112349,298.81005 0.43838995,295.69058 4.3446684,285.90553 L 16.157848,265.54671 c 1.615107,0.40548 13.891904,-55.26212 54.748175,-81.96673 -9.221995,15.79094 -3.917955,18.80285 -3.917955,18.80285 7.337901,-21.96856 13.652749,-30.76839 66.341642,-38.70978 -15.16261,11.41531 -6.45286,41.25445 -50.134453,55.21738 12.683753,-2.73301 25.822443,-8.73747 31.679703,-15.66516 -3.25494,22.40519 -51.89095,60.24666 -84.84585,64.99456 z"
id="path872"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+937
View File
@@ -0,0 +1,937 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="960"
height="960"
viewBox="0 0 254.00001 254.00001"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="ideas.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.54564743"
inkscape:cx="221.3257"
inkscape:cy="919.03811"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1537"
inkscape:window-x="1192"
inkscape:window-y="-8"
inkscape:window-maximized="1"
units="px" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-42.999987)">
<path
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 69.85882,92.20221 c -0.5487,0.512822 -0.64839,0.410692 -0.45707,-0.09006 l 0.57858,-1.041859 c -0.007,-7.6e-4 0.25105,-2.591729 2.14637,-4.196711 -0.55421,0.73823 -0.1856,0.970428 -0.1856,0.970428 0.16564,-1.162926 1.36891,-2.088642 3.9209,-1.929573 -0.24528,0.570492 -0.36321,1.821981 -2.72227,2.289111 0.62122,-0.139865 1.34716,-0.08596 1.63403,-0.440476 -0.51187,1.242423 -2.5,3.201047 -4.11405,3.444016 z"
id="path42"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="77.00631"
y="92.570526"
id="text851"><tspan
sodipodi:role="line"
id="tspan849"
x="77.00631"
y="92.570526"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;font-family:'Playfair Display';-inkscape-font-specification:'Playfair Display';fill:#7765e3;fill-opacity:1;stroke-width:0.26458332">Plume</tspan></text>
<rect
style="fill:#23f0c7;fill-opacity:1;stroke-width:0.26458332"
id="rect815"
width="7.6729164"
height="7.6729164"
x="10.034603"
y="82.960335" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="20.617937"
y="89.574921"
id="text819"><tspan
sodipodi:role="line"
id="tspan817"
x="20.617937"
y="89.574921"
style="font-size:8.46666622px;stroke-width:0.26458332">#23F0C7</tspan></text>
<rect
y="93.940544"
x="9.9023113"
height="7.6729164"
width="7.6729164"
id="rect821"
style="fill:#ef767a;fill-opacity:1;stroke-width:0.26458332" />
<text
id="text825"
y="100.55513"
x="20.485645"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;stroke-width:0.26458332"
y="100.55513"
x="20.485645"
id="tspan823"
sodipodi:role="line">#EF767A</tspan></text>
<rect
style="fill:#7765e3;fill-opacity:1;stroke-width:0.26458332"
id="rect827"
width="7.6729164"
height="7.6729164"
x="10.034603"
y="104.92075" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="20.617937"
y="111.53533"
id="text831"><tspan
sodipodi:role="line"
id="tspan829"
x="20.617937"
y="111.53533"
style="font-size:8.46666622px;stroke-width:0.26458332">#7765E3</tspan></text>
<rect
y="115.76867"
x="9.9023113"
height="7.6729164"
width="7.6729164"
id="rect833"
style="fill:#6457a6;fill-opacity:1;stroke-width:0.26458332" />
<text
id="text837"
y="122.38325"
x="20.485645"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;stroke-width:0.26458332"
y="122.38325"
x="20.485645"
id="tspan835"
sodipodi:role="line">#6457A6</tspan></text>
<rect
style="fill:#ffe347;fill-opacity:1;stroke-width:0.26458332"
id="rect839"
width="7.6729164"
height="7.6729164"
x="9.7700195"
y="126.61658" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="20.353354"
y="133.23117"
id="text843"><tspan
sodipodi:role="line"
id="tspan841"
x="20.353354"
y="133.23117"
style="font-size:8.46666622px;stroke-width:0.26458332">#FFE347</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="10.960646"
y="74.758255"
id="text847"><tspan
sodipodi:role="line"
id="tspan845"
x="10.960646"
y="74.758255"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';stroke-width:0.26458332">Color Palette</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="6.8596044"
y="58.486385"
id="text852"><tspan
sodipodi:role="line"
id="tspan850"
x="6.8596044"
y="58.486385"
style="font-size:12.69999981px;stroke-width:0.26458332">Title Typeface: Playfair Display</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, ';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="68.904396"
y="74.758255"
id="text839"><tspan
sodipodi:role="line"
id="tspan837"
x="68.904396"
y="74.758255"
style="font-size:8.46666622px;stroke-width:0.26458332">UI Font: Route 159</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, ';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="76.8638"
y="104.0499"
id="text844"><tspan
sodipodi:role="line"
id="tspan842"
x="76.8638"
y="104.0499"
style="fill:#7765e3;fill-opacity:1;stroke-width:0.26458332">Plume</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 71.74765,98.290683 c 1.37113,-1.920604 3.80809,0.628063 3.01505,1.725877 -1.34381,1.86029 -2.18368,0.78236 -2.47817,0.60069 -0.21724,-0.13401 -0.35139,-0.13769 -1.03242,1.36807 -0.43606,0.9641 -0.38316,-0.0251 -1.02782,0.51806 -0.94901,0.79954 -1.15413,1.2921 -1.28107,1.54951 z"
id="path848"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssscc" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="path852"
d="m 143.19172,92.524382 c -0.40373,0.365809 -0.47709,0.292957 -0.33631,-0.06424 l 0.42572,-0.743185 c -0.005,-5.42e-4 0.18472,-1.848748 1.57931,-2.993623 -0.40779,0.526599 -0.13657,0.692232 -0.13657,0.692232 0.12188,-0.829546 1.00726,-1.489883 2.88502,-1.376415 -0.18048,0.406947 -0.26725,1.299666 -2.00306,1.632882 0.45709,-0.09977 0.99125,-0.06132 1.20232,-0.314203 -0.37663,0.886253 -1.83951,2.28339 -3.02713,2.456706 z"
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text856"
y="92.533737"
x="148.31642"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;font-family:'Playfair Display';-inkscape-font-specification:'Playfair Display';fill:#7765e3;fill-opacity:1;stroke-width:0.26458332"
y="92.533737"
x="148.31642"
id="tspan854"
sodipodi:role="line">Plume</tspan></text>
<text
id="text860"
y="103.52074"
x="148.43326"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;font-family:'Route 159';-inkscape-font-specification:'Route 159, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7765e3;fill-opacity:1;stroke-width:0.26458332"
y="103.52074"
x="148.43326"
id="tspan858"
sodipodi:role="line">Plume</tspan></text>
<path
sodipodi:nodetypes="csssscc"
inkscape:connector-curvature="0"
id="path862"
d="m 144.16942,99.835614 c 0.9823,-1.284602 2.72818,0.420086 2.16003,1.154356 -0.96272,1.24426 -1.56442,0.52328 -1.7754,0.40178 -0.15564,-0.0896 -0.25174,-0.0921 -0.73965,0.91503 -0.3124,0.64484 -0.2745,-0.0168 -0.73634,0.34651 -0.67989,0.53477 -0.82684,0.86422 -0.91777,1.03639 z"
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.36630338;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="path864"
d="m 104.78391,92.20221 c -0.5487,0.512822 -0.64839,0.410692 -0.45707,-0.09006 l 0.57858,-1.041859 c -0.007,-7.6e-4 0.25105,-2.591729 2.14638,-4.196711 -0.55421,0.73823 -0.1856,0.970428 -0.1856,0.970428 0.16564,-1.162926 1.36892,-2.088642 3.92092,-1.929573 -0.24528,0.570492 -0.36321,1.821981 -2.72228,2.289111 0.62122,-0.139865 1.34717,-0.08596 1.63404,-0.440476 -0.51188,1.242423 -2.50002,3.201047 -4.11408,3.444016 z"
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text868"
y="92.570526"
x="111.93127"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;font-family:'Playfair Display';-inkscape-font-specification:'Playfair Display';fill:#7765e3;fill-opacity:1;stroke-width:0.26458332"
y="92.570526"
x="111.93127"
id="tspan866"
sodipodi:role="line">Plume</tspan></text>
<text
id="text872"
y="104.0499"
x="112.31797"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, ';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#7765e3;fill-opacity:1;stroke-width:0.26458332"
y="104.0499"
x="112.31797"
id="tspan870"
sodipodi:role="line">Plume</tspan></text>
<path
sodipodi:nodetypes="csssscc"
inkscape:connector-curvature="0"
id="path874"
d="m 107.20192,98.290683 c 1.37114,-1.920604 3.80811,0.628063 3.01507,1.725877 -1.34382,1.86029 -2.1837,0.78236 -2.47819,0.60069 -0.21724,-0.13401 -0.35139,-0.13769 -1.03243,1.36807 -0.43606,0.9641 -0.38316,-0.0251 -1.02782,0.51806 -0.94901,0.79954 -1.15414,1.2921 -1.28108,1.54951 z"
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 168.06271,92.524382 c -0.40373,0.365809 -0.47709,0.292957 -0.33631,-0.06424 l 0.42572,-0.743185 c -0.005,-5.42e-4 0.18472,-1.848748 1.57931,-2.993623 -0.40779,0.526599 -0.13657,0.692232 -0.13657,0.692232 0.12188,-0.829546 1.00726,-1.489883 2.88502,-1.376415 -0.18048,0.406947 -0.26725,1.299666 -2.00306,1.632882 0.45709,-0.09977 0.99125,-0.06132 1.20232,-0.314203 -0.37663,0.886253 -1.83951,2.28339 -3.02713,2.456706 z"
id="path876"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="173.18692"
y="92.533737"
id="text880"><tspan
sodipodi:role="line"
id="tspan878"
x="173.18692"
y="92.533737"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;font-family:'Playfair Display';-inkscape-font-specification:'Playfair Display';fill:#7765e3;fill-opacity:1;stroke-width:0.26458332">Plume</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="173.30376"
y="103.52074"
id="text884"><tspan
sodipodi:role="line"
id="tspan882"
x="173.30376"
y="103.52074"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;font-family:'Route 159';-inkscape-font-specification:'Route 159, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7765e3;fill-opacity:1;stroke-width:0.26458332">Plume</tspan></text>
<path
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.36630338;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 169.04041,99.835614 c 0.9823,-1.284602 2.72818,0.420086 2.16003,1.154356 -0.96272,1.24426 -1.56442,0.52328 -1.7754,0.40178 -0.15564,-0.0896 -0.25174,-0.0921 -0.73965,0.91503 -0.3124,0.64484 -0.2745,-0.0168 -0.73634,0.34651 -0.67989,0.53477 -0.82684,0.86422 -0.91777,1.03639 z"
id="path886"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssscc" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="path888"
d="m 68.396255,129.68564 c -1.28956,1.21053 -1.52385,0.96945 -1.07421,-0.21258 l 1.35978,-2.45933 c -0.0164,-0.002 0.59002,-6.11784 5.0444,-9.90643 -1.3025,1.74261 -0.4362,2.29071 -0.4362,2.29071 0.38929,-2.74511 3.21722,-4.93028 9.214914,-4.5548 -0.57646,1.34666 -0.85362,4.30083 -6.397884,5.4035 1.45999,-0.33015 3.166094,-0.20292 3.840304,-1.03975 -1.203004,2.93276 -5.875514,7.55614 -9.668854,8.12968 z"
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="csssscc"
inkscape:connector-curvature="0"
id="path890"
d="m 88.438708,116.38099 c 3.60519,-4.67252 10.01282,1.52798 7.92763,4.19879 -3.53335,4.52578 -5.74166,1.90335 -6.51598,1.46139 -0.5712,-0.32605 -0.92393,-0.33498 -2.7146,3.32828 -1.14656,2.34549 -1.00746,-0.061 -2.7025,1.26036 -2.49529,1.94515 -3.03462,3.14347 -3.36839,3.7697 z"
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 90.893098,122.75013 c -2.28627,-2.07603 0.78836,-3.99439 0.78836,-3.99439"
id="path896"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="path904"
d="m 160.81806,130.52754 c -1.28956,1.21052 -1.52385,0.96944 -1.07421,-0.21258 l 1.35978,-2.45933 c -0.0164,-0.002 0.59002,-6.11784 5.0444,-9.90644 -1.3025,1.74261 -0.4362,2.29072 -0.4362,2.29072 0.38929,-2.74511 3.21722,-4.93028 9.21491,-4.5548 -0.57646,1.34666 -0.85362,4.30083 -6.39788,5.4035 1.45999,-0.33016 3.16609,-0.20292 3.8403,-1.03975 -1.203,2.93276 -5.87551,7.55614 -9.66885,8.12967 z"
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="csssscc"
inkscape:connector-curvature="0"
id="path906"
d="m 182.82494,117.50352 c 3.60519,-4.67252 10.01282,1.52798 7.92763,4.19879 -3.53335,4.52579 -5.74166,1.90335 -6.51598,1.46139 -0.5712,-0.32605 -0.92393,-0.33498 -2.7146,3.32828 -1.14656,2.3455 -1.00746,-0.061 -2.7025,1.26036 -2.49529,1.94515 -3.03462,3.14347 -3.36839,3.7697 z"
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.43808097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect910"
width="16.495253"
height="16.495253"
x="117.24186"
y="113.9016"
ry="8.2476263" />
<rect
y="113.99515"
x="137.16684"
height="16.495253"
width="16.495253"
id="rect912"
style="fill:#7765e3;fill-opacity:1;stroke:#7765e3;stroke-width:0.43808097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
ry="8.2476263" />
<path
style="fill:#23f0c7;fill-opacity:1;stroke:#23f0c7;stroke-width:0.35679018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
d="m 121.07259,126.87298 c -0.86948,0.81618 -1.02745,0.65365 -0.72428,-0.14333 l 0.91683,-1.65821 c -0.0111,-8e-4 0.39782,-4.12494 3.40118,-6.6794 -0.87821,1.17495 -0.2941,1.54451 -0.2941,1.54451 0.26247,-1.85088 2.16919,-3.32424 6.21314,-3.07106 -0.38868,0.90798 -0.57555,2.89982 -4.31376,3.6433 0.98439,-0.2226 2.13472,-0.13682 2.58931,-0.70106 -0.81113,1.97741 -3.96155,5.09473 -6.51922,5.48143 z"
id="path898"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="fill:#23f0c7;fill-opacity:1;stroke:#23f0c7;stroke-width:0.37328929;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0"
d="m 145.10588,118.69356 c 2.54321,-3.29613 7.06334,1.07788 5.59238,2.96194 -2.49252,3.19262 -4.05033,1.34267 -4.59655,1.0309 -0.40294,-0.22998 -0.65177,-0.2363 -1.91496,2.34787 -0.80883,1.65458 -0.71069,-0.043 -1.90642,0.8891 -1.76025,1.37216 -2.14071,2.2175 -2.37616,2.65925 z"
id="path900"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssscc" />
<path
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 156.93423,76.416775 c -1.28956,1.21053 -1.52385,0.96945 -1.07421,-0.21258 l 1.35978,-2.45933 c -0.0164,-0.002 1.42506,-6.451843 5.87944,-10.240443 -1.3025,1.74261 -1.27124,2.62473 -1.27124,2.62473 0.38929,-2.74511 3.21722,-4.93028 9.21492,-4.5548 -0.57646,1.34666 -0.85362,4.30083 -6.39789,5.4035 1.45999,-0.33016 4.33515,-1.53898 5.00936,-2.37581 -1.20301,2.93277 -7.04457,8.892193 -10.83791,9.465733 z"
id="path866"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 101.89763,117.47489 c 0.99865,-5.81658 9.56336,-3.33672 8.9709,-5.1e-4 -1.00384,5.65329 -4.18284,4.36958 -5.07396,4.34148 -0.65737,-0.021 -0.97325,0.13651 -0.84088,4.21185 0.0847,2.60936 -0.91883,0.41768 -1.79818,2.37878 -1.29452,2.8869 -1.21019,4.1983 -1.212,4.90792 z"
id="path868"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csssscc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path870"
d="m 107.04788,121.95427 c -2.99211,-0.76436 -1.1731,-3.89878 -1.1731,-3.89878"
style="fill:none;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:1;stroke:#7765e3;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 170.6147,76.682565 c -1.28956,1.21053 -1.52385,0.96945 -1.07421,-0.21258 l 1.35978,-2.45933 c -0.0164,-0.002 0.59002,-6.117833 5.0444,-9.906433 -1.3025,1.74261 -0.4362,2.29072 -0.4362,2.29072 0.38929,-2.74511 3.21722,-4.93029 9.21492,-4.5548 -0.57646,1.34666 -0.85362,4.30082 -6.39789,5.40349 1.45999,-0.33015 3.53351,0.0977 4.20772,-0.73914 -1.203,2.93277 -6.24293,7.255533 -10.03627,7.829073 z"
id="path872"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 231.53534,148.01977 v 18.78849 l -4.26838,6.44068 -4.45893,-6.40256 c 4.24692,-12.55587 3.52568,-16.69699 3.6205,-27.43957 22.12476,1.35032 14.28558,20.282 5.33547,19.39825"
id="path889"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 227.26696,173.24894 c 0,-9.45141 0.0381,-9.4133 0.0381,-9.4133"
id="path891"
inkscape:connector-curvature="0" />
<g
id="g1143"
transform="translate(-123.3885,194.67528)">
<rect
y="21.410418"
x="205.47905"
height="16.750105"
width="16.750105"
id="rect893"
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.30126441;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path895"
d="m 207.62884,36.118119 -0.10687,-12.665288 h 2.693 c 4.81106,0.02235 4.77107,5.990014 -0.12812,5.990014 l 0.0712,6.675269 z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12323128px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="29.177969"
x="215.0899"
height="2.7695272"
width="4.9009433"
id="rect897"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.38753989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="scale(-1)"
y="-36.001663"
x="-220.0703"
height="2.8409941"
width="8.1695461"
id="rect899"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.35613737;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="25.218256"
x="217.26648"
height="2.843389"
width="2.8433888"
id="rect901"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.35374269;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text888"
y="38.109615"
x="224.95683"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.2628417px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.1332138"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.73515701px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI Bold';fill:#7765e3;fill-opacity:1;stroke-width:0.1332138"
y="38.109615"
x="224.95683"
id="tspan886"
sodipodi:role="line">Plume</tspan></text>
</g>
<rect
y="187.21339"
x="9.3072567"
height="7.6729164"
width="7.6729164"
id="rect942"
style="fill:#23f0c7;fill-opacity:1;stroke-width:0.26458332" />
<text
id="text946"
y="193.82799"
x="19.890591"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;stroke-width:0.26458332"
y="193.82799"
x="19.890591"
id="tspan944"
sodipodi:role="line">#23F0C7</tspan></text>
<rect
style="fill:#ef767a;fill-opacity:1;stroke-width:0.26458332"
id="rect948"
width="7.6729164"
height="7.6729164"
x="9.1749649"
y="198.1936" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="19.758299"
y="204.8082"
id="text952"><tspan
sodipodi:role="line"
id="tspan950"
x="19.758299"
y="204.8082"
style="font-size:8.46666622px;stroke-width:0.26458332">#EF767A</tspan></text>
<rect
y="209.17381"
x="9.3072567"
height="7.6729164"
width="7.6729164"
id="rect954"
style="fill:#7765e3;fill-opacity:1;stroke-width:0.26458332" />
<text
id="text958"
y="215.78839"
x="19.890591"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;stroke-width:0.26458332"
y="215.78839"
x="19.890591"
id="tspan956"
sodipodi:role="line">#7765E3</tspan></text>
<rect
style="fill:#6457a6;fill-opacity:1;stroke-width:0.26458332"
id="rect960"
width="7.6729164"
height="7.6729164"
x="9.1749649"
y="220.02174" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="19.758299"
y="226.63631"
id="text964"><tspan
sodipodi:role="line"
id="tspan962"
x="19.758299"
y="226.63631"
style="font-size:8.46666622px;stroke-width:0.26458332">#6457A6</tspan></text>
<rect
y="230.86964"
x="9.0426731"
height="7.6729164"
width="7.6729164"
id="rect966"
style="fill:#ffe347;fill-opacity:1;stroke-width:0.26458332" />
<text
id="text970"
y="237.48422"
x="19.626007"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;stroke-width:0.26458332"
y="237.48422"
x="19.626007"
id="tspan968"
sodipodi:role="line">#FFE347</tspan></text>
<text
id="text974"
y="179.01132"
x="10.233299"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;stroke-width:0.26458332"
y="179.01132"
x="10.233299"
id="tspan972"
sodipodi:role="line">Color Palette</tspan></text>
<text
id="text978"
y="162.73944"
x="6.132256"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;line-height:1.25;font-family:'Apple Garamond';-inkscape-font-specification:'Apple Garamond';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:12.69999981px;stroke-width:0.26458332"
y="162.73944"
x="6.132256"
id="tspan976"
sodipodi:role="line">Title Typeface: Playfair Display</tspan></text>
<text
id="text982"
y="178.213"
x="82.851562"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.65419292px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, ';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26635483"
xml:space="preserve"
transform="scale(0.99334904,1.0066955)"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.52335453px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';stroke-width:0.26635483"
y="178.213"
x="82.851562"
id="tspan980"
sodipodi:role="line"><tspan
style="font-weight:bold"
id="tspan1181">UI Font:</tspan> Inter UI</tspan></text>
<g
id="g1152"
transform="translate(-123.73138,195.62581)">
<rect
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.2259483;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1052"
width="12.562579"
height="12.562579"
x="205.82193"
y="42.616043" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.09242346px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 207.43426,53.646822 -0.0802,-9.498966 h 2.01975 c 3.60829,0.01676 3.5783,4.49251 -0.0961,4.49251 l 0.0535,5.006452 z"
id="path1054"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.29065493;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1056"
width="3.6757076"
height="2.0771453"
x="213.03009"
y="48.441708" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.26710302;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1058"
width="6.1271596"
height="2.1307456"
x="-216.76537"
y="-53.559479"
transform="scale(-1)" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.26530701;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1060"
width="2.1325417"
height="2.1325419"
x="214.66251"
y="45.47192" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.1971314px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.09991036"
x="220.43028"
y="55.140442"
id="text1064"><tspan
sodipodi:role="line"
id="tspan1062"
x="220.43028"
y="55.140442"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:17.05136871px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI Bold';fill:#7765e3;fill-opacity:1;stroke-width:0.09991036">Plume</tspan></text>
</g>
<g
id="g1161"
transform="translate(-123.90281,195.94319)">
<rect
y="60.221481"
x="205.99336"
height="8.3750534"
width="8.3750534"
id="rect1066"
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.15063222;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path1068"
d="m 207.06825,67.575339 -0.0535,-6.332644 h 1.3465 c 2.40553,0.01117 2.38554,2.995007 -0.0641,2.995007 l 0.0357,3.337635 z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.06161565px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="64.105263"
x="210.7988"
height="1.3847637"
width="2.4504719"
id="rect1070"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.19376998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="scale(-1)"
y="-67.517105"
x="-213.28899"
height="1.4204972"
width="4.0847735"
id="rect1072"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.1780687;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="62.125404"
x="211.88708"
height="1.4216948"
width="1.4216945"
id="rect1074"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.17687136;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text1078"
y="68.571083"
x="215.73227"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.13142109px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.06660692"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:11.36758041px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI Bold';fill:#7765e3;fill-opacity:1;stroke-width:0.06660692"
y="68.571083"
x="215.73227"
id="tspan1076"
sodipodi:role="line">Plume</tspan></text>
</g>
<g
id="g1170"
transform="translate(-124.07425,195.5154)">
<rect
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.11297414;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1080"
width="6.2812886"
height="6.2812886"
x="206.16479"
y="74.33876" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.04621173px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 206.97096,79.854154 -0.0401,-4.749482 h 1.00987 c 1.80415,0.0084 1.78916,2.246255 -0.0481,2.246255 l 0.0268,2.503225 z"
id="path1082"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.14532745;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1084"
width="1.8378536"
height="1.0385725"
x="209.76888"
y="77.251595" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.13355149;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1086"
width="3.0635796"
height="1.0653727"
x="-211.63651"
y="-79.810478"
transform="scale(-1)" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.13265349;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1088"
width="1.0662707"
height="1.0662708"
x="210.58508"
y="75.766701" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.59856546px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.04995518"
x="213.46898"
y="80.60096"
id="text1092"><tspan
sodipodi:role="line"
id="tspan1090"
x="213.46898"
y="80.60096"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.5256834px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI Bold';fill:#7765e3;fill-opacity:1;stroke-width:0.04995518">Plume</tspan></text>
</g>
<g
id="g1179"
transform="translate(-123.90281,194.17101)">
<rect
y="87.255981"
x="205.99336"
height="4.1875262"
width="4.1875262"
id="rect1094"
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.0753161;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path1096"
d="m 206.5308,90.932902 -0.0267,-3.16632 h 0.67325 c 1.20277,0.005 1.19277,1.49751 -0.0321,1.49751 l 0.0179,1.66881 z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.03080782px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="89.197868"
x="208.39609"
height="0.69238174"
width="1.2252358"
id="rect1098"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.09688497;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="scale(-1)"
y="-90.903793"
x="-209.64117"
height="0.71024853"
width="2.0423865"
id="rect1100"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.08903433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="88.207939"
x="208.94022"
height="0.71084726"
width="0.7108472"
id="rect1102"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.08843566;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text1106"
y="91.430779"
x="210.86282"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.06571043px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.03330346"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.68378925px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI Bold';fill:#7765e3;fill-opacity:1;stroke-width:0.03330346"
y="91.430779"
x="210.86282"
id="tspan1104"
sodipodi:role="line">Plume</tspan></text>
</g>
<rect
y="185.46291"
x="82.090546"
height="25.12516"
width="25.12516"
id="rect1108"
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.45189664;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path1110"
d="m 85.315226,207.52446 -0.16029,-18.99794 h 4.03949 c 7.216602,0.0335 7.156612,8.98502 -0.19217,8.98502 l 0.1068,10.01291 z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.18484694px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="197.11423"
x="96.506821"
height="4.1542912"
width="7.3514161"
id="rect1112"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.58130991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="scale(-1)"
y="-207.34978"
x="-103.97742"
height="4.2614913"
width="12.25432"
id="rect1114"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.53420609;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="191.17467"
x="99.771698"
height="4.2650838"
width="4.2650838"
id="rect1116"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.53061408;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text1120"
y="210.5117"
x="111.30722"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.39426327px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';letter-spacing:0px;word-spacing:0px;fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.19982073"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:34.10274124px;font-family:'Inter UI';-inkscape-font-specification:'Inter UI Bold';fill:#7765e3;fill-opacity:1;stroke-width:0.19982073"
y="210.5117"
x="111.30722"
id="tspan1118"
sodipodi:role="line">Plume</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, ';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="67.041779"
y="285.10333"
id="text1185"><tspan
sodipodi:role="line"
id="tspan1183"
x="67.041779"
y="285.10333"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';stroke-width:0.26458332">16px</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Route 159';-inkscape-font-specification:'Route 159, ';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="66.711052"
y="273.10269"
id="text1189"><tspan
sodipodi:role="line"
id="tspan1187"
x="66.711052"
y="273.10269"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Inter UI';-inkscape-font-specification:'Inter UI';stroke-width:0.26458332">24px</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="66.606819"
y="262.00388"
id="text1193"><tspan
sodipodi:role="line"
id="tspan1191"
x="66.606819"
y="262.00388"
style="stroke-width:0.26458332">32px</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="66.703033"
y="245.8739"
id="text1197"><tspan
sodipodi:role="line"
id="tspan1195"
x="66.703033"
y="245.8739"
style="stroke-width:0.26458332">48px</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="66.642906"
y="226.62836"
id="text1201"><tspan
sodipodi:role="line"
id="tspan1199"
x="66.642906"
y="226.62836"
style="stroke-width:0.26458332">64px</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:'Inter UI';-inkscape-font-specification:'Inter UI, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="66.622856"
y="201.95624"
id="text1205"><tspan
sodipodi:role="line"
id="tspan1203"
x="66.622856"
y="201.95624"
style="stroke-width:0.26458332">96px</tspan></text>
<g
id="g1229"
transform="matrix(1.3479184,0,0,1.3479184,-11.476932,146.40477)">
<rect
y="73.238937"
x="15.361921"
height="25.12516"
width="25.12516"
id="rect1214"
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:0.45189664;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
inkscape:connector-curvature="0"
id="path1216"
d="m 18.586603,95.30049 -0.16029,-18.997935 h 4.03949 c 7.2166,0.03352 7.15661,8.985023 -0.19217,8.985023 l 0.1068,10.012904 z"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.18484694px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="84.890266"
x="29.778198"
height="4.1542912"
width="7.3514161"
id="rect1218"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.58130991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="scale(-1)"
y="-95.125816"
x="-37.248791"
height="4.2614913"
width="12.25432"
id="rect1220"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.53420609;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="78.950691"
x="33.043072"
height="4.2650838"
width="4.2650838"
id="rect1222"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.53061408;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 52 KiB

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg4705"
inkscape:export-filename="D:\Graphics\PlumeLogo\plumeParagraphs16.png"
inkscape:export-xdpi="3.0000002"
inkscape:export-ydpi="3.0000002"
sodipodi:docname="plumeParagraphsBlack.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<title
id="title8">Plume Logo - Paragraphs (Black)</title>
<defs
id="defs4699" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="233.22289"
inkscape:cy="376.94728"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
inkscape:window-width="1200"
inkscape:window-height="1577"
inkscape:window-x="3752"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata4702">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Plume Logo - Paragraphs (Black)</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Abdullah Tarawneh (trwnh.com)</dc:title>
</cc:Agent>
</dc:creator>
<dc:date>2018/10/07</dc:date>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:contributor>
<cc:Agent>
<dc:title>trwnh</dc:title>
</cc:Agent>
</dc:contributor>
<dc:description>A Plume concept logo, with a stylized paragraph symbol and paragraph blocks. Black silhouette.</dc:description>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<path
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.20874119;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 0 0 L 0 512 L 512 512 L 512 0 L 0 0 z M 65.900391 59.884766 L 148.45117 59.884766 C 295.92866 60.566214 294.70214 242.55078 144.52344 242.55078 L 146.70508 446.11523 L 69.175781 446.11523 L 65.900391 59.884766 z M 361.31055 117.31055 L 446.68945 117.31055 L 446.68945 202.68945 L 361.31055 202.68945 L 361.31055 117.31055 z M 297.87695 237.87695 L 446.12305 237.87695 L 446.12305 322.12305 L 297.87695 322.12305 L 297.87695 237.87695 z M 197.38672 357.38672 L 446.61328 357.38672 L 446.61328 442.61328 L 197.38672 442.61328 L 197.38672 357.38672 z "
transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
id="rect1214" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg4705"
inkscape:export-filename="D:\Graphics\PlumeLogo\bitmap.png"
inkscape:export-xdpi="3"
inkscape:export-ydpi="3"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="plumeParagraphs.svg">
<title
id="title12">Plume Logo - Paragraphs</title>
<defs
id="defs4699" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="233.22289"
inkscape:cy="376.94728"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:pagecheckerboard="true"
inkscape:window-width="1200"
inkscape:window-height="1577"
inkscape:window-x="3752"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata4702">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Plume Logo - Paragraphs</dc:title>
<dc:date>2018/10/07</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Abdullah Tarawneh (trwnh.com)</dc:title>
</cc:Agent>
</dc:creator>
<dc:contributor>
<cc:Agent>
<dc:title>trwnh</dc:title>
</cc:Agent>
</dc:contributor>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:description>A Plume concept logo, with a stylized paragraph symbol and paragraph blocks. Solid square.</dc:description>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-161.53332)">
<rect
style="fill:#7765e3;fill-opacity:1;stroke:none;stroke-width:2.43647933;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1214"
width="135.46666"
height="135.46666"
x="1.1088696e-007"
y="161.53333" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.9968788px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 18.302706,279.56821 17.436018,177.37759 H 39.2775 c 39.020084,0.1803 38.695719,48.33078 -1.039062,48.33078 l 0.577468,53.85979 z"
id="path1216"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccc" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.11026239;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1218"
width="39.223072"
height="22.289736"
x="78.813477"
y="224.47179" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.85055542;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1220"
width="65.941116"
height="22.549444"
x="-118.1664"
y="-278.64139"
transform="scale(-1)" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.81035185;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1222"
width="22.589647"
height="22.589647"
x="95.596855"
y="192.57182" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

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