git ssb

2+

mixmix / ticktack



Commit f279e0482bb337ac884bc177d679b808a5821f23

Merge branch 'master' into blob-blog

Dominic Tarr committed on 12/6/2017, 11:44:35 PM
Parent: 7cf45e7c039b145503518e3560ac8943fa1e3708
Parent: c89775f18f4db508d01519014235d1e9419af81b

Files changed

about/html/avatar.mcsschanged
app/html/blogNav.jschanged
app/html/comments.jschanged
app/html/comments.mcsschanged
app/html/context.jschanged
app/html/thread.jschanged
app/html/thread.mcsschanged
app/index.jschanged
app/page/blogNew.jschanged
app/page/blogShow.jschanged
app/page/blogShow.mcsschanged
app/page/settings.jschanged
app/page/settings.mcsschanged
app/page/userEdit.jschanged
app/page/userEdit.mcsschanged
app/page/userShow.jschanged
app/page/userShow.mcsschanged
app/sync/initialize/suggests.jschanged
app/sync/initialize/zoomMemory.jsadded
message/html/likes.mcsschanged
package-lock.jsonchanged
package.jsonchanged
styles/button.mcsschanged
styles/global.mcsschanged
styles/mixins.jschanged
translations/en.jschanged
translations/zh.jschanged
about/html/avatar.mcssView
@@ -14,8 +14,8 @@
1414 $circleMedium
1515 }
1616
1717 -large {
18- $circlelarge
18+ $circleLarge
1919 }
2020 }
2121
app/html/blogNav.jsView
@@ -5,15 +5,17 @@
55 exports.gives = nest('app.html.blogNav')
66
77 exports.needs = nest({
88 'history.sync.push': 'first',
9+ 'history.sync.back': 'first',
910 'translations.sync.strings': 'first',
1011 })
1112
1213 exports.create = (api) => {
1314 return nest('app.html.blogNav', (location) => {
1415 const strings = api.translations.sync.strings()
1516 const goTo = (loc) => () => api.history.sync.push(loc)
17+ const back = () => api.history.sync.back()
1618
1719 if (location.page === 'blogIndex' || location.page === 'blogSearch') {
1820 return h('BlogNav', [
1921 h('div.left', [
@@ -33,9 +35,9 @@
3335 }
3436
3537 return h('BlogNav', [
3638 h('div.left', [
37- h('div.-discovery', { 'ev-click': goTo({ page: 'blogIndex' }) }, [
39+ h('div.-discovery', { 'ev-click': back }, [
3840 h('i.fa.fa-chevron-left'),
3941 strings.blogIndex.title
4042 ]),
4143 ]),
app/html/comments.jsView
@@ -39,16 +39,16 @@
3939 root,
4040 branch,
4141 channel
4242 }
43- const twoComposers = computed(messages, messages => {
44- return messages.length > 5
45- })
43+ // const twoComposers = computed(messages, messages => {
44+ // return messages.length > 5
45+ // })
4646 const { compose } = api.message.html
4747
4848
4949 return h('Comments', [
50- when(twoComposers, compose({ meta, shrink: true, canAttach: false })),
50+ // when(twoComposers, compose({ meta, shrink: true, canAttach: false })),
5151 map(messagesTree, msg => Comment(msg, root, branch)),
5252 compose({ meta, shrink: false, canAttach: false }),
5353 ])
5454 }
app/html/comments.mcssView
@@ -35,9 +35,9 @@
3535 div.Timeago {}
3636 }
3737
3838 section.content {
39- font-size: .9rem
39+ font-size: .95rem
4040 line-height: 1.4
4141 div.Markdown {}
4242 }
4343
@@ -56,17 +56,9 @@
5656 margin-right: 1.5rem
5757 i.fa {}
5858 }
5959
60- div.Likes {
61- min-width: 2.5rem
62-
63- display: flex
64- align-items: center
65-
66- i.fa { margin-right: .3rem }
67- div.count {}
68- }
60+ div.Likes { }
6961 }
7062
7163 div.Compose {
7264 margin: 1rem 0
app/html/context.jsView
@@ -70,9 +70,9 @@
7070 ])
7171
7272 function LevelOneContext () {
7373 function isDiscoverContext (loc) {
74- const PAGES_UNDER_DISCOVER = ['blogIndex', 'blogShow']
74+ const PAGES_UNDER_DISCOVER = ['blogIndex', 'blogShow', 'userShow']
7575
7676 return PAGES_UNDER_DISCOVER.includes(location.page)
7777 || get(location, 'value.private') === undefined
7878 }
@@ -180,8 +180,9 @@
180180 function LevelTwoContext () {
181181 const { key, value, feed: targetUser, page } = location
182182 const root = get(value, 'content.root', key)
183183 if (!targetUser) return
184+ if (page === 'userShow') return
184185
185186
186187 const prepend = Option({
187188 selected: page === 'threadNew',
app/html/thread.jsView
@@ -9,8 +9,9 @@
99 'about.html.avatar': 'first',
1010 'feed.obs.thread': 'first',
1111 'keys.sync.id': 'first',
1212 'message.html.markdown': 'first',
13+ 'message.html.timeago': 'first',
1314 'unread.sync.markRead': 'first',
1415 'unread.sync.isUnread': 'first'
1516 })
1617
@@ -31,18 +32,20 @@
3132 h('Avatar -small'),
3233 h('div.msgs', map(chunk, msg => {
3334 return h('div.msg-row', [
3435 h('div.spacer'),
35- message(msg)
36+ message(msg),
37+ api.message.html.timeago(msg)
3638 ])
3739 }))
3840 ])
3941 : h('div.other-chunk', [
4042 when(author, api.about.html.avatar(author()), 'small'),
4143 h('div.msgs', map(chunk, msg => {
4244 return h('div.msg-row', [
4345 message(msg),
44- h('div.spacer')
46+ h('div.spacer'),
47+ api.message.html.timeago(msg)
4548 ])
4649 }))
4750 ])
4851 })
app/html/thread.mcssView
@@ -36,9 +36,12 @@
3636
3737 -unread {
3838 font-weight: bold
3939 }
40+ }
4041
42+ div.Timeago {
43+ justify-content: flex-start
4144 }
4245 }
4346 }
4447 }
@@ -55,8 +58,9 @@
5558 div.msgs {
5659 max-width: 80%
5760 div.msg-row {
5861 display: flex
62+ flex-wrap: wrap
5963
6064 margin-bottom: 3px
6165
6266 :first-child {
@@ -74,10 +78,28 @@
7478 }
7579 div.spacer {
7680 flex-grow: 1
7781 }
82+ div.Timeago {
83+ display: none
84+
85+ flex-basis: 100%
86+ margin: .2rem
87+
88+ /* display: flex */
89+ justify-content: flex-end
90+ }
7891 }
7992 }
93+
94+
95+ div.msgs {
96+ div.msg-row {
97+ :last-child {
98+ div.Timeago {
99+ display: flex
100+ }
101+ }
102+ }
103+ }
80104 }
81105
82-
83-
app/index.jsView
@@ -37,8 +37,9 @@
3737 initialize: {
3838 clickHandler: require('./sync/initialize/clickHandler'),
3939 styles: require('./sync/initialize/styles'),
4040 suggests: require('./sync/initialize/suggests'),
41+ zoomMemory: require('./sync/initialize/zoomMemory'),
4142 },
4243 }
4344 }
4445
app/page/blogNew.jsView
@@ -44,9 +44,9 @@
4444 cb(null, content)
4545 })
4646 }
4747 },
48- (err, msg) => api.history.sync.push(err ? err : msg)
48+ (err, msg) => api.history.sync.push(err ? err : { page: 'blogIndex' })
4949 )
5050
5151 const channelInput = h('input', {
5252 'ev-input': e => meta.channel.set(e.target.value),
app/page/blogShow.jsView
@@ -13,8 +13,9 @@
1313 'app.html.comments': 'first',
1414 'app.html.context': 'first',
1515 'contact.html.follow': 'first',
1616 'message.html.channel': 'first',
17+ 'message.html.likes': 'first',
1718 'message.html.markdown': 'first',
1819 'message.html.timeago': 'first',
1920 'feed.obs.thread': 'first',
2021
@@ -50,9 +51,10 @@
5051 h('header', [
5152 h('div.blog', [
5253 h('h1', title),
5354 timeago(blogMsg),
54- channel(blogMsg)
55+ channel(blogMsg),
56+ api.message.html.likes(blogMsg)
5557 ]),
5658 h('div.author', [
5759 h('div.leftCol', api.about.html.avatar(author, 'medium')),
5860 h('div.rightCol', [
app/page/blogShow.mcssView
@@ -28,8 +28,9 @@
2828 div.blog {
2929 display: flex
3030 flex-wrap: wrap
3131 flex-grow: 1
32+ align-items: center
3233
3334 h1 {
3435 flex-basis: 100%
3536
@@ -43,9 +44,13 @@
4344 flex-basis: 100%
4445 margin-bottom: .6rem
4546 }
4647
47- div.Button.-channel {}
48+ div.Button.-channel {
49+ margin-right: 1rem
50+ }
51+ div.Likes {
52+ }
4853 }
4954
5055 div.author {
5156 display: flex
app/page/settings.jsView
@@ -1,15 +1,18 @@
11 const nest = require('depnest')
2-const { h } = require('mutant')
2+const { h, computed } = require('mutant')
3+const electron = require('electron')
34
45 exports.gives = nest('app.page.settings')
56
67 exports.needs = nest({
78 'about.html.image': 'first',
89 'about.obs.name': 'first',
10+ 'about.obs.description': 'first',
911 'history.sync.push': 'first',
1012 'history.obs.store': 'first',
1113 'keys.sync.id': 'first',
14+ 'message.html.markdown': 'first',
1215 'settings.sync.get': 'first',
1316 'settings.sync.set': 'first',
1417 'settings.obs.get': 'first',
1518 'translations.sync.strings': 'first',
@@ -43,9 +46,9 @@
4346 const strings = api.translations.sync.strings()
4447 const currentLanguage = api.settings.sync.get('language')
4548
4649 const editProfile = () => api.history.sync.push({
47- page:'userEdit',
50+ page: 'userEdit',
4851 feed,
4952 callback: (err, didEdit) => {
5053 if (err) throw new Error ('Error editing profile', err)
5154 api.history.sync.push({ page: 'settings' })
@@ -54,25 +57,31 @@
5457
5558 return h('Page -settings', [
5659 h('div.content', [
5760 h('h1', strings.settingsPage.title),
58- h('section -profile', [
59- h('header', strings.settingsPage.section.profile),
60- h('div.profile', [
61- h('div.name', api.about.obs.name(feed)),
62- api.about.html.image(feed),
61+ h('section -avatar', [
62+ h('div.left'),
63+ h('div.right', api.about.html.image(feed)),
64+ ]),
65+ h('section -name', [
66+ h('div.left', strings.settingsPage.section.name),
67+ h('div.right', [
68+ api.about.obs.name(feed),
69+ h('i.fa.fa-pencil', { 'ev-click': editProfile })
6370 ]),
64- h('div.actions', [
65- h('Button', { 'ev-click': editProfile }, [
66- strings.settingsPage.action.edit,
67- h('i.fa.fa-pencil')
68- ])
69- ])
7071 ]),
72+ h('section -introduction', [
73+ h('div.left', strings.settingsPage.section.introduction),
74+ h('div.right', computed(api.about.obs.description(feed), d => api.message.html.markdown(d || '')))
75+ ]),
7176 h('section -language', [
72- h('header', strings.settingsPage.section.language),
73- h('div.languages', LANGUAGES.map(Language))
74- ])
77+ h('div.left', strings.settingsPage.section.language),
78+ h('div.right', LANGUAGES.map(Language))
79+ ]),
80+ h('section -zoom', [
81+ h('div.left', strings.settingsPage.section.zoom),
82+ h('div.right', [ zoomButton(-0.1, '-'), zoomButton(+0.1, '+') ])
83+ ]),
7584 ])
7685 ])
7786
7887 function Language (lang) {
@@ -83,11 +92,25 @@
8392 {
8493 'ev-click': () => selectLang(lang),
8594 className
8695 },
87- lang
96+ strings.languages[lang]
8897 )
8998 }
9099
100+ function zoomButton (increment, symbol) {
101+ const { getCurrentWebContents } = electron.remote
102+ return h('Button -language',
103+ {
104+ 'ev-click': () => {
105+ var zoomFactor = api.settings.sync.get('ticktack.electron.zoomFactor', 1)
106+ var newZoomFactor = zoomFactor + increment
107+ var zoomFactor = api.settings.sync.set('ticktack.electron.zoomFactor', newZoomFactor)
108+ getCurrentWebContents().setZoomFactor(newZoomFactor)
109+ }
110+ },
111+ symbol
112+ )
113+ }
91114 }
92115 }
93116
app/page/settings.mcssView
@@ -1,56 +1,61 @@
11 Page -settings {
22 padding-top: 1rem
3- $backgroundGrey
3+ background: #fff
44
55 div.content {
6- background: #fff
76 padding: 1rem
87 $maxWidthSmaller
98
109 h1 {
10+ font-size: 1.5rem
11+ font-weight: 300
12+
13+ padding-bottom: 1rem
14+ border-bottom: 1px solid gainsboro
1115 margin-top: 0
16+ margin-bottom: 4rem
1217 }
1318
1419 section {
15- padding-bottom: 2rem
16- margin-bottom: 2rem
20+ display: flex
21+ align-content: center
1722
18- header {
19- font-size: 1.4rem
20- margin-bottom: 1rem
21- }
23+ div {
24+ padding: .5rem
2225
23- -profile {
24- div.profile {
25- display: flex
26- flex-direction: column
26+ display: flex
27+ align-items: center
2728
28- div.name {
29- margin-bottom: .5rem
30- }
31- img.Avatar {
32- width: 8rem
33- height: 8rem
34- }
35- margin-bottom: .5rem
29+ img.Avatar {
30+ $circleLarge
31+ margin-bottom: 1rem
3632 }
3733
38- div.actions {
39- display:flex
34+ i.fa {
35+ cursor: pointer
36+ margin: 0 .5rem
4037
41- div.Button {
42- i.fa { margin-left: .4rem }
38+ :hover {
39+ $colorFontPrimary
4340 }
4441 }
4542 }
43+ div.left {
44+ flex-basis: 40%
45+ $colorFontSubtle
4646
47- -language {
48- div.languages {
49- display: flex
50- }
47+ justify-content: flex-end
5148 }
49+ div.right {
50+ flex-basis: 60%
51+ justify-content: flex-start
52+ }
5253 }
54+
55+ section -introduction {
56+ margin-bottom: 2rem
57+ }
5358 }
5459 }
5560
5661 Button -language {
app/page/userEdit.jsView
@@ -20,10 +20,11 @@
2020
2121 const options = Object.assign({}, location, {
2222 feed,
2323 labels: {
24+ avatar: strings.userEdit.section.avatar,
2425 name: strings.userEdit.section.name,
25- avatar: strings.userEdit.section.avatar,
26+ description: strings.userEdit.section.introduction,
2627 instructionCrop: strings.userEdit.instruction.crop,
2728 okay: strings.userEdit.action.okay,
2829 cancel: strings.userEdit.action.cancel,
2930 save: strings.userEdit.action.save,
app/page/userEdit.mcssView
@@ -4,7 +4,25 @@
44 }
55 div.content {
66 $maxWidthSmaller
77
8+ div.PatchProfileEdit {
9+ section.-avatar {
10+ div.input {
11+ $circleLarge
12+
13+ img.Avatar {
14+ $circleLarge
15+ }
16+
17+ input {
18+ ::before {
19+ $circleLarge
20+ }
21+ }
22+ }
23+ }
24+ }
25+
826 }
927 }
1028
app/page/userShow.jsView
@@ -7,13 +7,18 @@
77
88 exports.needs = nest({
99 'about.html.avatar': 'first',
1010 'about.obs.name': 'first',
11+ 'about.obs.description': 'first',
12+ 'app.html.context': 'first',
1113 'app.html.link': 'first',
1214 'app.html.blogCard': 'first',
15+ 'app.html.blogNav': 'first',
16+ 'app.html.scroller': 'first',
1317 'contact.html.follow': 'first',
18+ 'feed.pull.profile': 'first',
1419 'feed.pull.rollup': 'first',
15- 'sbot.pull.userFeed': 'first',
20+ 'message.html.markdown': 'first',
1621 'keys.sync.id': 'first',
1722 'translations.sync.strings': 'first',
1823 'unread.sync.isUnread': 'first'
1924 })
@@ -22,73 +27,62 @@
2227 var isUnread = api.unread.sync.isUnread
2328 return nest('app.page.userShow', userShow)
2429
2530 function userShow (location) {
26-
2731 const { feed } = location
2832 const myId = api.keys.sync.id()
29- const name = api.about.obs.name(feed)
3033
3134 const strings = api.translations.sync.strings()
3235
33- // const { followers } = api.contact.obs
34-
35- // const youFollowThem = computed(followers(feed), followers => followers.includes(myId))
36- // const theyFollowYou = computed(followers(myId), followers => followers.includes(feed))
37- // const youAreFriends = computed([youFollowThem, theyFollowYou], (a, b) => a && b)
38-
39- // const ourRelationship = computed(
40- // [youAreFriends, youFollowThem, theyFollowYou],
41- // (youAreFriends, youFollowThem, theyFollowYou) => {
42- // if (youAreFriends) return strings.userShow.state.friends
43- // if (theyFollowYou) return strings.userShow.state.theyFollow
44- // if (youFollowThem) return strings.userShow.state.youFollow
45- // }
46- // )
47-
4836 const Link = api.app.html.link
4937 const userEditButton = Link({ page: 'userEdit', feed }, h('i.fa.fa-pencil'))
5038 const directMessageButton = Link({ page: 'threadNew', feed }, h('Button', strings.userShow.action.directMessage))
5139
5240 const BLOG_TYPES = ['blog', 'post']
53- const blogs = MutantArray()
54- pull(
55- api.sbot.pull.userFeed({id: feed, reverse: true, live: false}),
56- pull.filter(msg => BLOG_TYPES.includes(get(msg, 'value.content.type'))),
57- // pull.filter(msg => get(msg, 'value.content.root') === undefined),
58- api.feed.pull.rollup(),
59- //unread state should not be in this file...
60- pull.through(function (blog) {
61- if(isUnread(blog))
62- blog.unread = true
63- blog.replies.forEach(function (data) {
64- if(isUnread(data))
65- blog.unread = data.unread = true
66- })
67- }),
68- pull.drain(blogs.push)
69- // TODO - new Scroller ?
70- )
7141
72- return h('Page -userShow', {title: name}, [
73- h('div.content', [
74- h('section.about', [
75- api.about.html.avatar(feed, 'large'),
76- h('h1', [
77- name,
78- feed === myId // Only expose own profile editing right now
79- ? userEditButton
80- : ''
81- ]),
82- feed !== myId
83- ? h('div.actions', [
84- api.contact.html.follow(feed),
85- h('div.directMessage', directMessageButton)
86- ])
87- : '',
42+ // TODO return some of this ?
43+ // but maybe this shouldn't be done here ?
44+ // pull.through(function (blog) {
45+ // if(isUnread(blog))
46+ // blog.unread = true
47+ // blog.replies.forEach(function (data) { // this was fed rollups
48+ // if(isUnread(data))
49+ // blog.unread = data.unread = true
50+ // })
51+ // }),
52+
53+ const prepend = [
54+ api.app.html.blogNav(location),
55+ h('section.about', [
56+ api.about.html.avatar(feed, 'large'),
57+ h('h1', [
58+ api.about.obs.name(feed),
59+ feed === myId // Only expose own profile editing right now
60+ ? userEditButton
61+ : ''
8862 ]),
89- h('section.blogs', map(blogs, api.app.html.blogCard))
90- ])
63+ h('div.introduction', computed(api.about.obs.description(feed), d => api.message.html.markdown(d || ''))),
64+ feed !== myId
65+ ? h('div.actions', [
66+ api.contact.html.follow(feed),
67+ h('div.directMessage', directMessageButton)
68+ ])
69+ : '',
70+ ]),
71+ ]
72+
73+ return h('Page -userShow', [
74+ api.app.html.context(location),
75+ api.app.html.scroller({
76+ classList: ['content'],
77+ prepend,
78+ stream: api.feed.pull.profile(feed),
79+ filter: () => pull(
80+ pull.filter(msg => get(msg, 'value.content.root') === undefined),
81+ pull.filter(msg => BLOG_TYPES.includes(get(msg, 'value.content.type')))
82+ ),
83+ render: api.app.html.blogCard
84+ })
9185 ])
9286 }
9387 }
9488
app/page/userShow.mcssView
@@ -1,42 +1,59 @@
11 Page -userShow {
2- div.content {
3- section.about {
4- margin-top: 4rem
5- margin-bottom: 4rem
2+ div.content { padding: 0 }
63
7- display: flex
8- flex-direction: column
9- align-items: center
4+ div.Scroller.content {
5+ section.top {
6+ section.about {
7+ margin-top: 4rem
8+ margin-bottom: 4rem
109
11- img.Avatar {
12- }
10+ display: flex
11+ flex-direction: column
12+ align-items: center
1313
14- h1 {
15- font-weight: 300
16- font-size: 1rem
17-
18- display: flex
19- div.Link {
20- margin-left: .5rem
14+ img.Avatar {
2115 }
22- }
16+ div.introduction {
17+ $maxWidthSmaller
18+ }
2319
24- div.actions {
25- display: flex
26-
27- div.Follow {
28- margin-right: 1rem
20+ h1 {
21+ font-weight: 300
22+ font-size: 1rem
23+
24+ display: flex
25+ div.Link {
26+ margin-left: .5rem
27+ }
2928 }
3029
31- div.directMessage {
30+ div.actions {
31+ display: flex
32+
33+ div.Follow {
34+ margin-right: 1rem
35+ }
36+
37+ div.directMessage {
38+ }
3239 }
3340 }
3441 }
3542
36- section.blogs {
43+ section.content {
44+ background-color: #fff
45+ $maxWidth
46+ margin: .8rem auto
47+ padding: .5rem 2rem
48+
49+ display: flex
50+ flex-wrap: wrap
51+
3752 div.BlogCard {
38- margin-bottom: .5rem
53+ flex-basis: 100%
54+ border-bottom: 1px solid rgba(0,0,0, .1)
55+ /* margin-bottom: .5rem */
3956
4057 div.context {
4158 div.Link { display: none }
4259 div.name { display: none }
app/sync/initialize/suggests.jsView
@@ -3,9 +3,10 @@
33 exports.gives = nest('app.sync.initialize')
44
55 exports.needs = nest({
66 'about.async.suggest': 'first',
7- 'channel.async.suggest': 'first'
7+ 'channel.async.suggest': 'first',
8+ // 'channel.obs.recent': 'first'
89 })
910
1011 exports.create = (api) => {
1112 var nav = null
@@ -13,8 +14,9 @@
1314 return nest({
1415 'app.sync.initialize': function initializeSuggests () {
1516 api.about.async.suggest()
1617 api.channel.async.suggest()
18+ // api.channel.obs.recent()() TODO - figure out how to initialise this store
1719 }
1820 })
1921 }
2022
app/sync/initialize/zoomMemory.jsView
@@ -1,0 +1,41 @@
1+const nest = require('depnest')
2+const electron = require('electron')
3+
4+exports.gives = nest('app.sync.initialize')
5+
6+exports.needs = nest({
7+ 'settings.sync.get': 'first',
8+ 'settings.sync.set': 'first'
9+})
10+
11+exports.create = (api) => {
12+ return nest('app.sync.initialize', zoomMemory)
13+
14+ function zoomMemory() {
15+ const { getCurrentWebContents, getCurrentWindow } = electron.remote
16+
17+ window.addEventListener('resize', () => {
18+ var wc = getCurrentWebContents()
19+ wc && wc.getZoomFactor(zf => {
20+ console.log(zf)
21+ api.settings.sync.set({
22+ ticktack: {
23+ electron: {
24+ zoomFactor: zf,
25+ windowBounds: getCurrentWindow().getBounds()
26+ }
27+ }
28+ })
29+ })
30+ })
31+
32+ var zoomFactor = api.settings.sync.get('ticktack.electron.zoomFactor')
33+ if (zoomFactor)
34+ getCurrentWebContents().setZoomFactor(zoomFactor)
35+
36+ var bounds = api.settings.sync.get('ticktack.electron.windowBounds')
37+ if (bounds)
38+ getCurrentWindow().setBounds(bounds)
39+ }
40+}
41+
message/html/likes.mcssView
@@ -1,4 +1,15 @@
11 Likes {
22 cursor: pointer
3+ min-width: 2.5rem
4+
5+ display: flex
6+ align-items: center
7+
8+ i {
9+ margin-right: .4rem
10+ }
11+ i.fa-heart {
12+ $colorFontPrimary
13+ }
314 }
415
package-lock.jsonView
The diff is too large to show. Use a local git client to view these changes.
Old file size: 211063 bytes
New file size: 211063 bytes
package.jsonView
@@ -1,16 +1,17 @@
11 {
22 "name": "ticktack",
3- "version": "0.1.3",
3+ "version": "0.2.1",
44 "description": "",
55 "main": "index.js",
66 "scripts": {
77 "rebuild": "cross-script npm rebuild --runtime=electron \"--target=$(electron -v)\" \"--abi=$(electron --abi)\" --disturl=https://atom.io/download/atom-shell",
88 "start": "electron .",
99 "dev": "ssb_appname=ssb electro main.js",
1010 "postinstall": "echo 'REMEMBER: npm run rebuild'",
1111 "test": "npm run test:deps",
12- "test:deps": "dependency-check package.json --entry main.js --entry background-process.js && dependency-check package.json --entry main.js --entry background-process.js --extra --no-dev"
12+ "test:deps": "dependency-check package.json --entry main.js --entry background-process.js && dependency-check package.json --entry main.js --entry background-process.js --extra --no-dev",
13+ "test:i18n": "node translations/checker.js"
1314 },
1415 "repository": {
1516 "type": "git",
1617 "url": "ssb://%tkJPTTaxOzfLbsewZmgC9CslSER0ntjQOcyhIk6y/cQ=.sha256"
@@ -37,9 +38,9 @@
3738 "mutant": "^3.21.2",
3839 "mutant-scroll": "0.0.5",
3940 "open-external": "^0.1.1",
4041 "patch-history": "^1.0.0",
41- "patch-profile": "^1.0.2",
42+ "patch-profile": "^1.0.3",
4243 "patch-settings": "^1.0.0",
4344 "patch-suggest": "^1.0.1",
4445 "patchcore": "^1.12.0",
4546 "pull-next": "^1.0.1",
styles/button.mcssView
@@ -2,9 +2,9 @@
22 font-family: arial
33 $backgroundPrimaryText
44
55 min-width: 5rem
6- height: 1.4em
6+ height: 1.4rem
77 padding: .2rem 1rem
88
99 border: 1px #b9b9b9 solid
1010 border-radius: 10rem
styles/global.mcssView
@@ -1,4 +1,8 @@
1+html {
2+ font-size: 17px
3+}
4+
15 body {
26 $fontBasic
37 $backgroundPrimaryText
48
styles/mixins.jsView
@@ -11,10 +11,10 @@
1111
1212 const mainMixins = `
1313 $fontBasic {
1414 font-family: arial
15+ line-height: 1.2
1516 font-size: 1rem
16- line-height: 1.2
1717 }
1818
1919 $maxWidth {
2020 max-width: 1000px
@@ -45,9 +45,9 @@
4545 color: #222
4646 }
4747
4848 $colorFontPrimary {
49- color: #5c6bc0
49+ color: #2f63ad
5050 }
5151
5252 $colorFontSubtle {
5353 color: #999
@@ -92,9 +92,9 @@
9292 height: 3.5rem
9393 border-radius: 4rem
9494 }
9595
96-$circlelarge {
96+$circleLarge {
9797 min-width: 8rem
9898 min-height: 8rem
9999 width: 8rem
100100 height: 8rem
translations/en.jsView
@@ -46,10 +46,12 @@
4646 action: {
4747 edit: 'Edit',
4848 },
4949 section: {
50+ name: 'Name',
51+ introduction: 'Introduction',
5052 language: 'Language',
51- profile: 'Profile',
53+ zoom: 'Zoom'
5254 }
5355 },
5456 threadNew: {
5557 pageTitle: 'New Thread',
@@ -63,10 +65,11 @@
6365 },
6466 threadShow: 'Direct Messages',
6567 userEdit: {
6668 section: {
69+ avatar: 'Avatar',
6770 name: 'Name',
68- avatar: 'Avatar'
71+ introduction: 'Introduction',
6972 },
7073 instruction: {
7174 crop: 'Click and drag to crop your avatar'
7275 },
@@ -95,6 +98,11 @@
9598 userConversationsWith: 'conversations you\'ve had with',
9699 follow: "Follow",
97100 friendsInCommon: 'friends in common'
98101 }
102+ },
103+ languages: {
104+ en: 'English',
105+ zh: 'Chinese'
99106 }
107+
100108 }
translations/zh.jsView
@@ -1,4 +1,5 @@
1+
12 module.exports = {
23 loading: '加载中...',
34 optionalField: '可选',
45 sendMessage: '发送',
@@ -8,8 +9,27 @@
89 home: '主页',
910 error: '错误',
1011 errorNotFound: '找不到此页面',
1112 groupNew: '新建群组',
13+ writeMessage: '发私信',
14+ peopleNearby: '附件的朋友',
15+ blogIndex: {
16+ title: '发现'
17+ },
18+ blogNew: {
19+ field: {
20+ title: '标题'
21+ },
22+ actions: {
23+ edit: '编辑',
24+ preview: '预览',
25+ writeBlog: '撰文'
26+ }
27+ },
28+ blogNav: {
29+ blogsAll: '最新',
30+ blogSearch: '搜索'
31+ },
1232 groupFind: {
1333 action: {
1434 findAGroup: '查找群组',
1535 newGroup: '创建此群组'
@@ -28,9 +48,12 @@
2848 edit: '编辑',
2949 },
3050 section: {
3151 language: '语言',
32- profile: '自我介绍'
52+ profile: '自我介绍',
53+ name: '名称',
54+ introduction: '简介',
55+ zoom: '放大'
3356 }
3457 },
3558 threadNew: {
3659 pageTitle: '新建话题',
@@ -45,9 +68,10 @@
4568 threadShow: '所有私信',
4669 userEdit: {
4770 section: {
4871 name: '名称',
49- avatar: '头像'
72+ avatar: '头像',
73+ introduction: '简介'
5074 },
5175 instruction: {
5276 crop: '点击编辑头像'
5377 },
@@ -76,6 +100,10 @@
76100 userConversationsWith: '参与的话题',
77101 follow: '关注',
78102 friendsInCommon: '共同的好友'
79103 }
104+ },
105+ languages: {
106+ en: '英文',
107+ zh: '中文'
80108 }
81109 }

Built with git-ssb-web