Skip to content

Commit

Permalink
minor tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
hearmeneigh committed Jul 6, 2024
1 parent ad0aa7d commit e11f833
Show file tree
Hide file tree
Showing 14 changed files with 216 additions and 33 deletions.
25 changes: 11 additions & 14 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
# Changelog

## Canary
* 'Non-binary' kink is now respected in gender matching (credit: [@FatCatClient](https://github.com/FatCatClient))
* OpenMoji is now treated as a fallback font (credit: [@FatCatClient](https://github.com/FatCatClient))
* Added two new UI themes: 'Dracula', and 'Dark Dimmed' (credit: [@FatCatClient](https://github.com/FatCatClient))

* Add high-quality portraits to Profile Helper
* FBot should always be a UNICORN match
* FBot should have extra buttons to help one-handed
* FBot should show up in Search Results... if online
* Remove broadcasts from logs; maybe into a dialog? where do we store them tho? At least shouldn't orange-highlight all convos
* Update e-icons
## Next?
* Merge Ad Editor and Post Ads?
* Notify when bookmark/friend says something on a channel?
* Fix image previews (redgifs?)
* Fix Yiffbot portrait updates
* Address scoring issues per FCR Notes
* Remove broadcasts from logs; maybe into a dialog? where do we store them tho? At least shouldn't orange-highlight all convos
* Notify when bookmark/friend says something on a channel?
* Clicking a log entry opens the conversation at that point

## 1.27.0
* 'Non-binary' kink is now respected in gender matching (credit: [@FatCatClient](https://github.com/FatCatClient))
* OpenMoji is now treated as a fallback font (credit: [@FatCatClient](https://github.com/FatCatClient))
* Added two UI themes: 'Dracula', and 'Dark Dimmed' (credit: [@FatCatClient](https://github.com/FatCatClient))
* Each character can now set its own UI theme (credit: [@Nensec](https://github.com/Nensec))
* Bugfix: Characters with 'None' gender are no longer considered a mismatch against other genders
* Fixed Redgifs previews (again)

## 1.26.2
* Fixed a few cases where high-quality portraits were not displayed

Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ This project contains contributions from:
* [WhiteHusky](https://github.com/WhiteHusky)
* [Abeehiltz](https://github.com/Abeehiltz)
* [greyhoof](https://github.com/greyhoof)
* [Nensec](https://github.com/Nensec)
* [F-List Team](https://github.com/f-list) (original F-Chat 3.0 client)


Expand Down
18 changes: 9 additions & 9 deletions bbcode/EIconSelector.vue
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ export default class EIconSelector extends CustomDialog {
case 'expressions':
return ['coolemoji', 'coughing emoji', 'flushedemoji', 'eyerollemoji', 'cryinglaughing', 'grinning emoji', 'party emoji',
'pensiveemoji', 'lipbite emoji', 'nauseous emoji', 'angryemoji', 'love2', 'clapemoji', 'heart eyes', 'kissing heart',
'flusteredcowboy', 'cowemoji', 'eggplantemoji', 'peachemoji', 'melting emoji', 'poopy', 'thinkingemoji', 'triumphemoji',
'cowemoji', 'eggplantemoji', 'peachemoji', 'melting emoji', 'poopy', 'thinkingemoji', 'triumphemoji',
'uwuemoji', 'voremoji', 'skullemoji', 'smugemoji', 'heartflooshed', 'blushpanic', 'fluttersorry', 'snake emoji', 'horseeyes', 'thehorse',
'catblob', 'catblobangery', 'splashemoji', 'tonguemoji', 'blobhugs', 'lickscreen', 'eyes emoji', 'nerdmeme', 'horsepls',
'e62pog', 'thirstytwi', 'bangfingerbang', 'chefs kiss', 'excuse me', 'psychopath', 'ashemote3', 'whentheohitsright',
Expand All @@ -158,7 +158,7 @@ export default class EIconSelector extends CustomDialog {
'suitclubs', 'suitdiamonds', 'suithearts', 'suitspades', 'chainscuffs',
'num-1', 'num-2', 'num-3', 'num-4', 'num-5', 'num-6', 'seven', 'eight', '9ball',
'discordeye', 'streamlive', 'check mark', 'x mark', 'question mark', 'lubimark', 'questget',
'music', 'cam', 'phone', 'speaker emoji', 'laptop',
'music', 'cam', 'speaker emoji', 'laptop',
'naughtyfood', 'open2', 'dont look away', 'milkcartonreal', ];
case 'bubbles':
Expand All @@ -168,26 +168,26 @@ export default class EIconSelector extends CustomDialog {
'buttslutbb', 'notgayoranything', 'onlyfans', 'horsecockneed', 'crimes', 'breed143', 'nagagross', 'willrim', 'muskslut',
'4lewdbubble', 'shimathatlewd', 'hypnosiss', 'imahypnoslut', 'sheepsass2', 'imahugeslut', 'notahealslut', 'ratedmilf',
'ratedstud', 'ratedslut', '5lewdbubble', 'xarcuminme', 'xarcumonme', 'choke me', 'iamgoingtopunchyou', 'snapmychoker',
'rude1', 'fuckbun', 'iamindanger', 'elves', 'sluttery', 'helpicantstopsuckingcocks', 'talkpooltoy', 'thatskindahot', 'ygod',
'simpbait', 'eyesuphere', 'fuckpiggy', 'peggable2', 'sydeanothere', 'nothingcan', 'pawslut', 'stupidboys', 'corpsestare-',
'rude1', 'fuckbun', 'iamindanger', 'elves', 'helpicantstopsuckingcocks', 'talkpooltoy', 'thatskindahot', 'ygod',
'simpbait', 'eyesuphere', 'fuckpiggy', 'peggable2', 'sydeanothere', 'nothingcan', 'pawslut', 'corpsestare-',
'dinnersex', 'plappening', 'fallout-standby', 'inbagg', 'request denied', 'goodboy0', 'goodending', 'milky2', 'howbadcanibe',
'gwanna', 'spitinmouth', 'bathwater'];
case 'sexual':
return ['kissspink', 'paytonkiss', 'coralbutt4', 'capstrip', 'pinkundress', 'collaredpet', 'jhab1', 'caninelover', 'pole',
'rorobutt2', 'fingerlick', 'lapgrind', 'jackthighs', 'a condom', 'wolf abs', 'musclefuck2', 'verobutt3', 'bumsqueeze',
'realahegao4', 'influencerhater', 'assfucker', 'gagged2', 'ballsack3', 'fingerblast3', 'sloppy01', 'sybian',
'rorobutt2', 'fingerlick', 'lapgrind', 'jackthighs', 'a condom', 'wolf abs', 'musclefuck2', 'verobutt3',
'realahegao4', 'influencerhater', 'gagged2', 'ballsack3', 'fingerblast3', 'sloppy01', 'sybian',
'floppyhorsecock', 'blackshem1', 'fingersucc', 'vullylick', 'fingersucc', 'cmontakeit', 'jessi flash', 'poju-butt',
'cheegrope2', 'patr1', 'ahega01 2', 'handjob1nuke', 'harmanfingers', '2buttw1', 'dropsqueeze',
'lixlove', 'bbctitjob6', 'appreciativetease', 'bimbowhisper', 'subj3', 'salivashare', 'ballsworship3', 'wolfsknot2', 'gaykiss',
'slurpkiss', 'absbulge', 'cockiss', 'horsedick11', 'knotknotknot', 'g4ebulge', 'blackadamrough', 'knotdog', 'flaunt', 'cummiefj', 'lovetosuck',
'worship', 'hopelessly in love', 'knotts', 'cockloveeee', 'donglove', 'knotjob2', 'cummz', 'every drop', 'edgyoops',
'worship', 'hopelessly in love', 'cockloveeee', 'donglove', 'knotjob2', 'cummz', 'every drop', 'edgyoops',
'orccummies2', 'oralcreampie100px', 'horseoral9a', 'swallowit', 'realahegao4', 'gayicon2', 'slut4', 'hossspurties2', 'cumringgag',
'jillbimbogiffell2'];
case 'memes':
return ['guncock', 'michaelguns', 'watchbadass', 'gonnabang', 'flirting101', 'monkeymeme', 'monkeymeme2', 'loudnoises',
'nyancat', 'gayb', 'fortasshole', 'dickletsign', 'sausageface', 'siren0', 'apologize to god', 'jabbalick', 'zeldawink',
return ['guncock', 'michaelguns', 'watchbadass', 'gonnabang', 'flirting101', 'loudnoises',
'nyancat', 'gayb', 'fortasshole', 'dickletsign', 'hotdogface', 'siren0', 'apologize to god', 'jabbalick', 'zeldawink',
'whatislove', 'surprisemothafucka', 'females', 'thanksihateit', 'hell is this', 'confused travolta', 'no words', 'coffindance',
'homelander', 'thatsapenis', 'pennyhee', 'kermitbusiness', 'goodbye', 'rickle', 'shiamagic', 'oag', ];
Expand Down
47 changes: 45 additions & 2 deletions chat/CharacterSearch.vue
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,13 @@
import CharacterSearchHistory from './CharacterSearchHistory.vue';
import { Matcher } from '../learn/matcher';
import {
Gender,
kinkMatchScoreMap,
kinkMatchWeights,
nonAnthroSpecies,
nonAnthroSpecies, Orientation,
Species,
speciesMapping,
speciesNames
speciesNames, TagId
} from '../learn/matcher-types';
import { CharacterCacheRecord } from '../learn/profile-cache';
import Bluebird from 'bluebird';
Expand Down Expand Up @@ -273,6 +274,34 @@
console.log('Done!');
}
getYiffBotCompatibleGender(): Character.Gender {
const g = Matcher.getTagValueList(TagId.Gender, core.characters.ownProfile.character);
const o = Matcher.getTagValueList(TagId.Orientation, core.characters.ownProfile.character);
if (o === Orientation.Straight || o === Orientation.Unsure || _.isNil(o)) {
if (g === Gender.Male) {
return 'Female';
}
if (g === Gender.Female) {
return 'Male';
}
}
if (o === Orientation.Gay && g) {
return g === Gender.Male ? 'Male' : 'Female';
}
if (o === Orientation.BiFemalePreference) {
return 'Female';
}
if (o === Orientation.BiMalePreference) {
return 'Male';
}
return _.sample(['Male', 'Female']) as Character.Gender;
}
@Hook('mounted')
mounted(): void {
Expand Down Expand Up @@ -311,6 +340,16 @@
this.hasReceivedResults = true;
this.results = results;
if (this.isYiffBot4000Online()) {
const char = core.characters.get('YiffBot 4000');
(char as any).status = 'looking';
(char as any).gender = this.getYiffBotCompatibleGender();
(char as any).statusText = 'Try AI play with any gender, orientation & kink!';
this.results.push({ character: char, profile: core.cache.profileCache.getSync('YiffBot 4000') });
}
this.resort(results);
});
Expand Down Expand Up @@ -548,15 +587,19 @@
this.shouldShowAvatar = core.state.settings.risingShowPortraitInMessage;
this.results = [];
this.state = 'results';
this.error = '';
const data: Connection.ClientCommands['FKS'] & {[key: string]: (string | number)[]} = {kinks: []};
for(const key in this.data) {
const item = this.data[<keyof SearchData>key]; // SearchData is correct
if(item.length > 0 && key !== 'bodytypes')
data[key] = key === 'kinks' ? (<SearchKink[]>item).map((x) => x.id) : (<string[]>item);
}
core.connection.send('FKS', data);
// tslint:disable-next-line
Expand Down
46 changes: 45 additions & 1 deletion chat/ConversationView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@
<a class="btn btn-sm btn-light" style="position:absolute;right:5px;top:50%;transform:translateY(-50%);line-height:0;z-index:10"
@click="hideSearch"><i class="fas fa-times"></i></a>
</div>
<div class="yiffbot-controls" v-if="isYiffBot()">
<div class="btn-group">
<div class="btn btn-sm btn-outline-secondary" @click="onYiffBotContinuePost">#continue</div>
<div class="btn btn-sm btn-outline-secondary" @click="onYiffBotRetryPost">#retry</div>
</div>
</div>
<div class="auto-ads" v-show="isAutopostingAds()">
<h4>{{l('admgr.activeHeader')}}</h4>
<div class="update">{{adAutoPostUpdate}}</div>
Expand Down Expand Up @@ -201,7 +207,7 @@
import CharacterAdView from './character/CharacterAdView.vue';
import {Editor} from './bbcode';
import CommandHelp from './CommandHelp.vue';
import { characterImage, errorToString, getByteLength, getKey } from './common';
import { characterImage, errorToString, getByteLength, getKey, Message } from './common';
import ConversationSettings from './ConversationSettings.vue';
import ConversationAdSettings from './ads/ConversationAdSettings.vue';
import core from './core';
Expand Down Expand Up @@ -698,6 +704,36 @@
const member = conv.channel.members[core.connection.character];
return member !== undefined && member.rank > Channel.Rank.Member;
}
isYiffBot(): boolean {
if (!this.isPrivate(this.conversation)) {
return false;
}
return this.conversation.character.name === 'YiffBot 4000';
}
async onYiffBotContinuePost(): Promise<void> {
if (!this.isPrivate(this.conversation)) {
return;
}
const conv = (<Conversation.PrivateConversation>this.conversation);
await conv.sendMessageEx('#continue');
await this.messageAdded(this.conversation.messages as Message[]);
}
async onYiffBotRetryPost(): Promise<void> {
if (!this.isPrivate(this.conversation)) {
return;
}
const conv = (<Conversation.PrivateConversation>this.conversation);
await conv.sendMessageEx('#retry');
await this.messageAdded(this.conversation.messages as Message[]);
}
}
</script>

Expand Down Expand Up @@ -1052,4 +1088,12 @@
min-width: 1.2em;
max-width: 1.2em;
}
.yiffbot-controls {
.btn-group {
margin-left: 70px;
margin-top: 10px;
margin-bottom: 10px;
}
}
</style>
26 changes: 26 additions & 0 deletions chat/conversations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,32 @@ class PrivateConversation extends Conversation implements Interfaces.PrivateConv
return state.savePinned();
}

public async sendMessageEx(messageText: string): Promise<void> {
if(this.character.status === 'offline') {
this.errorText = l('chat.errorOffline', this.character.name);
return;
}

if(this.character.isIgnored) {
this.errorText = l('chat.errorIgnored', this.character.name);
return;
}

await Conversation.conversationThroat(
async() => {
await Conversation.testPostDelay();

core.connection.send('PRI', {recipient: this.name, message: messageText});
core.cache.markLastPostTime();

const message = createMessage(MessageType.Message, core.characters.ownCharacter, messageText);
this.safeAddMessage(message);

if(core.state.settings.logMessages) await core.logs.logMessage(this, message);
}
);
}

protected async doSend(): Promise<void> {
await this.logPromise;
if(this.character.status === 'offline') {
Expand Down
2 changes: 2 additions & 0 deletions chat/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ export namespace Conversation {
export interface PrivateConversation extends TabConversation {
readonly character: Character
readonly typingStatus: TypingStatus

sendMessageEx(text: string): Promise<void>;
}

export interface ChannelConversation extends TabConversation {
Expand Down
2 changes: 1 addition & 1 deletion chat/preview/image-dom-mutator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ export class ImageDomMutator {
this.add('sexbot.gallery', this.getBaseJsMutatorScript(['video.hero', 'video']));
this.add('imagefap.com', this.getBaseJsMutatorScript(['.image-wrapper img', 'video', 'img']));
this.add('myhentaicomics.com', this.getBaseJsMutatorScript(['#entire_image img', 'video', 'img']));
this.add('redgifs.com', this.getBaseJsMutatorScript(['video'], true, [], false, true));
this.add('redgifs.com', this.getBaseJsMutatorScript(['video'])); // , true, [], false, true));
this.add('furaffinity.net', this.getBaseJsMutatorScript(['#submissionImg', 'video', 'img']));
this.add('rule34.paheal.net', this.getBaseJsMutatorScript(['#main_image', 'video', 'img']));
this.add('xhamster.com', this.getBaseJsMutatorScript(['#photo_slider video', '#photo_slider img', 'video', 'img']));
Expand Down
2 changes: 1 addition & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ changelog: https://github.com/hearmeneigh/fchat-rising/blob/master/CHANGELOG.md
installurl: https://github.com/hearmeneigh/fchat-rising/wiki

download:
version: 1.26.2
version: 1.27.0

url: https://github.com/hearmeneigh/fchat-rising/releases/latest/download/F-Chat-Rising-%PLATFORM_TAIL%

Expand Down
2 changes: 1 addition & 1 deletion electron/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fchat",
"version": "1.26.2",
"version": "1.27.0",
"author": "The F-List Team and Mister Stallion (Esq.)",
"description": "F-List.net Chat Client",
"main": "main.js",
Expand Down
Loading

0 comments on commit e11f833

Please sign in to comment.