Per my comment above I have a prototype of this feature up at https://github.com/chiaracoetzee/fluxer-subprofiles/tree/features/subprofiles based on @haileyscommit's design and it's working well on our home server. It's web/desktop client only not mobile right now. Would need a lot more prep before submitting a proper PR. Supports both GUI subprofile selection and PluralKit-style prefixes, and can import a system from a PluralKit JSON export dump. Tested with a large imported system with 60+ members. Some screenshots below for reference.
imageimageimage
RexSystem1 voteoriginally by @bunnikyuube on GitHub
Hi!! Any instructions for helping with testing? I'd love to put the work into getting this into Fluxer proper but i'm rather inexperienced with actual development testing & etc.
Assuming i'll need to build it but i don't know how to do that from my own knowledge, nor what would be required after that point.
Sorry for the silly questions, but i hope i can help contribute in the end <3
Looks pretty good from the screenshot! Just a few things about design:
I'd ensure that the Import from PluralKit and Add Subprofile buttons look like the rest of the buttons on the platform; right now the icon is above the text instead of on its left. The rounding is also off. Looking at your PluralKit modal commit, it looks like you used plain HTML <button>s, it would be better to use Fluxer's own Button (fluxer_app/src/features/ui/button/Button.tsx) component instead. Same for the other buttons if you did it that way there too.
I'd slightly increase the width of the subprofile switching modal in the second screen so that Last Used doesn't span two lines of text.
Also, I think the vocabulary is a bit inconsistent. In one place we're talking abut "subprofiles", in another it's "personas", and in another it's "subprofiles & personas". I think it should just be "subprofiles", it's the most neutral word that corresponds to the broadest application of this feature imo.
Also, I think the vocabulary is a bit inconsistent. In one place we're talking abut "subprofiles", in another it's "personas", and in another it's "subprofiles & personas". I think it should just be "subprofiles", it's the most neutral word that corresponds to the broadest application of this feature imo.
I'd argue that "personas" would be better to settle on because it's a more distinct name, whereas "subprofiles" could be misinterpreted as server-specific profiles.
@bunnikyuube If you just want to try it you can hop on my development/testing instance at https://chat-dev.hypersystem.xyz/ and try out there. If you want to run your own local instance you can use Fluxer's turnkey Dev Container setup:
Install Visual Studio Code (or Cursor) with the Dev Containers extension (ms-vscode-remote.remote-containers)
Clone the fork and branch and open in VS Code:
git clone -b features/subprofiles https://github.com/chiaracoetzee/fluxer-subprofiles.git
cd fluxer-subprofiles
code .
Reopen in Container:
A popup will appear in the bottom-right corner asking to "Reopen in Container". Click it (or press Ctrl+Shift+P, type "Dev Containers: Reopen in Container").
Docker will build the container and spin up everything, this will take some time.
We decided for now to settle on the "Personas" language (because it's widely-understood and to avoid the issue where "subprofiles" may be confused with server profiles). This isn't the most popular term in the plural community (they prefer "identities") but I think it's clearer to a general audience and we can emphasize in the messaging that this isn't just for fictional roleplay.
Also decided to forego the "proxy" term which only really made sense in the historical PluralKit context which proxied messages through a bot. So instead of "proxy tag" we use "persona tag" or just "tag", and instead of "autoproxy" we use "Active Persona Mode".
Can revisit terminology as needed.
Also did a bunch of style fix-ups, using proper Fluxer Button components, avoiding Discord CSS tags and colors, gave "Last Used" a nowrap, tested in light theme. And haileyscommit did the feature above to show succinctly who a persona belongs to on each message, as well as supporting deep links to persona settings, a slash command for latch control, and a visibility toggle for the persona composer adornment.
imageimageimage
I would suggest not include an Import from PluralKit button. "System Tag" could be revamped. These two features could make the Persona feature very plural-coded, which might not be ideal. IMHO maintaining language neutrality here is crucial.
idk. it reads too plural-coded (as pluralkit is mostly a plural bot) and also it replies on a 3rd party that most people havent even heard of. too niche of an input source vs the supposedly "many-usecase" persona system
PluralKit is used by a lot of people for roleplay and other non-plural-specific use-cases, so I don't think it's a bad thing to have an import for it.
That said, as an alternative, we could instead have our own import/export system and then build a third-party pluralkit-export-to-persona-export converter?
yes, that's what i'm thinking. instead of relying on pluralkit format (which is tailored to mainly systems) we can have a custom import/export format that fits the persona model
Having its own export format is one thing (in case other chat apps copy fluxers system) but I really cannot see how allowing for the native import of PluralKit systems betrays any sense of inclusion to anyone else. It's not language, its a feature. And as far as I'm aware PluralKit and TupperBox is THE defacto implementation of this feature on discord, so supporting input from either would be a large boon in accessibility. Stripping functionality and requiring users to separately "convert" their import data for the sake of.. not sounding too plural-coded? Genuinely sounds bigoted.
implicit conversion can still be done. i do think "not sounding too plural-coded" is a valid concern though. while pluralkit and tupperbox are the de facto standards, i dont think that justifies an Import from PluralKit / Tupperbox button
also, this should probably be moved to its own discussion post? now that an implementation exists, i think a new discussion post with the category of "development" will facilitate this discussion better. @chiaracoetzee
Yeah, to be clear, I do think stripping this functionality in the name of "not sounding too plural-coded" would be a stretch too far. I like having the feature be neutrally-named, because that makes it clear that it's available for whatever use-case you have that needs it, but removing functionality because it means integrating with a solution that has "plural" in the name is a serious stretch.
Regarding the comments above: I agree that the System Tag language (and especially having a separate System Tag on each persona) is not ideal for the more neutral language I'm going for. I'm still workshopping this. I'm also amenable to changing the "Import from PluralKit" button to just "Import" and it will automatically recognize any number of supported import formats including PluralKit json and its own export format, I think that's a good idea.
Thread
Comment by @chiaracoetzee
647626661-6f5bb49a-b736-4409-ba78-86c87d403275.png
622×655 | 73 kB
647626096-1b76487e-8309-4cd0-8808-417eb24618e7.png
598×745 | 81 kB
647626981-ffec720b-2305-4199-86f4-52f0afe3216d.png
1590×1144 | 181 kB
Comment by @bunnikyuube
Comment by @Speykious
- I'd ensure that the
- I'd slightly increase the width of the subprofile switching modal in the second screen so that
Also, I think the vocabulary is a bit inconsistent. In one place we're talking abut "subprofiles", in another it's "personas", and in another it's "subprofiles & personas". I think it should just be "subprofiles", it's the most neutral word that corresponds to the broadest application of this feature imo.Import from PluralKitandAdd Subprofilebuttons look like the rest of the buttons on the platform; right now the icon is above the text instead of on its left. The rounding is also off. Looking at your PluralKit modal commit, it looks like you used plain HTML<button>s, it would be better to use Fluxer's ownButton(fluxer_app/src/features/ui/button/Button.tsx) component instead. Same for the other buttons if you did it that way there too.Last Useddoesn't span two lines of text.Comment by @haileyscommit
Comment by @chiaracoetzee
- Open http://localhost:8088/
If you want to integrate it with your existing local homeserver I'd need to know more about your setup and config.Comment by @haileyscommit
648345950-bedaba60-aa25-43fb-a62e-f22ec1aeffba.png
265×64 | 8 kB
Comment by @chiaracoetzee
648372452-d0bf7e83-9444-4733-b17b-3817d568bf2d.png
597×793 | 82 kB
648372149-392e1f84-347a-4f7e-8508-50639746a77d.png
1966×1168 | 198 kB
648383494-e6cad2a3-24bf-41cb-b8ff-651ca27793b4.png
667×420 | 66 kB
Comment by tempest:squll.fartcore.ai
Comment by @Speykious
Comment by tempest:squll.fartcore.ai
Comment by @Hate9
Comment by tempest:squll.fartcore.ai
Comment by @Enovale
Comment by tempest:squll.fartcore.ai
Comment by tempest:squll.fartcore.ai
Comment by @Hate9
Comment by @chiaracoetzee
Comment by @chiaracoetzee