Skip to content

Commit d40baee

Browse files
authored
Merge pull request #944 from karrioapi/patch-2026.1.3
[patch] 2026.1.3
2 parents 5d847b1 + 11f58cc commit d40baee

233 files changed

Lines changed: 27375 additions & 2116 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.

AGENTS.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,75 @@
1515

1616
---
1717

18+
## PRD Guidelines
19+
20+
When creating PRDs, use the template at [`PRDs/TEMPLATE.md`](./PRDs/TEMPLATE.md):
21+
22+
1. **Study existing code first** - search for similar patterns, utilities, and implementations to reuse
23+
2. **Always start from the template** - maintains consistency across PRDs
24+
3. **Include architecture diagrams** - use ASCII art for overview, sequence, and dataflow diagrams
25+
4. **Use tables over prose** - easier to scan and maintain
26+
5. **Show Before/After code** - makes changes concrete in Problem Statement
27+
6. **Follow AGENTS.md exactly** - code examples must match original author style and test patterns
28+
29+
### PRD Types and Focus Areas
30+
31+
| Type | Focus | Key Sections |
32+
|------|-------|--------------|
33+
| Integration | API mapping, field translation, carrier quirks | Technical Design, Field Reference, Testing |
34+
| Refactoring | Architecture changes, migration strategy | Alternatives Considered, Migration & Rollback |
35+
| Enhancement | Additive features, enum extensions | Goals, Edge Cases, Backward Compatibility |
36+
| Architecture | System design, cross-cutting concerns | All sections, Security Considerations |
37+
38+
### Required Sections (All PRDs)
39+
40+
- Metadata block (table format)
41+
- Executive Summary with Key Architecture Decisions
42+
- Problem Statement with Current/Desired State code
43+
- Goals & Success Criteria (tables)
44+
- Alternatives Considered (decision table)
45+
- Technical Design with diagrams
46+
- Edge Cases & Failure Modes
47+
- Implementation Plan (phased tables)
48+
- Testing Strategy with code examples
49+
- Risk Assessment (table)
50+
- Migration & Rollback plan
51+
52+
### Writing Style
53+
54+
- Technical but accessible
55+
- Heavy use of tables over prose
56+
- Before/After code comparisons
57+
- No user stories - use technical specs with acceptance criteria
58+
- Bold for emphasis, inline code for technical terms
59+
- ASCII diagrams required: architecture overview, sequence diagrams, dataflow diagrams
60+
61+
### Before Writing a PRD
62+
63+
1. **Search the codebase** for similar implementations and patterns
64+
2. **Identify reusable utilities** in `karrio.lib`, `@karrio/hooks`, `@karrio/ui`
65+
3. **Study existing test files** in related modules for testing patterns
66+
4. **Document findings** in the "Existing Code Analysis" section
67+
68+
### Interactive PRD Creation
69+
70+
PRDs should be created iteratively with user input:
71+
72+
1. **Draft** - Create initial structure with known information
73+
2. **Identify gaps** - Flag edge cases, ambiguities, and decision points
74+
3. **Ask questions** - Prompt user for clarification before finalizing architecture
75+
4. **Document decisions** - Record answers in "Open Questions & Decisions" section
76+
5. **Iterate** - Repeat until all decisions are resolved
77+
78+
**When to ask clarifying questions:**
79+
- Multiple valid architectural approaches exist
80+
- Edge cases have no clear handling strategy
81+
- Trade-offs require business/product input
82+
- Scope boundaries are unclear
83+
- Backward compatibility decisions needed
84+
85+
---
86+
1887
## Domain Context: Shipping & Logistics
1988

2089
Karrio is a **universal shipping API** that abstracts carrier integrations. Key domain concepts:
@@ -266,6 +335,7 @@ import {
266335
-**DO NOT** catch bare `Exception`—be specific
267336
-**DO NOT** use mutable default arguments
268337
-**DO NOT** import `*` except from designated re-export modules
338+
-**DO NOT** use raw SQL (`RunSQL`) in Django migrations—use only Django migration operations (`AddField`, `RemoveField`, `RenameField`, `AlterField`, `RunPython`, etc.) to ensure compatibility across SQLite, PostgreSQL, and MySQL
269339

270340
### TypeScript/React
271341
-**DO NOT** use `class` components—use functional components

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,50 @@
1+
# Karrio 2026.1.3
2+
3+
## Changes
4+
5+
### Feat
6+
7+
- feat: end-to-end pickup management with support for recurring + optional shipments link + graphql
8+
- feat(dhl_parcel_de): migrate to dedicated XML tracking API instead of universal tracking
9+
- feat(ups): add missing pickup API implementation for REST+OAuth2 integration
10+
- feat: improve metafield relationship definition and augment all major objects with metafields
11+
- feat(dhl_parcel_de): add support for reusable global connection app
12+
- feat(dhl_parcel_de): restructure billing_number configuration per services at the connection level
13+
- feat(hermes): implement tracking functionality with shipment info API
14+
- feat(hermes): add TrackingStatus and TrackingIncidentReason enums with event codes
15+
- feat(hermes): add multi-piece shipment support
16+
- feat: improve trace display in activity timeline (@jacobshilitz)
17+
- feat: SDK service level features, volumetric weight, and static rate resolution
18+
- feat: rate sheet weight brackets and server-side static rate resolution
19+
- feat: metafield org-aware access control
20+
- feat: workspace config preferences and service level features GraphQL schema
21+
- feat: shipment applied_fees field for accounting
22+
- feat: enhance usage stats and Markups management
23+
24+
### Fix
25+
26+
- fix: potential fix for code scanning alert no. 59: Clear-text logging of sensitive information
27+
- fix(fedex): round package dimensions to integers (@jacobshilitz)
28+
- fix(logs): set entity_id for failed shipment actions (@jacobshilitz)
29+
- fix: inconsistent address, parcels and products templates GraphQL signatures
30+
- fix(hermes): remove redundant dimension checks and refactor to single tree instantiation
31+
- fix: post_processing closure-in-loop bug when multiple methods registered
32+
33+
### Refactor
34+
35+
- refactor(hermes): use inline headers and clean up comments
36+
- refactor: clean up proxy by extracting data processing helpers to utils
37+
- refactor: fee model as denormalized snapshot decoupled from FKs
38+
39+
### Chore
40+
41+
- chore(dhl_parcel_de): improve pickup integration with live tests
42+
- devx: add PRD template and update AGENTS.md for future PRD writing
43+
- test(hermes): add tracking unit tests
44+
- chore: add no-raw-SQL migration rule to AGENTS.md
45+
46+
---
47+
148
# Karrio 2026.1.2
249

350
## Changes

0 commit comments

Comments
 (0)