From 55a114e5e9abe68bb07e5b379a9103755bef2676 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Thu, 22 Oct 2015 11:50:41 -0700 Subject: [PATCH 1/6] title calc --- pub/tree/src/js/components/AnchorComponent.coffee | 1 + pub/tree/src/js/main.js | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pub/tree/src/js/components/AnchorComponent.coffee b/pub/tree/src/js/components/AnchorComponent.coffee index 50d499117..ca545c79e 100644 --- a/pub/tree/src/js/components/AnchorComponent.coffee +++ b/pub/tree/src/js/components/AnchorComponent.coffee @@ -119,6 +119,7 @@ module.exports = query { setTitle: -> title = $('#cont h1').first().text() || @props.name + title = @props.meta.title if @props.meta?.title document.title = "#{title} - #{@props.path}" setPath: (href,hist) -> diff --git a/pub/tree/src/js/main.js b/pub/tree/src/js/main.js index 16f18802c..dd2aff3f6 100644 --- a/pub/tree/src/js/main.js +++ b/pub/tree/src/js/main.js @@ -251,8 +251,11 @@ module.exports = query({ }); }, setTitle: function() { - var title; + var ref1, title; title = $('#cont h1').first().text() || this.props.name; + if ((ref1 = this.props.meta) != null ? ref1.title : void 0) { + title = this.props.meta.title; + } return document.title = title + " - " + this.props.path; }, setPath: function(href, hist) { From 5ad36d6f7ed71caaa434414358f0dd11e632820d Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Thu, 22 Oct 2015 12:30:22 -0700 Subject: [PATCH 2/6] logo link --- pub/docs/user.mdy | 1 + pub/tree/src/css/leads.styl | 80 +++++++++--------- pub/tree/src/css/main.css | 34 ++++---- .../src/js/components/BodyComponent.coffee | 12 +-- pub/tree/src/js/main.js | 81 ++++++++----------- 5 files changed, 93 insertions(+), 115 deletions(-) diff --git a/pub/docs/user.mdy b/pub/docs/user.mdy index 30070a0df..498463177 100644 --- a/pub/docs/user.mdy +++ b/pub/docs/user.mdy @@ -3,6 +3,7 @@ logo: black title: User doc sort: 1 --- +
# User documentation diff --git a/pub/tree/src/css/leads.styl b/pub/tree/src/css/leads.styl index 335f9ab55..538e39e94 100644 --- a/pub/tree/src/css/leads.styl +++ b/pub/tree/src/css/leads.styl @@ -1,46 +1,46 @@ +.bar + margin-top 2rem + margin-bottom 2rem + & > div + display inline-block + a.logo + display inline-block + height 2rem + vertical-align middle + border none + img.logo + margin-right 18px + margin-top 0 + ul + margin 0 + line-height 2rem + display inline-block + li::before + content '' + padding-right none + li + display inline-block + margin-bottom 0 + margin-right 1rem + vertical-align middle + li a + border-bottom none + text-decoration underline + li a h1 + margin 0 + line-height inherit + text-transform capitalize + font-size 1.2rem + h1 + text-transform capitalize + font-size 1rem + font-weight 400 + letter-spacing .03rem + .lead #body margin-top 3rem - margin-top 0 - - .bar - margin-top 2rem - margin-bottom 2rem - & > div - display inline-block - a.logo - display inline-block - height 2rem - vertical-align middle - border none - img.logo - margin-right 18px - margin-top 0 - ul - margin 0 - line-height 2rem - display inline-block - li::before - content '' - padding-right none - li - display inline-block - margin-bottom 0 - margin-right 1rem - vertical-align middle - li a - border-bottom none - text-decoration underline - li a h1 - margin 0 - line-height inherit - text-transform capitalize - font-size 1.2rem - h1 - text-transform capitalize - font-size 1rem - font-weight 400 - letter-spacing .03rem + margin-top 0 h1 margin-top 1rem diff --git a/pub/tree/src/css/main.css b/pub/tree/src/css/main.css index d21413b90..dbeeb0569 100644 --- a/pub/tree/src/css/main.css +++ b/pub/tree/src/css/main.css @@ -251,12 +251,6 @@ li:before { transition: opacity 1s ease-in-out; z-index: 4; } -img.logo.black { - content: url("https://storage.googleapis.com/urbit-extra/logo/logo-black-100x100.png"); -} -img.logo.white { - content: url("https://storage.googleapis.com/urbit-extra/logo/logo-white-100x100.png"); -} img.logo { height: 2rem; width: 2rem; @@ -545,58 +539,58 @@ div.post p.ib { font-weight: 200; } } -.lead #body { - margin-top: 3rem; - margin-top: 0; -} -.lead .bar { +.bar { margin-top: 2rem; margin-bottom: 2rem; } -.lead .bar > div { +.bar > div { display: inline-block; } -.lead .bar a.logo { +.bar a.logo { display: inline-block; height: 2rem; vertical-align: middle; border: none; } -.lead .bar img.logo { +.bar img.logo { margin-right: 18px; margin-top: 0; } -.lead .bar ul { +.bar ul { margin: 0; line-height: 2rem; display: inline-block; } -.lead .bar ul li::before { +.bar ul li::before { content: ''; padding-right: none; } -.lead .bar ul li { +.bar ul li { display: inline-block; margin-bottom: 0; margin-right: 1rem; vertical-align: middle; } -.lead .bar ul li a { +.bar ul li a { border-bottom: none; text-decoration: underline; } -.lead .bar ul li a h1 { +.bar ul li a h1 { margin: 0; line-height: inherit; text-transform: capitalize; font-size: 1.2rem; } -.lead .bar ul h1 { +.bar ul h1 { text-transform: capitalize; font-size: 1rem; font-weight: 400; letter-spacing: 0.03rem; } +.lead #body { + margin-top: 3rem; + margin-top: 0; +} .lead h1 { margin-top: 1rem; vertical-align: middle; diff --git a/pub/tree/src/js/components/BodyComponent.coffee b/pub/tree/src/js/components/BodyComponent.coffee index ed6fe473b..6d1721292 100644 --- a/pub/tree/src/js/components/BodyComponent.coffee +++ b/pub/tree/src/js/components/BodyComponent.coffee @@ -1,17 +1,17 @@ clas = require 'classnames' -logo = require './Logo.coffee' query = require './Async.coffee' reactify = require './Reactify.coffee' recl = React.createClass {div,p,img,a} = React.DOM -Logo = React.createFactory recl render: -> - {color} = @props - if color is "white" or color is "black" # else? - src = "//storage.googleapis.com/urbit-extra/logo/logo-#{color}-100x100.png" - (img {src,className:"logo"}) +Logo = React.createFactory recl + render: -> + {color} = @props + if color is "white" or color is "black" # else? + src = "//storage.googleapis.com/urbit-extra/logo/logo-#{color}-100x100.png" + (a {href:"http://urbit.org",style:{border:"none"}}, [(img {src,className:"logo"})]) Next = React.createFactory query { path:'t' diff --git a/pub/tree/src/js/main.js b/pub/tree/src/js/main.js index 7c9f46a6a..5d40f2ce6 100644 --- a/pub/tree/src/js/main.js +++ b/pub/tree/src/js/main.js @@ -35,8 +35,7 @@ module.exports = { }; - -},{"../dispatcher/Dispatcher.coffee":15,"../persistence/TreePersistence.coffee":21}],2:[function(require,module,exports){ +},{"../dispatcher/Dispatcher.coffee":14,"../persistence/TreePersistence.coffee":20}],2:[function(require,module,exports){ var BodyComponent, CLICK, Links, TreeActions, TreeStore, a, clas, div, query, reactify, recl, ref; clas = require('classnames'); @@ -315,8 +314,7 @@ module.exports = query({ }), div); - -},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":22,"./Async.coffee":3,"./BodyComponent.coffee":4,"./Reactify.coffee":12,"classnames":17}],3:[function(require,module,exports){ +},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":21,"./Async.coffee":3,"./BodyComponent.coffee":4,"./Reactify.coffee":11,"classnames":16}],3:[function(require,module,exports){ var TreeActions, TreeStore, _load, code, div, recl, ref, span; _load = require('./LoadComponent.coffee'); @@ -426,14 +424,11 @@ module.exports = function(queries, Child, load) { }; - -},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":22,"./LoadComponent.coffee":10}],4:[function(require,module,exports){ -var Logo, Next, a, clas, div, img, logo, p, query, reactify, recl, ref; +},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":21,"./LoadComponent.coffee":10}],4:[function(require,module,exports){ +var Logo, Next, a, clas, div, img, p, query, reactify, recl, ref; clas = require('classnames'); -logo = require('./Logo.coffee'); - query = require('./Async.coffee'); reactify = require('./Reactify.coffee'); @@ -449,10 +444,17 @@ Logo = React.createFactory(recl({ if (color === "white" || color === "black") { src = "//storage.googleapis.com/urbit-extra/logo/logo-" + color + "-100x100.png"; } - return img({ - src: src, - className: "logo" - }); + return a({ + href: "http://urbit.org", + style: { + border: "none" + } + }, [ + img({ + src: src, + className: "logo" + }) + ]); } })); @@ -527,8 +529,7 @@ module.exports = query({ })); - -},{"./Async.coffee":3,"./Logo.coffee":11,"./Reactify.coffee":12,"classnames":17}],5:[function(require,module,exports){ +},{"./Async.coffee":3,"./Reactify.coffee":11,"classnames":16}],5:[function(require,module,exports){ var div, recl, ref, textarea; recl = React.createClass; @@ -551,7 +552,6 @@ module.exports = recl({ }); - },{}],6:[function(require,module,exports){ var div, recl; @@ -574,8 +574,7 @@ module.exports = { }; - -},{"./CodeMirror.coffee":5,"./EmailComponent.coffee":7,"./KidsComponent.coffee":8,"./ListComponent.coffee":9,"./SearchComponent.coffee":13,"./TocComponent.coffee":14}],7:[function(require,module,exports){ +},{"./CodeMirror.coffee":5,"./EmailComponent.coffee":7,"./KidsComponent.coffee":8,"./ListComponent.coffee":9,"./SearchComponent.coffee":12,"./TocComponent.coffee":13}],7:[function(require,module,exports){ var button, div, input, p, reactify, recl, ref; reactify = require('./Reactify.coffee'); @@ -655,8 +654,7 @@ module.exports = recl({ }); - -},{"./Reactify.coffee":12}],8:[function(require,module,exports){ +},{"./Reactify.coffee":11}],8:[function(require,module,exports){ var a, div, hr, li, query, reactify, recl, ref, ul; reactify = require('./Reactify.coffee'); @@ -727,8 +725,7 @@ module.exports = query({ })); - -},{"./Async.coffee":3,"./Reactify.coffee":12}],9:[function(require,module,exports){ +},{"./Async.coffee":3,"./Reactify.coffee":11}],9:[function(require,module,exports){ var a, clas, div, h1, li, query, reactify, recl, ref, ul; clas = require('classnames'); @@ -875,8 +872,7 @@ module.exports = query({ })); - -},{"./Async.coffee":3,"./Reactify.coffee":12,"classnames":17}],10:[function(require,module,exports){ +},{"./Async.coffee":3,"./Reactify.coffee":11,"classnames":16}],10:[function(require,module,exports){ var div, input, recl, ref, textarea; recl = React.createClass; @@ -916,13 +912,7 @@ module.exports = recl({ }); - },{}],11:[function(require,module,exports){ - - - - -},{}],12:[function(require,module,exports){ var Virtual, div, load, reactify, recl, ref, rele, span, walk; recl = React.createClass; @@ -989,8 +979,7 @@ module.exports = _.extend(reactify, { }); - -},{"./LoadComponent.coffee":10}],13:[function(require,module,exports){ +},{"./LoadComponent.coffee":10}],12:[function(require,module,exports){ var a, div, input, query, reactify, recl, ref, slice = [].slice; @@ -1128,8 +1117,7 @@ module.exports = query({ })); - -},{"./Async.coffee":3,"./Reactify.coffee":12}],14:[function(require,module,exports){ +},{"./Async.coffee":3,"./Reactify.coffee":11}],13:[function(require,module,exports){ var div, query, reactify, recl, slice = [].slice; @@ -1257,8 +1245,7 @@ module.exports = query({ })); - -},{"./Async.coffee":3,"./Reactify.coffee":12}],15:[function(require,module,exports){ +},{"./Async.coffee":3,"./Reactify.coffee":11}],14:[function(require,module,exports){ var Dispatcher; Dispatcher = require('flux').Dispatcher; @@ -1279,8 +1266,7 @@ module.exports = _.extend(new Dispatcher(), { }); - -},{"flux":18}],16:[function(require,module,exports){ +},{"flux":17}],15:[function(require,module,exports){ var rend; rend = React.render; @@ -1453,8 +1439,7 @@ $(function() { }); - -},{"./actions/TreeActions.coffee":1,"./components/AnchorComponent.coffee":2,"./components/BodyComponent.coffee":4,"./components/Components.coffee":6,"./persistence/TreePersistence.coffee":21}],17:[function(require,module,exports){ +},{"./actions/TreeActions.coffee":1,"./components/AnchorComponent.coffee":2,"./components/BodyComponent.coffee":4,"./components/Components.coffee":6,"./persistence/TreePersistence.coffee":20}],16:[function(require,module,exports){ /*! Copyright (c) 2015 Jed Watson. Licensed under the MIT License (MIT), see @@ -1504,7 +1489,7 @@ $(function() { } }()); -},{}],18:[function(require,module,exports){ +},{}],17:[function(require,module,exports){ /** * Copyright (c) 2014-2015, Facebook, Inc. * All rights reserved. @@ -1516,7 +1501,7 @@ $(function() { module.exports.Dispatcher = require('./lib/Dispatcher') -},{"./lib/Dispatcher":19}],19:[function(require,module,exports){ +},{"./lib/Dispatcher":18}],18:[function(require,module,exports){ /* * Copyright (c) 2014, Facebook, Inc. * All rights reserved. @@ -1768,7 +1753,7 @@ var _prefix = 'ID_'; module.exports = Dispatcher; -},{"./invariant":20}],20:[function(require,module,exports){ +},{"./invariant":19}],19:[function(require,module,exports){ /** * Copyright (c) 2014, Facebook, Inc. * All rights reserved. @@ -1823,7 +1808,7 @@ var invariant = function(condition, format, a, b, c, d, e, f) { module.exports = invariant; -},{}],21:[function(require,module,exports){ +},{}],20:[function(require,module,exports){ var dedup; dedup = {}; @@ -1881,8 +1866,7 @@ module.exports = { }; - -},{}],22:[function(require,module,exports){ +},{}],21:[function(require,module,exports){ var EventEmitter, MessageDispatcher, QUERIES, TreeStore, _curr, _data, _tree, clog; EventEmitter = require('events').EventEmitter; @@ -2107,8 +2091,7 @@ TreeStore.dispatchToken = MessageDispatcher.register(function(payload) { module.exports = TreeStore; - -},{"../dispatcher/Dispatcher.coffee":15,"events":23}],23:[function(require,module,exports){ +},{"../dispatcher/Dispatcher.coffee":14,"events":22}],22:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -2411,4 +2394,4 @@ function isUndefined(arg) { return arg === void 0; } -},{}]},{},[16]); +},{}]},{},[15]); From bf53cb567948ba63971db033ebfcba8e851f5627 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Mon, 26 Oct 2015 10:43:19 -0700 Subject: [PATCH 3/6] network goals type --- pub/docs/theory/network-goals.mdy | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pub/docs/theory/network-goals.mdy b/pub/docs/theory/network-goals.mdy index 8b4304ddf..e2eb8ec1c 100644 --- a/pub/docs/theory/network-goals.mdy +++ b/pub/docs/theory/network-goals.mdy @@ -4,7 +4,7 @@ sort: 4 hide: true --- -# Constitution of a digital republic: part 1, goals +# Design of a digital republic
Part I — Goals Some of us remember when the Internet was a social network. Today, the Internet is a modem. @@ -13,7 +13,7 @@ It's a wonderful modem. It connects you to all kinds of great online services. Some of which are social "networks," but only networks in the MBA sense. Really they're social *servers*: giant virtual mainframes running one hardcoded program. 1976 -called -- it wants its acoustic coupler back. +called — it wants its acoustic coupler back. So, you prefer 1996. So, you wish you had your decentralized Internet back. So, you don't seem alone in this. So, we know @@ -34,8 +34,8 @@ against "Governments of the Industrial World, you weary giants of flesh and steel." Well... hindsight is 20/20. But in hindsight, even in 1996 -things were starting to head south. Usenet -- the brain of the -Internet, when the Internet had a brain -- was already +things were starting to head south. Usenet — the brain of the +Internet, when the Internet had a brain — was already disintegrating under the barbarian invasions. And where is the WELL these days? (John Perry Barlow is probably still on it.) @@ -79,7 +79,7 @@ Dealing is way better than worrying. 1996 worried about the problem; 2016 ought to deal with it. A constitution is not a declaration. It's not a list of ideals. -It's more like a bridge -- an actual structure, that fails unless +It's more like a bridge — an actual structure, that fails unless it stands up to genuine load. A bridge isn't a bridge unless it works. If you want a bridge, you have to build a bridge. It doesn't typically happen that you set out to build something @@ -94,7 +94,7 @@ network. They weren't trying to, and they didn't. If we want a decentralized social network, we can't do it without rigorous engineering work. And we can't limit our work to the world of code. A decentralized network has to work not just -technically -- but politically, economically, and socially. +technically — but politically, economically, and socially. Where do we go from here? How do we get back to 1996? Admit we've failed, and try again. How else? @@ -289,7 +289,7 @@ republic, but it certainly works and it's better than nothing. Thus what seems like an optimal political design: the ugly, centralized, young larva that's designed to molt into a beautiful, mature, decentralized butterfly. And once mature, the -larva must molt or die -- not keep growing into a gigantic, +larva must molt or die — not keep growing into a gigantic, man-eating caterpillar of death. ## Economic engineering @@ -374,8 +374,8 @@ space by giving blocks away. You may even increase the value of your own position. A monopolized network is not politically healthy. So its -economic value is lower. So -- if the network is properly -designed and structured -- it can be stably demonopolized. The +economic value is lower. So — if the network is properly +designed and structured — it can be stably demonopolized. The monopoly power achieved by combining large positions is smaller than the reputation cost of remonopolization, so centrifugal force dominates and the system stays decentralized. @@ -562,4 +562,4 @@ Goals are more interesting than ideals, don't you think? Goals and features are also different things. What are the features of a network that attempts to achieve these design goals? In the next installment, we'll look at how our own -network -- Urbit -- measures up to these yardsticks. +network — Urbit — measures up to these yardsticks. From eff6a6e9989dae0d2cbe7beb0e85b6a858996e3e Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Mon, 26 Oct 2015 10:44:44 -0700 Subject: [PATCH 4/6] unhide --- pub/docs/theory/network-goals.mdy | 1 - 1 file changed, 1 deletion(-) diff --git a/pub/docs/theory/network-goals.mdy b/pub/docs/theory/network-goals.mdy index e2eb8ec1c..760531190 100644 --- a/pub/docs/theory/network-goals.mdy +++ b/pub/docs/theory/network-goals.mdy @@ -1,7 +1,6 @@ --- title: Network Goals, Part I sort: 4 -hide: true --- # Design of a digital republic
Part I — Goals From 3631db40a706af511b99190e542fc977cc0b94b4 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Mon, 26 Oct 2015 10:58:11 -0700 Subject: [PATCH 5/6] manual karpi merge --- pub/docs/theory/network-goals.mdy | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pub/docs/theory/network-goals.mdy b/pub/docs/theory/network-goals.mdy index 760531190..41f9453b2 100644 --- a/pub/docs/theory/network-goals.mdy +++ b/pub/docs/theory/network-goals.mdy @@ -5,6 +5,14 @@ sort: 4 # Design of a digital republic
Part I — Goals +--- +title: Network architecture: goals +sort: 4 +hide: true +--- + +# Design of a digital republic: part 1, goals + Some of us remember when the Internet was a social network. Today, the Internet is a modem. @@ -561,4 +569,5 @@ Goals are more interesting than ideals, don't you think? Goals and features are also different things. What are the features of a network that attempts to achieve these design goals? In the next installment, we'll look at how our own -network — Urbit — measures up to these yardsticks. +network — [Urbit](http://urbit.org) — measures up to these +yardsticks. \ No newline at end of file From b24cc71a750b93cca53a96b51d7df80c646194f5 Mon Sep 17 00:00:00 2001 From: Galen Wolfe-Pauly Date: Mon, 26 Oct 2015 11:03:45 -0700 Subject: [PATCH 6/6] whoops --- pub/docs/theory/network-goals.mdy | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pub/docs/theory/network-goals.mdy b/pub/docs/theory/network-goals.mdy index 41f9453b2..1f9662748 100644 --- a/pub/docs/theory/network-goals.mdy +++ b/pub/docs/theory/network-goals.mdy @@ -1,10 +1,3 @@ ---- -title: Network Goals, Part I -sort: 4 ---- - -# Design of a digital republic
Part I — Goals - --- title: Network architecture: goals sort: 4