diff --git a/app/javascript/images/floppy-1.svg b/app/javascript/images/floppy-1.svg new file mode 100644 index 000000000..08c1e4a6c --- /dev/null +++ b/app/javascript/images/floppy-1.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/javascript/images/floppy-2.svg b/app/javascript/images/floppy-2.svg new file mode 100644 index 000000000..d57a72a72 --- /dev/null +++ b/app/javascript/images/floppy-2.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/javascript/images/floppy-3.svg b/app/javascript/images/floppy-3.svg new file mode 100644 index 000000000..2fe8ef399 --- /dev/null +++ b/app/javascript/images/floppy-3.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/javascript/images/header-cybre-alt.jpg b/app/javascript/images/header-cybre-alt.jpg new file mode 100644 index 000000000..4d2b6b3a8 Binary files /dev/null and b/app/javascript/images/header-cybre-alt.jpg differ diff --git a/app/javascript/images/logo-cybre.png b/app/javascript/images/logo-cybre.png new file mode 100644 index 000000000..41dd8fd4c Binary files /dev/null and b/app/javascript/images/logo-cybre.png differ diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 42535ea68..0ec303fc6 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -371,14 +371,15 @@ class Status extends ImmutablePureComponent { - {media} - {showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) && ( )} + {media} + diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js index 0bfbd8879..29b41fd6e 100644 --- a/app/javascript/mastodon/components/status_action_bar.js +++ b/app/javascript/mastodon/components/status_action_bar.js @@ -249,9 +249,9 @@ class StatusActionBar extends ImmutablePureComponent { return (
-
{obfuscatedCount(status.get('replies_count'))}
+
- + {shareButton}
diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js index c1429c756..38dbd4d40 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js @@ -357,8 +357,8 @@ class EmojiPickerDropdown extends React.PureComponent {
馃檪
diff --git a/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js index 5ec937a39..4c1332153 100644 --- a/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js +++ b/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js @@ -12,13 +12,13 @@ const DEFAULTS = [ '+1', 'grinning', 'kissing_heart', - 'heart_eyes', + 'vhs', 'laughing', - 'stuck_out_tongue_winking_eye', + 'floppy_disk', 'sweat_smile', 'joy', 'yum', - 'disappointed', + 'computer', 'thinking_face', 'weary', 'sob', diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index 77c27ac6b..cf6032251 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -15,20 +15,20 @@ import NavigationBar from '../compose/components/navigation_bar'; import Icon from 'mastodon/components/icon'; const messages = defineMessages({ - home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' }, - notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' }, - public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' }, + home_timeline: { id: 'tabs_bar.home', defaultMessage: '/timelines/home' }, + notifications: { id: 'tabs_bar.notifications', defaultMessage: '~/.notifications' }, + public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: '/timelines/federated' }, settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' }, - community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' }, - direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' }, - preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, - follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, - favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' }, - blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, - domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' }, - mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' }, - lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' }, + community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: '/timelines/local' }, + direct: { id: 'navigation_bar.direct', defaultMessage: '~/.dms' }, + preferences: { id: 'navigation_bar.preferences', defaultMessage: 'edit ~/.config' }, + follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: '~/.follow-requests' }, + favourites: { id: 'navigation_bar.favourites', defaultMessage: '~/.florps' }, + blocks: { id: 'navigation_bar.blocks', defaultMessage: '~/.blocked' }, + domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: '~/.muted/domains' }, + mutes: { id: 'navigation_bar.mutes', defaultMessage: '~/.muted' }, + pins: { id: 'navigation_bar.pins', defaultMessage: '~/.pinned' }, + lists: { id: 'navigation_bar.lists', defaultMessage: '~/.lists' }, discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' }, personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, @@ -159,11 +159,8 @@ class GettingStarted extends ImmutablePureComponent {
    {invitesEnabled &&
  • } {multiColumn &&
  • } -
  • -
  • -
@@ -171,8 +168,8 @@ class GettingStarted extends ImmutablePureComponent {

{repository} (v{version}) }} + defaultMessage='Cybrespace is open source software. You can contribute or report issues on GitHub at {github}.' + values={{ github: cybrespace/mastodon }} />

diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index 41e9324e6..d2f242e23 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -149,7 +149,7 @@ class Notification extends ImmutablePureComponent {
- +
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 3e511b7a6..66d7e88e2 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -196,7 +196,7 @@ class ActionBar extends React.PureComponent {
-
+
{shareButton}
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 84471f9a3..737352e7a 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -174,7 +174,7 @@ export default class DetailedStatus extends ImmutablePureComponent { if (this.context.router) { favouriteLink = ( - + @@ -183,7 +183,7 @@ export default class DetailedStatus extends ImmutablePureComponent { } else { favouriteLink = ( - + diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index 45e5f0717..17d72895f 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -5,55 +5,125 @@ %link{ rel: 'canonical', href: about_url }/ = render partial: 'shared/og' -.landing - .landing__brand - = link_to root_url, class: 'brand' do - = image_pack_tag 'logo_full.svg', alt: 'Mastodon' - %span.brand__tagline=t 'about.tagline' +.landing-page.alternative + .header{ style: 'display: none' } + = image_tag asset_pack_path('header-cybre-alt.jpg'), alt: @instance_presenter.site_title + .container + .grid + .column-0 + .brand + = link_to root_url do + = image_tag asset_pack_path('logo-cybre.png') + = Setting.site_title - .landing__grid - .landing__grid__column.landing__grid__column-registration - .box-widget - = render 'registration' + - if Setting.timeline_preview + .column-1 + .landing-page__forms + .brand + = link_to root_url do + = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon' - .directory - - if Setting.profile_directory - .directory__tag - = optional_link_to Setting.profile_directory, explore_path do - %h4 - = fa_icon 'address-book fw' - = t('about.discover_users') - %small= t('about.browse_directory') + = render 'forms' - .avatar-stack - - @instance_presenter.sample_accounts.each do |account| - = image_tag current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url, width: 48, height: 48, alt: '', class: 'account__avatar' + - else + .column-1.non-preview + .landing-page__forms + .brand + = link_to root_url do + = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon' - - if Setting.timeline_preview - .directory__tag - = optional_link_to Setting.timeline_preview, public_timeline_path do - %h4 - = fa_icon 'globe fw' - = t('about.see_whats_happening') - %small= t('about.browse_public_posts') + = render 'forms' - .directory__tag - = link_to 'https://joinmastodon.org/apps', target: '_blank', rel: 'noopener' do - %h4 - = fa_icon 'tablet fw' - = t('about.get_apps') - %small= t('about.apps_platforms') + - if Setting.timeline_preview + .column-2 + .landing-page__hero + = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('background-cybre.png'), alt: @instance_presenter.site_title - .landing__grid__column.landing__grid__column-login - .box-widget - = render 'login' + .landing-page__information + .landing-page__short-description + .row + .landing-page__logo + = image_tag asset_pack_path('logo-cybre.png'), alt: 'Cybrespace' - .hero-widget - .hero-widget__img - = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title + %h1 + = @instance_presenter.site_title + %small!= t 'about.hosted_on', domain: content_tag(:span, site_hostname) - - if @instance_presenter.site_short_description.present? - .hero-widget__text + %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname) + + .landing-page__call-to-action{ dir: 'ltr' } + .row + .row__information-board + .information-board__section + %span= t 'about.user_count_before' + %strong= number_with_delimiter @instance_presenter.user_count + %span= t 'about.user_count_after', count: @instance_presenter.user_count + .information-board__section + %span= t 'about.status_count_before' + %strong= number_with_delimiter @instance_presenter.status_count + %span= t 'about.status_count_after', count: @instance_presenter.status_count + .row__mascot + .landing-page__mascot + .floats.float-1 + = image_tag asset_pack_path('floppy-3.svg') + .floats.float-2 + = image_tag asset_pack_path('floppy-1.svg') + .floats.float-3 + = image_tag asset_pack_path('floppy-2.svg') + + - else + .column-2.non-preview + .landing-page__hero + = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('preview.jpg'), alt: @instance_presenter.site_title + + .landing-page__information + .landing-page__short-description + .row + .landing-page__logo + = image_tag asset_pack_path('logo_transparent.svg'), alt: 'Mastodon' + + %h1 + = @instance_presenter.site_title + %small!= t 'about.hosted_on', domain: content_tag(:span, site_hostname) + + %p= @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname) + + .landing-page__call-to-action + .row + .row__information-board + .information-board__section + %span= t 'about.user_count_before' + %strong= number_with_delimiter @instance_presenter.user_count + %span= t 'about.user_count_after', count: @instance_presenter.user_count + .information-board__section + %span= t 'about.status_count_before' + %strong= number_with_delimiter @instance_presenter.status_count + %span= t 'about.status_count_after', count: @instance_presenter.status_count + .row__mascot + .landing-page__mascot + = image_tag @instance_presenter.mascot&.file&.url || asset_pack_path('elephant_ui_plane.svg'), alt: '' + + - if Setting.timeline_preview + .column-3 + #mastodon-timeline{ data: { props: Oj.dump(default_props) } } + + - if Setting.timeline_preview + .column-4.landing-page__information + .landing-page__features + .features-list + %div + %h3= t 'about.what_is_mastodon' + %p= t 'about.about_mastodon_html' + %div.contact + %h3= t 'about.administered_by' + = account_link_to(@instance_presenter.contact_account, link_to(t('about.learn_more'), about_more_path, class: 'button button-alternative')) + + = render 'features' + + .landing-page__features__action + = link_to t('about.learn_more'), 'https://joinmastodon.org/', class: 'button button-alternative' + + .landing-page__footer %p = @instance_presenter.site_short_description.html_safe.presence = link_to about_more_path do diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 083f2fac7..fa4a981f3 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -6,7 +6,7 @@ .sidebar-wrapper .sidebar = link_to root_path do - = image_pack_tag 'logo.svg', class: 'logo', alt: 'Mastodon' + = image_pack_tag 'logo-cybre.png', class: 'logo', alt: 'Cybrespace' = render_navigation .content-wrapper diff --git a/app/views/layouts/auth.html.haml b/app/views/layouts/auth.html.haml index aa1990972..ed4a81811 100644 --- a/app/views/layouts/auth.html.haml +++ b/app/views/layouts/auth.html.haml @@ -6,7 +6,7 @@ .logo-container %h1 = link_to root_path do - = image_pack_tag 'logo_full.svg', alt: 'Mastodon' + = image_pack_tag 'logo-cybre.png', alt: 'Cybrespace' .form-container = render 'flashes' diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml index 23f2920d8..594924c63 100644 --- a/app/views/stream_entries/_detailed_status.html.haml +++ b/app/views/stream_entries/_detailed_status.html.haml @@ -69,7 +69,7 @@ = " " 路 = link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link' do - = fa_icon('star') + = fa_icon('floppy-o') %span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true = " " diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml index 0df7497e1..e6f2a2210 100644 --- a/app/views/stream_entries/_simple_status.html.haml +++ b/app/views/stream_entries/_simple_status.html.haml @@ -56,4 +56,4 @@ - else = fa_icon 'envelope fw' = link_to remote_interaction_path(status, type: :favourite), class: 'status__action-bar-button icon-button modal-button', style: 'font-size: 18px; width: 23.1429px; height: 23.1429px; line-height: 23.15px;' do - = fa_icon 'star fw' + = fa_icon 'floppy-o fw' diff --git a/config/settings.yml b/config/settings.yml index 63f7c3380..4670993eb 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -2,7 +2,7 @@ # important settings can be changed from the admin interface. defaults: &defaults - site_title: Mastodon + site_title: 'Cybrespace' site_short_description: '' site_description: '' site_extended_description: '' diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index d384ea4d7..bbd1f96c1 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -29,7 +29,7 @@ module Mastodon end def to_s - [to_a.join('.'), flags].join + [to_a.join('.'), flags, '-cybre'].join end def repository @@ -37,7 +37,7 @@ module Mastodon end def source_base_url - ENV.fetch('SOURCE_BASE_URL') { "https://github.com/#{repository}" } + 'https://cybre.tech/cybrespace/mastodon' end # specify git tag or commit hash here diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png index 7a99a1964..8e9c26b58 100644 Binary files a/public/android-chrome-192x192.png and b/public/android-chrome-192x192.png differ diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index b12aa55a3..691c1f20a 100644 Binary files a/public/apple-touch-icon.png and b/public/apple-touch-icon.png differ diff --git a/public/background-cybre.png b/public/background-cybre.png new file mode 100644 index 000000000..151fd5584 Binary files /dev/null and b/public/background-cybre.png differ diff --git a/public/browserconfig.xml b/public/browserconfig.xml index 7fdab5058..fcf794bc2 100644 --- a/public/browserconfig.xml +++ b/public/browserconfig.xml @@ -3,7 +3,7 @@ - #282c37 + #1ea21e diff --git a/public/clock.js b/public/clock.js new file mode 100644 index 000000000..ffb9beae8 --- /dev/null +++ b/public/clock.js @@ -0,0 +1,54 @@ +document.addEventListener("DOMContentLoaded", function(event) { + updateClock(); + setInterval(updateClock, 1000); +}); + +function getNextOpen(now) { + var days = [[0, 14], [4, 18], [8, 22], [12], [2, 16], [6, 20], [10]] + var nowday = now.getUTCDay(); + var nour = now.getUTCHours(); + + var open_hour = -1; + var d = 0; + + while (open_hour == -1) { + var times = days[(nowday + d) % 7]; + for (var i = 0; i < times.length; ++i) { + var time = times[i]; + if (time == nour) { + return "refresh"; + } else if (time > nour || d > 0) { + open_hour = time; + break; + } + } + if (open_hour == -1) { + d += 1; + nour = -1; + } + } + + var open = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + d)); + var ts = open.setUTCHours(open_hour); + return open; +} + +function updateClock() { + var clock = document.querySelector(".closed-registrations-message .clock"); + var now = new Date(); + var open = getNextOpen(now); + + if (open == "refresh") { + location.reload(); + return; + } + + 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; +} diff --git a/public/emoji/1f418.svg b/public/emoji/1f418.svg index fb9656cd1..3852006c5 100644 --- a/public/emoji/1f418.svg +++ b/public/emoji/1f418.svg @@ -1 +1,17 @@ - \ No newline at end of file + + + + + 1f418 + + + + diff --git a/public/favicon.ico b/public/favicon.ico index 79000c9cc..887128534 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/header.jpeg b/public/header.jpeg new file mode 100644 index 000000000..e9d7b336f Binary files /dev/null and b/public/header.jpeg differ diff --git a/public/logo-cybre-glitch.gif b/public/logo-cybre-glitch.gif new file mode 100644 index 000000000..abe9b2a9a Binary files /dev/null and b/public/logo-cybre-glitch.gif differ diff --git a/public/logo-cybre.png b/public/logo-cybre.png new file mode 100644 index 000000000..41dd8fd4c Binary files /dev/null and b/public/logo-cybre.png differ diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png index a4994062d..a79f11992 100644 Binary files a/public/mstile-150x150.png and b/public/mstile-150x150.png differ diff --git a/public/riot-glitch.png b/public/riot-glitch.png new file mode 100644 index 000000000..1c97ce5f1 Binary files /dev/null and b/public/riot-glitch.png differ