Commit Graph

87 Commits

Author SHA1 Message Date
William Casarin
9b7ee8d8c5 clippy fixes
Signed-off-by: William Casarin <jb55@jb55.com>
2025-11-04 14:53:10 -08:00
kernelkind
3540290f0a make update return AppResponse instead of Option<AppAction>
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-10-01 21:47:31 -04:00
William Casarin
77ac91e810 Implement soft keyboard visibility on Android
- 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
2025-08-19 11:29:45 -07:00
William Casarin
9cbba37507 debug: add repaint causes debug tool
enable with --debug, click on fps/frame time counter

Signed-off-by: William Casarin <jb55@jb55.com>
2025-08-04 15:04:38 -07:00
William Casarin
3451206f1a dave: switch to logical time
this fixes jumpy animations when we stop rendering

Signed-off-by: William Casarin <jb55@jb55.com>
2025-08-04 11:35:22 -07:00
William Casarin
603de6bbab evolve dave into a swarm
Signed-off-by: William Casarin <jb55@jb55.com>
2025-08-03 23:07:48 -07:00
William Casarin
571bf35109 dave: switch to use standard vertex/index buffers
Fixes: https://github.com/damus-io/notedeck/issues/902
Signed-off-by: William Casarin <jb55@jb55.com>
2025-08-03 20:17:24 -07:00
Fernando López Guevara
ab84304265 feat(settings): show note full date 2025-08-01 08:38:49 -03:00
William Casarin
3d18db8fd2 Fullscreen MediaViewer refactor
- 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>
2025-07-28 08:57:57 -07:00
William Casarin
ff0428550b fix missing zap button
Changelog-Fixed: Fix missing zap button
Fixes: 397bfce817 ("add `Accounts` to `NoteContext`")
Fixes: https://github.com/damus-io/notedeck/issues/1021
Signed-off-by: William Casarin <jb55@jb55.com>
2025-07-23 11:49:03 -07:00
William Casarin
ebf31abafa wallet: remove unused flag in note context
Signed-off-by: William Casarin <jb55@jb55.com>
2025-07-23 09:36:38 -07:00
William Casarin
3d4db820b4 i18n: make localization context non-global
- 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>
2025-07-22 09:49:32 -07:00
Terry Yiu
3f5036bd32 Internationalize user-facing strings and export them for translations
Changelog-Added: Internationalized user-facing strings and exported them for translations
Signed-off-by: Terry Yiu <git@tyiu.xyz>
2025-07-21 12:45:29 -07:00
William Casarin
8a1398face clippy fixes
Signed-off-by: William Casarin <jb55@jb55.com>
2025-07-17 13:54:43 -07:00
William Casarin
461665f599 ui: remove show_pointer
This can just be achieved by on_hover_cursor

Didn't realize this.

Signed-off-by: William Casarin <jb55@jb55.com>
2025-07-16 09:17:27 -07:00
kernelkind
397bfce817 add Accounts to NoteContext
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-14 21:34:02 -04:00
William Casarin
44edffc596 android/input: add copy/paste context to post input
Fixes: https://github.com/damus-io/notedeck/issues/942
Signed-off-by: William Casarin <jb55@jb55.com>
2025-07-11 15:36:56 -07:00
kernelkind
8e92a97a57 make selected accounts non optional
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-07-02 11:41:17 -04:00
William Casarin
400050f3fb Merge remote-tracking branches 'github/pr/877' and 'github/pr/885'
Fernando López Guevara (2):
      fix(content): handle case where notes are not loaded
      feat(app_images): add module to manage static app image assets
2025-06-25 10:30:24 -07:00
Fernando López Guevara
36667bc024 feat(app_images): add module to manage static app image assets 2025-06-25 09:53:31 -07:00
Fernando López Guevara
c6dbb0e856 fix(content): handle case where notes are not loaded 2025-06-24 09:15:52 -07:00
William Casarin
be9406da7b dave: initial android fixes 2025-06-16 16:11:51 -07:00
William Casarin
6812a0e6ae dave: add chrome toggle button
We were missing this, which meant we could get stuck in
dave
2025-06-05 15:39:18 -07:00
William Casarin
b139af475e dave: small cleanup 2025-06-05 14:37:03 -07:00
kernelkind
54c0fdb563 don't show zap button if no wallet
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-17 14:29:43 -04:00
kernelkind
7d2112b472 make Widget impl ProfilePic mutably
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-04 12:57:54 -04:00
kernelkind
a29277d263 propagate JobsCache
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-04 12:55:53 -04:00
kernelkind
e6212e5d17 note: remove unnecessary derive macros from NoteAction
Signed-off-by: kernelkind <kernelkind@gmail.com>
2025-05-04 12:54:38 -04:00
William Casarin
a94cbb2dc0 dave: hide media in dave note previews
it bugs out sometimes

Signed-off-by: William Casarin <jb55@jb55.com>
2025-05-01 20:21:42 -07:00
William Casarin
2539dead1e dave: nudge avatar when you click
Signed-off-by: William Casarin <jb55@jb55.com>
2025-05-01 20:21:30 -07:00
William Casarin
3eb9e30e8f dave: fix sidebar click
Fixes: #837
Signed-off-by: William Casarin <jb55@jb55.com>
2025-05-01 19:54:02 -07:00
William Casarin
514e5748b8 dave: add trial mode
Fixes: #827
Signed-off-by: William Casarin <jb55@jb55.com>
2025-05-01 19:37:45 -07:00
William Casarin
6bbc20471a dave: include anonymous user identifier in api call
- don't include users pubkey

This could be used to associate requests with real users,
rendering the anonymized user_id pointless

TODO: Implement a new tool call that lets dave ask for your pubkey

Fixes: #834
Fixes: #836
Signed-off-by: William Casarin <jb55@jb55.com>
2025-05-01 19:33:33 -07:00
William Casarin
1931eb6558 dave: fix image in readme 2025-04-30 08:49:22 -07:00
William Casarin
1668b3701c dave: add screenshot to readme 2025-04-30 08:44:42 -07:00
William Casarin
e8a1233174 dave: bubble note actions to chrome
This allows chrome to pass note actions to other apps
2025-04-22 18:42:12 -07:00
William Casarin
4cedea9fdb dave: more flexible env config
With this I was able to get openrouter working:

DAVE_API_KEY=$OPENROUTER_API_KEY
DAVE_ENDPOINT=https://openrouter.ai/api/v1
DAVE_MODEL="google/gemini-2.0-flash-001"
RUST_LOG=async_openai=debug,notedeck_dave=debug

./target/release/notedeck
2025-04-22 16:46:38 -07:00
William Casarin
5c0874ab85 dave: give present notes a proper tool response
so the ai know we actually did something
2025-04-22 16:20:26 -07:00
William Casarin
56f5151739 dave: return tool errors back to the ai
So that it can correct itself
2025-04-22 16:05:54 -07:00
William Casarin
9692b6b9fe dave: add query rendering, fix author queries 2025-04-22 10:50:58 -07:00
William Casarin
88aa78dc03 dave: ensure system prompt is included when reset 2025-04-21 17:27:38 -07:00
William Casarin
d4681801e8 dave: add new chat button 2025-04-21 17:10:03 -07:00
William Casarin
0d51e25ab0 dave: improve docs with ai
Signed-off-by: William Casarin <jb55@jb55.com>
2025-04-21 12:48:33 -07:00
William Casarin
6601747eb4 dave: add readme
Signed-off-by: William Casarin <jb55@jb55.com>
2025-04-21 12:26:50 -07:00
William Casarin
2fdb36475a dave: add a few docs
Signed-off-by: William Casarin <jb55@jb55.com>
2025-04-21 12:11:21 -07:00
William Casarin
04a11fd45d dave: cleanly separate ui from logic
This is a good demo of how easy it is to build a notedeck app,
so let's detangle the ui from logic to showcase this

Signed-off-by: William Casarin <jb55@jb55.com>
2025-04-21 12:05:27 -07:00
William Casarin
5811a5f4e6 dave: improve multi-note display 2025-04-20 09:05:02 -07:00
William Casarin
f496d4b8c4 dave: initial note rendering
Signed-off-by: William Casarin <jb55@jb55.com>
2025-04-18 17:03:59 -07:00
William Casarin
d04fc892a7 dave: constrain power for now
we will focus on more specific tools instead
2025-04-17 12:53:31 -07:00
William Casarin
7836bde868 dave: fix input box
Signed-off-by: William Casarin <jb55@jb55.com>
2025-04-17 00:16:55 -07:00