From 82713969e7e0f53b94c0493c8962e07e69598b28 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 12:52:01 +0200 Subject: [PATCH 1/9] added deck.gl trip layer --- src/login/components/DeckGLBackground.tsx | 298 ++++++++++++++++------ src/login/data/tripsData.ts | 254 ++++++++++++++++++ 2 files changed, 468 insertions(+), 84 deletions(-) create mode 100644 src/login/data/tripsData.ts diff --git a/src/login/components/DeckGLBackground.tsx b/src/login/components/DeckGLBackground.tsx index 483658ede..f79a3f64f 100644 --- a/src/login/components/DeckGLBackground.tsx +++ b/src/login/components/DeckGLBackground.tsx @@ -1,96 +1,226 @@ -import React, { useEffect, useRef } from 'react'; -import mapboxgl, { LngLatLike } from 'mapbox-gl'; -import 'mapbox-gl/dist/mapbox-gl.css'; +import React, { useEffect, useRef, useState } from "react"; +import mapboxgl, { LngLatLike } from "mapbox-gl"; +import "mapbox-gl/dist/mapbox-gl.css"; +import { MapboxOverlay } from "@deck.gl/mapbox"; +import { TripsLayer } from "deck.gl"; +import { cityTripsData, TripData } from "../data/tripsData"; interface DeckGLBackgroundProps { - className?: string; + className?: string; } const DeckGLBackground: React.FC = ({ className }) => { - const mapContainerRef = useRef(null); - const mapRef = useRef(null); - - const locations: { name: string; coordinates: LngLatLike; zoom: number; bearing: number; pitch: number; }[] = [ - { name: 'Berlin', coordinates: [13.375390, 52.518763], zoom: 16.70, bearing: 55.20, pitch: 72.50 }, - { name: 'Stuttgart', coordinates: [9.179229, 48.77734], zoom: 17.36, bearing: 152.00, pitch: 75.50 }, - { name: 'New York City', coordinates: [-73.971274, 40.762698], zoom: 15.60, bearing: 95.94, pitch: 81.38 }, - ] - - useEffect(() => { - if (!mapContainerRef.current) return; - - // TODO: das ist mein token, der muss später getauscht werden - mapboxgl.accessToken = 'pk.eyJ1IjoiY3JhZnR5Y3JhbSIsImEiOiJjbWZoaWxoZGkwZWtsMmxzZ3M2ajJodnZsIn0.1JbdfnKZZhf1CUByNAElBg'; - - const location = locations[Math.floor(Math.random() * locations.length)]; - - // Initialize Mapbox map with the specified default settings - mapRef.current = new mapboxgl.Map({ - container: mapContainerRef.current, - style: 'mapbox://styles/craftycram/cmfhiou9y003c01s589j4au9t', // Keep dark theme - center: location.coordinates, // Specified coordinates - zoom: location.zoom, // Specified zoom - bearing: location.bearing, // Specified bearing - pitch: location.pitch, // Specified pitch - antialias: true, - interactive: false, // Disable user interaction - }); - - mapRef.current.on('load', () => { - // Slow orbit animation - const startTime = Date.now(); - const orbitRadius = 0.002; // Small radius for subtle movement - const orbitSpeed = 0.0002; // Very slow rotation - const baseCenter = [13.375390, 52.518763]; - const baseBearing = 55.20; - - const animate = () => { - const elapsed = Date.now() - startTime; - const angle = elapsed * orbitSpeed; - - // Calculate new position in a small circle around the center - const newLng = baseCenter[0] + Math.cos(angle) * orbitRadius; - const newLat = baseCenter[1] + Math.sin(angle) * orbitRadius; - - // Slowly rotate the bearing - const newBearing = baseBearing + (angle * 0.1) % 360; - - if (mapRef.current) { - mapRef.current.easeTo({ - center: [newLng, newLat], - bearing: newBearing, - duration: 10, - }); + const mapContainerRef = useRef(null); + const mapRef = useRef(null); + const [currentTime, setCurrentTime] = useState(0); + const [selectedLocation, setSelectedLocation] = useState< + (typeof locations)[0] | null + >(null); + + // Animation speed control (higher = faster, lower = slower) + const animationSpeed = 0.75; + + const locations: { + name: string; + coordinates: LngLatLike; + zoom: number; + bearing: number; + pitch: number; + }[] = [ + // { name: 'Berlin', coordinates: [13.375390, 52.518763], zoom: 16.70, bearing: 55.20, pitch: 72.50 }, + //{ name: 'Stuttgart', coordinates: [9.179229, 48.77734], zoom: 17.36, bearing: 152.00, pitch: 75.50 }, + //{ name: 'New York City', coordinates: [-73.971274, 40.762698], zoom: 15.60, bearing: 95.94, pitch: 81.38 }, + { + name: "Schorndorf", + coordinates: [9.54339579543857, 48.80613545138229], // Moved more to the right (east) + zoom: 15.04, + bearing: 0.0, + pitch: 60 + } + ]; + + // Get trips data for the selected location + const getTripsForLocation = (location: (typeof locations)[0]): TripData[] => { + const cityTrips = cityTripsData[location.name]; + if (cityTrips && cityTrips.length > 0) { + return cityTrips; } - - requestAnimationFrame(animate); - }; - // animate(); - }); + // Fallback to generated trips if no real data available + const [lng, lat] = location.coordinates as [number, number]; + const offset = 0.01; - return () => { - if (mapRef.current) { - mapRef.current.remove(); - } + return [ + { + path: [ + [lng - offset, lat - offset, 0], + [lng + offset, lat + offset, 600] + ], + timestamps: [0, 600] + }, + { + path: [ + [lng + offset, lat - offset, 0], + [lng - offset, lat + offset, 800] + ], + timestamps: [200, 800] + }, + { + path: [ + [lng, lat + offset, 0], + [lng, lat - offset, 1000] + ], + timestamps: [400, 1000] + } + ]; }; - }, []); - - return ( -
- ); + + useEffect(() => { + if (!mapContainerRef.current) return; + let deckOverlay: MapboxOverlay; + let animationId: number; + + // TODO: das ist mein token, der muss später getauscht werden + mapboxgl.accessToken = + "pk.eyJ1IjoiY3JhZnR5Y3JhbSIsImEiOiJjbWZoaWxoZGkwZWtsMmxzZ3M2ajJodnZsIn0.1JbdfnKZZhf1CUByNAElBg"; + + const location = locations[Math.floor(Math.random() * locations.length)]; + setSelectedLocation(location); + const tripsData = getTripsForLocation(location); + + + // Initialize Mapbox map with the specified default settings + mapRef.current = new mapboxgl.Map({ + container: mapContainerRef.current, + style: "mapbox://styles/craftycram/cmfhiou9y003c01s589j4au9t", // Keep dark theme + center: location.coordinates, // Specified coordinates + zoom: location.zoom, // Specified zoom + bearing: location.bearing, // Specified bearing + pitch: location.pitch, // Specified pitch + antialias: true, + interactive: false // Disable user interaction + }); + + mapRef.current.on("load", () => { + // Create deck.gl overlay + deckOverlay = new MapboxOverlay({ + interleaved: true, + layers: [ + new TripsLayer({ + id: "trips", + data: tripsData, + getPath: (d: TripData) => d.path, + getTimestamps: (d: TripData) => d.timestamps, + getColor: (_: TripData, { index }: { index: number }) => { + const colors: [number, number, number][] = [ + [253, 128, 93], // Orange + [72, 181, 163], // Teal + [255, 183, 77] // Yellow + ]; + return colors[index % colors.length]; + }, + opacity: 0.8, + widthMinPixels: 4, + rounded: true, + trailLength: 60, + currentTime: currentTime + }) + ] + }); + + mapRef.current!.addControl(deckOverlay); + + // Animation loop for trips and camera orbit + const startTime = Date.now(); + const orbitRadius = 0.001; // Small radius for subtle movement + const orbitSpeed = 0.00005; // Very slow rotation + const baseCenter = location.coordinates as [number, number]; + const baseBearing = location.bearing; + + const animate = () => { + setCurrentTime(time => (time + animationSpeed) % 660); + + // Camera orbit animation + const elapsed = Date.now() - startTime; + const angle = elapsed * orbitSpeed; + + // Calculate new position in a small circle around the center + const newLng = baseCenter[0] + Math.cos(angle) * orbitRadius; + const newLat = baseCenter[1] + Math.sin(angle) * orbitRadius; + + // Slowly rotate the bearing + const newBearing = baseBearing + (angle * 0.05) % 360; + + if (mapRef.current) { + mapRef.current.setCenter([newLng, newLat]); + mapRef.current.setBearing(newBearing); + } + + animationId = requestAnimationFrame(animate); + }; + + animate(); + }); + + return () => { + if (animationId) { + cancelAnimationFrame(animationId); + } + if (mapRef.current) { + mapRef.current.remove(); + } + }; + }, []); + + // Update trips layer when time changes + useEffect(() => { + if (mapRef.current && selectedLocation) { + const overlay = (mapRef.current as unknown as { __deck?: any }).__deck; + if (overlay) { + const tripsData = getTripsForLocation(selectedLocation); + + overlay.setProps({ + layers: [ + new TripsLayer({ + id: "trips", + data: tripsData, + getPath: (d: TripData) => d.path, + getTimestamps: (d: TripData) => d.timestamps, + getColor: (_: TripData, { index }: { index: number }) => { + const colors: [number, number, number][] = [ + [253, 128, 93], // Orange + [72, 181, 163], // Teal + [255, 183, 77] // Yellow + ]; + return colors[index % colors.length]; + }, + opacity: 0.8, + widthMinPixels: 4, + rounded: true, + trailLength: 60, + currentTime: currentTime + }) + ] + }); + } + } + }, [currentTime, selectedLocation]); + + return ( +
+ ); }; export default DeckGLBackground; diff --git a/src/login/data/tripsData.ts b/src/login/data/tripsData.ts new file mode 100644 index 000000000..c0e07b28f --- /dev/null +++ b/src/login/data/tripsData.ts @@ -0,0 +1,254 @@ +export interface TripData { + path: [number, number, number][]; + timestamps: number[]; +} + +export interface CityTrips { + [cityName: string]: TripData[]; +} + +const schorndorfTrip = { + type: "FeatureCollection" as const, + features: [ + { + type: "Feature" as const, + properties: { + duration: 660.392, + }, + geometry: { + coordinates: [ + [9.538225, 48.811215], + [9.538225, 48.811215], + [9.538248, 48.811294], + [9.538253, 48.811397], + [9.538205, 48.811467], + [9.538111, 48.8115], + [9.536905, 48.811491], + [9.535565, 48.811488], + [9.53531, 48.811514], + [9.535074, 48.811539], + [9.53508, 48.811165], + [9.53509, 48.81045], + [9.535095, 48.810087], + [9.535096, 48.810057], + [9.53517, 48.80796], + [9.53516, 48.807874], + [9.535132, 48.807837], + [9.535089, 48.807802], + [9.535035, 48.807779], + [9.534985, 48.80777], + [9.534912, 48.80776], + [9.534728, 48.807735], + [9.534207, 48.807681], + [9.534158, 48.807676], + [9.533975, 48.807663], + [9.533821, 48.807653], + [9.533768, 48.807649], + [9.53333, 48.80762], + [9.532853, 48.807613], + [9.532543, 48.807606], + [9.532544, 48.807727], + [9.532546, 48.807873], + [9.532551, 48.808239], + [9.532561, 48.808662], + [9.532563, 48.808706], + [9.532512, 48.808824], + [9.532457, 48.808935], + [9.532382, 48.80899], + [9.532245, 48.809036], + [9.532092, 48.80905], + [9.531923, 48.809029], + [9.531813, 48.809002], + [9.53173, 48.808939], + [9.531875, 48.808665], + [9.531942, 48.808529], + [9.532063, 48.808236], + [9.532137, 48.807946], + [9.53217, 48.807767], + [9.532184, 48.807538], + [9.532176, 48.807359], + [9.532172, 48.807279], + [9.532099, 48.80663], + [9.532094, 48.806365], + [9.532205, 48.805883], + [9.532211, 48.805845], + [9.532141, 48.805834], + [9.532082, 48.805807], + [9.532042, 48.805767], + [9.532029, 48.805728], + [9.532034, 48.805688], + [9.532057, 48.805652], + [9.532096, 48.805622], + [9.532163, 48.805598], + [9.532238, 48.805592], + [9.532311, 48.805607], + [9.532365, 48.805566], + [9.533479, 48.804673], + [9.533611, 48.804558], + [9.533602, 48.804513], + [9.533614, 48.804469], + [9.533645, 48.804429], + [9.533693, 48.804397], + [9.533761, 48.804374], + [9.533836, 48.804367], + [9.533885, 48.80437], + [9.533934, 48.804383], + [9.533979, 48.804405], + [9.534016, 48.804432], + [9.534045, 48.804472], + [9.534055, 48.804516], + [9.534045, 48.804561], + [9.534216, 48.804593], + [9.534329, 48.804607], + [9.534439, 48.804611], + [9.534684, 48.804595], + [9.534821, 48.804582], + [9.534964, 48.804568], + [9.535247, 48.804572], + [9.535244, 48.804656], + [9.5352, 48.804849], + [9.53513, 48.805159], + [9.535027, 48.805619], + [9.535006, 48.805692], + [9.534827, 48.806407], + [9.534779, 48.806498], + [9.534676, 48.806584], + [9.534836, 48.806641], + [9.53538, 48.806684], + [9.535807, 48.806698], + [9.536228, 48.806677], + [9.536274, 48.80667], + [9.536923, 48.806604], + [9.538085, 48.806471], + [9.538319, 48.806465], + [9.538357, 48.806464], + [9.538589, 48.806482], + [9.538679, 48.806133], + [9.539002, 48.805062], + [9.538896, 48.805043], + [9.538064, 48.804895], + [9.537645, 48.804822], + [9.537253, 48.804768], + [9.537085, 48.804744], + [9.536947, 48.804728], + [9.536895, 48.804722], + [9.536098, 48.80464], + [9.535623, 48.804602], + [9.535247, 48.804572], + [9.534964, 48.804568], + [9.534821, 48.804582], + [9.534684, 48.804595], + [9.534439, 48.804611], + [9.534329, 48.804607], + [9.534216, 48.804593], + [9.534045, 48.804561], + [9.534016, 48.8046], + [9.53397, 48.804632], + [9.533913, 48.804655], + [9.533848, 48.804665], + [9.533781, 48.804662], + [9.533675, 48.804689], + [9.533609, 48.80472], + [9.5333, 48.80496], + [9.53325, 48.805], + [9.533211, 48.80503], + [9.532519, 48.805577], + [9.532413, 48.805711], + [9.532401, 48.805763], + [9.532358, 48.805808], + [9.53229, 48.805837], + [9.532211, 48.805845], + [9.532205, 48.805883], + [9.532094, 48.806365], + [9.532099, 48.80663], + [9.532172, 48.807279], + [9.532176, 48.807359], + [9.532184, 48.807538], + [9.53217, 48.807767], + [9.532137, 48.807946], + [9.532063, 48.808236], + [9.531942, 48.808529], + [9.531875, 48.808665], + [9.531903, 48.808795], + [9.53195, 48.808886], + [9.532028, 48.808951], + [9.532242, 48.808951], + [9.532409, 48.808902], + [9.532512, 48.808824], + [9.532563, 48.808706], + [9.532561, 48.808662], + [9.532551, 48.808239], + [9.532546, 48.807873], + [9.532544, 48.807727], + [9.532543, 48.807606], + [9.532853, 48.807613], + [9.53333, 48.80762], + [9.533768, 48.807649], + [9.533821, 48.807653], + [9.533975, 48.807663], + [9.534158, 48.807676], + [9.534207, 48.807681], + [9.534728, 48.807735], + [9.534912, 48.80776], + [9.534985, 48.80777], + [9.535035, 48.807779], + [9.535089, 48.807802], + [9.535132, 48.807837], + [9.53516, 48.807874], + [9.53517, 48.80796], + [9.535096, 48.810057], + [9.535095, 48.810087], + [9.53509, 48.81045], + [9.53508, 48.811165], + [9.535074, 48.811539], + [9.53531, 48.811514], + [9.535565, 48.811488], + [9.536905, 48.811491], + [9.538111, 48.8115], + [9.538205, 48.811467], + [9.538253, 48.811397], + [9.538248, 48.811294], + [9.538225, 48.811215], + ], + type: "LineString" as const, + }, + } + ] +}; + +// Convert GeoJSON to TripsLayer format +function convertGeoJSONToTrips(geoJSON: typeof schorndorfTrip): TripData[] { + const baseTrips: TripData[] = []; + + geoJSON.features.forEach((feature) => { + const coordinates = feature.geometry.coordinates as [number, number][]; + const baseDuration = feature.properties.duration; + + // Create 3 variations of the same trip + const variations = [ + { speedMultiplier: 1.0, timeOffset: 0 }, // Normal speed, no offset + { speedMultiplier: 0.85, timeOffset: 150 }, // Slightly slower, 150s offset + { speedMultiplier: 1.15, timeOffset: 300 } // Slightly faster, 300s offset + ]; + + variations.forEach(({ speedMultiplier, timeOffset }) => { + const duration = baseDuration / speedMultiplier; + const timeStep = duration / (coordinates.length - 1); + + baseTrips.push({ + path: coordinates.map((coord) => [coord[0], coord[1], 0] as [number, number, number]), + timestamps: coordinates.map((_, i) => (i * timeStep) + timeOffset) + }); + }); + }); + + return baseTrips; +} + +export const cityTripsData: CityTrips = { + 'Schorndorf': convertGeoJSONToTrips(schorndorfTrip), + // Add more cities here as needed + 'Berlin': [], + 'Stuttgart': [], + 'New York City': [] +}; \ No newline at end of file From eac95822ff8bc0544e94e73a552733d031ef2903 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 12:53:09 +0200 Subject: [PATCH 2/9] removed mapbox and openstreetmap watermark --- src/login/components/DeckGLBackground.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/login/components/DeckGLBackground.tsx b/src/login/components/DeckGLBackground.tsx index f79a3f64f..7a3b9a884 100644 --- a/src/login/components/DeckGLBackground.tsx +++ b/src/login/components/DeckGLBackground.tsx @@ -219,7 +219,14 @@ const DeckGLBackground: React.FC = ({ className }) => { zIndex: -1, pointerEvents: "none" }} - /> + > + +
); }; From 01b948487a14b42ac82bf9100079b3e9b125ee9e Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 12:56:16 +0200 Subject: [PATCH 3/9] added build ci --- .github/workflows/build-jar.yaml | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/build-jar.yaml diff --git a/.github/workflows/build-jar.yaml b/.github/workflows/build-jar.yaml new file mode 100644 index 000000000..db2d8740b --- /dev/null +++ b/.github/workflows/build-jar.yaml @@ -0,0 +1,71 @@ +name: Build JAR in Container + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + +jobs: + build: + permissions: + contents: write + packages: write + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build Docker image + run: docker build -t temp-image:latest . + + - name: Create dist_keycloak directory + run: mkdir -p ./dist_keycloak + + - name: Copy JAR file from Docker image + run: docker run --rm -v ${{ github.workspace }}/dist_keycloak:/dist temp-image:latest cp ./dist_keycloak/keycloak-theme-for-kc-22-and-above.jar /dist/keycloak-theme-for-kc-22-and-above.jar + + - name: List files in dist_keycloak + run: ls -l ./dist_keycloak + + - name: Upload dist_keycloak artifacts to release + uses: actions/upload-artifact@v4 + with: + name: dist_keycloak-artifacts + path: ./dist_keycloak/keycloak-theme-for-kc-22-and-above.jar + if-no-files-found: warn + + - name: Set Release Tag + id: set_tag + run: echo "RELEASE_TAG=release-$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV + + - name: Create GitHub Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.RELEASE_TAG }} + release_name: Release ${{ env.RELEASE_TAG }} + draft: false + prerelease: false + + - name: Upload Release Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./dist_keycloak/keycloak-theme-for-kc-22-and-above.jar + asset_name: keycloak-theme-for-kc-22-and-above.jar + asset_content_type: application/java-archive + + - name: Add git note + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Action" + git fetch origin "refs/notes/*:refs/notes/*" + git notes add -m "published" ${{ github.sha }} + git push origin refs/notes/commits \ No newline at end of file From 5418e89a00dff2c0e136fd87c7959cc9a7491ee8 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 12:57:15 +0200 Subject: [PATCH 4/9] changed trigger --- .github/workflows/build-jar.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-jar.yaml b/.github/workflows/build-jar.yaml index db2d8740b..45356c00b 100644 --- a/.github/workflows/build-jar.yaml +++ b/.github/workflows/build-jar.yaml @@ -2,7 +2,7 @@ name: Build JAR in Container on: push: - branches: ["main"] + branches: ["main","feature/ci"] pull_request: branches: ["main"] From 42c6c1824baa479aa34bfef8fedc38b2b144cb99 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 12:57:20 +0200 Subject: [PATCH 5/9] test --- src/login/components/DeckGLBackground.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/login/components/DeckGLBackground.tsx b/src/login/components/DeckGLBackground.tsx index 7a3b9a884..487507be5 100644 --- a/src/login/components/DeckGLBackground.tsx +++ b/src/login/components/DeckGLBackground.tsx @@ -30,6 +30,7 @@ const DeckGLBackground: React.FC = ({ className }) => { // { name: 'Berlin', coordinates: [13.375390, 52.518763], zoom: 16.70, bearing: 55.20, pitch: 72.50 }, //{ name: 'Stuttgart', coordinates: [9.179229, 48.77734], zoom: 17.36, bearing: 152.00, pitch: 75.50 }, //{ name: 'New York City', coordinates: [-73.971274, 40.762698], zoom: 15.60, bearing: 95.94, pitch: 81.38 }, + //test { name: "Schorndorf", coordinates: [9.54339579543857, 48.80613545138229], // Moved more to the right (east) From 1f348e625066838d97cdfc87fda4a01c591f5211 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 12:58:14 +0200 Subject: [PATCH 6/9] added tockerfile --- dockerfile | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 dockerfile diff --git a/dockerfile b/dockerfile new file mode 100644 index 000000000..16264aad5 --- /dev/null +++ b/dockerfile @@ -0,0 +1,27 @@ +# Use the official Maven image as the base image +FROM maven:3.8.4-openjdk-11 + +WORKDIR /keycloakify-starter + +# Install Node.js +RUN apt-get update && \ + apt-get install -y curl && \ + curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ + apt-get install -y nodejs + +RUN npm i yarn -g + +# Verify installations +RUN mvn -v && \ + node -v && \ + npm -v && \ + yarn -v + +# Copy the application files +COPY . . + +RUN yarn +RUN yarn build-keycloak-theme + +# Keep the container running +CMD ["tail", "-f", "/dev/null"] \ No newline at end of file From 05faa5121578371180aa35fa5d450a0446ccd02c Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 13:02:18 +0200 Subject: [PATCH 7/9] changed vite config --- vite.config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index 752e777d1..55a9f3c81 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,7 +7,8 @@ export default defineConfig({ plugins: [ react(), keycloakify({ - accountThemeImplementation: "none" + accountThemeImplementation: "none", + artifactId:"keycloakify-theme", }) ] }); From a46dfaf4e707909a5c0ddc3f32c032de09f7d796 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 13:07:29 +0200 Subject: [PATCH 8/9] fixed path --- .github/workflows/build-jar.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-jar.yaml b/.github/workflows/build-jar.yaml index 45356c00b..7be96d105 100644 --- a/.github/workflows/build-jar.yaml +++ b/.github/workflows/build-jar.yaml @@ -25,7 +25,7 @@ jobs: run: mkdir -p ./dist_keycloak - name: Copy JAR file from Docker image - run: docker run --rm -v ${{ github.workspace }}/dist_keycloak:/dist temp-image:latest cp ./dist_keycloak/keycloak-theme-for-kc-22-and-above.jar /dist/keycloak-theme-for-kc-22-and-above.jar + run: docker run --rm -v ${{ github.workspace }}/dist_keycloak:/dist temp-image:latest cp ./dist_keycloak/keycloak-theme-for-kc-22-to-25.jar /dist/keycloak-theme-for-kc-22-to-25.jar - name: List files in dist_keycloak run: ls -l ./dist_keycloak From 1041e9fb9d59929e93d840f0ebb4c094b5941624 Mon Sep 17 00:00:00 2001 From: Luca Date: Sat, 13 Sep 2025 13:07:37 +0200 Subject: [PATCH 9/9] fixed path --- .github/workflows/build-jar.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-jar.yaml b/.github/workflows/build-jar.yaml index 7be96d105..d4eb5f435 100644 --- a/.github/workflows/build-jar.yaml +++ b/.github/workflows/build-jar.yaml @@ -34,7 +34,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: dist_keycloak-artifacts - path: ./dist_keycloak/keycloak-theme-for-kc-22-and-above.jar + path: ./dist_keycloak/keycloak-theme-for-kc-22-to-25.jar if-no-files-found: warn - name: Set Release Tag @@ -58,8 +58,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./dist_keycloak/keycloak-theme-for-kc-22-and-above.jar - asset_name: keycloak-theme-for-kc-22-and-above.jar + asset_path: ./dist_keycloak/keycloak-theme-for-kc-22-to-25.jar + asset_name: keycloak-theme-for-kc-22-to-25.jar asset_content_type: application/java-archive - name: Add git note