@@ -125,7 +122,7 @@ const saveSettings = () => {
+
+ Documentation
+
+
+
+
Text Channels
+
+
+
+
+ Direct Messages
+
+
+
+
+
-
+
-
-
-
+
+
+
+
{{ username?.substring(0, 2).toUpperCase() }}
-
+
{{ username }}
@@ -177,10 +225,13 @@ const saveSettings = () => {
#{{ walletAddress?.slice(-4) }} •
{{ chatStore.balance }} $PLEXUS
-
+
@@ -188,18 +239,52 @@ const saveSettings = () => {
-
+
+
+
+
+
{{ showProfile ? (selectedProfileAddress === walletAddress ? 'My Profile' : 'User Profile') : currentChannel }}
+
+
+
+
+
+
+
+
+
+
-
-
{{ showProfile ? (selectedProfileAddress === walletAddress ? 'My Profile' : 'User Profile') : currentChannel }}
@@ -208,17 +293,220 @@ const saveSettings = () => {
v-if="showProfile"
:address="selectedProfileAddress"
/>
-
{ selectedProfileAddress = addr; showProfile = true; }"
- />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/DocsView.vue b/client/src/components/DocsView.vue
new file mode 100644
index 0000000..ccd2cbf
--- /dev/null
+++ b/client/src/components/DocsView.vue
@@ -0,0 +1,72 @@
+
+
+
+ Welcome to Plexus
+
+
+
+ 👋 Introduction
+
+ Plexus is a next-generation crypto-native social layer. Connect your wallet, chat in real-time, and earn $PLEXUS for your contributions.
+
+
+
+
+ ⚖️ The Rules of the Room
+
+ - Be respectful to other degens.
+ - No spam or repetitive shills in main channels.
+ - Alpha is rewarded; noise is filtered.
+ - Your wallet is your identity. Guard it well.
+
+
+
+
+ 💰 Token Economy
+
+ Every user starts with 100 $PLEXUS.
+
+
+
+
Earning
+
Receive reactions (Coming soon), participate in discussions, and contribute alpha to boost your balance.
+
+
+
Spending
+
Updating your username costs 30 $PLEXUS. Quality costs, alpha pays.
+
+
+
+
+
+ 🤖 AI Summaries
+
+ Feeling overwhelmed? Use the AI Summary button in any channel to get a high-signal brief of everything you missed.
+
+
+
+
+ ❓ FAQ
+
+
+
How do I change my profile?
+
Head to "My Profile" in the sidebar to update your bio and banner color.
+
+
+
Why did my message turn red?
+
A red status indicates a transaction failure or connection issue. Try refreshing!
+
+
+
+
+
+
+
diff --git a/client/src/components/MessageList.vue b/client/src/components/MessageList.vue
index da05392..24da011 100644
--- a/client/src/components/MessageList.vue
+++ b/client/src/components/MessageList.vue
@@ -2,17 +2,19 @@
import { ref, onUpdated, nextTick } from 'vue';
import { useChatStore } from '../stores/chat';
import { storeToRefs } from 'pinia';
-import { Send, Hash, Smile } from 'lucide-vue-next';
+import { Send, Hash, Smile, ExternalLink, Copy, Check } from 'lucide-vue-next';
const chatStore = useChatStore();
const { currentMessages, currentChannel, walletAddress } = storeToRefs(chatStore);
const newMessage = ref('');
const messagesContainer = ref(null);
-const showEmojiPicker = ref(null); // messageId
+const showEmojiPicker = ref(null);
+const copiedTxId = ref(null);
-const EMOJIS = ['👍', '❤️', '🔥', '😂', '😮', '😢'];
+const EMOJIS = ['👍', '❤️', '🔥', '😂', '😮', '😢', '🚀', '💎'];
const toggleReaction = (messageId, emoji) => {
+ console.log('Toggling reaction:', messageId, emoji);
chatStore.toggleReaction(messageId, emoji);
showEmojiPicker.value = null;
};
@@ -51,18 +53,21 @@ const formatTime = (isoString) => {
return new Date(isoString).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
};
+const copyTxId = (txId) => {
+ navigator.clipboard.writeText(txId);
+ copiedTxId.value = txId;
+ setTimeout(() => { copiedTxId.value = null; }, 2000);
+};
+
const emit = defineEmits(['view-profile']);
-
+
@@ -88,9 +93,12 @@ const emit = defineEmits(['view-profile']);
-
+
{{ formatTime(msg.timestamp) }}
-
-
+
-
- {{ msg.content }}
+
+
+
+ {{ msg.content }}
+
+
+
+
+
+
+ {{ msg.txId.slice(0, 8) }}
+
+
+
+
+
+
+
+
+
+ ⚠️ Transaction failed - message not saved