morethanwords/tweb/master • 141e4e1 • 1 files, +1/-1
Show drag handle on first option always
morethanwords/tweb/master • cc56b4d • 3 files, +41/-11
Handle component cleanup in MediaAttachment
morethanwords/tweb/master • a52d486 • 2 files, +17/-2
Prevent recursive click handling on media viewer targets
morethanwords/tweb/master • a5c22b4 • 1 files, +7/-5
Add missing rights check in AddOption
morethanwords/tweb/master • b40c055 • 2 files, +32/-26
Fix hover on add option's button icons
morethanwords/tweb/master • 535810c • 2 files, +15/-1
Fix spinner color
morethanwords/tweb/master • 806771d • 5 files, +30/-10
Focus on InputField when clicking on form field
morethanwords/tweb/master • 67c7449 • 6 files, +62/-3
Handle uploadingFileName's on uploading poll media
morethanwords/tweb/master • 0246cc1 • 1 files, +6/-4
Fix poll media finalization not being run
morethanwords/tweb/master • 68a1efc • 46 files, +2244/-587
Merge branch 'master' into feature/new-polls
morethanwords/tweb/master • ee92734 • 4 files, +5/-7
Handle venue location too
morethanwords/tweb/master • 14bbfca • 1 files, +1/-1
Fix type
morethanwords/tweb/master • 047c7b6 • 183 files, +11314/-3700
Merge pull request #631 from H7GhosT/feature/new-polls
New polls
morethanwords/tweb/master • 1d58eb4 • 79 files, +3729/-1058
Merge branch 'master' into feature/create-managed-bot
#webk
Show drag handle on first option always
morethanwords/tweb/master • cc56b4d • 3 files, +41/-11
Handle component cleanup in MediaAttachment
morethanwords/tweb/master • a52d486 • 2 files, +17/-2
Prevent recursive click handling on media viewer targets
morethanwords/tweb/master • a5c22b4 • 1 files, +7/-5
Add missing rights check in AddOption
morethanwords/tweb/master • b40c055 • 2 files, +32/-26
Fix hover on add option's button icons
morethanwords/tweb/master • 535810c • 2 files, +15/-1
Fix spinner color
morethanwords/tweb/master • 806771d • 5 files, +30/-10
Focus on InputField when clicking on form field
morethanwords/tweb/master • 67c7449 • 6 files, +62/-3
Handle uploadingFileName's on uploading poll media
morethanwords/tweb/master • 0246cc1 • 1 files, +6/-4
Fix poll media finalization not being run
morethanwords/tweb/master • 68a1efc • 46 files, +2244/-587
Merge branch 'master' into feature/new-polls
morethanwords/tweb/master • ee92734 • 4 files, +5/-7
Handle venue location too
morethanwords/tweb/master • 14bbfca • 1 files, +1/-1
Fix type
morethanwords/tweb/master • 047c7b6 • 183 files, +11314/-3700
Merge pull request #631 from H7GhosT/feature/new-polls
New polls
morethanwords/tweb/master • 1d58eb4 • 79 files, +3729/-1058
Merge branch 'master' into feature/create-managed-bot
#webk
🫡3
morethanwords/tweb/master • bc77ae7 • 10 files, +588/-4
Merge pull request #647 from H7GhosT/feature/create-managed-bot
Create managed bot keyboard action
#webk
Merge pull request #647 from H7GhosT/feature/create-managed-bot
Create managed bot keyboard action
#webk
🫡3
UnigramDev/Unigram/develop • 20ea209 • 1 files, +32/-1
Support anchors in markdown
UnigramDev/Unigram/develop • dbe8412 • 1 files, +6/-3
Allow selection in IV code blocks
UnigramDev/Unigram/develop • 1fae5e0 • 2 files, +14/-2
Improve instant view title
UnigramDev/Unigram/develop • d532e6a • 7 files, +137/-18
Recognize QR codes in pictures
UnigramDev/Unigram/develop • 15484a9 • 1 files, +4/-1
Improve checkbox in instant view
UnigramDev/Unigram/develop • ee44d43 • 2 files, +10/-0
Track error
UnigramDev/Unigram/develop • d2b844c • 1 files, +1/-1
Bump version to 12.7.4
UnigramDev/Unigram/develop • b84aac4 • 2 files, +9/-0
Handle QR code clicks
#unigram
Support anchors in markdown
UnigramDev/Unigram/develop • dbe8412 • 1 files, +6/-3
Allow selection in IV code blocks
UnigramDev/Unigram/develop • 1fae5e0 • 2 files, +14/-2
Improve instant view title
UnigramDev/Unigram/develop • d532e6a • 7 files, +137/-18
Recognize QR codes in pictures
UnigramDev/Unigram/develop • 15484a9 • 1 files, +4/-1
Improve checkbox in instant view
UnigramDev/Unigram/develop • ee44d43 • 2 files, +10/-0
Track error
UnigramDev/Unigram/develop • d2b844c • 1 files, +1/-1
Bump version to 12.7.4
UnigramDev/Unigram/develop • b84aac4 • 2 files, +9/-0
Handle QR code clicks
#unigram
🫡2
morethanwords/tweb/master • 2208738 • 1 files, +10/-4
fix: #223 draft sync loop when remote client clears draft
morethanwords/tweb/master • eaafbc7 • 1 files, +3/-0
fix: preserve actively-typed draft when a remote clear arrives
Refines the #223 fix: the draft_updated listener cleared the pending
saveDraft timeout before setDraft checked isDebounced(), so a remote
clear arriving while the user was typing would clobber their newer
input. Check isDebounced() first and bail when a local save is pending,
letting the in-progress draft win and sync normally.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
morethanwords/tweb/master • f5f9e83 • 1 files, +13/-4
Merge pull request #648 from hmnd/push-vyvvuzymxyls
fix: #223 draft sync loop when remote client clears draft
#webk
fix: #223 draft sync loop when remote client clears draft
morethanwords/tweb/master • eaafbc7 • 1 files, +3/-0
fix: preserve actively-typed draft when a remote clear arrives
Refines the #223 fix: the draft_updated listener cleared the pending
saveDraft timeout before setDraft checked isDebounced(), so a remote
clear arriving while the user was typing would clobber their newer
input. Check isDebounced() first and bail when a local save is pending,
letting the in-progress draft win and sync normally.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
morethanwords/tweb/master • f5f9e83 • 1 files, +13/-4
Merge pull request #648 from hmnd/push-vyvvuzymxyls
fix: #223 draft sync loop when remote client clears draft
#webk
🫡3🤨1
UnigramDev/Unigram/develop • d82aad2 • 2 files, +40/-3
Fix profile settings navigation
UnigramDev/Unigram/develop • 4e12044 • 1 files, +1/-1
Fix null ref
#unigram
Fix profile settings navigation
UnigramDev/Unigram/develop • 4e12044 • 1 files, +1/-1
Fix null ref
#unigram
🫡3
morethanwords/tweb/master • 871fc5e • 14 files, +246/-108
fix: group + conference calls — DTLS role, e2e recv/key/video send, mirror, rejoin
Group voice chats (SFU):
- DTLS: advertise setup:passive so the SFU drives the handshake. A Chrome ~M124
DTLS change broke the client-active direction — ICE reached connected but the
handshake stalled, so no SRTP keys and no media. (processMediaSection)
Conference calls (TdE2E) — enabled (IS_CONFERENCE_CALL_SUPPORTED=true):
- recv: attach the e2e RTCRtpScriptTransform per remote SSRC at createTransceiver
time, before the decoder binds (the track event is too late → Chrome bypasses).
Drop the single-multiplexed-m-line model; one recvonly m-line per SSRC like the
legacy SFU path. Frames now pump 1:1.
- key: gate the v1+ group-shared-key HMAC mixing on group_state.version() like
tdlib (real calls run at version 0) — fixes MAC verification failures vs iOS.
- video send: keep the VP8 codec header in a per-frame plaintext prefix
(libtgcalls calculateVp8FramePlaintextHeaderSize) instead of encrypting it.
- screen share: attach the e2e send transform on the presentation connection
(its own e2e channel); it was being sent unencrypted.
Calls UI:
- mirror only the local self-view from a front camera; never the remote feed or
screen capture (getDisplayMedia/displaySurface).
Re-join: reset the participant-fetch cursor on leave AND join so re-joining the
same call re-fetches participants — fixes empty popup + no video on rejoin
(incl. after reload, where the SharedWorker keeps stale state).
Cleanups: shared senderKind helper, named e2e channel constants, gate e2e worker
debug instrumentation behind E2E_DEBUG, remove dead attachE2eTransforms.
morethanwords/tweb/master • b0f3f20 • 8 files, +356/-336
Some icons
morethanwords/tweb/master • 6fee2d4 • 1 files, +13/-4
Merge branch 'master' of https://github.com/morethanwords/tweb
morethanwords/tweb/master • 735f656 • 15 files, +1695/-304
feat: My QR code — iOS-style profile QR card with theme picker
Add a "My QR code" popup that renders your (or any peer's) profile QR as an
iOS-faithful card — avatar + QR + @username over a chat wallpaper — painted on a
single canvas and copyable as a 1170×2532 PNG (with a profile-link fallback when
image-clipboard is unavailable).
- QR painted via a shared paintQrCode helper (qr-code-styling), tinted with the
wallpaper gradient and luminance-clamped so it stays scannable on light
themes; SignQRCard now uses the same helper instead of its own copy.
- Reusable ChatThemesPicker extracted (also adopted by generalSettings) with a
popup-local night-mode toggle; selection persisted in appSettings.qrCode
(selectedThemeId + nightMode).
- Entry points: Settings header (self), PeerProfile username + private
invite-link rows; usernameless self falls back to a t.me/contact token
(appUsersManager.exportContactToken), mirroring iOS.
- color.ts: shared getWallPaperColors + WCAG luminance helpers; fix
filter(Boolean) dropping a present black (0x000000) wallpaper stop — now keeps
every present stop like Telegram-iOS.
#webk
fix: group + conference calls — DTLS role, e2e recv/key/video send, mirror, rejoin
Group voice chats (SFU):
- DTLS: advertise setup:passive so the SFU drives the handshake. A Chrome ~M124
DTLS change broke the client-active direction — ICE reached connected but the
handshake stalled, so no SRTP keys and no media. (processMediaSection)
Conference calls (TdE2E) — enabled (IS_CONFERENCE_CALL_SUPPORTED=true):
- recv: attach the e2e RTCRtpScriptTransform per remote SSRC at createTransceiver
time, before the decoder binds (the track event is too late → Chrome bypasses).
Drop the single-multiplexed-m-line model; one recvonly m-line per SSRC like the
legacy SFU path. Frames now pump 1:1.
- key: gate the v1+ group-shared-key HMAC mixing on group_state.version() like
tdlib (real calls run at version 0) — fixes MAC verification failures vs iOS.
- video send: keep the VP8 codec header in a per-frame plaintext prefix
(libtgcalls calculateVp8FramePlaintextHeaderSize) instead of encrypting it.
- screen share: attach the e2e send transform on the presentation connection
(its own e2e channel); it was being sent unencrypted.
Calls UI:
- mirror only the local self-view from a front camera; never the remote feed or
screen capture (getDisplayMedia/displaySurface).
Re-join: reset the participant-fetch cursor on leave AND join so re-joining the
same call re-fetches participants — fixes empty popup + no video on rejoin
(incl. after reload, where the SharedWorker keeps stale state).
Cleanups: shared senderKind helper, named e2e channel constants, gate e2e worker
debug instrumentation behind E2E_DEBUG, remove dead attachE2eTransforms.
morethanwords/tweb/master • b0f3f20 • 8 files, +356/-336
Some icons
morethanwords/tweb/master • 6fee2d4 • 1 files, +13/-4
Merge branch 'master' of https://github.com/morethanwords/tweb
morethanwords/tweb/master • 735f656 • 15 files, +1695/-304
feat: My QR code — iOS-style profile QR card with theme picker
Add a "My QR code" popup that renders your (or any peer's) profile QR as an
iOS-faithful card — avatar + QR + @username over a chat wallpaper — painted on a
single canvas and copyable as a 1170×2532 PNG (with a profile-link fallback when
image-clipboard is unavailable).
- QR painted via a shared paintQrCode helper (qr-code-styling), tinted with the
wallpaper gradient and luminance-clamped so it stays scannable on light
themes; SignQRCard now uses the same helper instead of its own copy.
- Reusable ChatThemesPicker extracted (also adopted by generalSettings) with a
popup-local night-mode toggle; selection persisted in appSettings.qrCode
(selectedThemeId + nightMode).
- Entry points: Settings header (self), PeerProfile username + private
invite-link rows; usernameless self falls back to a t.me/contact token
(appUsersManager.exportContactToken), mirroring iOS.
- color.ts: shared getWallPaperColors + WCAG luminance helpers; fix
filter(Boolean) dropping a present black (0x000000) wallpaper stop — now keeps
every present stop like Telegram-iOS.
#webk
🫡3
morethanwords/tweb/master • ff9288b • 14 files, +301/-104
feat: conference-call join entry points (link/invite/pinned/preview)
Funnel every "join a conference" affordance through one policy entry
point — appImManager.joinConference, which owns the support gate, the
same-call short-circuit, the leave-current-call confirmation and the
dead-link toast:
- t.me/call/<slug> link, the invite service-message anchor and the new
telegram_call web-page preview (chat bubble + pinned bar) all delegate
to it instead of re-implementing the gate + error handling
- joinConference now leaves any current call (1-on-1, live, group or
another conference) via discardCurrentCall before joining, mirroring
joinGroupCall/joinLiveStream; adds a `Conference` confirmation toType
so the prompt never names an empty peer
- joinVoiceChatAnchor imports joinConference lazily — a static import
closes an appImManager↔render-path cycle that crashes page load with a
`Row` TDZ ("Cannot access 'Row' before initialization")
Conference UX (no backing chat peer):
- topbar stacks participant avatars instead of a chat avatar, refreshed
on participant join/leave; fix a string-vs-number group-call id compare
that froze the participant count at its connect-time value
- groupCallInstance nudges a re-render once the real groupCall hydrates
late (invitee/slug joins) so the count doesn't stick at 1
- PopupGroupCall places the e2e fingerprint badge left of fullscreen
Schema: add the `telegram_call` WebPage type.
#webk
feat: conference-call join entry points (link/invite/pinned/preview)
Funnel every "join a conference" affordance through one policy entry
point — appImManager.joinConference, which owns the support gate, the
same-call short-circuit, the leave-current-call confirmation and the
dead-link toast:
- t.me/call/<slug> link, the invite service-message anchor and the new
telegram_call web-page preview (chat bubble + pinned bar) all delegate
to it instead of re-implementing the gate + error handling
- joinConference now leaves any current call (1-on-1, live, group or
another conference) via discardCurrentCall before joining, mirroring
joinGroupCall/joinLiveStream; adds a `Conference` confirmation toType
so the prompt never names an empty peer
- joinVoiceChatAnchor imports joinConference lazily — a static import
closes an appImManager↔render-path cycle that crashes page load with a
`Row` TDZ ("Cannot access 'Row' before initialization")
Conference UX (no backing chat peer):
- topbar stacks participant avatars instead of a chat avatar, refreshed
on participant join/leave; fix a string-vs-number group-call id compare
that froze the participant count at its connect-time value
- groupCallInstance nudges a re-render once the real groupCall hydrates
late (invitee/slug joins) so the count doesn't stick at 1
- PopupGroupCall places the e2e fingerprint badge left of fullscreen
Schema: add the `telegram_call` WebPage type.
#webk
🫡3
morethanwords/tweb/brave-spence-c3c9ac • 5364b6f • 14 files, +2296/-535
feat: round video message recording (кружки)
Record and send round video notes, matching iOS/Android (400×400, 30fps).
- NativeVideoRecorder: getUserMedia -> center-cropped 400x400 <canvas> ->
captureStream -> MediaRecorder (mp4), plus a parallel webm recorder backing
the paused-preview snapshot (Chrome's mp4 MediaRecorder emits no mid-stream
data). rAF draw loop (rVFC never fires for the off-DOM source video), capped
to the capture frame rate.
- VideoRecordingPanel + ProgressRing (Solid .tsx): 360x360 centered camera
circle with the shared progress ring, first-frame reveal, mirror/un-mirror,
opacity fade-out on send/cancel (no black frame). The panel exposes an
imperative handle via createRoot, capturing real DOM nodes through refs so the
dev-mode $$component HMR wrapper doesn't break wrappers/video.ts.
- Reuses the existing voice recording panel (trash / waveform / timer / pause /
preview / send) in place. Click-to-record; voice<->video switch via
right-click, left-button long-press, and the attach menu; 60s cap -> paused
preview + toast (no auto-send); poster thumbnail for the optimistic bubble.
- Extracts ALL recording machinery (voice + video) out of ChatInput into a
ChatRecording collaborator - input.ts shrinks ~1166 lines.
- Camera + microphone follow the user's Settings -> Speakers and Camera choice
through the shared getStream() chokepoint, inheriting its self-healing
fallback (stale device -> strip deviceId, clear the setting, retry on default).
- Gated off on Safari/iOS (broken canvas.captureStream, WebKit #181663) ->
falls back to voice.
- CLAUDE.md: document the "use getStream for any getUserMedia" rule.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
morethanwords/tweb/brave-spence-c3c9ac • 2809885 • 242 files, +15276/-4733
Merge branch 'master' into brave-spence-c3c9ac
#webk
feat: round video message recording (кружки)
Record and send round video notes, matching iOS/Android (400×400, 30fps).
- NativeVideoRecorder: getUserMedia -> center-cropped 400x400 <canvas> ->
captureStream -> MediaRecorder (mp4), plus a parallel webm recorder backing
the paused-preview snapshot (Chrome's mp4 MediaRecorder emits no mid-stream
data). rAF draw loop (rVFC never fires for the off-DOM source video), capped
to the capture frame rate.
- VideoRecordingPanel + ProgressRing (Solid .tsx): 360x360 centered camera
circle with the shared progress ring, first-frame reveal, mirror/un-mirror,
opacity fade-out on send/cancel (no black frame). The panel exposes an
imperative handle via createRoot, capturing real DOM nodes through refs so the
dev-mode $$component HMR wrapper doesn't break wrappers/video.ts.
- Reuses the existing voice recording panel (trash / waveform / timer / pause /
preview / send) in place. Click-to-record; voice<->video switch via
right-click, left-button long-press, and the attach menu; 60s cap -> paused
preview + toast (no auto-send); poster thumbnail for the optimistic bubble.
- Extracts ALL recording machinery (voice + video) out of ChatInput into a
ChatRecording collaborator - input.ts shrinks ~1166 lines.
- Camera + microphone follow the user's Settings -> Speakers and Camera choice
through the shared getStream() chokepoint, inheriting its self-healing
fallback (stale device -> strip deviceId, clear the setting, retry on default).
- Gated off on Safari/iOS (broken canvas.captureStream, WebKit #181663) ->
falls back to voice.
- CLAUDE.md: document the "use getStream for any getUserMedia" rule.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
morethanwords/tweb/brave-spence-c3c9ac • 2809885 • 242 files, +15276/-4733
Merge branch 'master' into brave-spence-c3c9ac
#webk
🫡3
morethanwords/tweb/master • ab756cc • 14 files, +2296/-534
Merge pull request #652 from morethanwords/brave-spence-c3c9ac
feat: round video message recording (кружки)
#webk
Merge pull request #652 from morethanwords/brave-spence-c3c9ac
feat: round video message recording (кружки)
#webk
🫡3
morethanwords/tweb/master • caf4d1d • 18 files, +350/-274
feat: bot web_app_request_chat Mini App peer-request flow
feat: round-video record button icon; dedupe record switch
feat: darken folders-sidebar mirror for night dark patterns
fix: folders-sidebar burger falls back to menu below 925px
fix: drop trailing zero wallpaper gradient stops (day themes)
fix: keep reveal scroll animation when forwarding tall message
fix: honour forced draft clear after send-while-typing
fix: topbar search filter button spacing
chore: remove gated conference-call topbar button
#webk
feat: bot web_app_request_chat Mini App peer-request flow
feat: round-video record button icon; dedupe record switch
feat: darken folders-sidebar mirror for night dark patterns
fix: folders-sidebar burger falls back to menu below 925px
fix: drop trailing zero wallpaper gradient stops (day themes)
fix: keep reveal scroll animation when forwarding tall message
fix: honour forced draft clear after send-while-typing
fix: topbar search filter button spacing
chore: remove gated conference-call topbar button
#webk
🫡3
morethanwords/tweb/master • e8b1603 • 1 files, +1/-1
Adapt wording if photo or video permission is missing
morethanwords/tweb/master • 4e96ae0 • 10 files, +588/-4
Merge remote-tracking branch 'official/master' into feature/new-polls
morethanwords/tweb/master • 8728e14 • 3 files, +2/-2
Move truncateTextWithEntities
morethanwords/tweb/master • 6bc8b65 • 4 files, +151/-50
Refactor adding options logic
morethanwords/tweb/master • 7f77d2c • 1 files, +19/-15
Adjust poll options field behavior
morethanwords/tweb/master • 53bed64 • 8 files, +177/-26
Confirm poll cancelation when trying to cancel media upload
morethanwords/tweb/master • eebb3f8 • 3 files, +59/-6
fix: stop dev server crashing with EMFILE and speed up dev
`pnpm start` crashed on macOS with "EMFILE: too many open files, watch" —
the dev file watchers recursed into the ~18 git worktrees under .claude/
(~40k dirs, each with its own node_modules). Pre-bundling was also silently
disabled (the dep scan choked on stale public/*.js merge-conflict markers)
and re-run from scratch on every start.
Crash / watcher fixes:
- tsconfig: add watchOptions.excludeDirectories (+ useFsEvents) and exclude
.claude, so tsc --watch (run by vite-plugin-checker) stops watching the
worktrees and node_modules
- vite: ignore **/.claude/** in the dev server watcher
- vite: scope the checker's ESLint watcher to src/ via watchPath — its default
watches the project root and never prunes directories
Dev performance:
- vite: pin optimizeDeps.entries to index.html so the dep scan no longer globs
stale public/*.js / stats.html and pre-bundling works again
- package.json: drop `vite --force` from start/start-in-docker so the dep
pre-bundle cache persists across restarts
- vite: only run rollup-plugin-visualizer under ANALYZE=1
- vite: serve dev over HTTP/2 when certs/localhost*.pem exists, multiplexing the
per-module dev requests (off for the preview and when no cert is present)
morethanwords/tweb/master • 989f8f5 • 16 files, +337/-81
Merge pull request #650 from H7GhosT/feature/new-polls
Refactor adding options logic and add poll canceling confirmation
#webk
Adapt wording if photo or video permission is missing
morethanwords/tweb/master • 4e96ae0 • 10 files, +588/-4
Merge remote-tracking branch 'official/master' into feature/new-polls
morethanwords/tweb/master • 8728e14 • 3 files, +2/-2
Move truncateTextWithEntities
morethanwords/tweb/master • 6bc8b65 • 4 files, +151/-50
Refactor adding options logic
morethanwords/tweb/master • 7f77d2c • 1 files, +19/-15
Adjust poll options field behavior
morethanwords/tweb/master • 53bed64 • 8 files, +177/-26
Confirm poll cancelation when trying to cancel media upload
morethanwords/tweb/master • eebb3f8 • 3 files, +59/-6
fix: stop dev server crashing with EMFILE and speed up dev
`pnpm start` crashed on macOS with "EMFILE: too many open files, watch" —
the dev file watchers recursed into the ~18 git worktrees under .claude/
(~40k dirs, each with its own node_modules). Pre-bundling was also silently
disabled (the dep scan choked on stale public/*.js merge-conflict markers)
and re-run from scratch on every start.
Crash / watcher fixes:
- tsconfig: add watchOptions.excludeDirectories (+ useFsEvents) and exclude
.claude, so tsc --watch (run by vite-plugin-checker) stops watching the
worktrees and node_modules
- vite: ignore **/.claude/** in the dev server watcher
- vite: scope the checker's ESLint watcher to src/ via watchPath — its default
watches the project root and never prunes directories
Dev performance:
- vite: pin optimizeDeps.entries to index.html so the dep scan no longer globs
stale public/*.js / stats.html and pre-bundling works again
- package.json: drop `vite --force` from start/start-in-docker so the dep
pre-bundle cache persists across restarts
- vite: only run rollup-plugin-visualizer under ANALYZE=1
- vite: serve dev over HTTP/2 when certs/localhost*.pem exists, multiplexing the
per-module dev requests (off for the preview and when no cert is present)
morethanwords/tweb/master • 989f8f5 • 16 files, +337/-81
Merge pull request #650 from H7GhosT/feature/new-polls
Refactor adding options logic and add poll canceling confirmation
#webk
🫡3
morethanwords/tweb/master • c19b21b • 1 files, +3/-1
fix: sort selected messages by time before copying (#357)
morethanwords/tweb/master • 37ff0b8 • 1 files, +11/-1
feat: handle url and alert in bot callback answer (#274)
morethanwords/tweb/master • 1020a7d • 3 files, +132/-40
Check video support and max size before opening media editor
morethanwords/tweb/master • 1b0a8e7 • 1 files, +16/-1
Invoke add poll answer only after message is sent
morethanwords/tweb/master • 1c24060 • 6 files, +35/-21
Check whether video encoding is supported before rendering
MediaAttachment
morethanwords/tweb/master • 1e726af • 12 files, +52/-36
refactor: unify left-sidebar dock boundary at 925px, clamp chat width
morethanwords/tweb/master • cbd6854 • 2 files, +43/-42
fix: send as menu layout
morethanwords/tweb/master • 59dc380 • 1 files, +16/-1
Merge pull request #654 from H7GhosT/fix/invoke-add-poll-answer-after-message
Invoke add poll answer only after message is sent
morethanwords/tweb/master • de399ea • 7 files, +154/-48
Merge pull request #653 from H7GhosT/fix/create-poll-media-editor-limit
Check video support and max size before opening media editor
#webk
fix: sort selected messages by time before copying (#357)
morethanwords/tweb/master • 37ff0b8 • 1 files, +11/-1
feat: handle url and alert in bot callback answer (#274)
morethanwords/tweb/master • 1020a7d • 3 files, +132/-40
Check video support and max size before opening media editor
morethanwords/tweb/master • 1b0a8e7 • 1 files, +16/-1
Invoke add poll answer only after message is sent
morethanwords/tweb/master • 1c24060 • 6 files, +35/-21
Check whether video encoding is supported before rendering
MediaAttachment
morethanwords/tweb/master • 1e726af • 12 files, +52/-36
refactor: unify left-sidebar dock boundary at 925px, clamp chat width
morethanwords/tweb/master • cbd6854 • 2 files, +43/-42
fix: send as menu layout
morethanwords/tweb/master • 59dc380 • 1 files, +16/-1
Merge pull request #654 from H7GhosT/fix/invoke-add-poll-answer-after-message
Invoke add poll answer only after message is sent
morethanwords/tweb/master • de399ea • 7 files, +154/-48
Merge pull request #653 from H7GhosT/fix/create-poll-media-editor-limit
Check video support and max size before opening media editor
#webk
🫡3
morethanwords/tweb/master • 8f2592a • 26 files, +473/-427
refactor: port createContact & reportAd popups to procedural Solid API
- showCreateContactPopup() / showReportAdPopup() + showAd/Message/StoryReport helpers
- add `old` PopupElement flag for legacy styling
- extract _createContact.scss, drop old _mediaAttacher rules
- stars: reorder header, reveal more-options via GrowHeightReveal
- misc: addboost icon, sticker forwards class, surface-color tweaks
#webk
refactor: port createContact & reportAd popups to procedural Solid API
- showCreateContactPopup() / showReportAdPopup() + showAd/Message/StoryReport helpers
- add `old` PopupElement flag for legacy styling
- extract _createContact.scss, drop old _mediaAttacher rules
- stars: reorder header, reveal more-options via GrowHeightReveal
- misc: addboost icon, sticker forwards class, surface-color tweaks
#webk
🫡3
morethanwords/tweb/master • 396b25a • 8 files, +71/-154
refactor: port aboutAd popup to procedural featureDetails API
#webk
refactor: port aboutAd popup to procedural featureDetails API
#webk
🫡3
Ajaxy/telegram-tt/master • b78f86e • 31 files, +727/-168
Layer: Support layer 225
Ajaxy/telegram-tt/master • 9dced4c • 3 files, +4/-4
12.0.29
Ajaxy/telegram-tt/master • d1597b4 • 1 files, +9/-0
Forum Panel: Fix chatlist animation on close (#6956)
Ajaxy/telegram-tt/master • fcf7b45 • 5 files, +10/-4
Fix stricterdom for lovely-chart (#6957)
Ajaxy/telegram-tt/master • 1c9d35c • 4 files, +54/-16
Avoid innerHTML for lovely-chart text (#6958)
Ajaxy/telegram-tt/master • ec9add5 • 17 files, +227/-87
Sync lovely-chart from upstream (#6959)
Ajaxy/telegram-tt/master • c4b1bad • 3 files, +47/-2
Poll: Handle unread votes update (#6951)
Ajaxy/telegram-tt/master • 60f3995 • 105 files, +2223/-1985
Settings: Redesign (#6922)
Co-authored-by: Alexander Zinchuk <alx.zinchuk@gmail.com>
Ajaxy/telegram-tt/master • b7e1050 • 14 files, +93/-25
Message: Show guest bots (#6955)
Ajaxy/telegram-tt/master • 6a8ca9b • 5 files, +17/-5
Message: Allow empty typing drafts (#6954)
Ajaxy/telegram-tt/master • a103f09 • 1 files, +7/-3
Comments: Fix wrong thread info on forwards (#6962)
Ajaxy/telegram-tt/master • 2b6fca1 • 12 files, +331/-112
Message List: Move streaming responses to the top (#6924)
Ajaxy/telegram-tt/master • 198da47 • 2 files, +46/-15
Message List: Fix selection buttons not showing (#6960)
Ajaxy/telegram-tt/master • e6ba963 • 2 files, +22/-10
Calls: Discard incoming calls as busy when already in a call (#6952)
Ajaxy/telegram-tt/master • 37c3156 • 2 files, +36/-0
Forward Modal: Send from forward modal on Enter key (#6964)
#webz
Layer: Support layer 225
Ajaxy/telegram-tt/master • 9dced4c • 3 files, +4/-4
12.0.29
Ajaxy/telegram-tt/master • d1597b4 • 1 files, +9/-0
Forum Panel: Fix chatlist animation on close (#6956)
Ajaxy/telegram-tt/master • fcf7b45 • 5 files, +10/-4
Fix stricterdom for lovely-chart (#6957)
Ajaxy/telegram-tt/master • 1c9d35c • 4 files, +54/-16
Avoid innerHTML for lovely-chart text (#6958)
Ajaxy/telegram-tt/master • ec9add5 • 17 files, +227/-87
Sync lovely-chart from upstream (#6959)
Ajaxy/telegram-tt/master • c4b1bad • 3 files, +47/-2
Poll: Handle unread votes update (#6951)
Ajaxy/telegram-tt/master • 60f3995 • 105 files, +2223/-1985
Settings: Redesign (#6922)
Co-authored-by: Alexander Zinchuk <alx.zinchuk@gmail.com>
Ajaxy/telegram-tt/master • b7e1050 • 14 files, +93/-25
Message: Show guest bots (#6955)
Ajaxy/telegram-tt/master • 6a8ca9b • 5 files, +17/-5
Message: Allow empty typing drafts (#6954)
Ajaxy/telegram-tt/master • a103f09 • 1 files, +7/-3
Comments: Fix wrong thread info on forwards (#6962)
Ajaxy/telegram-tt/master • 2b6fca1 • 12 files, +331/-112
Message List: Move streaming responses to the top (#6924)
Ajaxy/telegram-tt/master • 198da47 • 2 files, +46/-15
Message List: Fix selection buttons not showing (#6960)
Ajaxy/telegram-tt/master • e6ba963 • 2 files, +22/-10
Calls: Discard incoming calls as busy when already in a call (#6952)
Ajaxy/telegram-tt/master • 37c3156 • 2 files, +36/-0
Forward Modal: Send from forward modal on Enter key (#6964)
#webz
🫡2
Ajaxy/telegram-tt/master • fb5a7cf • 23 files, +410/-233
Composer: Support guest bot mentions (#6961)
Ajaxy/telegram-tt/master • 73b5ebe • 1 files, +0/-1
Forward Modal: Show Saved Messages chip in Forward search (#6968)
Co-authored-by: Dmitry Kabanov <153344039+dmitrykabanovdev@users.noreply.github.com>
Ajaxy/telegram-tt/master • d7082ef • 6 files, +54/-24
Topics: Fix loading after refresh (#6967)
Ajaxy/telegram-tt/master • 328943d • 1 files, +28/-20
Forward Modal: Fix order for forum topics in Forward Modal (#6970)
Ajaxy/telegram-tt/master • 1162804 • 1 files, +31/-4
Story: Fix handling forwards from deleted channels (#6972)
Ajaxy/telegram-tt/master • 8edd3fe • 5 files, +138/-16
Message List: Update behaviour (#6969)
Ajaxy/telegram-tt/master • d82240b • 18 files, +69/-66
Redesign: Follow Up (#6966)
Ajaxy/telegram-tt/master • ac71309 • 49 files, +1867/-366
Ai Tone Editor: Support custom AI tone editing (#6965)
Ajaxy/telegram-tt/master • 2198017 • 4 files, +24/-35
Active Sessions: Move logout button at the bottom (#6975)
Ajaxy/telegram-tt/master • 560a29b • 88 files, +116/-109
[Build]
#webz
Composer: Support guest bot mentions (#6961)
Ajaxy/telegram-tt/master • 73b5ebe • 1 files, +0/-1
Forward Modal: Show Saved Messages chip in Forward search (#6968)
Co-authored-by: Dmitry Kabanov <153344039+dmitrykabanovdev@users.noreply.github.com>
Ajaxy/telegram-tt/master • d7082ef • 6 files, +54/-24
Topics: Fix loading after refresh (#6967)
Ajaxy/telegram-tt/master • 328943d • 1 files, +28/-20
Forward Modal: Fix order for forum topics in Forward Modal (#6970)
Ajaxy/telegram-tt/master • 1162804 • 1 files, +31/-4
Story: Fix handling forwards from deleted channels (#6972)
Ajaxy/telegram-tt/master • 8edd3fe • 5 files, +138/-16
Message List: Update behaviour (#6969)
Ajaxy/telegram-tt/master • d82240b • 18 files, +69/-66
Redesign: Follow Up (#6966)
Ajaxy/telegram-tt/master • ac71309 • 49 files, +1867/-366
Ai Tone Editor: Support custom AI tone editing (#6965)
Ajaxy/telegram-tt/master • 2198017 • 4 files, +24/-35
Active Sessions: Move logout button at the bottom (#6975)
Ajaxy/telegram-tt/master • 560a29b • 88 files, +116/-109
[Build]
#webz
🫡2
telegramdesktop/tdesktop/chrome_148.0.0.0 • b4407cb • 1 files, +1/-1
Update User-Agent for DNS to Chrome 148.0.0.0.
#tdesktop
Update User-Agent for DNS to Chrome 148.0.0.0.
#tdesktop
🫡2
🫡3👍1
telegramdesktop/tdesktop/unused_styles_2026_06 • fdc0c64 • 1 files, +0/-1
Removed 1 unused style entries.
#tdesktop
Removed 1 unused style entries.
#tdesktop
🫡3
morethanwords/tweb/master • 013d778 • 21 files, +357/-182
feat: touch-friendly media viewer chrome and handheld popup layouts
Media viewer (touch/handheld):
- Tap a photo/GIF to toggle the chrome (topbar + caption) instead of closing the
viewer, mirroring the video-controls toggle.
- Fade caption & topbar together with the player controls when they auto-hide,
and while a player menu (speed/quality) or the seek-bar time preview is open.
- On mobile the video fills the viewport with controls anchored to the screen
bottom; live streams stay centered with controls in the bottom reserve.
- On close, retarget the mover to the centered media so it doesn't fly toward an
off-screen source (opacity-only fade when the source is fully off-screen).
- VideoPlayer: rename onPlaybackRateMenuToggle -> onMenuToggle (now also fired by
the quality menu) and add onTimePreviewToggle; ControlsHover.showOnLeaveToClassName
accepts multiple classes so leaving onto the caption/topbar no longer hides chrome.
Translate popup:
- Port class-based PopupTranslate to a procedural showTranslatePopup() on the Solid
PopupElement; update all call sites and the hot-reload guard.
- Drop the now-unused Section fakeGradientDelimiter option.
Chat preview popup:
- On handhelds, fit the popup to the viewport and center it as a modal (with the
dimmed overlay); keep the anchored desktop peek unchanged.
Fixes & polish:
- Don't wipe the input on a replace-style IME compose (e.g. Vietnamese Telex
'dd' -> 'đ'); guard the send-params helper against a missing input field.
- Allow creating polls in Saved Messages.
- Pinned audio/file plate no longer overflows handheld screens.
- reactedList popup sizing via --popup-width/--popup-height vars.
- Lang tweaks: add 'Translation'; ThemeDay -> Classic; OffThreadMessage ->
Off-Topic; passkey/QR login labels; game-score placeholders; plural
InviteLinkSentMany.
morethanwords/tweb/master • 4513e9f • 183 files, +322/-322
Build
#webk
feat: touch-friendly media viewer chrome and handheld popup layouts
Media viewer (touch/handheld):
- Tap a photo/GIF to toggle the chrome (topbar + caption) instead of closing the
viewer, mirroring the video-controls toggle.
- Fade caption & topbar together with the player controls when they auto-hide,
and while a player menu (speed/quality) or the seek-bar time preview is open.
- On mobile the video fills the viewport with controls anchored to the screen
bottom; live streams stay centered with controls in the bottom reserve.
- On close, retarget the mover to the centered media so it doesn't fly toward an
off-screen source (opacity-only fade when the source is fully off-screen).
- VideoPlayer: rename onPlaybackRateMenuToggle -> onMenuToggle (now also fired by
the quality menu) and add onTimePreviewToggle; ControlsHover.showOnLeaveToClassName
accepts multiple classes so leaving onto the caption/topbar no longer hides chrome.
Translate popup:
- Port class-based PopupTranslate to a procedural showTranslatePopup() on the Solid
PopupElement; update all call sites and the hot-reload guard.
- Drop the now-unused Section fakeGradientDelimiter option.
Chat preview popup:
- On handhelds, fit the popup to the viewport and center it as a modal (with the
dimmed overlay); keep the anchored desktop peek unchanged.
Fixes & polish:
- Don't wipe the input on a replace-style IME compose (e.g. Vietnamese Telex
'dd' -> 'đ'); guard the send-params helper against a missing input field.
- Allow creating polls in Saved Messages.
- Pinned audio/file plate no longer overflows handheld screens.
- reactedList popup sizing via --popup-width/--popup-height vars.
- Lang tweaks: add 'Translation'; ThemeDay -> Classic; OffThreadMessage ->
Off-Topic; passkey/QR login labels; game-score placeholders; plural
InviteLinkSentMany.
morethanwords/tweb/master • 4513e9f • 183 files, +322/-322
Build
#webk
🫡3