From ef1d78a70714043612b6a754a96982339a12207c Mon Sep 17 00:00:00 2001 From: Kannamoris Date: Sat, 7 Nov 2026 07:27:15 +0100 Subject: [PATCH 1/5] feat: prototype three character switcher designs on Android Runs up to three characters at once on Android, one WebView each, the way desktop gives every tab its own page. MainActivity hosts the WebViews with their own bridge instances, so per-character native state such as the log index never mixes, and a NativeSessions bridge relays each page's state (character, status, unread PMs and mentions) to the others and holds what they must share: the account credentials and the API ticket, since F-List cancels older tickets whenever it issues a new one. The background service now stays up until the last character disconnects. A character added from another page logs in with the shared account and leaves the characters already signed in out of its list; a hidden page behaves like a blurred window so its messages count as unread. The switcher UI is chosen at build time with SWITCHER_DESIGN and -Pswitcher (tabs, drawer or sheet), each installing beside the normal app as Solstice A, B or C: A is a tab strip above the chat like the desktop window, B is a switch-to strip under your character in the left drawer with a dot on the menu button, and C turns the avatar in the chat box into a talking-as sheet. Without the flag the app builds as before. Prototype only: Android, notification taps go to the visible character, and each page keeps its own copy of the app settings. --- chat/ChatView.vue | 8 + mobile/Index.vue | 422 +++++++++++++++++- mobile/SessionCard.vue | 52 +++ mobile/android/app/build.gradle | 9 + .../android/app/src/main/AndroidManifest.xml | 2 +- .../kotlin/net/f_list/fchat/MainActivity.kt | 204 +++++++-- mobile/api-ticket.ts | 12 +- mobile/chat.ts | 8 + mobile/sessions.ts | 142 ++++++ mobile/webpack.config.js | 5 +- 10 files changed, 822 insertions(+), 42 deletions(-) create mode 100644 mobile/SessionCard.vue create mode 100644 mobile/sessions.ts diff --git a/chat/ChatView.vue b/chat/ChatView.vue index 944832c3..fa59110c 100644 --- a/chat/ChatView.vue +++ b/chat/ChatView.vue @@ -45,6 +45,8 @@ + +