diff --git a/.gitea/workflows/demo.yaml b/.gitea/workflows/demo.yaml index a769718..9c37024 100644 --- a/.gitea/workflows/demo.yaml +++ b/.gitea/workflows/demo.yaml @@ -8,8 +8,8 @@ jobs: container: image: catthehacker/ubuntu:act-latest steps: - - name: Checkout - uses: actions/checkout@v2 # Required to mount the Github Workspace to a volume + - name: Checkout + uses: actions/checkout@v2 # Required to mount the Github Workspace to a volume - name: Login to Docker Hub uses: https://github.com/docker/login-action@v3 with: @@ -22,12 +22,12 @@ jobs: context: . push: true tags: gitea.webart-tech.ru/webart/strava-frontend:${{ gitea.sha }} - - name: Deploy - run: | - git config --global user.email "deploy@deploy.deploy" - git clone https://${{ secrets.DOCKER_USERNAME }}:${{ secrets.DOCKER_PASSWORD }}@gitea.webart-tech.ru/webart/kuber-deploy ./deploy - ls ./ - cd ./deploy - sed -i -E 's/strava-frontend:.+/strava-frontend:${{ gitea.sha }}/g' strava.yml - git commit -am 'auto-deploy' - git push https://${{ secrets.DOCKER_USERNAME }}:${{ secrets.DOCKER_PASSWORD }}@gitea.webart-tech.ru/webart/kuber-deploy \ No newline at end of file + - name: Deploy + run: | + git config --global user.email "deploy@deploy.deploy" + git clone https://${{ secrets.DOCKER_USERNAME }}:${{ secrets.DOCKER_PASSWORD }}@gitea.webart-tech.ru/webart/kuber-deploy ./deploy + ls ./ + cd ./deploy + sed -i -E 's/strava-frontend:.+/strava-frontend:${{ gitea.sha }}/g' strava.yml + git commit -am 'auto-deploy' + git push https://${{ secrets.DOCKER_USERNAME }}:${{ secrets.DOCKER_PASSWORD }}@gitea.webart-tech.ru/webart/kuber-deploy diff --git a/.roo/memory-bank/activeContext.md b/.roo/memory-bank/activeContext.md new file mode 100644 index 0000000..334a28d --- /dev/null +++ b/.roo/memory-bank/activeContext.md @@ -0,0 +1,291 @@ +# Active Context — Strava Frontend + +## Task State + +- task_id: TASK-DEPS-UPDATE-W2c +- status: success +- parent_task: TASK-DEPS-UPDATE (safe dependency update; Storybook 8 EXCLUDED as high-risk) +- summary: W2b DONE + Architect-verified (TS 5.8.3, vue-tsc 2.2.12). Now W2c: vite 4→5 + @vitejs/plugin-vue 4→5. + +## W2b acceptance criteria + +- `vue-tsc` resolved to 2.x and `typescript` to 5.8.x in yarn.lock; NO other package moved to a new major +- `yarn lint` — 0 errors; `yarn build` — green (vue-tsc 2 type-check 0 errors, bundle built) +- Minimal type-only fixes in `src/` allowed only if required by the stricter checker; each documented with justification +- Memory Bank: status `success` + Success Report (old/new versions, full list of src/ fixes with justification) + +## Wave plan (each wave = one atomic task, verified independently) + +- **W0a (TASK-DEPS-UPDATE-W0a, success)**: Fix everything that hard-blocks `yarn build`: + - `LineWithLineChart.ts(41)` TS2532 "Object is possibly 'undefined'" (labels can be undefined) — fix via non-null assertion or guarded length. + - SFC parsing errors: `src/pages/workouts/components/WorkoutItem.vue:260` (`Unexpected token {`) and `WorkoutListItem.vue:60` (`'interface' is reserved`). Root-cause candidates: TS syntax in a plain ` diff --git a/src/components/app-layout-navigation/AppLayoutNavigation.vue b/src/components/app-layout-navigation/AppLayoutNavigation.vue index e8e6aaa..462f6eb 100644 --- a/src/components/app-layout-navigation/AppLayoutNavigation.vue +++ b/src/components/app-layout-navigation/AppLayoutNavigation.vue @@ -29,7 +29,9 @@ import { useColors } from "vuestic-ui"; import VaIconMenuCollapsed from "../icons/VaIconMenuCollapsed.vue"; import { storeToRefs } from "pinia"; import { useGlobalStore } from "../../stores/global-store"; -import NavigationRoutes from "../sidebar/NavigationRoutes"; +import NavigationRoutes, { + type INavigationRoute, +} from "../sidebar/NavigationRoutes"; const { isSidebarMinimized } = storeToRefs(useGlobalStore()); @@ -44,7 +46,7 @@ type BreadcrumbNavigationItem = { }; const findRouteName = (name: string) => { - const traverse = (routers: any[]): string => { + const traverse = (routers: INavigationRoute[]): string => { for (const router of routers) { if (router.name === name) { return router.displayName; diff --git a/src/components/icons/VaZoomOut.vue b/src/components/icons/VaZoomOut.vue index 125dde9..9049bb9 100644 --- a/src/components/icons/VaZoomOut.vue +++ b/src/components/icons/VaZoomOut.vue @@ -1,33 +1,36 @@ - - - - \ No newline at end of file +} + diff --git a/src/components/navbar/components/AppNavbarActions.vue b/src/components/navbar/components/AppNavbarActions.vue index 158108a..cac783b 100644 --- a/src/components/navbar/components/AppNavbarActions.vue +++ b/src/components/navbar/components/AppNavbarActions.vue @@ -12,9 +12,6 @@ import ProfileDropdown from "./dropdowns/ProfileDropdown.vue"; defineProps({ isMobile: { type: Boolean, default: false }, }); - -import { useI18n } from "vue-i18n"; -const { t } = useI18n(); \ No newline at end of file + diff --git a/src/pages/preferences/settings/Settings.vue b/src/pages/preferences/settings/Settings.vue index 27b0344..76bd42b 100644 --- a/src/pages/preferences/settings/Settings.vue +++ b/src/pages/preferences/settings/Settings.vue @@ -43,7 +43,7 @@ > Сбросить пароль - + - - + + \ No newline at end of file + diff --git a/src/pages/workouts/Definitions.vue b/src/pages/workouts/Definitions.vue index 6031cc1..fdd07a6 100644 --- a/src/pages/workouts/Definitions.vue +++ b/src/pages/workouts/Definitions.vue @@ -1,78 +1,77 @@ \ No newline at end of file +export const speedConvert = (speed: number) => { + return Math.round(speed * 3.6); +}; +export type ChartDataset = { + radius: number; + label: string; + backgroundColor: string; + borderColor: string; + data: Array; +}; +export type ChartData = { + labels: Array; + datasets: Array; +}; +export default {}; + diff --git a/src/pages/workouts/Feed.vue b/src/pages/workouts/Feed.vue index 4b85eb5..fcfcfb7 100644 --- a/src/pages/workouts/Feed.vue +++ b/src/pages/workouts/Feed.vue @@ -1,85 +1,81 @@ -