feat: 브랜드 앱 아이콘 + Windows 데스크톱(Electron) 클라이언트
CI / build (push) Failing after 12m35s

- 앱 아이콘: 브랜드(초록 #00bc7e + 흰 막대 차트) 적응형 아이콘 생성(@capacitor/assets)
  · assets/ 에 SVG 소스 + 전 해상도 mipmap 재생성, 적응형 XML 인셋 제거(배경 풀블리드)
- 데스크톱: Electron 로 dist 를 감싼 Windows 설치파일(.exe)
  · vite electron 모드(상대 base)·라우터 해시 히스토리·App 게이트 Electron 감지
  · webSecurity:false 로 file:// CORS 우회, 백엔드는 https://app.sblog.kr/api
  · scripts: build:electron / electron:dev / electron:build(electron-builder NSIS)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-06-07 16:20:55 +09:00
parent 095ba942eb
commit cb5cf1f0bf
42 changed files with 7474 additions and 19 deletions
+4 -3
View File
@@ -15,9 +15,10 @@ const auth = useAuthStore()
const ui = useUiStore()
const route = useRoute()
// 앱(Capacitor 네이티브)에서 전체 이용. 웹(브라우저)은 안내 페이지만 노출.
// 단, 개발 모드(npm run dev)에서는 브라우저로도 전체 앱을 테스트할 수 있게 예외.
const isApp = Capacitor.isNativePlatform() || import.meta.env.DEV
// 앱(Capacitor 네이티브) 또는 데스크톱(Electron) 클라이언트에서 전체 이용.
// 웹(브라우저)은 안내 페이지만 노출. 개발 모드(npm run dev)는 예외로 전체 앱 표시.
const isDesktop = /electron/i.test(navigator.userAgent)
const isApp = Capacitor.isNativePlatform() || import.meta.env.DEV || isDesktop
// http.js 의 401 처리에서 발생시키는 이벤트 → 세션 정리 후 로그인 팝업
function onUnauthorized() {
+5 -2
View File
@@ -1,10 +1,13 @@
import { createRouter, createWebHistory } from 'vue-router'
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
import { useAuthStore } from '@/stores/auth'
import { useUiStore } from '@/stores/ui'
// Electron(데스크톱)은 file:// 로 로드 → 해시 히스토리라야 새로고침/딥링크가 안전
const isDesktop = typeof navigator !== 'undefined' && /electron/i.test(navigator.userAgent)
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
history: isDesktop ? createWebHashHistory() : createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',