All cybrespace changes through 5/28

This commit is contained in:
Chronister 2017-05-29 00:09:12 +00:00 committed by beatrix-bitrot
parent 23451f1066
commit 2edadd7fe7
27 changed files with 132 additions and 82 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View file

@ -140,7 +140,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
<div className='status__action-bar'> <div className='status__action-bar'>
<IconButton className='status__action-bar-button' title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} /> <IconButton className='status__action-bar-button' title={replyTitle} icon={replyIcon} onClick={this.handleReplyClick} />
<IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /> <IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />
<IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /> <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='floppy-o' onClick={this.handleFavouriteClick} />
<div className='status__action-bar-dropdown'> <div className='status__action-bar-dropdown'>
<DropdownMenu items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' /> <DropdownMenu items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel='More' />

View file

@ -10,19 +10,19 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
const messages = defineMessages({ const messages = defineMessages({
heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' }, heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' }, home_timeline: { id: 'tabs_bar.home', defaultMessage: '/timelines/home' },
notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' }, notifications: { id: 'tabs_bar.notifications', defaultMessage: '~/.notifications' },
public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' }, public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: '/timelines/federated' },
navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' }, navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' },
settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' }, settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: '/timelines/local' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: '~/.follow-requests' },
sign_out: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, sign_out: { id: 'navigation_bar.logout', defaultMessage: 'exit' },
favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, favourites: { id: 'navigation_bar.favourites', defaultMessage: '~/.florps' },
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, blocks: { id: 'navigation_bar.blocks', defaultMessage: '~/.blocked' },
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: '~/.muted' },
info: { id: 'navigation_bar.info', defaultMessage: 'Extended information' }, info: { id: 'navigation_bar.info', defaultMessage: '/about/more' },
}); });
const mapStateToProps = state => ({ const mapStateToProps = state => ({
@ -65,7 +65,7 @@ export default class GettingStarted extends ImmutablePureComponent {
} }
navItems = navItems.concat([ navItems = navItems.concat([
<ColumnLink key='4' icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />, <ColumnLink key='4' icon='floppy-o' text={intl.formatMessage(messages.favourites)} to='/favourites' />,
]); ]);
if (me.get('locked')) { if (me.get('locked')) {

View file

@ -39,7 +39,7 @@ export default class Notification extends ImmutablePureComponent {
<div className='notification notification-favourite'> <div className='notification notification-favourite'>
<div className='notification__message'> <div className='notification__message'>
<div className='notification__favourite-icon-wrapper'> <div className='notification__favourite-icon-wrapper'>
<i className='fa fa-fw fa-star star-icon' /> <i className='fa fa-fw fa-floppy-o star-icon'/>
</div> </div>
<FormattedMessage id='notification.favourite' defaultMessage='{name} favourited your status' values={{ name: link }} /> <FormattedMessage id='notification.favourite' defaultMessage='{name} favourited your status' values={{ name: link }} />
</div> </div>

View file

@ -82,7 +82,7 @@ export default class ActionBar extends React.PureComponent {
<div className='detailed-status__action-bar'> <div className='detailed-status__action-bar'>
<div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div> <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div>
<div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div> <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>
<div className='detailed-status__button'><IconButton animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} activeStyle={{ color: '#ca8f04' }} /></div> <div className='detailed-status__button'><IconButton animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='floppy-o' onClick={this.handleFavouriteClick} activeStyle={{ color: '#ca8f04' }} /></div>
<div className='detailed-status__action-bar-dropdown'> <div className='detailed-status__action-bar-dropdown'>
<DropdownMenu size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' /> <DropdownMenu size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' />

View file

@ -76,7 +76,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
<FormattedNumber value={status.get('reblogs_count')} /> <FormattedNumber value={status.get('reblogs_count')} />
</span> </span>
</Link> · <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'> </Link> · <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'>
<i className='fa fa-star' /> <i className='fa fa-floppy-o' />
<span className='detailed-status__favorites'> <span className='detailed-status__favorites'>
<FormattedNumber value={status.get('favourites_count')} /> <FormattedNumber value={status.get('favourites_count')} />
</span> </span>

View file

@ -2,7 +2,7 @@
"account.block": "Block @{name}", "account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.disclaimer": "This user is from another instance. This number may be larger.", "account.disclaimer": "This user is from another instance. This number may be larger.",
"account.edit_profile": "Edit profile", "account.edit_profile": "edit ~/.profile",
"account.follow": "Follow", "account.follow": "Follow",
"account.followers": "Followers", "account.followers": "Followers",
"account.follows": "Follows", "account.follows": "Follows",
@ -10,7 +10,7 @@
"account.media": "Media", "account.media": "Media",
"account.mention": "Mention @{name}", "account.mention": "Mention @{name}",
"account.mute": "Mute @{name}", "account.mute": "Mute @{name}",
"account.posts": "Posts", "account.posts": "Pings",
"account.report": "Report @{name}", "account.report": "Report @{name}",
"account.requested": "Awaiting approval", "account.requested": "Awaiting approval",
"account.unblock": "Unblock @{name}", "account.unblock": "Unblock @{name}",
@ -18,14 +18,14 @@
"account.unfollow": "Unfollow", "account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}", "account.unmute": "Unmute @{name}",
"boost_modal.combo": "You can press {combo} to skip this next time", "boost_modal.combo": "You can press {combo} to skip this next time",
"column.blocks": "Blocked users", "column.blocks": "~/.blocked",
"column.community": "Local timeline", "column.community": "/timelines/local",
"column.favourites": "Favourites", "column.favourites": "~/.florps",
"column.follow_requests": "Follow requests", "column.follow_requests": "~/.follow-requests",
"column.home": "Home", "column.home": "/timelines/home",
"column.mutes": "Muted users", "column.mutes": "~/.muted",
"column.notifications": "Notifications", "column.notifications": "~/.notifications",
"column.public": "Federated timeline", "column.public": "/timelines/federated",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.pin": "Pin", "column_header.pin": "Pin",
"column_header.unpin": "Unpin", "column_header.unpin": "Unpin",
@ -33,9 +33,9 @@
"column_subheading.settings": "Settings", "column_subheading.settings": "Settings",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked", "compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "What is on your mind?", "compose_form.placeholder": "What is in your databanks?",
"compose_form.privacy_disclaimer": "Your post will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is not a public post, and it may be boosted or otherwise made visible to unintended recipients.", "compose_form.privacy_disclaimer": "Your post will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is not a public post, and it may be boosted or otherwise made visible to unintended recipients.",
"compose_form.publish": "Toot", "compose_form.publish": "Ping",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Mark media as sensitive", "compose_form.sensitive": "Mark media as sensitive",
"compose_form.spoiler": "Hide text behind warning", "compose_form.spoiler": "Hide text behind warning",
@ -61,7 +61,7 @@
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.hashtag": "There is nothing in this hashtag yet.", "empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "You aren't following anyone yet. Visit {public} or use search to get started and meet other users.", "empty_column.home": "You aren't following anyone yet. Visit {public} or use query to get started and meet other users.",
"empty_column.home.inactivity": "Your home feed is empty. If you have been inactive for a while, it will be regenerated for you soon.", "empty_column.home.inactivity": "Your home feed is empty. If you have been inactive for a while, it will be regenerated for you soon.",
"empty_column.home.public_timeline": "the public timeline", "empty_column.home.public_timeline": "the public timeline",
"empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
@ -76,24 +76,24 @@
"home.column_settings.advanced": "Advanced", "home.column_settings.advanced": "Advanced",
"home.column_settings.basic": "Basic", "home.column_settings.basic": "Basic",
"home.column_settings.filter_regex": "Filter out by regular expressions", "home.column_settings.filter_regex": "Filter out by regular expressions",
"home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_reblogs": "Show relays",
"home.column_settings.show_replies": "Show replies", "home.column_settings.show_replies": "Show replies",
"home.settings": "Column settings", "home.settings": "Column settings",
"lightbox.close": "Close", "lightbox.close": "Close",
"loading_indicator.label": "Loading...", "loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"missing_indicator.label": "Not found", "missing_indicator.label": "Not found",
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "~/.blocks",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "/timelines/local",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "edit ~/.profile",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "~/.florps",
"navigation_bar.follow_requests": "Follow requests", "navigation_bar.follow_requests": "~/.follow-requests",
"navigation_bar.info": "About this instance", "navigation_bar.info": "/about/more",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "Jack out",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "~/.muted",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "/timelines/federated",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} florped your ping",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
"notification.reblog": "{name} boosted your status", "notification.reblog": "{name} boosted your status",
@ -140,18 +140,18 @@
"report.placeholder": "Additional comments", "report.placeholder": "Additional comments",
"report.submit": "Submit", "report.submit": "Submit",
"report.target": "Reporting", "report.target": "Reporting",
"search.placeholder": "Search", "search.placeholder": "Query...",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.cannot_reblog": "This post cannot be boosted", "status.cannot_reblog": "This ping cannot be relayed",
"status.delete": "Delete", "status.delete": "Delete",
"status.favourite": "Favourite", "status.favourite": "Florp",
"status.load_more": "Load more", "status.load_more": "Load more",
"status.media_hidden": "Media hidden", "status.media_hidden": "Media hidden",
"status.mention": "Mention @{name}", "status.mention": "Mention @{name}",
"status.mute_conversation": "Mute conversation", "status.mute_conversation": "Mute conversation",
"status.open": "Expand this status", "status.open": "Expand this status",
"status.reblog": "Boost", "status.reblog": "Relay",
"status.reblogged_by": "{name} boosted", "status.reblogged_by": "{name} relayed",
"status.reply": "Reply", "status.reply": "Reply",
"status.replyAll": "Reply to thread", "status.replyAll": "Reply to thread",
"status.report": "Report @{name}", "status.report": "Report @{name}",

View file

@ -12,13 +12,25 @@ body {
@media screen and (min-width: 1300px) { @media screen and (min-width: 1300px) {
.column { .column {
flex-grow: 1 !important; flex-grow: 1 !important;
max-width: 400px; max-width: 500px;
} }
.drawer { .drawer {
width: 17%; width: 20%;
max-width: 400px;
} }
.columns-area {
justify-content: center;
}
}
@media screen and (min-width: 1900px) {
.column, .drawer {
width: 400px;
border-radius: 4px;
height: 96vh;
margin-top: 2vh;
}
} }
.muted { .muted {

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
class StatusLengthValidator < ActiveModel::Validator class StatusLengthValidator < ActiveModel::Validator
MAX_CHARS = 500 MAX_CHARS = 512
def validate(status) def validate(status)
return unless status.local? && !status.reblog? return unless status.local? && !status.reblog?

View file

@ -9,4 +9,4 @@
%li= link_to t('about.get_started'), new_user_registration_path %li= link_to t('about.get_started'), new_user_registration_path
%li= link_to t('auth.login'), new_user_session_path %li= link_to t('auth.login'), new_user_session_path
%li= link_to t('about.terms'), terms_path %li= link_to t('about.terms'), terms_path
%li= link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon' %li= link_to t('about.source_code'), 'https://github.com/chronister/mastodon'

View file

@ -17,7 +17,7 @@
.wrapper .wrapper
%h1 %h1
= image_tag asset_pack_path('logo.png') = image_tag asset_pack_path('logo-cybre.png')
= Setting.site_title = Setting.site_title
%p!= t('about.about_mastodon') %p!= t('about.about_mastodon')
@ -36,7 +36,7 @@
.info .info
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn' = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
· ·
= link_to t('about.other_instances'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/List-of-Mastodon-instances.md' = link_to t('about.other_instances'), 'https://instances.mastodon.xyz/'
· ·
= link_to t('about.about_this'), about_more_path = link_to t('about.about_this'), about_more_path
@ -82,6 +82,6 @@
· ·
= link_to t('about.apps'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md' = link_to t('about.apps'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md'
· ·
= link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon' = link_to t('about.source_code'), 'https://github.com/chronister/mastodon'
· ·
= link_to t('about.other_instances'), 'https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/List-of-Mastodon-instances.md' = link_to t('about.other_instances'), 'https://instances.mastodon.xyz/'

View file

@ -6,7 +6,7 @@
.sidebar-wrapper .sidebar-wrapper
.sidebar .sidebar
= link_to root_path do = link_to root_path do
= image_tag asset_pack_path('logo.png'), class: 'logo' = image_tag asset_pack_path('logo-cybre.png'), class: 'logo'
= render_navigation = render_navigation
.content-wrapper .content-wrapper

View file

@ -6,7 +6,7 @@
.logo-container .logo-container
%h1 %h1
= link_to root_path do = link_to root_path do
= image_tag asset_pack_path('logo.png') = image_tag asset_pack_path('logo-cybre.png')
.form-container .form-container
= render 'flashes' = render 'flashes'

View file

@ -1,30 +1,30 @@
--- ---
en: en:
about: about:
about_mastodon: Mastodon is a <em>free, open-source</em> social network. A <em>decentralized</em> alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust &mdash; whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the <em>social network</em> seamlessly. about_mastodon: Cybrespace is an instance of Mastodon, a <em>free, open-source</em> social network. A <em>decentralized</em> alternative to commercial platforms, it avoids the risks of a single company monopolizing your communication. Pick a server that you trust &mdash; whichever you choose, you can interact with everyone else. Anyone can run their own Mastodon instance and participate in the <em>social network</em> seamlessly.
about_this: About this instance about_this: About this instance
apps: Apps apps: Apps
business_email: 'Business e-mail:' business_email: 'Business e-mail:'
closed_registrations: Registrations are currently closed on this instance. closed_registrations: Registrations are currently closed on this instance.
contact: Contact contact: Contact
description_headline: What is %{domain}? description_headline: What's special about %{domain}?
domain_count_after: other instances domain_count_after: other instances
domain_count_before: Connected to domain_count_before: Connected to
features: features:
api: Open API for apps and services api: Open API for apps and services
blocks: Rich block and muting tools blocks: Rich block and muting tools
characters: 500 characters per post characters: 512 characters per post
chronology: Timelines are chronological chronology: Timelines are chronological
ethics: 'Ethical design: no ads, no tracking' ethics: 'Ethical design: no ads, no tracking'
gifv: GIFV sets and short videos gifv: GIFV sets and short videos
privacy: Granular, per-post privacy settings privacy: Granular, per-ping privacy settings
public: Public timelines public: Public timelines
features_headline: What sets Mastodon apart features_headline: What sets Mastodon apart
get_started: Get started get_started: Get started
links: Links links: Links
other_instances: Other instances other_instances: Other instances
source_code: Source code source_code: Source code
status_count_after: statuses status_count_after: pings
status_count_before: Who authored status_count_before: Who authored
terms: Terms terms: Terms
user_count_after: users user_count_after: users
@ -37,7 +37,7 @@ en:
nothing_here: There is nothing here! nothing_here: There is nothing here!
people_followed_by: People whom %{name} follows people_followed_by: People whom %{name} follows
people_who_follow: People who follow %{name} people_who_follow: People who follow %{name}
posts: Posts posts: Pings
remote_follow: Remote follow remote_follow: Remote follow
reserved_username: The username is reserved reserved_username: The username is reserved
unfollow: Unfollow unfollow: Unfollow
@ -205,9 +205,9 @@ en:
delete_account_html: If you wish to delete your account, you can <a href="%{path}">proceed here</a>. You will be asked for confirmation. delete_account_html: If you wish to delete your account, you can <a href="%{path}">proceed here</a>. You will be asked for confirmation.
didnt_get_confirmation: Didn't receive confirmation instructions? didnt_get_confirmation: Didn't receive confirmation instructions?
forgot_password: Forgot your password? forgot_password: Forgot your password?
login: Log in login: Jack in
logout: Logout logout: Jack out
register: Sign up register: Apply for upload
resend_confirmation: Resend confirmation instructions resend_confirmation: Resend confirmation instructions
reset_password: Reset password reset_password: Reset password
set_new_password: Set new password set_new_password: Set new password
@ -255,7 +255,7 @@ en:
storage: Media storage storage: Media storage
followers: followers:
domain: Domain domain: Domain
explanation_html: If you want to ensure the privacy of your statuses, you must be aware of who is following you. <strong>Your private statuses are delivered to all instances where you have followers</strong>. You may wish to review them, and remove followers if you do not trust your privacy to be respected by the staff or software of those instances. explanation_html: If you want to ensure the privacy of your pings , you must be aware of who is following you. <strong>Your private pings are delivered to all instances where you have followers</strong>. You may wish to review them, and remove followers if you do not trust your privacy to be respected by the staff or software of those instances.
followers_count: Number of followers followers_count: Number of followers
lock_link: Lock your account lock_link: Lock your account
purge: Remove from followers purge: Remove from followers
@ -263,7 +263,7 @@ en:
one: In the process of soft-blocking followers from one domain... one: In the process of soft-blocking followers from one domain...
other: In the process of soft-blocking followers from %{count} domains... other: In the process of soft-blocking followers from %{count} domains...
true_privacy_html: Please mind that <strong>true privacy can only be achieved with end-to-end encryption</strong>. true_privacy_html: Please mind that <strong>true privacy can only be achieved with end-to-end encryption</strong>.
unlocked_warning_html: Anyone can follow you to immediately view your private statuses. %{lock_link} to be able to review and reject followers. unlocked_warning_html: Anyone can follow you to immediately view your private pings. %{lock_link} to be able to review and reject followers.
unlocked_warning_title: Your account is not locked unlocked_warning_title: Your account is not locked
generic: generic:
changes_saved_msg: Changes successfully saved! changes_saved_msg: Changes successfully saved!
@ -284,7 +284,7 @@ en:
landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>. landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
media_attachments: media_attachments:
validations: validations:
images_and_video: Cannot attach a video to a status that already contains images images_and_video: Cannot attach a video to a ping that already contains images
too_many: Cannot attach more than 4 files too_many: Cannot attach more than 4 files
notification_mailer: notification_mailer:
digest: digest:
@ -297,8 +297,8 @@ en:
one: "1 new notification since your last visit \U0001F418" one: "1 new notification since your last visit \U0001F418"
other: "%{count} new notifications since your last visit \U0001F418" other: "%{count} new notifications since your last visit \U0001F418"
favourite: favourite:
body: 'Your status was favourited by %{name}:' body: 'Your ping was florped by %{name}:'
subject: "%{name} favourited your status" subject: "%{name} florped your ping"
follow: follow:
body: "%{name} is now following you!" body: "%{name} is now following you!"
subject: "%{name} is now following you" subject: "%{name} is now following you"
@ -309,8 +309,8 @@ en:
body: 'You were mentioned by %{name} in:' body: 'You were mentioned by %{name} in:'
subject: You were mentioned by %{name} subject: You were mentioned by %{name}
reblog: reblog:
body: 'Your status was boosted by %{name}:' body: 'Your ping was relayed by %{name}:'
subject: "%{name} boosted your status" subject: "%{name} relayed your ping"
pagination: pagination:
next: Next next: Next
prev: Prev prev: Prev
@ -324,7 +324,7 @@ en:
authorized_apps: Authorized apps authorized_apps: Authorized apps
back: Back to Mastodon back: Back to Mastodon
delete: Account deletion delete: Account deletion
edit_profile: Edit profile edit_profile: edit ~/.profile
export: Data export export: Data export
followers: Authorized followers followers: Authorized followers
import: Import import: Import
@ -344,7 +344,7 @@ en:
unlisted_long: Everyone can see, but not listed on public timelines unlisted_long: Everyone can see, but not listed on public timelines
stream_entries: stream_entries:
click_to_show: Click to show click_to_show: Click to show
reblogged: boosted reblogged: relayed
sensitive_content: Sensitive content sensitive_content: Sensitive content
time: time:
formats: formats:

View file

@ -8,7 +8,7 @@ en:
one: <span class="name-counter">1</span> character left one: <span class="name-counter">1</span> character left
other: <span class="name-counter">%{count}</span> characters left other: <span class="name-counter">%{count}</span> characters left
header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
locked: Requires you to manually approve followers and defaults post privacy to followers-only locked: Requires you to manually approve followers and defaults ping privacy to followers-only
note: note:
one: <span class="note-counter">1</span> character left one: <span class="note-counter">1</span> character left
other: <span class="note-counter">%{count}</span> characters left other: <span class="note-counter">%{count}</span> characters left
@ -46,11 +46,11 @@ en:
must_be_following: Block notifications from people you don't follow must_be_following: Block notifications from people you don't follow
notification_emails: notification_emails:
digest: Send digest e-mails digest: Send digest e-mails
favourite: Send e-mail when someone favourites your status favourite: Send e-mail when someone florps your ping
follow: Send e-mail when someone follows you follow: Send e-mail when someone follows you
follow_request: Send e-mail when someone requests to follow you follow_request: Send e-mail when someone requests to follow you
mention: Send e-mail when someone mentions you mention: Send e-mail when someone mentions you
reblog: Send e-mail when someone boosts your status reblog: Send e-mail when someone boosts your ping
'no': 'No' 'no': 'No'
required: required:
mark: "*" mark: "*"

View file

@ -7,7 +7,7 @@
# For more information, see docs/Running-Mastodon/Administration-guide.md # For more information, see docs/Running-Mastodon/Administration-guide.md
# #
defaults: &defaults defaults: &defaults
site_title: Mastodon site_title: 'Cybrespace'
site_description: '' site_description: ''
site_extended_description: '' site_extended_description: ''
site_contact_username: '' site_contact_username: ''

View file

@ -8,8 +8,8 @@
<style> <style>
body { body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: #282c37; background: #181818 url("/background-cybre.png");
color: #9baec8; color: #1ea21e;
text-align: center; text-align: center;
margin: 0; margin: 0;
padding: 20px; padding: 20px;
@ -33,7 +33,7 @@
<body> <body>
<div class="dialog"> <div class="dialog">
<img src="/oops.png" alt="Mastodon" /> <img src="/logo-cybre-glitch.gif" alt="Cybrespace" />
<div> <div>
<h1>We're sorry, but something went wrong.</h1> <h1>We're sorry, but something went wrong.</h1>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
public/background-cybre.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

View file

@ -3,7 +3,7 @@
<msapplication> <msapplication>
<tile> <tile>
<square150x150logo src="/mstile-150x150.png"/> <square150x150logo src="/mstile-150x150.png"/>
<TileColor>#2b5797</TileColor> <TileColor>#1ea21e</TileColor>
</tile> </tile>
</msapplication> </msapplication>
</browserconfig> </browserconfig>

22
public/clock.js Normal file
View file

@ -0,0 +1,22 @@
document.addEventListener("DOMContentLoaded", function(event) {
updateClock();
setInterval(updateClock, 1000);
});
function updateClock() {
var clock = document.querySelector(".closed-registrations-message .clock");
var now = new Date();
var open = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
var ts = open.setUTCHours(19);
if (open - now < 0) {
open = new Date(ts + 24*60*60*1000);
}
var until = open - now;
var ms = until % 1000;
var s = Math.floor((until / 1000)) % 60;
var m = Math.floor((until / 1000 / 60)) % 60;
var h = Math.floor((until / 1000 / 60 / 60));
if (m < 10) m = "0" + m;
if (s < 10) s = "0" + s;
clock.innerHTML = h + ":" + m + ":" + s;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 27 KiB