deploy: exclude codex scratch artifacts
This commit is contained in:
parent
c79afa9541
commit
8f2e03df2a
@ -155,6 +155,39 @@ select:focus-visible {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 920px) {
|
||||||
|
.dashboard-view [data-controller-zone="sidebar"] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-view .mobile-top-tabs,
|
||||||
|
.dashboard-view [data-mobile-tab-bar] {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-view .dashboard-scroll-panel {
|
||||||
|
padding-left: 1rem !important;
|
||||||
|
padding-right: 1rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-scroll-pad {
|
||||||
|
padding-bottom: calc(var(--mobile-tab-bar-height, 88px) + var(--safe-area-bottom, env(safe-area-inset-bottom, 0px)) + 16px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-scroll-pad-back {
|
||||||
|
padding-bottom: calc(var(--mobile-tab-bar-height, 88px) + var(--safe-area-bottom, env(safe-area-inset-bottom, 0px)) + 64px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-safe-top {
|
||||||
|
padding-top: calc(var(--safe-area-top, env(safe-area-inset-top, 0px)) + 16px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.marketplace-container .grid,
|
||||||
|
.discover-container .grid {
|
||||||
|
grid-template-columns: minmax(0, 1fr) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Haptic-like press feedback for all interactive elements */
|
/* Haptic-like press feedback for all interactive elements */
|
||||||
button:active:not(:disabled),
|
button:active:not(:disabled),
|
||||||
[role="button"]:active,
|
[role="button"]:active,
|
||||||
@ -281,12 +314,6 @@ input[type="radio"]:active + * {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) and (max-width: 920px) {
|
|
||||||
.app-header-inline-tabs {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 921px) {
|
@media (min-width: 921px) {
|
||||||
.app-header-desktop {
|
.app-header-desktop {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -297,6 +324,24 @@ input[type="radio"]:active + * {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.apps-icon-grid-mobile {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apps-card-grid-desktop {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 921px) {
|
||||||
|
.apps-icon-grid-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.apps-card-grid-desktop {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.category-tabs-wide {
|
.category-tabs-wide {
|
||||||
flex: 0 1 auto;
|
flex: 0 1 auto;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|||||||
@ -203,7 +203,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile: iPhone-style icon grid -->
|
<!-- Mobile: iPhone-style icon grid -->
|
||||||
<div class="md:hidden">
|
<div class="apps-icon-grid-mobile">
|
||||||
<AppIconGrid
|
<AppIconGrid
|
||||||
:apps="filteredPackageEntries as [string, PackageDataEntry][]"
|
:apps="filteredPackageEntries as [string, PackageDataEntry][]"
|
||||||
@go-to-app="goToApp"
|
@go-to-app="goToApp"
|
||||||
@ -211,7 +211,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Desktop: Card grid -->
|
<!-- Desktop: Card grid -->
|
||||||
<div class="hidden md:grid grid-cols-2 lg:grid-cols-3 gap-4 pb-6">
|
<div class="apps-card-grid-desktop grid-cols-2 lg:grid-cols-3 gap-4 pb-6">
|
||||||
<AppCard
|
<AppCard
|
||||||
v-for="([id, pkg], index) in filteredPackageEntries"
|
v-for="([id, pkg], index) in filteredPackageEntries"
|
||||||
:key="id"
|
:key="id"
|
||||||
|
|||||||
@ -140,6 +140,8 @@ const appLauncher = useAppLauncherStore()
|
|||||||
const uiMode = useUIModeStore()
|
const uiMode = useUIModeStore()
|
||||||
|
|
||||||
const mobileTabBar = ref<HTMLElement | null>(null)
|
const mobileTabBar = ref<HTMLElement | null>(null)
|
||||||
|
const MOBILE_LAYOUT_MAX_WIDTH = 920
|
||||||
|
const viewportWidth = ref(typeof window === 'undefined' ? 1024 : window.innerWidth)
|
||||||
|
|
||||||
// App sessions own their mobile controls. Normal mobile launches use the route
|
// App sessions own their mobile controls. Normal mobile launches use the route
|
||||||
// session; keeping this guard also protects any desktop-panel state on resize.
|
// session; keeping this guard also protects any desktop-panel state on resize.
|
||||||
@ -148,14 +150,14 @@ const isAppSessionActive = computed(() => route.name === 'app-session')
|
|||||||
// Show persistent tabs for Apps/Marketplace on mobile
|
// Show persistent tabs for Apps/Marketplace on mobile
|
||||||
const showAppsTabs = computed(() => {
|
const showAppsTabs = computed(() => {
|
||||||
if (typeof window === 'undefined') return false
|
if (typeof window === 'undefined') return false
|
||||||
if (window.innerWidth >= 768) return false
|
if (viewportWidth.value > MOBILE_LAYOUT_MAX_WIDTH) return false
|
||||||
return route.path.includes('/apps') || route.path.includes('/marketplace') || route.path.includes('/discover')
|
return route.path.includes('/apps') || route.path.includes('/marketplace') || route.path.includes('/discover')
|
||||||
})
|
})
|
||||||
|
|
||||||
// Show persistent tabs for Network/Cloud on mobile
|
// Show persistent tabs for Network/Cloud on mobile
|
||||||
const showNetworkTabs = computed(() => {
|
const showNetworkTabs = computed(() => {
|
||||||
if (typeof window === 'undefined') return false
|
if (typeof window === 'undefined') return false
|
||||||
if (window.innerWidth >= 768) return false
|
if (viewportWidth.value > MOBILE_LAYOUT_MAX_WIDTH) return false
|
||||||
if (route.name === 'cloud-folder') return false
|
if (route.name === 'cloud-folder') return false
|
||||||
return route.path.includes('/server') || route.path.includes('/cloud') || route.path.includes('/web5') || route.path.includes('/mesh')
|
return route.path.includes('/server') || route.path.includes('/cloud') || route.path.includes('/web5') || route.path.includes('/mesh')
|
||||||
})
|
})
|
||||||
@ -171,7 +173,7 @@ function readSafeAreaTop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const mobileTabPaddingTop = computed(() => {
|
const mobileTabPaddingTop = computed(() => {
|
||||||
if (typeof window === 'undefined' || window.innerWidth >= 768) return 0
|
if (typeof window === 'undefined' || viewportWidth.value > MOBILE_LAYOUT_MAX_WIDTH) return 0
|
||||||
const sat = safeAreaTop.value
|
const sat = safeAreaTop.value
|
||||||
if (showAppsTabs.value && showNetworkTabs.value) return 160 + sat
|
if (showAppsTabs.value && showNetworkTabs.value) return 160 + sat
|
||||||
if (showAppsTabs.value || showNetworkTabs.value) return 80 + sat
|
if (showAppsTabs.value || showNetworkTabs.value) return 80 + sat
|
||||||
@ -193,6 +195,7 @@ function updateTabBarHeight() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onResize() {
|
function onResize() {
|
||||||
|
viewportWidth.value = window.innerWidth
|
||||||
updateTabBarHeight()
|
updateTabBarHeight()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -147,6 +147,7 @@ deploy_node() {
|
|||||||
step "Syncing code"
|
step "Syncing code"
|
||||||
rsync -az --delete \
|
rsync -az --delete \
|
||||||
--exclude='.git' --exclude='node_modules' --exclude='target/debug' \
|
--exclude='.git' --exclude='node_modules' --exclude='target/debug' \
|
||||||
|
--exclude='.codex-target-*' --exclude='.codex-tmp' \
|
||||||
--exclude='target/release/deps' --exclude='target/release/build' \
|
--exclude='target/release/deps' --exclude='target/release/build' \
|
||||||
--exclude='target/release/.fingerprint' --exclude='target/release/incremental' \
|
--exclude='target/release/.fingerprint' --exclude='target/release/incremental' \
|
||||||
--exclude='web/dist' --exclude='.DS_Store' --exclude='image-recipe/build' \
|
--exclude='web/dist' --exclude='.DS_Store' --exclude='image-recipe/build' \
|
||||||
|
|||||||
@ -164,6 +164,7 @@ if [[ "$DRY_RUN" == "true" ]]; then
|
|||||||
echo "Files that would be synced:"
|
echo "Files that would be synced:"
|
||||||
rsync -avn --exclude '.git' --exclude 'target' --exclude 'node_modules' \
|
rsync -avn --exclude '.git' --exclude 'target' --exclude 'node_modules' \
|
||||||
--exclude 'dist' --exclude 'web/dist' --exclude '*.iso' \
|
--exclude 'dist' --exclude 'web/dist' --exclude '*.iso' \
|
||||||
|
--exclude '.codex-target-*' --exclude '.codex-tmp' \
|
||||||
"$PROJECT_DIR/" "$TARGET_HOST:$TARGET_DIR/" 2>/dev/null | \
|
"$PROJECT_DIR/" "$TARGET_HOST:$TARGET_DIR/" 2>/dev/null | \
|
||||||
grep -E '^[<>]|^deleting' | head -50 || echo " (rsync check failed — SSH may be unavailable)"
|
grep -E '^[<>]|^deleting' | head -50 || echo " (rsync check failed — SSH may be unavailable)"
|
||||||
echo ""
|
echo ""
|
||||||
@ -546,6 +547,8 @@ rsync -avz --delete \
|
|||||||
--exclude 'target' \
|
--exclude 'target' \
|
||||||
--exclude 'dist' \
|
--exclude 'dist' \
|
||||||
--exclude '.git' \
|
--exclude '.git' \
|
||||||
|
--exclude '.codex-target-*' \
|
||||||
|
--exclude '.codex-tmp' \
|
||||||
--exclude 'image-recipe/build' \
|
--exclude 'image-recipe/build' \
|
||||||
--exclude 'image-recipe/results' \
|
--exclude 'image-recipe/results' \
|
||||||
"$PROJECT_DIR/" "$TARGET_HOST:$TARGET_DIR/"
|
"$PROJECT_DIR/" "$TARGET_HOST:$TARGET_DIR/"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user