2. Text Channels
Text channels are the main place for asynchronous discussion in HakoSpace. This chapter covers the message input box, all the text formatting syntax HakoSpace supports, the actions you can take on messages (reactions, pins, replies, edits, and deletions), and how media and links appear in messages. Every channel prefixed with # follows the same message behavior. The differences include who can see the channel, who can post, whether messages can be edited, deleted, or pinned, and the rules for attachments and message retention (members who hold the Manage channels permission decide these in the channel settings, the owner and admins always included). For forum channels, a special type of channel, see §5.
2.1 Message Input Box
Section titled “2.1 Message Input Box”The message input box is below the message area. By default, it shows the hint text Message #{channel name} (in a direct message, it shows Message). The basics:
- Type your message and press Enter to send it.
- Press Shift + Enter to start a new line (without sending).
- When you pick characters with an input method such as Zhuyin, the Enter and Esc you press are used only to pick characters; they don’t send the message.
- A single message can be up to 10,000 characters long.
- The input box grows taller automatically as you type more, and once it reaches a certain height, it scrolls internally instead.
Next to the input box is a row of tool buttons:
- Attach file: click to open your device’s file picker and upload images, documents, or other files. You can select several at once.
- Insert sticker: opens the sticker picker, where you choose a sticker from the server’s packs or your personal packs to insert into the message.
- Formatting help: click to pop up the Formatting & Features card, which lists all the Markdown syntax HakoSpace supports (see §2.2).
- Show preview / Hide preview: turns a live preview of your input on or off, so you can see how the formatting looks before you send.
The send button is on the right of the input box. While a message is sending, the button changes to a loading animation, which prevents you from sending twice.
You can attach up to 10 files to one message. There are three ways to add files:
- Click Attach file, and choose one or more files in the file picker.
- Drag files onto the message list or the input box and drop them there (see “Dragging and dropping files” below).
- Paste into the message input box: images on the clipboard (such as screenshots) and other files are added. When you paste only text or a link, it goes into the input box as usual.
Files you add wait first in the pending area above the input box, and they’re uploaded only when you send the message. If a file is blocked, the screen tells you why (see “When files aren’t added” below).
How the pending area looks:
- Image attachments: shown as thumbnails.
- Other file attachments: shown with a file icon, the file name, and the size.
- Each attachment has an X in its top-right corner. Click it to remove that attachment from the pending area.
- Below the row of attachments is a Mark as Spoiler button. Next to it, the number of attachments and the limit appear in a format like
3/10. When you reach the limit, the Attach file button grays out.
Spoiler marking applies to the whole message. Once you mark a message as a spoiler, all of its attachments are covered, including the file cards of non-image files, so even the file names are hidden. One click from a viewer reveals them all. The text on the Mark as Spoiler button doesn’t change; its color shows whether the marking is currently on or off.
Dragging and dropping files: Both HakoSpace Desktop and HakoSpace Web let you attach files by dragging and dropping them. Drag files in from a folder window or your computer’s desktop, and drop them on the message list or the input box. You can drag several at once. You can attach files this way in text channels, direct messages, and the text chat area of voice channels, and also when you reply in a forum post.
While you’re dragging files in and haven’t dropped them yet, an overlay covers the message list and the input box. It says “Drop to attach”, with “Up to 10 per message” on the line below. When the pending area already has files, that line changes to, for example, “Up to 10 per message · 3 attached”. When you drop the files, they only go into the pending area and aren’t sent yet, so you can go on to type the text you want to send with them.
When files can’t be attached at that moment, the overlay changes to “Cannot attach here”, with the reason on the line below. If you drop the files then, nothing is added. The reason can be:
- “Already at the 10-attachment limit”: the pending area is full.
- “Uploading…”: you’ve pressed send, and the files are still uploading.
- “Sending is disabled in this channel”: this channel doesn’t currently let you send messages.
- “Uploading files is turned off in this channel”: this channel doesn’t currently let you upload files.
- “This post is archived. Replies are closed.” or “This post is locked. Only admins can reply.”: the forum post’s status restricts replies (see §5.4).
When files aren’t added: If the overlay says “Cannot attach here” while you’re dragging, the reason is written on the overlay itself (see “Dragging and dropping files” above). At other times, whether you choose files with Attach file, paste them, or drop files you dragged in, a red banner appears above the input box to explain why whenever a file is blocked.
These explanations on the banner disappear on their own after a few seconds, or you can click X to close them sooner. The explanations you may see include:
- “Up to 10 attachments per message — the rest were not added.”: anything beyond 10 files wasn’t added.
- “File type {extension} is not allowed.”: the server doesn’t accept files with this extension.
- “Too large for this channel (up to {limit} per file), not added: {filenames}”: the file is larger than the per-file size this channel allows.
- “Already attached, not added again: {filenames}”: a file that’s already in the pending area isn’t added a second time when you choose it or drag it in again.
- “Folders cannot be attached.”: a folder you drag in isn’t attached; other files dragged in at the same time are added as usual.
- “Uploading files is turned off in this channel”: files you paste aren’t added. In this case the Attach file button is also grayed out, and resting the pointer on it shows the same sentence.
If you’re replying to a message, a reply bar appears above the input box, showing Replying to, the other person’s name, and a preview of the message you’re replying to. Click the X button at the right end of the bar to cancel the reply and go back to posting normally.
Layout when the input box is narrow: The input box has the whole top row to itself, the tool buttons move to a row below it, and the send button stays fixed on the right. The toolbar is always one row high. When there isn’t enough space, you can scroll the whole row left and right; a button at the edge then shows only halfway, fading out in a gradient, to hint that there’s more in that direction. The send button doesn’t get pushed out of the way.
When a message isn’t sent: If a message fails before it’s sent (for example, because you’re not connected or an attachment failed to upload), a red banner appears above the input box to explain why, and the text you typed and the files you attached all stay in the input box. Common reasons include not being connected (“Not connected — nothing was sent. Your message is still here.”; with attachments, “Not connected — nothing was sent. Your attachments are still attached, so sending again will not re-upload them.”) and attachments blocked by the channel’s file space settings (“Upload refused — nothing was sent:” followed by the reason). The banner stays until you click X to close it or your next message is sent successfully.
If the server rejects a message after it’s been sent, the message is marked (failed to send) or (failed) in the message list, and a separate notice appears above the input box: “The server did not accept this message:” followed by the reason. The notice disappears on its own after a few seconds, or you can click X to close it. The exception is a message blocked because it contains a word the server has banned: that message disappears from the message list, and the notice reads “Your message contains a banned word and cannot be sent.” instead.
“Upload refused — nothing was sent:” is followed by one of these three reasons: “Uploading files is turned off in this channel”, “Over this channel’s per-file limit ({limit})”, or “Not enough room in this channel’s file space (limit {limit})”. When an upload fails for another reason, the banner shows the server’s reply word for word, or “Upload failed — nothing was sent.” “The server did not accept this message:” can also be followed by one of these three reasons; other reasons are shown as the server’s reply, word for word. For these channel settings, see Admin Manual §2.1.
2.2 Text Formatting and Markdown Syntax
Section titled “2.2 Text Formatting and Markdown Syntax”HakoSpace messages support Markdown-style text formatting. Here is the full inline syntax:
| Syntax | Effect |
|---|---|
@username |
Mention a user |
**text** |
Bold |
*text* |
Italic |
***text*** |
Bold italic |
~text~ |
|
||text|| |
Spoiler / hidden text (click to reveal) |
`text` |
Inline code |
{font:FontName}text{/font} |
Custom font region (special text effects in a different font) |
Spoiler text: Content wrapped in || is fully covered by a solid block until it’s revealed. The block covers the text itself, together with any links, mentions, inline code, and emoji inside it, and links inside the block can be clicked only after it’s revealed. If a link preview card appears below the message, the preview card isn’t covered. Click the block once to reveal it. With the keyboard, press Tab to move to the block, then press Enter or Space.
Besides the inline syntax, HakoSpace also supports the following Markdown block syntax:
- Headings:
# Level 1to###### Level 6 - Quotes:
> Quoted text - Bulleted lists:
- Itemor* Item - Numbered lists:
1. Item,2. Item, … - Multi-line code blocks: wrap the content with three backticks ``` at the start and the end, optionally adding a language name. When the content is too wide, the code block itself scrolls left and right. Everything else in a message (long URLs, long nicknames, wide images) always wraps or shrinks to fit its container; only code blocks keep left-and-right scrolling, because forced line wrapping would break the indentation
- Horizontal rules:
---
If you forget the syntax, click the Formatting help button next to the message input box to look it up at any time.
2.3 Message Actions
Section titled “2.3 Message Actions”When you move the mouse over a message, an action bar appears at the top right of the message. On mobile devices, long-press the message instead (about 0.5 seconds) to bring up the same menu, with a light haptic vibration. From left to right, the action bar contains:
- Add Reaction: click to open the emoji picker. Choose from the quick emoji (👍 ❤️ 😂 😮 😢 🎉 🔥 👀 💯 🙏), or click the icon to open the full picker and find other emoji.
- Pin / Unpin: pins the message to the top of the channel, or unpins it. A pinned message gets a small pin icon, so you can recognize it in the message stream later.
- Reply: replies to the message, quoting it. The reply bar appears above the input box (see §2.1). Once you send your message, it carries a small quote box above it (the author and content of the message you replied to). Click the quote box to scroll to the quoted message automatically.
- Edit: you can edit only your own messages. In edit mode, the input box takes the place of the original message, and the hint “escape to Cancel • enter to Save” appears below it. An edited message shows an (edited) label.
- Delete: click to open a confirmation dialog; the message is deleted only after you click the red confirmation button. A deleted message disappears from the message stream entirely, without leaving a “this message was deleted” placeholder.
Reactions appear below the message as a row of small pills. Each pill shows an emoji and the number of people who’ve added it. Reactions you’ve added are highlighted in the accent color. Click the same pill again to remove your reaction, or click a pill you haven’t chosen to add that reaction. Rest the pointer on a pill to see which members added that reaction.
2.4 Images, Files, and Links
Section titled “2.4 Images, Files, and Links”Messages can carry many kinds of media and link content:
- Images (
.png/.jpg/.jpeg/.gif/.webp): the message shows a scaled-down version, which loads quickly and uses less data. Click it to open the original in the full-screen image viewer. Images reserve their place in the layout before they finish loading, so the messages below aren’t pushed down while they load. Consecutive images in the same message are grouped into a grid, while file cards stay in their original order. - Spoiler images: when you send images, you can mark them as a spoiler. The images then show as a blurred preview, and the original is revealed only when clicked (see §2.1).
- Other files: when a message carries a file that isn’t an image, it appears as a file card that shows a file icon, the file name, a type badge, and a download button. Click the card to open or download the file. The file name shown is the original name from when the file was uploaded. The type badge comes from the file the server actually stores, and when the size is known, it’s shown too (for example,
PDF · 1.2 MB). - Links: URLs in messages turn into clickable links automatically. If the website supports previews, a URL preview card appears below the message, with the site name, title, description, and cover image.
- Stickers: when a message contains only 1–3 stickers and no other text, they’re shown at a large size; mixed into a text message, they’re shown at a small size. A sticker that has been deleted is replaced by a placeholder image (the original image no longer shows).
Removed files: Text channels and voice channels can set When the file space is full to Remove the oldest files (see Admin Manual §2.1). After a file is removed, the message itself stays, and the file’s place is taken by a small card that shows an icon, the file name, and “Removed by this channel’s file space rules · {date}”, where the date is the day the file was removed. The icon is an image with a slash through it (if it was an image) or a file with an X (if it was a file). In a grid of grouped images, the removed cell shows only the icon and this line. The image viewer moves only between the images that remain.
Images that fail to load: When an image fails to load, its place is taken by a small card that shows an image icon with a slash through it, the file name, and “Couldn’t load this file”. In a grid of grouped images, a cell that fails to load shows only the icon and this line.
Using the image viewer: Click an image in a message to open the full-screen image viewer. When a message has several images, the bottom of the screen shows which image you’re on and how many there are in total, and there are arrows on both sides for switching between them.
With a mouse or touchpad, the button bar at the top contains, from left to right: Zoom in, Zoom out, the current zoom level (click it to return to the original size), Download, Open original, and Close. You can also:
- Use the scroll wheel to zoom, centered on the pointer. Scrolling over the dark background outside the image works too. Pinching with two fingers on a touchpad zooms the image as well.
- When zoomed in, hold down the left button and drag to pan; the pointer changes to a grabbing hand.
- Double-click to switch between the original size and zoomed in, centered on where you click.
- Keyboard:
+zooms in,-zooms out,0returns to the original size, andShift+ arrow keys pan. The arrow keys switch to the previous / next image, andEsccloses the viewer.
On touch devices, the button bar at the top has only Download and Close; you zoom and switch images with gestures instead:
- Pinch with two fingers to zoom, centered between your fingers.
- When zoomed in, drag with one finger to pan.
- Double-tap to switch between the original size and zoomed in.
- Swipe up or down to close; the image follows your finger while the background fades out.
- When not zoomed in, swipe left or right to switch to the previous / next image.
Panning has boundaries, so the image doesn’t get dragged off the screen.