Skip to content

Commit f43b57d

Browse files
authored
Merge pull request #953 from karrioapi/patch-2026.1.5
[patch] 2026.1.5
2 parents 3c65577 + 2371402 commit f43b57d

273 files changed

Lines changed: 18246 additions & 3189 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,45 @@
1+
# Karrio 2026.1.5
2+
3+
## Changes
4+
5+
### Feat
6+
7+
- feat: add carrier-agnostic POST /v1/pickups endpoint with carrier_code and options.connection_id
8+
- feat: add pickup status tracking with lifecycle events (scheduled, picked_up, cancelled, closed)
9+
- feat(core): add pickup status filtering and carrier-agnostic scheduling support
10+
- feat(dashboard): update pickup scheduling to use new carrier-agnostic API
11+
- feat(dashboard): redesign pickup scheduling dialog with relevant karrio pickup fields
12+
- feat(dashboard): add pickup detail sheet with activity timeline, tracking records, and related shipments
13+
- feat(dashboard): add tracker detail page with activity timeline and API logs
14+
- feat(dashboard): add stacked and condensed layout modes to ActivityTimeline component
15+
- feat(dashboard): augment tracker preview sheet with activity section and detail navigation
16+
17+
### Fix
18+
19+
- fix(dashboard): prevent infinite re-render loops in list pages and filter components
20+
- fix(dashboard): fix tracker preview sheet showing unrelated activity logs
21+
22+
### Fix
23+
24+
- fix(postat): correct SOAP element names in shipment test assertions
25+
26+
### Test
27+
28+
- test: extend pickup API test coverage for status transitions and lifecycle events
29+
30+
### Chore
31+
32+
- chore: update API schemas and generated types for pickup enhancements
33+
34+
### Docs
35+
36+
- docs: add Pickup API Modernization PRD
37+
- docs: prepare PRD for carrier_name/carrier_id future refactoring
38+
- docs: rename carrier connection architecture document
39+
- docs: add Tracker Activity Dashboard Enhancement PRD
40+
41+
---
42+
143
# Karrio 2026.1.4
244

345
## Changes

PRDs/CARRIER_NAMING_MIGRATION.md

Lines changed: 1598 additions & 0 deletions
Large diffs are not rendered by default.

PRDs/PICKUP_API_MODERNIZATION.md

Lines changed: 877 additions & 0 deletions
Large diffs are not rendered by default.

PRDs/RATESHEET_WEIGHT_BRACKET_GRID.md

Lines changed: 1283 additions & 0 deletions
Large diffs are not rendered by default.

PRDs/TRACKER_ACTIVITY_DASHBOARD_ENHANCEMENT.md

Lines changed: 891 additions & 0 deletions
Large diffs are not rendered by default.

apps/api/karrio/server/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2026.1.4
1+
2026.1.5

apps/api/karrio/server/settings/cache.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# type: ignore
22
import sys
3+
import socket
34
from decouple import config
45
from karrio.server.settings.base import *
56
from karrio.server.settings.apm import HEALTH_CHECK_APPS
@@ -8,6 +9,10 @@
89

910
CACHE_TTL = 60 * 15
1011

12+
# Health check cache key - make it unique per pod to avoid race conditions
13+
# Use hostname (pod name in k8s) as suffix to prevent conflicts between replicas
14+
HEALTHCHECK_CACHE_KEY = f"djangohealthcheck_{socket.gethostname()}"
15+
1116
# Check if worker is running in detached mode (separate from API server)
1217
DETACHED_WORKER = config("DETACHED_WORKER", default=False, cast=bool)
1318

@@ -32,17 +37,18 @@
3237

3338
# Extract values from REDIS_URL (these supersede granular env vars)
3439
REDIS_HOST = parsed.hostname
35-
REDIS_PORT = parsed.port or 6379
40+
REDIS_PORT = parsed.port or 10000 # Azure Managed Redis default port
3641
REDIS_USERNAME = parsed.username or "default"
3742
REDIS_PASSWORD = parsed.password
3843

3944
# Determine SSL from URL scheme (rediss:// means SSL is enabled)
4045
REDIS_SCHEME = parsed.scheme if parsed.scheme in ("redis", "rediss") else "redis"
4146
REDIS_SSL = REDIS_SCHEME == "rediss"
4247

43-
# Build connection URL with database 1 for cache
48+
# Build connection URL for cache (use DB from URL path, default to 0)
49+
REDIS_DB = parsed.path.lstrip("/") or "0"
4450
REDIS_AUTH = f"{REDIS_USERNAME}:{REDIS_PASSWORD}@" if REDIS_PASSWORD else ""
45-
REDIS_CONNECTION_URL = f"{REDIS_SCHEME}://{REDIS_AUTH}{REDIS_HOST}:{REDIS_PORT}/1"
51+
REDIS_CONNECTION_URL = f"{REDIS_SCHEME}://{REDIS_AUTH}{REDIS_HOST}:{REDIS_PORT}/{REDIS_DB}"
4652

4753
else:
4854
# Fall back to individual parameters
@@ -52,10 +58,11 @@
5258
REDIS_USERNAME = config("REDIS_USERNAME", default="default")
5359

5460
if REDIS_HOST is not None:
61+
REDIS_DB = config("REDIS_CACHE_DB", default="0")
5562
REDIS_AUTH = f"{REDIS_USERNAME}:{REDIS_PASSWORD}@" if REDIS_PASSWORD else ""
5663
REDIS_SCHEME = "rediss" if REDIS_SSL else "redis"
5764
REDIS_CONNECTION_URL = (
58-
f'{REDIS_SCHEME}://{REDIS_AUTH}{REDIS_HOST}:{REDIS_PORT or "6379"}/1'
65+
f'{REDIS_SCHEME}://{REDIS_AUTH}{REDIS_HOST}:{REDIS_PORT or "6379"}/{REDIS_DB}'
5966
)
6067

6168
# Configure Django cache if Redis is available and not in worker mode

apps/api/karrio/server/settings/workers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
# Extract values from REDIS_URL (these supersede granular env vars)
4040
REDIS_HOST = parsed.hostname
41-
REDIS_PORT = parsed.port or 6379
41+
REDIS_PORT = parsed.port or 10000 # Azure Managed Redis default port
4242
REDIS_USERNAME = parsed.username or "default"
4343
REDIS_PASSWORD = parsed.password
4444

apps/api/karrio/server/static/karrio/js/karrio.js

Lines changed: 643 additions & 794 deletions
Large diffs are not rendered by default.

apps/api/karrio/server/static/karrio/js/karrio.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)