-
Notifications
You must be signed in to change notification settings - Fork 552
[release] v0.104.1 #4729
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[release] v0.104.1 #4729
Changes from 30 commits
e1df24c
47f113d
69088bd
fd8210d
3bc43ae
e4fb43e
492a8b4
1465b06
f8034fe
3abf559
f7797af
1fe344b
afc1ba4
44dd417
d8405d5
47f6881
bbbe0fb
b3e7f1e
3388329
7036931
4f38098
6bfb6d8
c500291
36fbc91
0e0a86c
cef8285
1d7dd2d
4097ef9
9388bf5
3508288
9a8869b
9719904
4e2e42a
de228ef
bb8915b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2220,7 +2220,10 @@ async def chat_v0( | |
|
|
||
| message = response.choices[0].message # type: ignore | ||
|
|
||
| return message.model_dump(exclude_none=True) # type: ignore | ||
| # Normalize to the canonical Message shape (drops provider-specific fields). | ||
| return Message.model_validate(message.model_dump(exclude_none=True)).model_dump( | ||
| exclude_none=True | ||
| ) | ||
|
Comment on lines
+2224
to
+2226
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When a provider returns an assistant refusal with Useful? React with 👍 / 👎. |
||
|
|
||
|
|
||
| @instrument(ignore_inputs=["parameters"]) | ||
|
|
||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -19,6 +19,13 @@ export const PRIORITY_ORDER: Record<BannerType, number> = { | |
| trial: 3, // Lowest priority - show after other banners are dismissed | ||
| } | ||
|
|
||
| /** | ||
| * Maximum number of dismissible sidebar banners a user should have to clear. | ||
| * Apply this before dismissal filtering so older changelog entries do not | ||
| * backfill the sidebar after each close. | ||
| */ | ||
| export const MAX_DISMISSIBLE_SIDEBAR_BANNERS = 2 | ||
|
|
||
| /** | ||
| * Persisted atom for dismissed banner IDs. | ||
| * Uses localStorage to remember which banners the user has dismissed. | ||
|
|
@@ -107,8 +114,17 @@ export const activeBannersAtom = atom((get) => { | |
| export const visibleBannersAtom = atom((get) => { | ||
| const allBanners = get(activeBannersAtom) | ||
| const dismissedIds = get(dismissedBannerIdsAtom) | ||
| const sortedBanners = [...allBanners].sort( | ||
| (a, b) => PRIORITY_ORDER[a.type] - PRIORITY_ORDER[b.type], | ||
| ) | ||
|
|
||
| const cappedDismissibleBanners = sortedBanners | ||
| .filter((banner) => banner.dismissible) | ||
| .slice(0, MAX_DISMISSIBLE_SIDEBAR_BANNERS) | ||
|
Comment on lines
+121
to
+123
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
In the EE free-plan context, Useful? React with 👍 / 👎. |
||
|
|
||
| const nonDismissibleBanners = sortedBanners.filter((banner) => !banner.dismissible) | ||
|
|
||
| return allBanners | ||
| return [...cappedDismissibleBanners, ...nonDismissibleBanners] | ||
| .filter((banner) => !dismissedIds.includes(banner.id)) | ||
| .sort((a, b) => PRIORITY_ORDER[a.type] - PRIORITY_ORDER[b.type]) | ||
| }) | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the SSL stack is started with a custom
COMPOSE_PROJECT_NAME/-pto run an isolated copy, Compose labels the app containers with that custom project name, but this Traefik constraint only watchesagenta-gh-ssl. In that context Traefik filters out the web/api/service router labels and the HTTPS stack comes up without routes; the non-SSL compose files handle this by interpolating the project name, so the SSL path needs the same treatment or the constraint should be omitted there.Useful? React with 👍 / 👎.