diff --git a/.gitignore b/.gitignore
index 998ca1c..ebea82b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.tar.gz
Caddyfile
Caddyfile.*
-!Caddyfile.template
\ No newline at end of file
+!Caddyfile.template
+!Caddyfile.base
diff --git a/Caddyfile.base b/Caddyfile.base
new file mode 100644
index 0000000..ff75e18
--- /dev/null
+++ b/Caddyfile.base
@@ -0,0 +1,4 @@
+localhost {
+ root ./static
+ tls off
+}
diff --git a/bash.sh b/bash.sh
index 524bffa..b2b5c39 100755
--- a/bash.sh
+++ b/bash.sh
@@ -40,6 +40,7 @@ inotifywait -m ./ -e create -e moved_to |
fi;
cont=plume-pr-$id
+ docker container rm $cont || true
docker run -td --name $cont --rm -p 127.0.0.1:$port:7878 --mount type=bind,src=$(pwd),dst=/app plumeorg/plume-buildenv:v0.0.5
docker exec -w /app $cont ls -al
docker exec -w /app $cont /app/bin/diesel migration run
@@ -50,8 +51,14 @@ inotifywait -m ./ -e create -e moved_to |
popd
- sed -e "s;%BASE_URL%;$domain;g" -e "s;%PORT%;$port;g" Caddyfile.template | tee Caddyfile.$id
- cat Caddyfile.$id Caddyfile | tee Caddyfile
+ #get comma separated list of running containers
+ currently_running=$(docker container ls | grep -Eo 'plume-pr-[0-9]+' | cut -c10- | tr '\n' ',')
+
+ #remove trailing ',' and convert to json
+ echo '['"${currently_running::-1}"']' > static/up.json
+
+ sed -e "s;%BASE_URL%;$domain;g" -e "s;%PORT%;$port;g" Caddyfile.template > $id.caddy
+ cat Caddyfile.base *.caddy > Caddyfile
kill $caddy_pid
caddy &
caddy_pid=$!
diff --git a/static/feather.css b/static/feather.css
new file mode 100644
index 0000000..e6339ce
--- /dev/null
+++ b/static/feather.css
@@ -0,0 +1,251 @@
+.feather {
+ width: 24px;
+ height: 24px;
+ stroke: currentColor;
+ stroke-width: 2;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ fill: none;
+}
+
+.icon:before {
+ font-family: "Feather";
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-alert-octagon:before { content: "\e81b"; }
+.icon-alert-circle:before { content: "\e81c"; }
+.icon-activity:before { content: "\e81d"; }
+.icon-alert-triangle:before { content: "\e81e"; }
+.icon-align-center:before { content: "\e81f"; }
+.icon-airplay:before { content: "\e820"; }
+.icon-align-justify:before { content: "\e821"; }
+.icon-align-left:before { content: "\e822"; }
+.icon-align-right:before { content: "\e823"; }
+.icon-arrow-down-left:before { content: "\e824"; }
+.icon-arrow-down-right:before { content: "\e825"; }
+.icon-anchor:before { content: "\e826"; }
+.icon-aperture:before { content: "\e827"; }
+.icon-arrow-left:before { content: "\e828"; }
+.icon-arrow-right:before { content: "\e829"; }
+.icon-arrow-down:before { content: "\e82a"; }
+.icon-arrow-up-left:before { content: "\e82b"; }
+.icon-arrow-up-right:before { content: "\e82c"; }
+.icon-arrow-up:before { content: "\e82d"; }
+.icon-award:before { content: "\e82e"; }
+.icon-bar-chart:before { content: "\e82f"; }
+.icon-at-sign:before { content: "\e830"; }
+.icon-bar-chart-:before { content: "\e831"; }
+.icon-battery-charging:before { content: "\e832"; }
+.icon-bell-off:before { content: "\e833"; }
+.icon-battery:before { content: "\e834"; }
+.icon-bluetooth:before { content: "\e835"; }
+.icon-bell:before { content: "\e836"; }
+.icon-book:before { content: "\e837"; }
+.icon-briefcase:before { content: "\e838"; }
+.icon-camera-off:before { content: "\e839"; }
+.icon-calendar:before { content: "\e83a"; }
+.icon-bookmark:before { content: "\e83b"; }
+.icon-box:before { content: "\e83c"; }
+.icon-camera:before { content: "\e83d"; }
+.icon-check-circle:before { content: "\e83e"; }
+.icon-check:before { content: "\e83f"; }
+.icon-check-square:before { content: "\e840"; }
+.icon-cast:before { content: "\e841"; }
+.icon-chevron-down:before { content: "\e842"; }
+.icon-chevron-left:before { content: "\e843"; }
+.icon-chevron-right:before { content: "\e844"; }
+.icon-chevron-up:before { content: "\e845"; }
+.icon-chevrons-down:before { content: "\e846"; }
+.icon-chevrons-right:before { content: "\e847"; }
+.icon-chevrons-up:before { content: "\e848"; }
+.icon-chevrons-left:before { content: "\e849"; }
+.icon-circle:before { content: "\e84a"; }
+.icon-clipboard:before { content: "\e84b"; }
+.icon-chrome:before { content: "\e84c"; }
+.icon-clock:before { content: "\e84d"; }
+.icon-cloud-lightning:before { content: "\e84e"; }
+.icon-cloud-drizzle:before { content: "\e84f"; }
+.icon-cloud-rain:before { content: "\e850"; }
+.icon-cloud-off:before { content: "\e851"; }
+.icon-codepen:before { content: "\e852"; }
+.icon-cloud-snow:before { content: "\e853"; }
+.icon-compass:before { content: "\e854"; }
+.icon-copy:before { content: "\e855"; }
+.icon-corner-down-right:before { content: "\e856"; }
+.icon-corner-down-left:before { content: "\e857"; }
+.icon-corner-left-down:before { content: "\e858"; }
+.icon-corner-left-up:before { content: "\e859"; }
+.icon-corner-up-left:before { content: "\e85a"; }
+.icon-corner-up-right:before { content: "\e85b"; }
+.icon-corner-right-down:before { content: "\e85c"; }
+.icon-corner-right-up:before { content: "\e85d"; }
+.icon-cpu:before { content: "\e85e"; }
+.icon-credit-card:before { content: "\e85f"; }
+.icon-crosshair:before { content: "\e860"; }
+.icon-disc:before { content: "\e861"; }
+.icon-delete:before { content: "\e862"; }
+.icon-download-cloud:before { content: "\e863"; }
+.icon-download:before { content: "\e864"; }
+.icon-droplet:before { content: "\e865"; }
+.icon-edit-:before { content: "\e866"; }
+.icon-edit:before { content: "\e867"; }
+.icon-edit-1:before { content: "\e868"; }
+.icon-external-link:before { content: "\e869"; }
+.icon-eye:before { content: "\e86a"; }
+.icon-feather:before { content: "\e86b"; }
+.icon-facebook:before { content: "\e86c"; }
+.icon-file-minus:before { content: "\e86d"; }
+.icon-eye-off:before { content: "\e86e"; }
+.icon-fast-forward:before { content: "\e86f"; }
+.icon-file-text:before { content: "\e870"; }
+.icon-film:before { content: "\e871"; }
+.icon-file:before { content: "\e872"; }
+.icon-file-plus:before { content: "\e873"; }
+.icon-folder:before { content: "\e874"; }
+.icon-filter:before { content: "\e875"; }
+.icon-flag:before { content: "\e876"; }
+.icon-globe:before { content: "\e877"; }
+.icon-grid:before { content: "\e878"; }
+.icon-heart:before { content: "\e879"; }
+.icon-home:before { content: "\e87a"; }
+.icon-github:before { content: "\e87b"; }
+.icon-image:before { content: "\e87c"; }
+.icon-inbox:before { content: "\e87d"; }
+.icon-layers:before { content: "\e87e"; }
+.icon-info:before { content: "\e87f"; }
+.icon-instagram:before { content: "\e880"; }
+.icon-layout:before { content: "\e881"; }
+.icon-link-:before { content: "\e882"; }
+.icon-life-buoy:before { content: "\e883"; }
+.icon-link:before { content: "\e884"; }
+.icon-log-in:before { content: "\e885"; }
+.icon-list:before { content: "\e886"; }
+.icon-lock:before { content: "\e887"; }
+.icon-log-out:before { content: "\e888"; }
+.icon-loader:before { content: "\e889"; }
+.icon-mail:before { content: "\e88a"; }
+.icon-maximize-:before { content: "\e88b"; }
+.icon-map:before { content: "\e88c"; }
+.icon-maximize:before { content: "\e88d"; }
+.icon-map-pin:before { content: "\e88e"; }
+.icon-menu:before { content: "\e88f"; }
+.icon-message-circle:before { content: "\e890"; }
+.icon-message-square:before { content: "\e891"; }
+.icon-minimize-:before { content: "\e892"; }
+.icon-mic-off:before { content: "\e893"; }
+.icon-minus-circle:before { content: "\e894"; }
+.icon-mic:before { content: "\e895"; }
+.icon-minus-square:before { content: "\e896"; }
+.icon-minus:before { content: "\e897"; }
+.icon-moon:before { content: "\e898"; }
+.icon-monitor:before { content: "\e899"; }
+.icon-more-vertical:before { content: "\e89a"; }
+.icon-more-horizontal:before { content: "\e89b"; }
+.icon-move:before { content: "\e89c"; }
+.icon-music:before { content: "\e89d"; }
+.icon-navigation-:before { content: "\e89e"; }
+.icon-navigation:before { content: "\e89f"; }
+.icon-octagon:before { content: "\e8a0"; }
+.icon-package:before { content: "\e8a1"; }
+.icon-pause-circle:before { content: "\e8a2"; }
+.icon-pause:before { content: "\e8a3"; }
+.icon-percent:before { content: "\e8a4"; }
+.icon-phone-call:before { content: "\e8a5"; }
+.icon-phone-forwarded:before { content: "\e8a6"; }
+.icon-phone-missed:before { content: "\e8a7"; }
+.icon-phone-off:before { content: "\e8a8"; }
+.icon-phone-incoming:before { content: "\e8a9"; }
+.icon-phone:before { content: "\e8aa"; }
+.icon-phone-outgoing:before { content: "\e8ab"; }
+.icon-pie-chart:before { content: "\e8ac"; }
+.icon-play-circle:before { content: "\e8ad"; }
+.icon-play:before { content: "\e8ae"; }
+.icon-plus-square:before { content: "\e8af"; }
+.icon-plus-circle:before { content: "\e8b0"; }
+.icon-plus:before { content: "\e8b1"; }
+.icon-pocket:before { content: "\e8b2"; }
+.icon-printer:before { content: "\e8b3"; }
+.icon-power:before { content: "\e8b4"; }
+.icon-radio:before { content: "\e8b5"; }
+.icon-repeat:before { content: "\e8b6"; }
+.icon-refresh-ccw:before { content: "\e8b7"; }
+.icon-rewind:before { content: "\e8b8"; }
+.icon-rotate-ccw:before { content: "\e8b9"; }
+.icon-refresh-cw:before { content: "\e8ba"; }
+.icon-rotate-cw:before { content: "\e8bb"; }
+.icon-save:before { content: "\e8bc"; }
+.icon-search:before { content: "\e8bd"; }
+.icon-server:before { content: "\e8be"; }
+.icon-scissors:before { content: "\e8bf"; }
+.icon-share-:before { content: "\e8c0"; }
+.icon-share:before { content: "\e8c1"; }
+.icon-shield:before { content: "\e8c2"; }
+.icon-settings:before { content: "\e8c3"; }
+.icon-skip-back:before { content: "\e8c4"; }
+.icon-shuffle:before { content: "\e8c5"; }
+.icon-sidebar:before { content: "\e8c6"; }
+.icon-skip-forward:before { content: "\e8c7"; }
+.icon-slack:before { content: "\e8c8"; }
+.icon-slash:before { content: "\e8c9"; }
+.icon-smartphone:before { content: "\e8ca"; }
+.icon-square:before { content: "\e8cb"; }
+.icon-speaker:before { content: "\e8cc"; }
+.icon-star:before { content: "\e8cd"; }
+.icon-stop-circle:before { content: "\e8ce"; }
+.icon-sun:before { content: "\e8cf"; }
+.icon-sunrise:before { content: "\e8d0"; }
+.icon-tablet:before { content: "\e8d1"; }
+.icon-tag:before { content: "\e8d2"; }
+.icon-sunset:before { content: "\e8d3"; }
+.icon-target:before { content: "\e8d4"; }
+.icon-thermometer:before { content: "\e8d5"; }
+.icon-thumbs-up:before { content: "\e8d6"; }
+.icon-thumbs-down:before { content: "\e8d7"; }
+.icon-toggle-left:before { content: "\e8d8"; }
+.icon-toggle-right:before { content: "\e8d9"; }
+.icon-trash-:before { content: "\e8da"; }
+.icon-trash:before { content: "\e8db"; }
+.icon-trending-up:before { content: "\e8dc"; }
+.icon-trending-down:before { content: "\e8dd"; }
+.icon-triangle:before { content: "\e8de"; }
+.icon-type:before { content: "\e8df"; }
+.icon-twitter:before { content: "\e8e0"; }
+.icon-upload:before { content: "\e8e1"; }
+.icon-umbrella:before { content: "\e8e2"; }
+.icon-upload-cloud:before { content: "\e8e3"; }
+.icon-unlock:before { content: "\e8e4"; }
+.icon-user-check:before { content: "\e8e5"; }
+.icon-user-minus:before { content: "\e8e6"; }
+.icon-user-plus:before { content: "\e8e7"; }
+.icon-user-x:before { content: "\e8e8"; }
+.icon-user:before { content: "\e8e9"; }
+.icon-users:before { content: "\e8ea"; }
+.icon-video-off:before { content: "\e8eb"; }
+.icon-video:before { content: "\e8ec"; }
+.icon-voicemail:before { content: "\e8ed"; }
+.icon-volume-x:before { content: "\e8ee"; }
+.icon-volume-:before { content: "\e8ef"; }
+.icon-volume-1:before { content: "\e8f0"; }
+.icon-volume:before { content: "\e8f1"; }
+.icon-watch:before { content: "\e8f2"; }
+.icon-wifi:before { content: "\e8f3"; }
+.icon-x-square:before { content: "\e8f4"; }
+.icon-wind:before { content: "\e8f5"; }
+.icon-x:before { content: "\e8f6"; }
+.icon-x-circle:before { content: "\e8f7"; }
+.icon-zap:before { content: "\e8f8"; }
+.icon-zoom-in:before { content: "\e8f9"; }
+.icon-zoom-out:before { content: "\e8fa"; }
+.icon-command:before { content: "\e8fb"; }
+.icon-cloud:before { content: "\e8fc"; }
+.icon-hash:before { content: "\e8fd"; }
+.icon-headphones:before { content: "\e8fe"; }
diff --git a/static/index.html b/static/index.html
new file mode 100644
index 0000000..a6abb70
--- /dev/null
+++ b/static/index.html
@@ -0,0 +1,39 @@
+
+
+
+
+ Plume-ci ⋅ list of running pull requests
+
+
+
+
+
+
+
+
+
+ List of running pull requests
+
+
+
+
+
+
+
diff --git a/static/main.css b/static/main.css
new file mode 100644
index 0000000..dd55abf
--- /dev/null
+++ b/static/main.css
@@ -0,0 +1 @@
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}html,body{margin:0;padding:0;background:#F4F4F4;color:#242424;font-family:"Route159",serif}html ::selection,body ::selection{background:#c2bbee}html ::-moz-selection,body ::-moz-selection{background:#c2bbee}a,a:visited{color:#7765E3;text-decoration:none}a::selection{color:#F4F4F4}a::-moz-selection{color:#F4F4F4}small{margin-left:1em;color:rgba(36,36,36,0.4);font-size:.75em;word-wrap:break-word;word-break:break-all}.center{text-align:center;font-weight:bold;opacity:.6;padding:5em}.spaced{margin:4rem 0}.cards.spaced{margin:1rem 0 5rem}.banner{background:#E3E3E3;padding-top:2em;padding-bottom:1em;margin:3em 0px}.hidden{display:none}body>main>*,.h-feed>*{margin:0 20%}body>main>.h-entry,.h-feed{margin:0}main h1,main h2,main h3,main h4,main h5,main h6{font-family:"Route159",serif;line-height:1.15;font-weight:300}main h1.article,main h2.article,main h3.article,main h4.article,main h5.article,main h6.article{max-width:40rem}main h1{font-size:2.5em;font-weight:300;margin-top:1em}main h1.article{margin:1em auto .5em;font-family:"Playfair Display",serif;font-size:2.5em;font-weight:normal}main h2{font-size:1.75em;font-weight:300}main h2.article{margin:auto;font-size:1.25em;margin-bottom:.5em}main h3,main h4,main h5,main h6{font-size:1.5em;font-weight:300}main h3.article,main h4.article,main h5.article,main h6.article{margin:auto;font-size:1.1em;margin-bottom:.5em}main .cover{padding:0px;margin:0px;width:auto;min-height:50vh;background-position:center;background-size:cover;overflow:hidden}p.error{color:#E92F2F;font-weight:bold;max-width:40rem;margin:1em auto}.user h1{display:flex;flex-direction:row;align-items:center;margin:0px}.user .avatar.medium{margin-left:0px}.badge{margin-right:1em;padding:.35em 1em;background:#F4F4F4;color:#7765E3;border:1px solid #7765E3;border-radius:1em;font-size:1rem}.user-summary{margin:2em 0px}.cards{display:flex;flex-direction:row;flex-wrap:wrap;padding:0 5%}.card{flex:1;display:flex;flex-direction:column;min-width:20em;min-height:20em;margin:1em;box-sizing:border-box;background:#E3E3E3;text-overflow:ellipsis}.card>*{margin:20px}.card .cover{min-height:10em;background-position:center;background-size:cover;margin:0px}.card h3{margin:.75em 20px;font-family:"Playfair Display",serif;font-size:1.75em;font-weight:normal}.card h3 a{transition:color .1s ease-in;color:#242424}.card h3 a:hover{color:#7765E3}.card main{flex:1;font-family:"Lora",serif;font-size:1em;line-height:1.25;text-align:left;overflow:hidden}.list .card{background:0;margin:2em 0;padding:0;min-height:0}.presentation>h2,.presentation>a{text-align:center}.presentation>a{font-size:1.2em;margin:1em}.stats{display:flex;justify-content:space-around;margin:2em}.stats>div{display:flex;flex-direction:column;justify-content:center;align-items:center}.stats p{text-align:center}.stats em{font-weight:bold;display:block;margin:1em 0}.pagination{display:flex;justify-content:space-evenly}.pagination>*{padding:2em}.flex{display:flex;flex-direction:row;align-items:center}.flex.vertical{flex-direction:column;justify-content:space-around;align-items:flex-start}.flex.vertical small{margin:initial}.flex .grow{flex:1}.left-icon{align-self:center;padding:1em;background:#ECECEC;border-radius:50px;margin:1em;margin-right:2em}body>footer{display:flex;align-content:center;justify-content:space-between;background:#ECECEC;padding:0 20%;margin-top:5em}body>footer *{margin:5em 0}figure{text-align:center;margin:2em;max-width:100%;width:auto;height:auto}figure>*{max-width:100%}figure figcaption{padding:1em}figure audio,figure video{width:100%}.preview{display:block;max-width:100px;max-height:100px;width:auto;height:auto;margin-right:20px}.media-preview{min-height:8em}.media-preview:not(.image){background-color:#7765E3;background-repeat:no-repeat;background-position:center;background-size:4em}.media-preview.unknown{background-image:url('/static/images/unknown-file.svg');display:block}.media-preview.audio{background-image:url('/static/images/audio-file.svg')}.media-preview.video{background-image:url('/static/images/video-file.svg')}.avatar{background-position:center;background-size:cover;border-radius:100%}.avatar.small{width:50px;height:50px}.avatar.medium{width:100px;height:100px;margin:20px}.avatar.padded{margin-right:2rem}.tabs{border-bottom:1px solid #ECECEC;padding:0px;margin:auto 20% 2em;overflow:auto;display:flex}.tabs a{display:inline-block;color:#242424;padding:1em}.tabs a.selected{color:#7765E3;border-bottom:1px solid #7765E3}header{background:#ECECEC}header #content{display:flex;align-content:center;justify-content:space-between}header nav#menu{position:relative;display:none;transform:skewX(-15deg);left:-1em;padding:1em 1em 1em 2em;background:#7765E3;align-self:flex-start}header nav#menu a{transform:skewX(15deg);display:flex;flex-direction:column;align-items:center;justify-content:center;width:1.4em;height:1.4em;margin:0;padding:0;color:#ECECEC;font-size:1.33em}header nav{display:flex;flex-direction:row;align-items:center}header nav hr{height:100%;width:.2em;background:#7765E3;border:none;transform:skewX(-15deg)}header nav a{display:flex;align-items:center;position:relative;align-self:stretch;margin:0;padding:0 2em;font-size:1em}header nav a i{font-size:1.2em}header nav a.title{margin:0;text-align:center;padding:.5em 1em;font-size:1.75em}header nav a.title img{height:1.75em;width:1.75em}header nav a.title p{margin:0;padding-left:.5em}.messages>*{padding:1em 20%}.messages p.error{color:#E92F2F;background:#fde7e7;margin:0;max-width:initial}@media screen and (min-width: 600px){header nav a i{transition:all .2s ease;margin:0}header nav a .mobile-label{transition:all .2s ease;display:block;position:absolute;left:50%;transform:translate(-50%, 0);opacity:0;font-size:.9em;white-space:nowrap}header nav a img+.mobile-label{display:none}header nav a:hover i{margin-bottom:.75em}header nav a:hover .mobile-label{opacity:1;transform:translate(-50%, 80%)}}main .article-info{max-width:40rem;margin:0 auto 3em;font-size:.95em;font-weight:400}main .article-info .author,main .article-info .author a{font-weight:600}main article{max-width:40rem;margin:2.5em auto;font-family:"Lora",serif;font-size:1.2em;line-height:1.7}main article a:hover{text-decoration:underline}main article img{display:block;margin:3em auto;max-width:100%}main article pre{padding:1em;background:#ECECEC;overflow:auto;border-radius:5px}main .article-meta,main .article-meta button{padding:0;font-size:1.1em;margin-top:10%}main .article-meta>*{margin:0 20%}main .article-meta>p{margin:2em 20%;font-size:.9em}main .article-meta .tags{list-style:none;display:inline-block;padding:0px;margin-bottom:2em}main .article-meta .tags li{display:inline-block;background:#ECECEC;padding:0px;margin:0px 10px 10px 0px;border-radius:3px;transition:all .2s ease-in}main .article-meta .tags li a{display:inline-block;padding:10px 20px;color:#242424}main .article-meta .tags li:hover{background:#d8d8d8}main .article-meta .actions{display:flex;flex-direction:row;justify-content:space-around}main .article-meta .likes,main .article-meta .reshares{display:flex;flex-direction:column;align-items:center;padding:.5em 0}main .article-meta .likes p,main .article-meta .reshares p{font-size:1.5em;display:inline-block;margin:0}main .article-meta .likes .action,main .article-meta .reshares .action{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0;padding:0;background:none;color:#242424;border:none;font-size:1.1em}main .article-meta .likes .action svg.feather,main .article-meta .reshares .action svg.feather{transition:background .1s ease-in;display:flex;align-items:center;justify-content:center;margin:.5em 0;width:2.5em;height:2.5em;border-radius:50%}main .article-meta .likes .action.reshared svg.feather,main .article-meta .likes .action.liked svg.feather,main .article-meta .reshares .action.reshared svg.feather,main .article-meta .reshares .action.liked svg.feather{color:#F4F4F4;font-weight:900}main .article-meta .likes p,main .article-meta .likes .action:hover{color:#E92F2F}main .article-meta .likes .action svg.feather{padding:.7em;box-sizing:border-box;color:#E92F2F;fill:none;border:solid #E92F2F thin}main .article-meta .likes .action:hover svg.feather{background:rgba(233,47,47,0.15)}main .article-meta .likes .action.liked svg.feather{background:#E92F2F;fill:currentColor}main .article-meta .likes .action.liked:hover svg.feather{background:rgba(233,47,47,0.25) color: #E92F2F}main .article-meta .reshares p,main .article-meta .reshares .action:hover{color:#7765E3}main .article-meta .reshares .action svg.feather{padding:.7em;box-sizing:border-box;color:#7765E3;border:solid #7765E3 thin;font-weight:600}main .article-meta .reshares .action:hover svg.feather{background:rgba(119,101,227,0.15)}main .article-meta .reshares .action.reshared svg.feather{background:#7765E3}main .article-meta .reshares .action.reshared:hover svg.feather{background:rgba(119,101,227,0.25) color: #7765E3}main .article-meta .comments{margin:0}main .article-meta .comments>*{margin-left:20%;margin-right:20%}main .article-meta .comments h2{color:#7765E3;font-size:1.5em;font-weight:600}main .article-meta .comments summary{cursor:pointer}main .article-meta .comments>form input[type="submit"]{font-size:1em}main .article-meta .comments a.button,main .article-meta .comments form.inline,main .article-meta .comments form.inline input{display:inline-block;padding:0;background:none;color:#242424;border:none;margin-right:2em;font-family:"Route159",serif}main .article-meta .comments a.button::before,main .article-meta .comments form.inline::before,main .article-meta .comments form.inline input::before{color:#7765E3;padding-right:.5em}main .article-meta .comments a.button:hover,main .article-meta .comments form.inline:hover,main .article-meta .comments form.inline input:hover{color:#7765E3}main .article-meta .comments .list{display:grid;margin:0 0 -5em;padding:0 20%;background:#ECECEC}main .article-meta .comments .comment{padding:2em;font-size:1em;border:none}main .article-meta .comments .comment .author{display:flex;flex-direction:row;align-items:center;align-content:center}main .article-meta .comments .comment .author *{transition:all .1s ease-in}main .article-meta .comments .comment .author .display-name{color:#242424}main .article-meta .comments .comment .author:hover .display-name{color:#7765E3}main .article-meta .comments .comment .author:hover small{opacity:1}main .article-meta .comments .comment .text{padding:1.25em 0;font-family:"Lora",serif;font-size:1.1em;line-height:1.4;text-align:left}#plume-editor header{display:flex;flex-direction:row-reverse;background:transparent;align-items:center;justify-content:space-between}#plume-editor header button{flex:0 0 10em;font-size:1.25em;margin:.5em 0em .5em 1em}#plume-editor>*{min-height:1em;outline:none;margin-bottom:.5em}#plume-editor .placeholder{color:rgba(36,36,36,0.4)}#plume-editor article{max-width:none;min-height:80vh}.popup{position:fixed;top:15vh;bottom:20vh;left:20vw;right:20vw;background:#ECECEC;border:1px solid #7765E3;z-index:2;padding:2em;overflow-y:auto}.popup:not(.show),.popup-bg:not(.show){display:none}.popup-bg{background:rgba(0,0,0,0.1);position:fixed;top:0px;left:0px;right:0px;bottom:0px}.cw-container{position:relative;display:inline-block}.cw-text{display:none}input[type="checkbox"].cw-checkbox{display:none}input:checked ~ .cw-container:before{content:" ";position:absolute;height:100%;width:100%;background:#000}input:checked ~ .cw-container>.cw-text{display:inline;position:absolute;color:white;width:100%;text-align:center;top:50%;transform:translateY(-50%)}label{display:block;margin:2em auto .5em;font-size:1.2em}input,textarea,select{transition:all .1s ease-in;display:block;width:100%;margin:auto;padding:1em;box-sizing:border-box;background:#FFFFFF;color:#242424;border:none;border:solid #ECECEC thin;font-size:1.2em;font-weight:400}input:focus,textarea:focus,select:focus{border-color:#7765E3}form input[type="submit"]{margin:2em auto}textarea{resize:vertical;font-family:"Lora",serif;font-size:1.1em;line-height:1.5}input[type="checkbox"]{display:inline;margin:initial;min-width:initial;width:initial}form.inline{display:inline;margin:0px;padding:0px;width:auto}form.inline input[type="submit"]{display:inline-block;color:#7765E3;cursor:pointer;font-size:1em;width:auto;-webkit-appearance:none}form.inline input[type="submit"]:not(.button){margin:0;padding:0;border:none;background:transparent;color:#7765E3}.button,input[type="submit"],button{transition:all .1s ease-in;display:inline-block;-webkit-appearance:none;border-radius:.5em;margin:.5em auto;padding:.75em 1em;background:transparent;color:#7765E3;border:1px solid #7765E3;cursor:pointer}.button:hover,input[type="submit"]:hover,button:hover{background:rgba(119,101,227,0.4);color:white}.button.destructive,input[type="submit"].destructive,button.destructive{color:#E92F2F;border-color:#E92F2F}.button.destructive:hover,input[type="submit"].destructive:hover,button.destructive:hover{background:rgba(233,47,47,0.4);color:#F4F4F4}input[type="submit"]{display:block}form.new-post{max-width:60em;-webkit-appearance:none}form.new-post .title{margin:0 auto;padding:.75em 0;background:none;border:none;font-family:"Playfair Display",serif;font-size:2em;text-align:left}form.new-post textarea{min-height:20em;overflow-y:hidden;resize:none}form.new-post input[type="submit"]{background:#ECECEC;color:#242424;border:none;-webkit-appearance:none;font-family:"Playfair Display",serif;font-size:1.5em}form.new-post input[type="submit"]:hover{background:#ECECEC}.button+.button{margin-left:1em}.split{display:flex;justify-content:space-between}.split>*{flex-grow:1;max-width:40%}header.center{display:flex;flex-direction:column;align-items:center;background:transparent;opacity:1;font-weight:normal;text-align:left}header.center>*{margin-left:0;margin-right:0}@media screen and (max-width: 600px){@keyframes menuOpening{from{transform:scaleX(0);transform-origin:left;opacity:0}to{transform:scaleX(1);transform-origin:left;opacity:1}}header{flex-direction:column}header nav#menu{display:inline-flex}header #content{display:none;text-align:center}header:focus-within #content,#content.show{position:fixed;display:flex;flex-direction:column;justify-content:flex-start;top:0;left:0;width:100%;height:100%;box-sizing:border-box;animation:.2s menuOpening}header:focus-within #content::before,#content.show::before{content:"";position:absolute;transform:skewX(-10deg);top:0;left:-20%;width:100%;height:100%;z-index:-10;background:#7765E3}header:focus-within #content>nav,#content.show>nav{flex-direction:column;align-items:flex-start}header:focus-within #content>nav a,#content.show>nav a{display:flex;flex-direction:row;align-items:center;margin:0;padding:1rem 1.5rem;color:#F4F4F4;font-size:1.4em;font-weight:300}header:focus-within #content>nav a.title,#content.show>nav a.title{font-size:1.8em}header:focus-within #content>nav a>*:first-child,#content.show>nav a>*:first-child{width:3rem}header:focus-within #content>nav a>img:first-child,#content.show>nav a>img:first-child{height:3rem}header:focus-within #content>nav a>*:last-child,#content.show>nav a>*:last-child{margin-left:1rem}header:focus-within #content>nav a>nav hr,#content.show>nav a>nav hr{display:block;margin:0;width:100%;border:solid #F4F4F4 .1rem}header:focus-within #content>nav a .mobile-label,#content.show>nav a .mobile-label{display:initial}body>main>*{padding:0 5%}main .article-meta>*{margin:0 5%}main .article-meta>p{margin:2em 5%;font-size:.9em}main .article-meta .comments>*{margin:auto 5%}main .article-meta .comments .comment{padding:2em 0px}main .article-info,main article,main h1.article,main h2.article{max-width:90vw}.card{min-width:80%;min-height:80%}.tabs{margin:auto 0px 2em}.stats{flex-direction:column}body>footer{flex-direction:column;align-items:center}body>footer *{margin:1em auto}.flex.wrap{flex-direction:column}.cards{margin:1rem 0 5rem}}
diff --git a/static/plume-ci.js b/static/plume-ci.js
new file mode 100644
index 0000000..134c25d
--- /dev/null
+++ b/static/plume-ci.js
@@ -0,0 +1,44 @@
+fetch("/up.json").then(function(response) {
+ return response.json().then(function(json) {
+ for(i = 0; i < json.length; i++) {
+ id = json[i];
+ fetch("https://api.github.com/repos/Plume-org/Plume/pulls/"+id, {mode: 'cors'}).then(
+
+function(response) {
+ return response.json().then(function(json) {
+ link_test = document.createElement("a");
+ link_test.href = "https://pr-" + id + ".joinplu.me/";
+ link_github = document.createElement("a");
+ link_github.href = "https://github.com/Plume-org/Plume/pull/" + id;
+ link_github.innerText = "(view on Github)";
+ if(json.title === undefined) {
+ link_test.innerText = "#" + id;
+ } else {
+ link_test.innerText = "#" + id + " " + json.title;
+ }
+ li = document.createElement("li");
+ li.appendChild(link_test);
+ li.append(" ⋅ ");
+ li.appendChild(link_github);
+ document.getElementById("list").appendChild(li);
+ })
+}
+
+ ).catch(
+function() {
+ link_test = document.createElement("a");
+ link_test.href = "https://pr-" + id + ".joinplu.me/";
+ link_github = document.createElement("a");
+ link_github.href = "https://github.com/Plume-org/Plume/pull/" + id;
+ link_github.innerText = "(view on Github)";
+ link_test.innerText = "#" + id;
+ li = document.createElement("li");
+ li.appendChild(link_test);
+ li.append(" ⋅ ");
+ li.appendChild(link_github);
+ document.getElementById("list").appendChild(li);
+}
+ )
+ }
+ })
+});
diff --git a/static/plumeFeather256.png b/static/plumeFeather256.png
new file mode 100644
index 0000000..748fbb7
Binary files /dev/null and b/static/plumeFeather256.png differ
diff --git a/static/plumeFeatherFilled64.png b/static/plumeFeatherFilled64.png
new file mode 100644
index 0000000..917c418
Binary files /dev/null and b/static/plumeFeatherFilled64.png differ
diff --git a/static/up.json b/static/up.json
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/static/up.json
@@ -0,0 +1 @@
+[]