5.9 KiB
5.9 KiB
Upstream Paths to Watch
These are the directories and files in the upstream/ submodule that matter for mobile parity.
Use these paths when generating focused diffs between tags.
Server: Routes, Controllers, Middleware, Services
| Path | What It Contains | Why It Matters |
|---|---|---|
api/server/routes/ |
Express route definitions (REST endpoints) | Defines the API contract the mobile app calls |
api/server/routes/agents/ |
Agent chat, actions, tools, v1, OpenAI routes | Agents API surface — mobile's AgentsApi.kt + ChatApi.kt |
api/server/routes/files/ |
File upload, avatar, images, speech subroutes | Mobile's FilesApi.kt / FilesExtApi.kt |
api/server/routes/admin/ |
Admin-only routes (currently auth.js) |
Admin surface — likely deferrable but flag any changes |
api/server/controllers/ |
Request handlers and business logic | Reveals exact request/response shapes and validation |
api/server/middleware/ |
Auth, rate limiting, abort, request validation | Changes here can alter headers, error shapes, and auth flow the mobile client relies on |
api/server/services/ |
AuthService, MCP, Endpoints, Files, Runs, Tools, Artifacts, etc. | Business logic that shapes responses and implements features |
api/models/ |
Mongoose models (Agent, Conversation, Message, File, etc.) | DB schema drives API response shapes — especially fields, defaults, enums |
Data Provider Package (canonical types + API client)
| Path | What It Contains | Why It Matters |
|---|---|---|
packages/data-provider/src/api-endpoints.ts |
Canonical list of endpoint URL builders | Route renames and new endpoints land here first |
packages/data-provider/src/config.ts |
VERSION constant, config types |
Source of truth for backend version we track |
packages/data-provider/src/data-service.ts |
HTTP client functions | Actual request shapes the web client sends |
packages/data-provider/src/parsers.ts |
Request/response parsers | Normalizes shapes before/after the wire |
packages/data-provider/src/permissions.ts |
Permission schemas | Role gating for endpoints |
packages/data-provider/src/types/ |
TypeScript types (queries, mutations, agents, files, runs, mcpServers, web) | React Query hook types — canonical request/response shapes |
packages/data-provider/src/react-query/ |
React Query service + hook exports | Links endpoints to hooks |
packages/data-provider/src/schemas.ts |
Zod validation schemas | Request validation contracts |
packages/data-provider/src/ (other files) |
actions, artifacts, azure, bedrock, feedback, file-config, generate, keys, mcp, messages, models, roles | Feature-specific type sources |
Data Schemas Package (DB-side)
| Path | What It Contains | Why It Matters |
|---|---|---|
packages/data-schemas/src/schema/ |
Database schema definitions | DB schema changes → API response shape changes |
packages/data-schemas/src/models/ |
Typed model wrappers | Typed facade over DB schemas |
packages/data-schemas/src/types/ |
TypeScript type exports | Consumed by controllers |
API Package (newer, recent versions)
| Path | What It Contains | Why It Matters |
|---|---|---|
packages/api/src/ |
acl, agents, apiKeys, app, auth, cache, cdn, cluster, crypto, db, ... | New monorepo workspace introduced in recent versions — scan for any newly-exposed public surface |
Web Client (reference for feature parity)
| Path | What It Contains | Why It Matters |
|---|---|---|
client/src/components/ |
React UI components by feature area | Reference for mobile UI feature parity |
client/src/hooks/ |
Custom React hooks (data fetching, state) | Shows how the web app consumes APIs — informs ViewModel design |
client/src/data-provider/ |
Query/mutation modules by domain (Agents, Auth, Endpoints, Files, MCP, Memories, Messages, SSE, Tools, ...) | Often the most accurate mapping of feature → endpoint — prefer over guessing from hooks/ |
client/src/store/ |
Recoil/Jotai state atoms | Global state patterns — informs mobile state management |
client/src/Providers/ |
React Context providers | Feature flags, config-driven UI — informs mobile feature gating |
Server Config Schema
| Path | What It Contains | Why It Matters |
|---|---|---|
librechat.example.yaml |
Reference server config | New keys gate new /api/config response fields |
.env.example |
Required/optional env vars | Changes hint at new feature availability |
Release Notes (authoritative)
GitHub Releases often explicitly flag breaking changes and migrations that diffs hide. For every stable tag between current and target (inclusive):
gh api repos/danny-avila/LibreChat/releases/tags/{tag} --jq .body
Falls back to WebFetch on https://github.com/danny-avila/LibreChat/releases/tag/{tag}.
Upstream has no repo-root CHANGELOG.md — release notes on GitHub are the canonical changelog.
Diff Command Template
Overview:
cd upstream && git diff {old_tag}..{new_tag} --stat -- \
api/server/routes/ \
api/server/controllers/ \
api/server/middleware/ \
api/server/services/ \
api/models/ \
packages/data-provider/src/ \
packages/data-schemas/src/ \
packages/api/src/ \
client/src/components/ \
client/src/hooks/ \
client/src/data-provider/ \
client/src/store/ \
client/src/Providers/ \
librechat.example.yaml \
.env.example
For detailed diffs, run each path separately to keep output manageable:
cd upstream && git diff {old_tag}..{new_tag} -- packages/data-provider/src/api-endpoints.ts
Commit-message scan (complements the diff)
cd upstream && git log --oneline {old_tag}..{new_tag}
Breaking changes are frequently summarized in subject lines (e.g., BREAKING CHANGE:, refactor!:).