Commit graph

6042 commits

Author SHA1 Message Date
nesquena-hermes
82e401362a
Merge pull request #5299 from nesquena/release/stage-4969b
Release v0.51.781 — deep-link ?q= composer prefill, converged (#4969)
2026-06-30 16:18:47 -07:00
nesquena-hermes
f7ec3c7b39 test(#5217): scope follow-intent ordering assertion to _handleStreamError + strip EOF blank line (Codex gate nits) 2026-06-30 23:18:00 +00:00
nesquena-hermes
740a3a693e docs(changelog): deep-link ?q= composer prefill, converged (#4969) 2026-06-30 23:08:16 +00:00
nesquena-hermes
373c3e4b63 Merge #4969 into stage 2026-06-30 23:07:53 +00:00
Frank Song
fdeb37bbe2 Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 07:02:01 +08:00
nesquena-hermes
e94b8ac85b
Merge pull request #5297 from nesquena/release/stage-b1
Release v0.51.780 — Kanban default-board dispatch + PWA new-chat hydration (#5289 #5287)
2026-06-30 15:55:14 -07:00
nesquena-hermes
a616163523 docs(changelog): default-Kanban dispatch fix (#5289) + PWA new-chat hydration defer (#5287) 2026-06-30 22:45:35 +00:00
nesquena-hermes
338060e910 Merge #5287 into stage-b1 2026-06-30 22:45:08 +00:00
nesquena-hermes
7df031592c Merge #5289 into stage-b1 2026-06-30 22:45:06 +00:00
Frank Song
52f5d15214 Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 06:42:56 +08:00
nesquena-hermes
cbb9f79c8a
Merge pull request #5296 from nesquena/release/stage-4738b
Release v0.51.779 — two opt-in neon skins (#4738)
2026-06-30 15:24:59 -07:00
nesquena-hermes
ec5f9715a1 docs(changelog): two opt-in neon skins (#4738) 2026-06-30 22:22:14 +00:00
Frank Song
f874f4027c Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 06:22:02 +08:00
nesquena-hermes
3e84d7bf11 Merge #4738 (savagebread neon skins + skin-persistence fix) into stage 2026-06-30 22:21:28 +00:00
nesquena-hermes
0b2507ac9f fix(#4738): register neon-soft/neon-paint in _SETTINGS_SKIN_VALUES (server-side skin persistence) 2026-06-30 22:13:36 +00:00
nesquena-hermes
7d19792a4a
Merge pull request #5295 from nesquena/release/stage-5005
Release v0.51.778 — opt-in Shift+Enter send-key mode (#5005)
2026-06-30 15:07:20 -07:00
Frank Song
36fcd10db7 Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 06:01:53 +08:00
nesquena-hermes
a20d42893d docs(changelog): opt-in Shift+Enter send-key mode (#5005) 2026-06-30 21:52:20 +00:00
nesquena-hermes
78ca4d43a1 Merge #5005 (futureworld678 Shift+Enter) into stage 2026-06-30 21:51:42 +00:00
nesquena-hermes
05e9be1429
Merge pull request #5293 from nesquena/release/stage-5120
Release v0.51.777 — configurable provider budget + %-used (#5120)
2026-06-30 14:47:29 -07:00
Frank Song
4da83ada63 Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 05:42:12 +08:00
nesquena-hermes
512824dcc3 docs(changelog): configurable provider budget + %-used (#5120) 2026-06-30 21:34:35 +00:00
nesquena-hermes
0b74397fa6 Merge #5120 (rodboev budget limit) into stage 2026-06-30 21:28:51 +00:00
nesquena-hermes
673edbf054
Merge pull request #5292 from nesquena/release/stage-5002
Release v0.51.776 — opt-in per-project new-conversation shortcuts (#5002)
2026-06-30 14:22:57 -07:00
nesquena-hermes
f579ed83dc fix(#5002): repaint sidebar after quick-create newSession (Codex: newSession doesn't render; callers must) 2026-06-30 21:12:14 +00:00
nesquena-hermes
ee7f6b584d fix(#5002): hydrate _projectQuickCreate at boot + rebuild sidebar on toggle change
Codex gate findings: (1) the opt-in flag was only set when Settings opened, so an
enabled setting didn't take effect on a fresh load — now hydrated from /api/settings
at boot (mirrors _largeTextPasteAsAttachment, default-false); (2) toggling the
checkbox now rebuilds the sidebar so the + buttons appear/disappear immediately.
2026-06-30 21:06:35 +00:00
Frank Song
bb95539918 Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 05:02:19 +08:00
nesquena-hermes
34f4a72256 docs(changelog): opt-in per-project new-conversation shortcuts (#5002) 2026-06-30 20:56:49 +00:00
nesquena-hermes
8a5172275d Merge #5002 (per-project quick-create, opt-in) into stage 2026-06-30 20:56:05 +00:00
nesquena-hermes
dc569ee0fb
Merge pull request #5290 from nesquena/release/stage-5079b
Release v0.51.775 — OpenAI-compatible TTS backend, SSRF-hardened (#5079)
2026-06-30 13:47:49 -07:00
nesquena-hermes
a103775e42 docs(changelog): OpenAI-compatible TTS backend, SSRF-hardened (#5079) 2026-06-30 20:39:51 +00:00
nesquena-hermes
ba401d3784 Merge #5079 (OpenAI TTS + SSRF hardening) into stage 2026-06-30 20:39:04 +00:00
nesquena-hermes
eb2c4b1e7d fix(#5079): no-redirect opener for OpenAI TTS (block redirect-to-private SSRF + bearer leak)
A public TTS host could 301/302/303-redirect POST /audio/speech to an internal
target (e.g. http://169.254.169.254), and urllib's default redirect handler
would follow it carrying the Authorization bearer — both an SSRF bounce past the
base-url guard and a credential leak. Now uses a no-redirect opener
(_NoRedirectTtsHandler raises on any redirect) via the _tts_open seam. +redirect
rejection regression test. Residual DNS-rebinding TOCTOU (re-resolve at connect)
is a narrower low-severity window noted for follow-up.
2026-06-30 20:37:43 +00:00
nesquena-hermes
6bcb728f08 fix(#5079): block private/link-local/reserved IP targets in OpenAI TTS base_url (SSRF hardening)
The base_url validator accepted any https host; an https URL pointing at an
internal/link-local/loopback/reserved IP (e.g. https://169.254.169.254 cloud
metadata, https://10.x internal) passed the scheme-only check. Now resolves the
host and rejects blocked-target addresses (private/loopback/link-local/reserved/
multicast/unspecified), while still allowing public OpenAI-compatible hosts and
the explicit localhost-over-http dev case. DNS-resolution failure is allowed
(unreachable host can't be an SSRF vector + avoids false-rejecting public hosts
that don't resolve in sandboxed envs). +5 regression vectors.
2026-06-30 20:37:43 +00:00
Frank Song
7f069100cc Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 04:23:09 +08:00
Rod Boev
027ad18834 test(#5231): harden JS source extraction coverage 2026-06-30 16:06:39 -04:00
nesquena-hermes
df9c643a80
Merge pull request #5288 from nesquena/release/stage-4881
Release v0.51.774 — Kanban modal fields (#4881)
2026-06-30 13:05:32 -07:00
Frank Song
ab4844f54a Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 04:02:12 +08:00
nesquena-hermes
93d31ebad5 docs(changelog): Kanban modal skills/max_runtime/parents (#4881) 2026-06-30 19:51:22 +00:00
nesquena-hermes
027699b570 Merge #4881 (rodboev Kanban modal fields) into stage 2026-06-30 19:50:46 +00:00
Rod Boev
e8631b808f fix(#5231): unblock Run dispatcher on the default Kanban board 2026-06-30 15:49:09 -04:00
nesquena-hermes
b098e5c658 feat(#4676): gate per-project quick-create buttons behind opt-in setting
Add a default-OFF 'project_quick_create_buttons' setting that gates the
per-project '+' quick-create buttons on sidebar project chips. The chip
render site only calls _attachProjectQuickCreateButton when the new
window._projectQuickCreate runtime flag is enabled, so the buttons do
not appear unless the user opts in via Settings.

Mirrors the large_text_paste_as_attachment opt-in plumbing (defaults,
allowlist, settings collect/restore/save, window hydration at both sites,
checkbox row, i18n across all locales).
2026-06-30 19:49:07 +00:00
nesquena-hermes
4e8bd002f7
Merge pull request #5286 from nesquena/release/stage-4871
Release v0.51.773 — Mermaid toolbar controls in chat (#4871)
2026-06-30 12:43:18 -07:00
Frank Song
54cbc35155 Merge origin/master into PR #5271
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-07-01 03:41:54 +08:00
santastabber
4b33458c4b fix(pwa): defer new-chat model hydration 2026-07-01 05:29:34 +10:00
Rod Boev
66fc8722c1 fix(#4676): expose quick-create button purpose to screen readers 2026-06-30 19:28:28 +00:00
Rod Boev
80dbbc1e93 fix(#4676): swallow duplicate quick-create inflight rejections 2026-06-30 19:28:27 +00:00
Rod Boev
0ea9e72a9a docs(#4676): clarify quick-create rollback ownership 2026-06-30 19:28:27 +00:00
Rod Boev
a109f86946 Keep project quick-create filter changes in sync with session creation outcomes 2026-06-30 19:28:27 +00:00
Rod Boev
08c4004271 Preserve touch quick-create clicks while blocking chip long-press leakage 2026-06-30 19:28:27 +00:00