From 25269ad90e6e35fd7e2f397b9c8975e8435a9401 Mon Sep 17 00:00:00 2001
From: andrewlalis
Date: Mon, 26 Aug 2024 13:23:11 -0400
Subject: [PATCH] Cleaned up some minor mobile usability issues.
---
app/public/favicon.ico | Bin 4286 -> 10423 bytes
app/src/components/LogbookMessage.vue | 3 +--
app/src/components/SoftwareProjectTile.vue | 3 +--
app/src/views/HomeView.vue | 4 +++-
design/icon.png | Bin 0 -> 10490 bytes
upload-new.sh | 9 +++++++++
6 files changed, 14 insertions(+), 5 deletions(-)
create mode 100644 design/icon.png
create mode 100755 upload-new.sh
diff --git a/app/public/favicon.ico b/app/public/favicon.ico
index 0fe4137a498442aabc61d2a6c2140c58da967944..11ccc7bfd9b0b070c6ec87c16faf51e1a895102a 100644
GIT binary patch
literal 10423
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
RR6S>13l>-XAK?G${{dbSZ-@W@
diff --git a/app/src/components/LogbookMessage.vue b/app/src/components/LogbookMessage.vue
index a306d28..42eb9ab 100644
--- a/app/src/components/LogbookMessage.vue
+++ b/app/src/components/LogbookMessage.vue
@@ -31,9 +31,8 @@ const date = computed(() => {
background-color: var(--background-color-2);
border-radius: 20px;
padding: 0.75rem;
-}
-.logbook-message + .logbook-message {
margin-top: 1rem;
+ margin-bottom: 1rem;
}
.logbook-message > time {
font-family: monospace;
diff --git a/app/src/components/SoftwareProjectTile.vue b/app/src/components/SoftwareProjectTile.vue
index acb9765..12a886f 100644
--- a/app/src/components/SoftwareProjectTile.vue
+++ b/app/src/components/SoftwareProjectTile.vue
@@ -51,9 +51,8 @@ function getTagStyle(tag: string) {
background-color: var(--background-color-2);
border-radius: 20px;
padding: 1rem;
-}
-.software-project-tile + .software-project-tile {
margin-top: 1rem;
+ margin-bottom: 1rem;
}
.software-project-tile > h3 {
diff --git a/app/src/views/HomeView.vue b/app/src/views/HomeView.vue
index ea77a2a..643f603 100644
--- a/app/src/views/HomeView.vue
+++ b/app/src/views/HomeView.vue
@@ -6,6 +6,8 @@
My name's Andrew, and I'm a software engineer, gardener, runner, home cook, and probably many
other things too, depending on who you ask. Welcome to my website!
- Click one of the links on the left to check out something more interesting.
+
+ Click one of the links to check out something more interesting.
+
diff --git a/design/icon.png b/design/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..62760d0dbc1a6d48060b54ec9ede8cc2d58a9845
GIT binary patch
literal 10490
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
literal 0
HcmV?d00001
diff --git a/upload-new.sh b/upload-new.sh
new file mode 100755
index 0000000..c7681c3
--- /dev/null
+++ b/upload-new.sh
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+cd app
+npm run lint
+npm run type-check
+npm run build
+cd ..
+
+rsync -rav -e ssh --delete app/dist/ root@andrewlalis.com:/var/www/andrewlalis.com/html