From dd9ebd2afcaa7b6214dafeadec53c8cb73eebdeb Mon Sep 17 00:00:00 2001
From: Brad Stein
Date: Tue, 6 Jan 2026 13:55:24 -0300
Subject: [PATCH] refine onboarding steps and app layout
---
.../atlas_portal/routes/access_requests.py | 1 +
frontend/src/views/AccountView.vue | 11 +++---
frontend/src/views/AppsView.vue | 13 +++++--
frontend/src/views/OnboardingView.vue | 34 +++++++++++++++++--
frontend/src/views/RequestAccessView.vue | 3 +-
5 files changed, 50 insertions(+), 12 deletions(-)
diff --git a/backend/atlas_portal/routes/access_requests.py b/backend/atlas_portal/routes/access_requests.py
index 6f440c4..59b7694 100644
--- a/backend/atlas_portal/routes/access_requests.py
+++ b/backend/atlas_portal/routes/access_requests.py
@@ -59,6 +59,7 @@ def _verify_url(request_code: str, token: str) -> str:
ONBOARDING_STEPS: tuple[str, ...] = (
"vaultwarden_master_password",
"vaultwarden_browser_extension",
+ "vaultwarden_desktop_app",
"vaultwarden_mobile_app",
"keycloak_password_rotated",
"keycloak_mfa_optional",
diff --git a/frontend/src/views/AccountView.vue b/frontend/src/views/AccountView.vue
index 622dd35..4bcc43d 100644
--- a/frontend/src/views/AccountView.vue
+++ b/frontend/src/views/AccountView.vue
@@ -549,7 +549,7 @@ async function copy(key, text) {
flex-wrap: wrap;
align-items: center;
justify-content: flex-end;
- gap: 24px;
+ gap: 28px;
}
.divider {
@@ -591,15 +591,16 @@ h1 {
}
.account-stack {
- display: flex;
- flex-direction: column;
+ display: grid;
+ grid-template-rows: repeat(2, minmax(0, 1fr));
gap: 12px;
height: 100%;
}
.account-stack .module {
- flex: 1 1 0;
min-height: 0;
+ display: flex;
+ flex-direction: column;
}
.module {
@@ -702,7 +703,7 @@ button.primary {
}
.jellyfin-detail {
- margin-top: 12px;
+ margin-top: auto;
}
.copy {
diff --git a/frontend/src/views/AppsView.vue b/frontend/src/views/AppsView.vue
index 12147a0..f603a12 100644
--- a/frontend/src/views/AppsView.vue
+++ b/frontend/src/views/AppsView.vue
@@ -194,6 +194,8 @@ const sections = [
.category {
padding: 18px;
+ display: flex;
+ flex-direction: column;
}
.section-head {
@@ -202,8 +204,7 @@ const sections = [
justify-content: space-between;
gap: 18px;
margin-bottom: 14px;
- height: 92px;
- overflow: hidden;
+ min-height: 92px;
}
.group + .group {
@@ -228,10 +229,16 @@ const sections = [
.tiles {
display: grid;
- grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
+ grid-template-columns: 1fr;
gap: 12px;
}
+@media (min-width: 680px) {
+ .tiles {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+}
+
.tile {
display: block;
text-decoration: none;
diff --git a/frontend/src/views/OnboardingView.vue b/frontend/src/views/OnboardingView.vue
index 43f7c44..b9abac8 100644
--- a/frontend/src/views/OnboardingView.vue
+++ b/frontend/src/views/OnboardingView.vue
@@ -166,6 +166,25 @@
+
+
+
+ Install the Bitwarden desktop app and set the server to vault.bstein.dev (Settings → Account → Environment → Self-hosted).
+ Bitwarden downloads.
+
+
+