from remote-tracking branches:
* kernel/fix-soft-keyboard
* kernel/composite-profiles-perf
* kernel/fix-nav-flicker
kernelkind (8):
Revert "fix: nav drawer shadow extends all the way vertically"
chore(profiling): markup composite render path
chore(tracy): repaint every frame
feat(composite-cluster): do culling for pfps
feat(mime-cache): upgrade UrlMimes
feat(reactions): use ProfileKey when possible for performance
fix(nav-drawer): shadow extends all the way vertically
fix(thread): remove flicker on opening thread
since we stop rendering when there is no user input, tracy sees
big hangs, and it's annoying to parse through which frames are
actual performance issues and which are due to no user input.
So just repaint every frame while using tracy.
Signed-off-by: kernelkind <kernelkind@gmail.com>
df5cf8a1fc caused a regression
making the soft keyboard auto close. This patch extends the shadow
all the way vertically without triggering the regression
Signed-off-by: kernelkind <kernelkind@gmail.com>
android: `make android-tracy`
desktop: `cargo run --release --features tracy`
connect via `127.0.0.1:8086`
if using android then want to use desktop, unset the adb port
forwarding:
`adb forward --remove tcp:8086`
Signed-off-by: kernelkind <kernelkind@gmail.com>
This reworks how we detect and respond to the on-screen keyboard so inputs
don’t get buried and the UI doesn’t “jump”.
- Add SoftKeyboardAnim + AnimState FSM for smooth IME open/close animation
- Centralize logic in keyboard_visibility() with clear edge states
- Animate keyboard height via animate_value_with_time instead of layer
transforms
- Add ChromeOptions::KeyboardVisibility flag when focused input would be
occluded
- Add SidebarOptions::Compact to collapse sidebar while typing
- Hide mobile toolbar when keyboard is open (columns app)
- Use .stick_to_bottom(true) in reply + profile editors; remove old spacer hack
- Virtual keyboard toggle moved to F1 in Debug builds
- Introduce SoftKeyboardContext::platform(ctx) helper
- Cleanup dead/commented code and wire up soft_kb_anim_state in Chrome
Result: inputs stay visible, open/close is smooth, and UI adjusts gracefully
when typing.
Signed-off-by: William Casarin <jb55@jb55.com>
- Added `SoftKeyboardContext` enum and support for calculating keyboard
insets from both virtual and platform sources
- Updated `AppContext` to provide `soft_keyboard_rect` for determining
visible keyboard area
- Adjusted UI rendering to shift content when input boxes intersect with
the soft keyboard, preventing overlap
- Modified `MainActivity` and Android manifest to use
`windowSoftInputMode="adjustResize"` and updated window inset handling
- Introduced helper functions (`include_input`, `input_rect`,
`clear_input_rect`) in `notedeck_ui` for tracking focused input boxes
- Fixed Android JNI keyboard height reporting to clamp negative values
Together, these changes allow the app to correctly detect and respond
to soft keyboard visibility on Android, ensuring input fields remain
accessible when typing.
Fixes: https://github.com/damus-io/notedeck/issues/946
Fixes: https://github.com/damus-io/notedeck/issues/1043
We have to tell android not to restart the activity when a dark/light
mode is switched or when the phone is folded/unfolded. Otherwise
it will crash.
Signed-off-by: William Casarin <jb55@jb55.com>
kernelkind (6):
extract notifications filter to own method
add `NotesFreshness` to `TimelineTab`
set fresh from `TimelineCache`
chrome: method to find whether there are unseen notifications
paint unseen indicator
use unseen notification indicator
Changelog-Added: Add notification dot on toolbar
- Moved media related logic into notedeck instead of the ui crate,
since they pertain to Images/ImageCache based systems
- Made RenderableMedia owned to make it less of a nightmware
to work with and the perf should be negligible
- Added a ImageMetadata cache to Images. This is referenced
whenever we encounter an image so we don't have to
redo the work all of the time
- Relpaced our ad-hoc, hand(vibe?)-coded panning and zoom logic
with the Scene widget, which is explicitly designed for
this use case
- Extracted and detangle fullscreen media rendering from inside of note
rendering. We instead let the application decide what action they
want to perform when note media is clicked on.
- We add an on_view_media action to MediaAction for the application to
handle. The Columns app uses this toggle a FullscreenMedia app
option bits whenever we get a MediaAction::ViewMedis(urls).
Signed-off-by: William Casarin <jb55@jb55.com>
- Simplify Localization{Context,Manager} to just Localization
- Fixed a bunch of lifetime issueo
- Removed all Arcs and Locks
- Removed globals
* widgets now need access to &mut Localization for i18n
Signed-off-by: William Casarin <jb55@jb55.com>