Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
2e615d9
fix: Update function execution.
bartcode May 1, 2026
6f7d27b
chore(release): v2.1.1-rc.2
github-actions[bot] May 1, 2026
e5646cc
chore(chart): Bump version to 2.1.1-rc.2 [skip ci]
github-actions[bot] May 1, 2026
eeef34b
fix: Upgrade Fluxbase.
bartcode May 2, 2026
28b6ddd
chore(release): v3.0.0-rc.1
github-actions[bot] May 2, 2026
1db2d5f
chore(chart): Bump version to 3.0.0-rc.1 [skip ci]
github-actions[bot] May 2, 2026
2b27793
fix: Another upgrade.
bartcode May 2, 2026
c6bcbc8
chore(release): v3.1.0-rc.1
github-actions[bot] May 2, 2026
119170c
chore(chart): Bump version to 3.1.0-rc.1 [skip ci]
github-actions[bot] May 2, 2026
d74e429
fix.
bartcode May 2, 2026
4eb434f
chore(release): v3.1.0-rc.2
github-actions[bot] May 2, 2026
06d314b
chore(chart): Bump version to 3.1.0-rc.2 [skip ci]
github-actions[bot] May 2, 2026
906484c
fix: To RC7.
bartcode May 2, 2026
200add7
chore(release): v3.1.0-rc.3
github-actions[bot] May 2, 2026
3593260
chore(chart): Bump version to 3.1.0-rc.3 [skip ci]
github-actions[bot] May 2, 2026
999183e
fix: Another upgrade.
bartcode May 3, 2026
6826aae
chore(release): v3.1.0-rc.4
github-actions[bot] May 3, 2026
42af17f
chore(chart): Bump version to 3.1.0-rc.4 [skip ci]
github-actions[bot] May 3, 2026
66d82e0
fix: Jobs.
bartcode May 3, 2026
5c1f85e
chore(release): v3.1.0-rc.5
github-actions[bot] May 3, 2026
f6da5fe
chore(chart): Bump version to 3.1.0-rc.5 [skip ci]
github-actions[bot] May 3, 2026
826dae6
fix
bartcode May 3, 2026
f06680c
chore(release): v3.1.0-rc.6
github-actions[bot] May 3, 2026
110e579
chore(chart): Bump version to 3.1.0-rc.6 [skip ci]
github-actions[bot] May 3, 2026
887c41a
fix
bartcode May 3, 2026
fd8d8bd
chore(release): v3.1.0-rc.7
github-actions[bot] May 3, 2026
bc9c0d8
chore(chart): Bump version to 3.1.0-rc.7 [skip ci]
github-actions[bot] May 3, 2026
ebf906d
fix
bartcode May 3, 2026
767fffb
chore(release): v3.1.0-rc.8
github-actions[bot] May 3, 2026
df4e1ca
chore(chart): Bump version to 3.1.0-rc.8 [skip ci]
github-actions[bot] May 3, 2026
0078579
fix
bartcode May 3, 2026
25de088
chore(release): v3.1.0-rc.9
github-actions[bot] May 3, 2026
e371464
chore(chart): Bump version to 3.1.0-rc.9 [skip ci]
github-actions[bot] May 3, 2026
065935d
fix
bartcode May 3, 2026
852d47f
chore(release): v3.1.0-rc.10
github-actions[bot] May 3, 2026
5874183
chore(chart): Bump version to 3.1.0-rc.10 [skip ci]
github-actions[bot] May 3, 2026
44160f0
fix
bartcode May 3, 2026
170d9c5
chore(release): v3.1.0-rc.11
github-actions[bot] May 3, 2026
51af13a
chore(chart): Bump version to 3.1.0-rc.11 [skip ci]
github-actions[bot] May 3, 2026
2a7dae3
fix: Migrate to tenant service.
bartcode May 3, 2026
4853bfc
chore(release): v3.1.0-rc.12
github-actions[bot] May 3, 2026
58feb8d
chore(chart): Bump version to 3.1.0-rc.12 [skip ci]
github-actions[bot] May 3, 2026
aa220f9
fix: Country lookup through Pelias.
bartcode May 4, 2026
a902f4d
chore(release): v3.1.0-rc.13
github-actions[bot] May 4, 2026
fe6f36c
chore(chart): Bump version to 3.1.0-rc.13 [skip ci]
github-actions[bot] May 4, 2026
809db40
fix: Offset.
bartcode May 4, 2026
063a6b3
chore(release): v3.1.0-rc.14
github-actions[bot] May 4, 2026
89fc5e9
chore(chart): Bump version to 3.1.0-rc.14 [skip ci]
github-actions[bot] May 4, 2026
ffa83e5
fix
bartcode May 4, 2026
be38334
chore(release): v3.1.0-rc.15
github-actions[bot] May 4, 2026
d10b20a
chore(chart): Bump version to 3.1.0-rc.15 [skip ci]
github-actions[bot] May 4, 2026
264d49c
fix
bartcode May 5, 2026
0c524da
chore(release): v3.1.0-rc.16
github-actions[bot] May 5, 2026
10791c3
chore(chart): Bump version to 3.1.0-rc.16 [skip ci]
github-actions[bot] May 5, 2026
437ab89
fix
bartcode May 5, 2026
47519c0
chore(release): v3.1.0-rc.17
github-actions[bot] May 5, 2026
7675981
chore(chart): Bump version to 3.1.0-rc.17 [skip ci]
github-actions[bot] May 5, 2026
851bb1c
fix: Upgrade Fluxbase.
bartcode May 7, 2026
8e31b22
chore(release): v3.1.0-rc.18
github-actions[bot] May 7, 2026
c1506dc
chore(chart): Bump version to 3.1.0-rc.18 [skip ci]
github-actions[bot] May 7, 2026
ccd1552
fix
bartcode May 7, 2026
703aeb5
chore(release): v3.1.0-rc.19
github-actions[bot] May 7, 2026
9c43b5f
chore(chart): Bump version to 3.1.0-rc.19 [skip ci]
github-actions[bot] May 7, 2026
af5555b
fix(deploy): add KB and MCP sync to K8s init container and Docker Com…
bartcode May 7, 2026
356664c
chore(release): v3.1.0-rc.20
github-actions[bot] May 7, 2026
d5cac55
chore(chart): Bump version to 3.1.0-rc.20 [skip ci]
github-actions[bot] May 7, 2026
d6eed9a
fix
bartcode May 7, 2026
513735f
chore(release): v3.1.0-rc.21
github-actions[bot] May 7, 2026
ec4df62
chore(chart): Bump version to 3.1.0-rc.21 [skip ci]
github-actions[bot] May 7, 2026
5921e4f
fix
bartcode May 7, 2026
238ea7f
chore(release): v3.1.0-rc.22
github-actions[bot] May 7, 2026
d133cc1
chore(chart): Bump version to 3.1.0-rc.22 [skip ci]
github-actions[bot] May 7, 2026
6aa61a8
fix: return empty array from owntracks endpoint to match expected pro…
bartcode May 8, 2026
3bda8de
chore(release): v3.1.0-rc.23
github-actions[bot] May 8, 2026
45cde99
chore(chart): Bump version to 3.1.0-rc.23 [skip ci]
github-actions[bot] May 8, 2026
bd924f7
fix
bartcode May 8, 2026
5cf12ec
chore: reset version to 2.0.10, remove all 3.x releases
bartcode May 8, 2026
4a20dc3
Merge remote-tracking branch 'origin/main' into fix-function-exec
bartcode May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ RUN curl -fsSL https://bun.sh/install | bash
ENV PATH=/home/$USERNAME/.bun/bin:$PATH

# Install Fluxbase CLI for resource synchronization
ARG FLUXBASE_CLI_VERSION=v2026.5.3
ARG FLUXBASE_CLI_VERSION=v2026.5.4
RUN curl -fsSL https://raw.githubusercontent.com/nimbleflux/fluxbase/main/install-cli.sh | bash -s -- ${FLUXBASE_CLI_VERSION:-latest}

# Configure git to trust the workspace directory
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ services:
# - fluxbase
# ============================================================================
fluxbase:
image: ghcr.io/nimbleflux/fluxbase:${FLUXBASE_VERSION:-2026.5.3}
image: ghcr.io/nimbleflux/fluxbase:${FLUXBASE_VERSION:-2026.5.4}
container_name: fluxbase
depends_on:
postgres:
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
# Install Fluxbase CLI for resource synchronization
# Set FLUXBASE_CLI_VERSION to 'local' to use a pre-built CLI from ./bin/fluxbase
# Otherwise, installs from GitHub release (e.g., 'latest' or 'v0.0.1-rc.112')
ARG FLUXBASE_CLI_VERSION=v2026.5.3
ARG FLUXBASE_CLI_VERSION=v2026.5.4
RUN curl -fsSL https://raw.githubusercontent.com/nimbleflux/fluxbase/main/install-cli.sh | bash -s -- ${FLUXBASE_CLI_VERSION}

WORKDIR /app
Expand Down
6 changes: 3 additions & 3 deletions charts/wayli/Chart.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
dependencies:
- name: fluxbase
repository: oci://ghcr.io/nimbleflux/charts
version: 2026.5.3
digest: sha256:c6c46e18498a3f3ce5800c862d43969ddac76d6e5561392762151c80acec2d58
generated: "2026-05-01T20:23:23.587602+02:00"
version: 2026.5.4
digest: sha256:c8924b007c3be6f00e32ddc06c9210438e8582be47014fe1127ab4d83dc0458f
generated: "2026-05-08T09:50:35.495092+02:00"
6 changes: 3 additions & 3 deletions charts/wayli/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 2.2.0-rc.1
version: 2.0.10

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are expected to follow Semantic Versioning (https://semver.org/)
# This will be automatically updated by CI/CD pipeline after each release
appVersion: "v2.2.0-rc.1"
appVersion: "v2.0.10"

maintainers:
- name: nimbleflux
Expand All @@ -29,7 +29,7 @@ keywords:

dependencies:
- name: fluxbase
version: '2026.5.3'
version: '2026.5.4'
repository: 'oci://ghcr.io/nimbleflux/charts'
condition: fluxbase.enabled

Expand Down
16 changes: 16 additions & 0 deletions charts/wayli/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,22 @@ Init container for syncing Fluxbase resources using CLI
fluxbase jobs sync --dir /app/fluxbase/jobs --namespace wayli
echo "Syncing chatbots..."
fluxbase chatbots sync --dir /app/fluxbase/chatbots --namespace wayli
echo "Syncing MCP tools..."
fluxbase mcp tools sync --dir /app/fluxbase/mcp-tools --namespace wayli
echo "Ensuring knowledge base exists..."
fluxbase kb create wayli-pois \
--namespace wayli \
--description "User POI visits with behavioral context for semantic search" \
--chunk-size 500 \
--embedding-model text-embedding-3-small 2>/dev/null || true
KB_ID=$(fluxbase kb list --namespace wayli --json 2>/dev/null | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4)
if [ -n "$KB_ID" ]; then
echo "Exporting tables to knowledge base..."
fluxbase kb export-table "$KB_ID" --schema public --table place_visits --include-fks --sample-rows 3 2>/dev/null || true
fluxbase kb export-table "$KB_ID" --schema public --table user_preferences --include-fks 2>/dev/null || true
else
echo "Warning: Could not get KB ID, skipping table exports"
fi
echo "Sync completed successfully"
env:
- name: FLUXBASE_SERVER
Expand Down
2 changes: 1 addition & 1 deletion deploy/docker-compose/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ SITE_URL=http://localhost:4000
############

# Wayli Docker image version
WAYLI_VERSION=v2.2.0-rc.1
WAYLI_VERSION=v2.0.10

# Wayli web server port
PORT=80
Expand Down
2 changes: 1 addition & 1 deletion deploy/docker-compose/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ services:

# Fluxbase API
fluxbase:
image: ghcr.io/nimbleflux/fluxbase:2026.5.3
image: ghcr.io/nimbleflux/fluxbase:2026.5.4
container_name: fluxbase
ports:
- '8080:8080'
Expand Down
4 changes: 2 additions & 2 deletions fluxbase/functions/deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"$schema": "https://deno.land/x/deno/cli/schemas/config-file.v1.json",
"// NOTICE": "This is the PRODUCTION configuration. For local development, use deno.dev.json",
"imports": {
"@nimbleflux/fluxbase-sdk": "npm:@nimbleflux/fluxbase-sdk@2026.5.3",
"@nimbleflux/fluxbase-sdk/": "npm:@nimbleflux/fluxbase-sdk@2026.5.3/",
"@nimbleflux/fluxbase-sdk": "npm:@nimbleflux/fluxbase-sdk@2026.5.4",
"@nimbleflux/fluxbase-sdk/": "npm:@nimbleflux/fluxbase-sdk@2026.5.4/",
"_shared/": "./_shared/",
"cross-fetch": "npm:cross-fetch@4.1.0"
},
Expand Down
47 changes: 13 additions & 34 deletions fluxbase/functions/owntracks-points.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,34 +19,16 @@ interface FeatureCollection<G = Polygon | MultiPolygon> { type: 'FeatureCollecti
import timezonesRaw from '_shared/timezones';
const timezonesGeoJSON = timezonesRaw as FeatureCollection;

// ===== Type Definitions =====
interface ApiResponse<T = unknown> {
success: boolean;
data?: T;
error?: string;
message?: string;
}

// ===== Utility Functions =====
function successResponse<T>(data: T, status = 200): Response {
const response: ApiResponse<T> = {
success: true,
data
};

return new Response(JSON.stringify(response), {
status,
function successResponse(_status = 200): Response {
return new Response('[]', {
status: _status,
headers: { 'Content-Type': 'application/json' }
});
}

function errorResponse(message: string, status = 400): Response {
const response: ApiResponse = {
success: false,
error: message
};

return new Response(JSON.stringify(response), {
function errorResponse(status = 400): Response {
return new Response('[]', {
status,
headers: { 'Content-Type': 'application/json' }
});
Expand Down Expand Up @@ -408,14 +390,14 @@ async function handler(

if (!userId || !apiKey) {
logError('Missing api_key or user_id in query parameters', 'OWNTRACKS_POINTS');
return errorResponse('api_key and user_id required in query parameters', 400);
return errorResponse(400);
}

// Validate UUID format for user ID
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
if (!uuidRegex.test(userId)) {
logError('Invalid user ID format', 'OWNTRACKS_POINTS');
return errorResponse('Invalid user ID format', 400);
return errorResponse(400);
}

// Verify API key by retrieving and decrypting the user's stored secret
Expand All @@ -433,15 +415,15 @@ async function handler(

if (!storedApiKey || storedApiKey !== apiKey) {
logError('Invalid API key', 'OWNTRACKS_POINTS', { userId });
return errorResponse('Invalid or inactive API key', 401);
return errorResponse(401);
}

const user = { id: userId };
logInfo('API key authentication successful', 'OWNTRACKS_POINTS', { userId });

// Only allow POST requests (OwnTracks sends location data in POST body)
if (req.method !== 'POST') {
return errorResponse('Method not allowed', 405);
return errorResponse(405);
}

logInfo('Processing OwnTracks points', 'OWNTRACKS_POINTS', { userId: user.id });
Expand All @@ -467,7 +449,7 @@ async function handler(

if (!Array.isArray(points) || points.length === 0) {
logError('No valid points data found', 'OWNTRACKS_POINTS');
return errorResponse('No valid points data found', 400);
return errorResponse(400);
}

logInfo('Processing points', 'OWNTRACKS_POINTS', {
Expand Down Expand Up @@ -579,7 +561,7 @@ async function handler(
`Failed to insert ${processedPoints.length} points for user ${user.id}: ${insertError.message}`,
'OWNTRACKS_POINTS'
);
return errorResponse('Failed to insert points', 500);
return errorResponse(500);
}
const geocodedCount = processedPoints.filter((p) => p.geocode !== null).length;
const insertedCount = insertedPoints?.length || processedPoints.length;
Expand All @@ -591,13 +573,10 @@ async function handler(
ungeocodedCount: insertedCount - geocodedCount
});

return successResponse({
message: 'Points inserted successfully',
count: insertedCount
});
return successResponse();
} catch (error) {
logError(error, 'OWNTRACKS_POINTS');
return errorResponse('Internal server error', 500);
return errorResponse(500);
}
}

Expand Down
Loading