Compare commits

...

946 Commits

Author SHA1 Message Date
3wc ca67841f2e Update Drone config
continuous-integration/drone/push Build is passing Details
2021-08-12 15:33:25 +02:00
3wc fcd1fe7270 Add Drone 🤖
continuous-integration/drone Build is failing Details
2021-08-12 15:29:55 +02:00
Christian Bundy eabc34e6c4
Merge pull request #735 from fraction/dependabot/npm_and_yarn/types/koa__router-8.0.7
Bump @types/koa__router from 8.0.4 to 8.0.7
2021-07-12 09:48:46 -07:00
dependabot[bot] 34cfaee01d
Bump @types/koa__router from 8.0.4 to 8.0.7
Bumps [@types/koa__router](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa__router) from 8.0.4 to 8.0.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa__router)

---
updated-dependencies:
- dependency-name: "@types/koa__router"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-09 23:09:56 +00:00
Christian Bundy e9401518cc
Merge pull request #723 from fraction/dependabot/npm_and_yarn/markdown-it-12.1.0
Bump markdown-it from 12.0.6 to 12.1.0
2021-07-07 08:15:24 -07:00
Christian Bundy 96f7355886
Merge pull request #726 from fraction/dependabot/npm_and_yarn/types/yargs-17.0.2
Bump @types/yargs from 16.0.2 to 17.0.2
2021-07-07 08:15:17 -07:00
dependabot[bot] 83d3cc434e
Bump @types/yargs from 16.0.2 to 17.0.2
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 16.0.2 to 17.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

---
updated-dependencies:
- dependency-name: "@types/yargs"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 00:18:46 +00:00
dependabot[bot] 111de4393f
Bump markdown-it from 12.0.6 to 12.1.0
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 12.0.6 to 12.1.0.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/12.0.6...12.1.0)

---
updated-dependencies:
- dependency-name: markdown-it
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 00:16:06 +00:00
Christian Bundy 98111f302d
Merge pull request #728 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.171
Bump @types/lodash from 4.14.170 to 4.14.171
2021-07-06 17:03:14 -07:00
Christian Bundy 725a605e71
Merge pull request #729 from fraction/dependabot/npm_and_yarn/husky-7.0.1
Bump husky from 6.0.0 to 7.0.1
2021-07-06 17:03:10 -07:00
dependabot[bot] e2eda9a3fd
Bump husky from 6.0.0 to 7.0.1
Bumps [husky](https://github.com/typicode/husky) from 6.0.0 to 7.0.1.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v6.0.0...v7.0.1)

---
updated-dependencies:
- dependency-name: husky
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 23:05:36 +00:00
dependabot[bot] be7729ea95
Bump @types/lodash from 4.14.170 to 4.14.171
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.170 to 4.14.171.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 23:02:32 +00:00
Christian Bundy 8b480c3c2f
Merge pull request #720 from fraction/dependabot/npm_and_yarn/nodemon-2.0.9
Bump nodemon from 2.0.7 to 2.0.9
2021-07-01 07:05:21 -07:00
dependabot[bot] 3d977e246f
Bump nodemon from 2.0.7 to 2.0.9
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.7 to 2.0.9.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.7...v2.0.9)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-30 23:03:36 +00:00
Christian Bundy 05f23efde9
Merge pull request #714 from fraction/dependabot/npm_and_yarn/ssb-ebt-7.0.1
Bump ssb-ebt from 6.0.0 to 7.0.1
2021-06-30 09:30:06 -07:00
dependabot[bot] 25807941d6
Bump ssb-ebt from 6.0.0 to 7.0.1
Bumps [ssb-ebt](https://github.com/ssbc/ssb-ebt) from 6.0.0 to 7.0.1.
- [Release notes](https://github.com/ssbc/ssb-ebt/releases)
- [Commits](https://github.com/ssbc/ssb-ebt/compare/v6.0.0...v7.0.1)

---
updated-dependencies:
- dependency-name: ssb-ebt
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-30 05:36:23 +00:00
Christian Bundy 7bda39dbe3
Merge pull request #716 from fraction/dependabot/npm_and_yarn/ssb-conn-5.0.0
Bump ssb-conn from 4.0.1 to 5.0.0
2021-06-29 22:33:59 -07:00
dependabot[bot] bfb23c8642
Bump ssb-conn from 4.0.1 to 5.0.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 4.0.1 to 5.0.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v4.0.1...v5.0.0)

---
updated-dependencies:
- dependency-name: ssb-conn
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-29 23:02:21 +00:00
Christian Bundy 51e1dd251c
Merge pull request #715 from fraction/dependabot/npm_and_yarn/ssb-friends-5.0.0
Bump ssb-friends from 4.4.5 to 5.0.0
2021-06-28 17:36:08 -07:00
dependabot[bot] 8423dd8095
Bump ssb-friends from 4.4.5 to 5.0.0
Bumps [ssb-friends](https://github.com/ssbc/ssb-friends) from 4.4.5 to 5.0.0.
- [Release notes](https://github.com/ssbc/ssb-friends/releases)
- [Commits](https://github.com/ssbc/ssb-friends/compare/4.4.5...v5.0.0)

---
updated-dependencies:
- dependency-name: ssb-friends
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-28 23:06:02 +00:00
Christian Bundy ba7ddebf58
Merge pull request #708 from fraction/dependabot/npm_and_yarn/normalize-url-4.5.1
Bump normalize-url from 4.5.0 to 4.5.1
2021-06-11 06:49:10 -07:00
dependabot[bot] a04a7cc120
Bump normalize-url from 4.5.0 to 4.5.1
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

---
updated-dependencies:
- dependency-name: normalize-url
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-11 04:36:22 +00:00
Christian Bundy 3e76b8e29f
Merge pull request #707 from fraction/dependabot/npm_and_yarn/glob-parent-5.1.2
Bump glob-parent from 5.1.0 to 5.1.2
2021-06-10 14:49:14 -07:00
dependabot[bot] 7915f352a6
Bump glob-parent from 5.1.0 to 5.1.2
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.0 to 5.1.2.
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.0...v5.1.2)

---
updated-dependencies:
- dependency-name: glob-parent
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-10 21:36:35 +00:00
Christian Bundy fbf2101f4e
Merge pull request #704 from fraction/dependabot/npm_and_yarn/types/markdown-it-12.0.2
Bump @types/markdown-it from 12.0.1 to 12.0.2
2021-06-08 08:14:54 -07:00
dependabot[bot] 054ead1e8b
Bump @types/markdown-it from 12.0.1 to 12.0.2
Bumps [@types/markdown-it](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/markdown-it) from 12.0.1 to 12.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/markdown-it)

---
updated-dependencies:
- dependency-name: "@types/markdown-it"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-08 05:05:01 +00:00
Christian Bundy 6e07b9340e
Merge pull request #703 from fraction/dependabot/npm_and_yarn/highlight.js-11.0.1
Bump highlight.js from 11.0.0 to 11.0.1
2021-06-04 08:07:24 -07:00
dependabot[bot] 5e297792a6
Bump highlight.js from 11.0.0 to 11.0.1
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/11.0.1/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/11.0.0...11.0.1)

---
updated-dependencies:
- dependency-name: highlight.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-04 05:06:24 +00:00
Christian Bundy 36aa4bad9e
Merge pull request #698 from fraction/dependabot/npm_and_yarn/types/koa-2.13.3
Bump @types/koa from 2.13.2 to 2.13.3
2021-06-01 09:12:08 -07:00
Christian Bundy 8a829a6835
Merge pull request #699 from fraction/dependabot/npm_and_yarn/file-type-16.5.0
Bump file-type from 16.4.0 to 16.5.0
2021-06-01 09:12:01 -07:00
Christian Bundy e1807ca168
Merge pull request #700 from fraction/dependabot/npm_and_yarn/highlight.js-11.0.0
Bump highlight.js from 10.7.2 to 11.0.0
2021-06-01 09:11:57 -07:00
Christian Bundy a5694d6854
Merge pull request #701 from fraction/dependabot/npm_and_yarn/types/sharp-0.28.3
Bump @types/sharp from 0.28.2 to 0.28.3
2021-06-01 09:11:34 -07:00
dependabot[bot] da2d38f5b7
Bump @types/sharp from 0.28.2 to 0.28.3
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.28.2 to 0.28.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 05:10:58 +00:00
dependabot[bot] 4dfe75a21f
Bump highlight.js from 10.7.2 to 11.0.0
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.7.2 to 11.0.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/main/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.7.2...11.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-31 05:09:59 +00:00
dependabot[bot] f98fec807a
Bump file-type from 16.4.0 to 16.5.0
Bumps [file-type](https://github.com/sindresorhus/file-type) from 16.4.0 to 16.5.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v16.4.0...v16.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-31 05:07:41 +00:00
dependabot[bot] 70bf04ce58
Bump @types/koa from 2.13.2 to 2.13.3
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.13.2 to 2.13.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-31 05:05:54 +00:00
Christian Bundy 41ab4fc491
Merge pull request #697 from fraction/dependabot/npm_and_yarn/types/koa-2.13.2
Bump @types/koa from 2.13.1 to 2.13.2
2021-05-28 08:53:57 -07:00
dependabot[bot] 2bd87fa149
Bump @types/koa from 2.13.1 to 2.13.2
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.13.1 to 2.13.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 05:05:23 +00:00
Christian Bundy 635f5274a6
Merge pull request #696 from fraction/dependabot/npm_and_yarn/types/sharp-0.28.2
Bump @types/sharp from 0.28.0 to 0.28.2
2021-05-26 08:35:46 -07:00
dependabot[bot] 129c966c24
Bump @types/sharp from 0.28.0 to 0.28.2
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.28.0 to 0.28.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-26 05:04:01 +00:00
Christian Bundy 147f6d7844
Merge pull request #693 from fraction/dependabot/npm_and_yarn/sharp-0.28.3
Bump sharp from 0.28.2 to 0.28.3
2021-05-25 09:20:54 -07:00
dependabot[bot] c94fb7dd17
Bump sharp from 0.28.2 to 0.28.3
Bumps [sharp](https://github.com/lovell/sharp) from 0.28.2 to 0.28.3.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.28.2...v0.28.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-25 05:05:00 +00:00
Christian Bundy b641186703
Merge pull request #690 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.170
Bump @types/lodash from 4.14.169 to 4.14.170
2021-05-24 09:01:40 -07:00
Christian Bundy 211abfbe91
Merge pull request #691 from fraction/dependabot/npm_and_yarn/open-8.1.0
Bump open from 8.0.8 to 8.1.0
2021-05-24 08:41:13 -07:00
dependabot[bot] 6bf9409418
Bump open from 8.0.8 to 8.1.0
Bumps [open](https://github.com/sindresorhus/open) from 8.0.8 to 8.1.0.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.8...v8.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 05:11:08 +00:00
dependabot[bot] 21194a0201
Bump @types/lodash from 4.14.169 to 4.14.170
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.169 to 4.14.170.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 05:08:55 +00:00
Christian Bundy 38d08e2200
Merge pull request #689 from fraction/dependabot/npm_and_yarn/ssb-conn-4.0.1
Bump ssb-conn from 3.2.0 to 4.0.1
2021-05-20 07:28:27 -07:00
dependabot[bot] 8e018405fd
Bump ssb-conn from 3.2.0 to 4.0.1
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 3.2.0 to 4.0.1.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v3.2.0...v4.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-20 05:05:10 +00:00
Christian Bundy cf0d0b5be3
Merge pull request #687 from fraction/dependabot/npm_and_yarn/types/yargs-16.0.2
Bump @types/yargs from 16.0.1 to 16.0.2
2021-05-19 08:56:57 -07:00
dependabot[bot] aa844e3c09
Bump @types/yargs from 16.0.1 to 16.0.2
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 16.0.1 to 16.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 05:05:31 +00:00
Christian Bundy f30af21dfc
Merge pull request #684 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.169
Bump @types/lodash from 4.14.168 to 4.14.169
2021-05-13 08:04:27 -07:00
dependabot[bot] e08738b332
Bump @types/lodash from 4.14.168 to 4.14.169
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.168 to 4.14.169.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-13 05:05:09 +00:00
Christian Bundy 7c5c4bef75
Merge pull request #681 from fraction/dependabot/npm_and_yarn/sharp-0.28.2
Bump sharp from 0.28.1 to 0.28.2
2021-05-11 08:02:33 -07:00
dependabot[bot] d810696df0
Bump sharp from 0.28.1 to 0.28.2
Bumps [sharp](https://github.com/lovell/sharp) from 0.28.1 to 0.28.2.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.28.1...v0.28.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 05:04:17 +00:00
Christian Bundy e0603f8b41
Merge pull request #680 from fraction/dependabot/npm_and_yarn/open-8.0.8
Bump open from 8.0.7 to 8.0.8
2021-05-10 08:34:16 -07:00
dependabot[bot] fd961bce84
Bump open from 8.0.7 to 8.0.8
Bumps [open](https://github.com/sindresorhus/open) from 8.0.7 to 8.0.8.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.7...v8.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 05:08:19 +00:00
Christian Bundy d5e7d1e27d
Merge pull request #678 from fraction/dependabot/npm_and_yarn/file-type-16.4.0
Bump file-type from 16.3.0 to 16.4.0
2021-05-06 08:01:32 -07:00
dependabot[bot] ddf11c2d5f
Bump file-type from 16.3.0 to 16.4.0
Bumps [file-type](https://github.com/sindresorhus/file-type) from 16.3.0 to 16.4.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v16.3.0...v16.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-06 05:05:58 +00:00
Christian Bundy 2339f399c2
Merge pull request #676 from fraction/dependabot/npm_and_yarn/yargs-17.0.0
Bump yargs from 16.2.0 to 17.0.0
2021-05-03 07:59:57 -07:00
dependabot[bot] 7118dddae8
Bump yargs from 16.2.0 to 17.0.0
Bumps [yargs](https://github.com/yargs/yargs) from 16.2.0 to 17.0.0.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v16.2.0...v17.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-03 05:08:18 +00:00
Christian Bundy 8e5290543b
Merge pull request #673 from fraction/dependabot/npm_and_yarn/open-8.0.7
Bump open from 8.0.6 to 8.0.7
2021-04-28 07:08:35 -07:00
dependabot[bot] f43c0befa6
Bump open from 8.0.6 to 8.0.7
Bumps [open](https://github.com/sindresorhus/open) from 8.0.6 to 8.0.7.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.6...v8.0.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-28 05:05:30 +00:00
Christian Bundy 6e7f6f4f32
Merge pull request #672 from fraction/dependabot/npm_and_yarn/ssb-conn-3.2.0
Bump ssb-conn from 3.1.0 to 3.2.0
2021-04-27 08:49:36 -07:00
Christian Bundy 26e2832073
Merge pull request #671 from fraction/dependabot/npm_and_yarn/ssb-replicate-1.3.3
Bump ssb-replicate from 1.3.2 to 1.3.3
2021-04-27 08:25:50 -07:00
dependabot[bot] cf35e0d524
Bump ssb-conn from 3.1.0 to 3.2.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v3.1.0...v3.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-27 05:07:02 +00:00
dependabot[bot] 7baeaa868a
Bump ssb-replicate from 1.3.2 to 1.3.3
Bumps [ssb-replicate](https://github.com/dominictarr/ssb-replicate) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/dominictarr/ssb-replicate/releases)
- [Commits](https://github.com/dominictarr/ssb-replicate/compare/v1.3.2...v1.3.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-27 05:04:53 +00:00
Christian Bundy 4a0dd3c4a2
Merge pull request #670 from fraction/dependabot/npm_and_yarn/stylelint-config-recommended-5.0.0
Bump stylelint-config-recommended from 4.0.0 to 5.0.0
2021-04-26 07:13:22 -07:00
dependabot[bot] 4af1b0ef5e
Bump stylelint-config-recommended from 4.0.0 to 5.0.0
Bumps [stylelint-config-recommended](https://github.com/stylelint/stylelint-config-recommended) from 4.0.0 to 5.0.0.
- [Release notes](https://github.com/stylelint/stylelint-config-recommended/releases)
- [Changelog](https://github.com/stylelint/stylelint-config-recommended/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint-config-recommended/compare/4.0.0...5.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-26 05:11:30 +00:00
Christian Bundy 7d78833439
Merge pull request #668 from fraction/dependabot/npm_and_yarn/ssb-conn-3.1.0
Bump ssb-conn from 3.0.0 to 3.1.0
2021-04-22 06:56:25 -07:00
dependabot[bot] 61433ae8bc
Bump ssb-conn from 3.0.0 to 3.1.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v3.0.0...v3.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-22 05:04:33 +00:00
Christian Bundy e42af4884e
Merge pull request #654 from fraction/dependabot/npm_and_yarn/highlight.js-10.7.2
Bump highlight.js from 10.7.1 to 10.7.2
2021-04-20 08:34:25 -07:00
Christian Bundy 98f4fb629a
Merge pull request #664 from fraction/dependabot/npm_and_yarn/markdown-it-12.0.6
Bump markdown-it from 12.0.5 to 12.0.6
2021-04-20 08:34:18 -07:00
Christian Bundy 93f5cb51c6
Merge pull request #665 from fraction/dependabot/npm_and_yarn/secret-stack-6.4.0
Bump secret-stack from 6.3.2 to 6.4.0
2021-04-19 08:25:03 -07:00
dependabot[bot] 453bcad596
Bump secret-stack from 6.3.2 to 6.4.0
Bumps [secret-stack](https://github.com/ssbc/secret-stack) from 6.3.2 to 6.4.0.
- [Release notes](https://github.com/ssbc/secret-stack/releases)
- [Commits](https://github.com/ssbc/secret-stack/compare/v6.3.2...v6.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-19 05:07:33 +00:00
dependabot[bot] f877e93cbb
Bump markdown-it from 12.0.5 to 12.0.6
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 12.0.5 to 12.0.6.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/12.0.5...12.0.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-19 05:06:11 +00:00
Christian Bundy 5c3781fd7c
Merge pull request #663 from fraction/dependabot/npm_and_yarn/open-8.0.6
Bump open from 8.0.5 to 8.0.6
2021-04-16 08:56:35 -07:00
dependabot[bot] 050b842b7f
Bump open from 8.0.5 to 8.0.6
Bumps [open](https://github.com/sindresorhus/open) from 8.0.5 to 8.0.6.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.5...v8.0.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-16 05:56:48 +00:00
Christian Bundy cc4ea6f5aa
Merge pull request #660 from fraction/dependabot/npm_and_yarn/ssb-ebt-6.0.0
Bump ssb-ebt from 5.6.7 to 6.0.0
2021-04-15 08:08:13 -07:00
Christian Bundy 4b3fc19471
Merge pull request #661 from fraction/dependabot/npm_and_yarn/markdown-it-12.0.5
Bump markdown-it from 12.0.4 to 12.0.5
2021-04-15 08:08:05 -07:00
Christian Bundy 01e1b80640
Merge pull request #662 from fraction/dependabot/npm_and_yarn/ssb-conn-3.0.0
Bump ssb-conn from 2.1.0 to 3.0.0
2021-04-15 08:07:59 -07:00
dependabot[bot] 859d298930
Bump ssb-conn from 2.1.0 to 3.0.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 2.1.0 to 3.0.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v2.1.0...v3.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-15 05:07:55 +00:00
dependabot[bot] 6309490e78
Bump markdown-it from 12.0.4 to 12.0.5
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 12.0.4 to 12.0.5.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/12.0.4...12.0.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-15 05:06:34 +00:00
dependabot[bot] 33e023b592
Bump ssb-ebt from 5.6.7 to 6.0.0
Bumps [ssb-ebt](https://github.com/ssbc/ssb-ebt) from 5.6.7 to 6.0.0.
- [Release notes](https://github.com/ssbc/ssb-ebt/releases)
- [Commits](https://github.com/ssbc/ssb-ebt/compare/v5.6.7...v6.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-15 05:05:08 +00:00
Christian Bundy b8e675525a
Merge pull request #659 from fraction/dependabot/npm_and_yarn/ssb-invite-2.1.7
Bump ssb-invite from 2.1.6 to 2.1.7
2021-04-13 00:03:25 -07:00
dependabot[bot] 4c228adad0
Bump ssb-invite from 2.1.6 to 2.1.7
Bumps [ssb-invite](https://github.com/ssbc/ssb-invite) from 2.1.6 to 2.1.7.
- [Release notes](https://github.com/ssbc/ssb-invite/releases)
- [Commits](https://github.com/ssbc/ssb-invite/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-13 05:05:13 +00:00
Christian Bundy 9073247aef
Merge pull request #658 from fraction/dependabot/npm_and_yarn/ssb-friends-4.4.5
Bump ssb-friends from 4.4.4 to 4.4.5
2021-04-12 09:11:27 -07:00
dependabot[bot] 78eeff3e26
Bump ssb-friends from 4.4.4 to 4.4.5
Bumps [ssb-friends](https://github.com/ssbc/ssb-friends) from 4.4.4 to 4.4.5.
- [Release notes](https://github.com/ssbc/ssb-friends/releases)
- [Commits](https://github.com/ssbc/ssb-friends/compare/4.4.4...4.4.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-12 05:07:38 +00:00
Christian Bundy fa72a9abf8
Merge pull request #657 from fraction/dependabot/npm_and_yarn/types/sharp-0.28.0
Bump @types/sharp from 0.27.3 to 0.28.0
2021-04-07 07:17:15 -07:00
dependabot[bot] 73743f2229
Bump @types/sharp from 0.27.3 to 0.28.0
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.27.3 to 0.28.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-07 05:04:47 +00:00
Christian Bundy e42a83e8f6
Merge pull request #656 from fraction/dependabot/npm_and_yarn/sharp-0.28.1
Bump sharp from 0.28.0 to 0.28.1
2021-04-06 08:01:59 -07:00
dependabot[bot] e97fd3e429
Bump sharp from 0.28.0 to 0.28.1
Bumps [sharp](https://github.com/lovell/sharp) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.28.0...v0.28.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-06 05:06:39 +00:00
Christian Bundy 8135c6de16
Merge pull request #653 from fraction/dependabot/npm_and_yarn/open-8.0.5
Bump open from 8.0.4 to 8.0.5
2021-04-05 08:23:59 -07:00
dependabot[bot] 86640898d5
Bump highlight.js from 10.7.1 to 10.7.2
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.7.1 to 10.7.2.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/10.7.2/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.7.1...10.7.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-05 05:09:16 +00:00
dependabot[bot] 08ecd5ad1e
Bump open from 8.0.4 to 8.0.5
Bumps [open](https://github.com/sindresorhus/open) from 8.0.4 to 8.0.5.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.4...v8.0.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-05 05:07:54 +00:00
Christian Bundy 87d099f720
Merge pull request #652 from fraction/dependabot/npm_and_yarn/types/sharp-0.27.3
Bump @types/sharp from 0.27.2 to 0.27.3
2021-04-02 09:27:11 -07:00
dependabot[bot] 1b72187795
Bump @types/sharp from 0.27.2 to 0.27.3
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.27.2 to 0.27.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-02 05:05:57 +00:00
Christian Bundy c4c5b497eb
Merge pull request #650 from fraction/dependabot/npm_and_yarn/y18n-4.0.1
Bump y18n from 4.0.0 to 4.0.1
2021-03-31 06:56:38 -07:00
Christian Bundy c138e7d467
Merge pull request #649 from fraction/dependabot/npm_and_yarn/types/supertest-2.0.11
Bump @types/supertest from 2.0.10 to 2.0.11
2021-03-31 06:55:44 -07:00
dependabot[bot] a2f5de1fb9
Bump y18n from 4.0.0 to 4.0.1
Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 10:31:30 +00:00
dependabot[bot] d3c8f12fcb
Bump @types/supertest from 2.0.10 to 2.0.11
Bumps [@types/supertest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/supertest) from 2.0.10 to 2.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/supertest)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 05:05:47 +00:00
Christian Bundy 53acc8b26f
Merge pull request #637 from fraction/dependabot/npm_and_yarn/ssb-conn-2.1.0
Bump ssb-conn from 2.0.0 to 2.1.0
2021-03-30 14:56:17 -07:00
Christian Bundy ad5e36fa4b
Merge pull request #643 from fraction/dependabot/npm_and_yarn/types/yargs-16.0.1
Bump @types/yargs from 16.0.0 to 16.0.1
2021-03-30 14:56:10 -07:00
Christian Bundy 8edb4db4e5
Merge pull request #647 from asymmetric/patch-1
docs: Fix Docker port mapping
2021-03-30 14:53:59 -07:00
asymmetric f32d05e229
Fix Docker port mapping
Use 127.0.0.1 for the host side of the mapping (localhost), rather than the incorrect 127.0.0.0.
2021-03-30 21:07:14 +00:00
dependabot[bot] f05d2aa938
Bump @types/yargs from 16.0.0 to 16.0.1
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 15:14:31 +00:00
Christian Bundy 9115f3aafb
Merge pull request #645 from fraction/dependabot/npm_and_yarn/husky-6.0.0
Bump husky from 5.2.0 to 6.0.0
2021-03-30 08:11:18 -07:00
Christian Bundy 9d2faebfa2
Merge pull request #646 from fraction/dependabot/npm_and_yarn/sharp-0.28.0
Bump sharp from 0.27.2 to 0.28.0
2021-03-30 08:11:11 -07:00
dependabot[bot] e327e4a595
Bump sharp from 0.27.2 to 0.28.0
Bumps [sharp](https://github.com/lovell/sharp) from 0.27.2 to 0.28.0.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.27.2...v0.28.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:04:07 +00:00
dependabot[bot] a745b788f7
Bump husky from 5.2.0 to 6.0.0
Bumps [husky](https://github.com/typicode/husky) from 5.2.0 to 6.0.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v5.2.0...v6.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 05:03:11 +00:00
Christian Bundy fc4f7413ed
Merge pull request #644 from fraction/dependabot/npm_and_yarn/types/sharp-0.27.2
Bump @types/sharp from 0.27.1 to 0.27.2
2021-03-26 10:03:01 -07:00
dependabot[bot] ee0b5a9e2b
Bump @types/sharp from 0.27.1 to 0.27.2
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.27.1 to 0.27.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-26 05:07:01 +00:00
Christian Bundy 453f35532b
Merge pull request #641 from fraction/dependabot/npm_and_yarn/open-8.0.4
Bump open from 8.0.3 to 8.0.4
2021-03-22 10:02:34 -07:00
Christian Bundy f8baea37a9
Merge pull request #642 from fraction/dependabot/npm_and_yarn/highlight.js-10.7.1
Bump highlight.js from 10.6.0 to 10.7.1
2021-03-22 10:01:46 -07:00
Christian Bundy c255eb7f53
Merge pull request #640 from fraction/dependabot/npm_and_yarn/husky-5.2.0
Bump husky from 5.1.3 to 5.2.0
2021-03-22 10:01:40 -07:00
dependabot[bot] c7bda9064b
Bump highlight.js from 10.6.0 to 10.7.1
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.6.0 to 10.7.1.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/main/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.6.0...10.7.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-22 05:14:15 +00:00
dependabot[bot] 042bf25293
Bump open from 8.0.3 to 8.0.4
Bumps [open](https://github.com/sindresorhus/open) from 8.0.3 to 8.0.4.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.3...v8.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-22 05:12:52 +00:00
dependabot[bot] 7deaa0f11e
Bump husky from 5.1.3 to 5.2.0
Bumps [husky](https://github.com/typicode/husky) from 5.1.3 to 5.2.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v5.1.3...v5.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-22 05:11:06 +00:00
Christian Bundy f0225d9ffc
Merge pull request #638 from fraction/dependabot/npm_and_yarn/open-8.0.3
Bump open from 8.0.1 to 8.0.3
2021-03-19 10:51:24 -07:00
dependabot[bot] c3d900e8dd
Bump open from 8.0.1 to 8.0.3
Bumps [open](https://github.com/sindresorhus/open) from 8.0.1 to 8.0.3.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v8.0.1...v8.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-19 05:03:46 +00:00
dependabot[bot] 4ca310f3f1
Bump ssb-conn from 2.0.0 to 2.1.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v2.0.0...v2.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-19 05:03:01 +00:00
Christian Bundy 9fe4517730
Merge pull request #636 from fraction/dependabot/npm_and_yarn/is-svg-4.3.1
Bump is-svg from 4.2.2 to 4.3.1
2021-03-17 09:49:28 -07:00
dependabot[bot] 435acdf480
Bump is-svg from 4.2.2 to 4.3.1
Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 4.2.2 to 4.3.1.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.2.2...v4.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-17 05:04:46 +00:00
Christian Bundy 53f91851bb
Merge pull request #633 from fraction/dependabot/npm_and_yarn/is-svg-4.2.2
Bump is-svg from 4.2.1 to 4.2.2
2021-03-12 08:59:14 -08:00
dependabot[bot] f46ae146f9
Bump is-svg from 4.2.1 to 4.2.2
Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.2.1...v4.2.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-12 05:04:42 +00:00
Christian Bundy 52ce9a152d
Merge pull request #631 from fraction/dependabot/npm_and_yarn/ssb-keys-8.1.0
Bump ssb-keys from 8.0.2 to 8.1.0
2021-03-09 09:23:34 -08:00
Christian Bundy 410b17bea5
Merge pull request #632 from fraction/dependabot/npm_and_yarn/env-paths-2.2.1
Bump env-paths from 2.2.0 to 2.2.1
2021-03-09 09:23:28 -08:00
dependabot[bot] 3cf7c699d0
Bump env-paths from 2.2.0 to 2.2.1
Bumps [env-paths](https://github.com/sindresorhus/env-paths) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/sindresorhus/env-paths/releases)
- [Commits](https://github.com/sindresorhus/env-paths/compare/v2.2.0...v2.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-09 05:09:29 +00:00
dependabot[bot] 6b17c24c7c
Bump ssb-keys from 8.0.2 to 8.1.0
Bumps [ssb-keys](https://github.com/ssbc/ssb-keys) from 8.0.2 to 8.1.0.
- [Release notes](https://github.com/ssbc/ssb-keys/releases)
- [Changelog](https://github.com/ssb-js/ssb-keys/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ssbc/ssb-keys/compare/8.0.2...v8.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-09 05:07:00 +00:00
Christian Bundy 2cbe830cad
Merge pull request #629 from fraction/dependabot/npm_and_yarn/file-type-16.3.0
Bump file-type from 16.2.0 to 16.3.0
2021-03-08 07:33:54 -08:00
Christian Bundy 6de6222a21
Merge pull request #630 from fraction/dependabot/npm_and_yarn/stylelint-config-recommended-4.0.0
Bump stylelint-config-recommended from 3.0.0 to 4.0.0
2021-03-08 07:33:47 -08:00
dependabot[bot] 20ed964fd2
Bump stylelint-config-recommended from 3.0.0 to 4.0.0
Bumps [stylelint-config-recommended](https://github.com/stylelint/stylelint-config-recommended) from 3.0.0 to 4.0.0.
- [Release notes](https://github.com/stylelint/stylelint-config-recommended/releases)
- [Changelog](https://github.com/stylelint/stylelint-config-recommended/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint-config-recommended/compare/3.0.0...4.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-08 05:09:15 +00:00
dependabot[bot] 513248a3a7
Bump file-type from 16.2.0 to 16.3.0
Bumps [file-type](https://github.com/sindresorhus/file-type) from 16.2.0 to 16.3.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v16.2.0...v16.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-08 05:07:47 +00:00
Christian Bundy 8bda181d88
Merge pull request #623 from fraction/dependabot/npm_and_yarn/husky-5.1.3
Bump husky from 5.1.2 to 5.1.3
2021-03-07 13:02:08 -08:00
Christian Bundy 4c576a51c5
Merge pull request #626 from nickwynja/subscribed-channels
Adds subscribed channels to Topics
2021-03-07 13:01:56 -08:00
Christian Bundy 65f2f51536
Merge pull request #627 from fraction/dependabot/npm_and_yarn/types/koa-2.13.1
Bump @types/koa from 2.13.0 to 2.13.1
2021-03-04 09:21:59 -08:00
dependabot[bot] efd846f720
Bump @types/koa from 2.13.0 to 2.13.1
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-04 05:04:19 +00:00
Nick Wynja 4e8f7426a4 Merge branch 'master' of https://github.com/fraction/oasis into subscribed-channels 2021-03-03 13:49:10 -05:00
Nick Wynja 398ebe9271 Adds subscribed channels to Topics
Any subscribed channels now appear at the top of Topics. This gives you
easy access to view subscribed channels using the existing hashtags
view.
2021-03-03 13:36:23 -05:00
Christian Bundy 80e231b82e
Merge pull request #625 from fraction/dependabot/npm_and_yarn/open-8.0.1
Bump open from 7.4.2 to 8.0.1
2021-03-03 08:54:33 -08:00
Christian Bundy e45f115bbf
Merge pull request #624 from nickwynja/blocking
Hides content of messages from blocked people
2021-03-03 08:53:34 -08:00
dependabot[bot] 42dd163479
Bump open from 7.4.2 to 8.0.1
Bumps [open](https://github.com/sindresorhus/open) from 7.4.2 to 8.0.1.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.4.2...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-03 05:05:14 +00:00
Nick Wynja 31e5ae37d5 Hides content of messages from blocked people
This introduces a basic implementation to not display the content of
messages. It still shows that a message exists but shows localized
copy indicating why the content was hidden.

We should consider additional filters or queries in different views to actually
remove these posts but I'll leave that as up for discussion since I can see
value in showing that a blocked comment exists in a conversation.
2021-03-02 17:47:28 -05:00
dependabot[bot] 77a99a5790
Bump husky from 5.1.2 to 5.1.3
Bumps [husky](https://github.com/typicode/husky) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v5.1.2...v5.1.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-02 05:05:26 +00:00
Christian Bundy e8bb3e3fe8
Merge pull request #621 from fraction/dependabot/npm_and_yarn/ssb-conn-2.0.0
Bump ssb-conn from 1.0.0 to 2.0.0
2021-03-01 09:19:04 -08:00
Christian Bundy b461b1a3b0
Merge pull request #620 from fraction/dependabot/npm_and_yarn/husky-5.1.2
Bump husky from 5.1.1 to 5.1.2
2021-03-01 09:11:51 -08:00
dependabot[bot] 09afb54272
Bump ssb-conn from 1.0.0 to 2.0.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 1.0.0 to 2.0.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v1.0.0...v2.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 05:15:12 +00:00
dependabot[bot] d5686eb456
Bump husky from 5.1.1 to 5.1.2
Bumps [husky](https://github.com/typicode/husky) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v5.1.1...v5.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 05:13:46 +00:00
Christian Bundy 26b1e5c9b2
Merge pull request #619 from fraction/dependabot/npm_and_yarn/ssb-lan-1.0.0
Bump ssb-lan from 0.2.0 to 1.0.0
2021-02-25 08:53:00 -08:00
dependabot[bot] 931e1b2593
Bump ssb-lan from 0.2.0 to 1.0.0
Bumps [ssb-lan](https://github.com/staltz/ssb-lan) from 0.2.0 to 1.0.0.
- [Release notes](https://github.com/staltz/ssb-lan/releases)
- [Commits](https://github.com/staltz/ssb-lan/compare/v0.2.0...v1.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-25 05:04:47 +00:00
Christian Bundy 1726e40b8a
Merge pull request #612 from fraction/dependabot/npm_and_yarn/types/koa-2.13.0
Bump @types/koa from 2.11.8 to 2.13.0
2021-02-23 07:48:01 -08:00
Christian Bundy 86cf98c157
Merge pull request #617 from fraction/dependabot/npm_and_yarn/sharp-0.27.2
Bump sharp from 0.27.1 to 0.27.2
2021-02-23 07:39:37 -08:00
Christian Bundy 63f71727a3
Merge pull request #618 from fraction/dependabot/npm_and_yarn/husky-5.1.1
Bump husky from 5.1.0 to 5.1.1
2021-02-23 07:39:20 -08:00
dependabot[bot] 9a79cb6176
Bump husky from 5.1.0 to 5.1.1
Bumps [husky](https://github.com/typicode/husky) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v5.1.0...v5.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-23 05:05:56 +00:00
dependabot[bot] 7d69e4a0c7
Bump sharp from 0.27.1 to 0.27.2
Bumps [sharp](https://github.com/lovell/sharp) from 0.27.1 to 0.27.2.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.27.1...v0.27.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-23 05:04:40 +00:00
Christian Bundy 9c095f3147
Merge pull request #615 from fraction/dependabot/npm_and_yarn/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21
2021-02-22 07:52:21 -08:00
Christian Bundy 648ce71dcd
Merge pull request #616 from fraction/dependabot/npm_and_yarn/husky-5.1.0
Bump husky from 5.0.9 to 5.1.0
2021-02-22 07:52:05 -08:00
dependabot[bot] 4a624b2a0a
Bump husky from 5.0.9 to 5.1.0
Bumps [husky](https://github.com/typicode/husky) from 5.0.9 to 5.1.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v5.0.9...v5.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-22 05:05:53 +00:00
dependabot[bot] 08f52b6297
Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-22 05:05:10 +00:00
Jacob Karlsson 1ad14c70d3
Merge pull request #603 from SomaRasu/110/dislikes-on-likes-page
updating code for likes page bug
2021-02-21 18:12:09 +01:00
dependabot[bot] 5025de612e
Bump @types/koa from 2.11.8 to 2.13.0
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.11.8 to 2.13.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-19 05:04:57 +00:00
Christian Bundy 14b8c082bb
Merge pull request #608 from fraction/dependabot/npm_and_yarn/open-7.4.2
Bump open from 7.4.1 to 7.4.2
2021-02-17 07:48:48 -08:00
Christian Bundy fa98ae4e12
Merge pull request #609 from fraction/dependabot/npm_and_yarn/ssb-friends-4.4.4
Bump ssb-friends from 4.4.3 to 4.4.4
2021-02-17 07:48:44 -08:00
dependabot[bot] de279c28fa
Bump ssb-friends from 4.4.3 to 4.4.4
Bumps [ssb-friends](https://github.com/ssbc/ssb-friends) from 4.4.3 to 4.4.4.
- [Release notes](https://github.com/ssbc/ssb-friends/releases)
- [Commits](https://github.com/ssbc/ssb-friends/compare/v4.4.3...4.4.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-17 05:05:55 +00:00
dependabot[bot] de96a36f0f
Bump open from 7.4.1 to 7.4.2
Bumps [open](https://github.com/sindresorhus/open) from 7.4.1 to 7.4.2.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.4.1...v7.4.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-17 05:04:23 +00:00
Christian Bundy 93b7ba4b21
Merge pull request #605 from fraction/dependabot/npm_and_yarn/types/koa-2.11.8
Bump @types/koa from 2.11.7 to 2.11.8
2021-02-16 07:37:48 -08:00
Christian Bundy 2919e2d5d6
Merge pull request #606 from fraction/dependabot/npm_and_yarn/open-7.4.1
Bump open from 7.4.0 to 7.4.1
2021-02-16 07:37:41 -08:00
dependabot[bot] 5eef74c72c
Bump open from 7.4.0 to 7.4.1
Bumps [open](https://github.com/sindresorhus/open) from 7.4.0 to 7.4.1.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.4.0...v7.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-15 05:07:09 +00:00
dependabot[bot] b43b868f3a
Bump @types/koa from 2.11.7 to 2.11.8
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.11.7 to 2.11.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-15 05:05:42 +00:00
Soma 519d0e55f0 fix linting issues 2021-02-13 07:33:28 -08:00
Soma c05023e0dd updating code for likes page bug 2021-02-13 07:23:26 -08:00
Jacob Karlsson a7f0f9ab2c
Merge pull request #601 from Roxxers/chore/mention-oasis-desktop
mention oasis-desktop in the README
2021-02-09 22:01:21 +01:00
Christian Bundy 1ea64b288e
Merge pull request #599 from fraction/dependabot/npm_and_yarn/husky-5.0.9
Bump husky from 4.3.8 to 5.0.9
2021-02-09 11:43:07 -08:00
dependabot[bot] 99c59e101a
Bump husky from 4.3.8 to 5.0.9
Bumps [husky](https://github.com/typicode/husky) from 4.3.8 to 5.0.9.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v4.3.8...v5.0.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-09 17:52:36 +00:00
Christian Bundy 1b5553c329
Merge pull request #598 from fraction/dependabot/npm_and_yarn/highlight.js-10.6.0
Bump highlight.js from 10.5.0 to 10.6.0
2021-02-09 09:50:09 -08:00
Christian Bundy ec01ed40c5
Merge pull request #597 from fraction/dependabot/npm_and_yarn/ssb-friends-4.4.3
Bump ssb-friends from 4.3.0 to 4.4.3
2021-02-09 09:50:02 -08:00
Roxie Gibson 6eac0ce808
chore: mention oasis-desktop in the README
Fixes #575
2021-02-09 10:00:43 +00:00
dependabot[bot] 0d21b99a95
Bump highlight.js from 10.5.0 to 10.6.0
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.5.0 to 10.6.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.5.0...10.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-09 05:05:26 +00:00
dependabot[bot] 9355f575b2
Bump ssb-friends from 4.3.0 to 4.4.3
Bumps [ssb-friends](https://github.com/ssbc/ssb-friends) from 4.3.0 to 4.4.3.
- [Release notes](https://github.com/ssbc/ssb-friends/releases)
- [Commits](https://github.com/ssbc/ssb-friends/compare/v4.3.0...v4.4.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-09 05:04:01 +00:00
Christian Bundy d20e70bf44
Merge pull request #595 from fraction/dependabot/npm_and_yarn/open-7.4.0
Bump open from 7.3.1 to 7.4.0
2021-02-02 07:26:59 -08:00
dependabot[bot] 1b5a6d4211
Bump open from 7.3.1 to 7.4.0
Bumps [open](https://github.com/sindresorhus/open) from 7.3.1 to 7.4.0.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.3.1...v7.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-02 05:05:06 +00:00
Christian Bundy bde67c5077
Merge pull request #588 from fraction/dependabot/npm_and_yarn/types/koa-2.11.7
Bump @types/koa from 2.11.6 to 2.11.7
2021-02-01 08:11:59 -08:00
dependabot[bot] ffec0c9706
Bump @types/koa from 2.11.6 to 2.11.7
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.11.6 to 2.11.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 15:56:17 +00:00
Christian Bundy a7544659e6
Merge pull request #587 from fraction/dependabot/npm_and_yarn/sharp-0.27.1
Bump sharp from 0.27.0 to 0.27.1
2021-02-01 07:53:55 -08:00
Christian Bundy ec56978ed2
Merge pull request #593 from fraction/dependabot/npm_and_yarn/ssb-keys-8.0.2
Bump ssb-keys from 8.0.1 to 8.0.2
2021-02-01 07:49:56 -08:00
dependabot[bot] a8f819d3d8
Bump ssb-keys from 8.0.1 to 8.0.2
Bumps [ssb-keys](https://github.com/ssbc/ssb-keys) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/ssbc/ssb-keys/releases)
- [Changelog](https://github.com/ssb-js/ssb-keys/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ssbc/ssb-keys/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 05:17:59 +00:00
dependabot[bot] 942f9f4174
Bump sharp from 0.27.0 to 0.27.1
Bumps [sharp](https://github.com/lovell/sharp) from 0.27.0 to 0.27.1.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.27.0...v0.27.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 17:47:14 +00:00
Christian Bundy ae85340190
Merge pull request #590 from fraction/dependabot/npm_and_yarn/types/yargs-16.0.0
Bump @types/yargs from 15.0.12 to 16.0.0
2021-01-29 09:44:47 -08:00
Christian Bundy e17ed18ff7
Merge pull request #591 from fraction/dependabot/npm_and_yarn/ssb-conn-1.0.0
Bump ssb-conn from 0.19.1 to 1.0.0
2021-01-29 09:40:43 -08:00
dependabot[bot] 099a563c34
Bump ssb-conn from 0.19.1 to 1.0.0
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 0.19.1 to 1.0.0.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Changelog](https://github.com/staltz/ssb-conn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/staltz/ssb-conn/compare/v0.19.1...v1.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 05:04:44 +00:00
dependabot[bot] fa25c190d3
Bump @types/yargs from 15.0.12 to 16.0.0
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 15.0.12 to 16.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-29 05:03:45 +00:00
Christian Bundy 3530560f25
Merge pull request #585 from lindskog/iss399
Add social filter to threads
2021-01-27 07:49:11 -08:00
Christian Bundy 0d93578d52
Merge pull request #584 from lindskog/issue126
Issue 126: Show recipients of private messages
2021-01-27 07:48:41 -08:00
Cecilia Lindskog bb5dfced9b Add social filter to threads 2021-01-27 12:12:40 +01:00
Cecilia Lindskog 29dcaad89c Fix issue with feedId 2021-01-27 10:57:04 +01:00
Christian Bundy 6b947ed7f2
Merge pull request #572 from fraction/dependabot/npm_and_yarn/types/sharp-0.27.1
Bump @types/sharp from 0.27.0 to 0.27.1
2021-01-26 08:33:11 -08:00
Christian Bundy 54ef24ba4f
Merge pull request #570 from fraction/dependabot/npm_and_yarn/ssb-ref-2.14.3
Bump ssb-ref from 2.14.2 to 2.14.3
2021-01-26 08:18:55 -08:00
Christian Bundy 15733ec4a7
Merge pull request #583 from fraction/dependabot/npm_and_yarn/supertest-6.1.3
Bump supertest from 6.1.1 to 6.1.3
2021-01-26 08:18:44 -08:00
Cecilia Lindskog 3c771da8ff Issue 126: Show recipients of private messages 2021-01-26 10:33:29 +01:00
dependabot[bot] 4575dd6314
Bump supertest from 6.1.1 to 6.1.3
Bumps [supertest](https://github.com/visionmedia/supertest) from 6.1.1 to 6.1.3.
- [Release notes](https://github.com/visionmedia/supertest/releases)
- [Commits](https://github.com/visionmedia/supertest/compare/v6.1.1...v6.1.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-26 05:04:13 +00:00
Christian Bundy 04d52b9947
Merge pull request #581 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.168
Bump @types/lodash from 4.14.167 to 4.14.168
2021-01-19 09:52:52 -08:00
dependabot[bot] 27d4c2f407
Bump @types/lodash from 4.14.167 to 4.14.168
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.167 to 4.14.168.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-19 05:04:06 +00:00
Christian Bundy 2a9463dcef
Merge pull request #580 from fraction/dependabot/npm_and_yarn/ssb-keys-8.0.1
Bump ssb-keys from 8.0.0 to 8.0.1
2021-01-18 06:29:01 -08:00
Christian Bundy e1cd0ab50a
Merge pull request #579 from fraction/dependabot/npm_and_yarn/supertest-6.1.1
Bump supertest from 6.0.1 to 6.1.1
2021-01-18 06:28:38 -08:00
Christian Bundy f87fba0cfb
Merge pull request #578 from fraction/dependabot/npm_and_yarn/types/koa__router-8.0.4
Bump @types/koa__router from 8.0.3 to 8.0.4
2021-01-18 06:28:21 -08:00
Christian Bundy 4fcf46fa15
Merge pull request #577 from fraction/dependabot/npm_and_yarn/husky-4.3.8
Bump husky from 4.3.7 to 4.3.8
2021-01-18 06:28:08 -08:00
dependabot[bot] 7d2ebcdabd
Bump ssb-keys from 8.0.0 to 8.0.1
Bumps [ssb-keys](https://github.com/ssbc/ssb-keys) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/ssbc/ssb-keys/releases)
- [Changelog](https://github.com/ssb-js/ssb-keys/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ssbc/ssb-keys/compare/8.0.0...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-18 05:14:24 +00:00
dependabot[bot] 2a19df615b
Bump supertest from 6.0.1 to 6.1.1
Bumps [supertest](https://github.com/visionmedia/supertest) from 6.0.1 to 6.1.1.
- [Release notes](https://github.com/visionmedia/supertest/releases)
- [Commits](https://github.com/visionmedia/supertest/compare/v6.0.1...v6.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-18 05:13:08 +00:00
dependabot[bot] f5607e8b36
Bump @types/koa__router from 8.0.3 to 8.0.4
Bumps [@types/koa__router](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa__router) from 8.0.3 to 8.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa__router)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-18 05:12:03 +00:00
dependabot[bot] f5224988a4
Bump husky from 4.3.7 to 4.3.8
Bumps [husky](https://github.com/typicode/husky) from 4.3.7 to 4.3.8.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v4.3.7...v4.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-18 05:11:06 +00:00
Christian Bundy c83da5587c
Merge pull request #576 from fraction/dependabot/npm_and_yarn/file-type-16.2.0
Bump file-type from 16.1.0 to 16.2.0
2021-01-13 22:40:45 -08:00
dependabot[bot] ffe9feffbd
Bump file-type from 16.1.0 to 16.2.0
Bumps [file-type](https://github.com/sindresorhus/file-type) from 16.1.0 to 16.2.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v16.1.0...v16.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-14 05:04:37 +00:00
Christian Bundy a2f671f49f
Merge pull request #574 from fraction/dependabot/npm_and_yarn/open-7.3.1
Bump open from 7.3.0 to 7.3.1
2021-01-08 08:15:54 -08:00
dependabot[bot] 560d22be72
Bump open from 7.3.0 to 7.3.1
Bumps [open](https://github.com/sindresorhus/open) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.3.0...v7.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-08 05:03:47 +00:00
Christian Bundy bb50538823
Merge pull request #571 from fraction/dependabot/npm_and_yarn/husky-4.3.7
Bump husky from 4.3.6 to 4.3.7
2021-01-07 09:37:03 -08:00
Christian Bundy 91ef26316d
Merge pull request #573 from fraction/dependabot/npm_and_yarn/nodemon-2.0.7
Bump nodemon from 2.0.6 to 2.0.7
2021-01-07 09:36:51 -08:00
dependabot[bot] 3180454c7f
Bump nodemon from 2.0.6 to 2.0.7
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.6...v2.0.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-07 05:06:25 +00:00
dependabot[bot] c1ed525cec
Bump @types/sharp from 0.27.0 to 0.27.1
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.27.0 to 0.27.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-07 05:05:25 +00:00
dependabot[bot] a79edc1c20
Bump husky from 4.3.6 to 4.3.7
Bumps [husky](https://github.com/typicode/husky) from 4.3.6 to 4.3.7.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v4.3.6...v4.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-07 05:04:23 +00:00
Christian Bundy a5863af2ec
Merge pull request #569 from fraction/dependabot/npm_and_yarn/secret-stack-6.3.2
Bump secret-stack from 6.3.1 to 6.3.2
2021-01-06 08:41:50 -08:00
dependabot[bot] 0c33b2f5c1
Bump ssb-ref from 2.14.2 to 2.14.3
Bumps [ssb-ref](https://github.com/ssbc/ssb-ref) from 2.14.2 to 2.14.3.
- [Release notes](https://github.com/ssbc/ssb-ref/releases)
- [Commits](https://github.com/ssbc/ssb-ref/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 05:06:01 +00:00
dependabot[bot] 0d0ea2186b
Bump secret-stack from 6.3.1 to 6.3.2
Bumps [secret-stack](https://github.com/ssbc/secret-stack) from 6.3.1 to 6.3.2.
- [Release notes](https://github.com/ssbc/secret-stack/releases)
- [Commits](https://github.com/ssbc/secret-stack/compare/v6.3.1...v6.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 05:04:42 +00:00
Christian Bundy 3737d21faf
Merge pull request #565 from fraction/dependabot/npm_and_yarn/ssb-db-20.4.0
Bump ssb-db from 20.3.0 to 20.4.0
2021-01-05 08:11:27 -08:00
Christian Bundy afb50b6b09
Merge pull request #566 from fraction/dependabot/npm_and_yarn/types/sharp-0.27.0
Bump @types/sharp from 0.26.1 to 0.27.0
2021-01-04 21:17:33 -08:00
Christian Bundy 1139baa347
Merge pull request #567 from fraction/dependabot/npm_and_yarn/koa-2.13.1
Bump koa from 2.13.0 to 2.13.1
2021-01-04 21:17:28 -08:00
Christian Bundy 1199584c96
Merge pull request #568 from fraction/dependabot/npm_and_yarn/types/markdown-it-12.0.1
Bump @types/markdown-it from 12.0.0 to 12.0.1
2021-01-04 21:17:21 -08:00
dependabot[bot] 353fa13456
Bump @types/markdown-it from 12.0.0 to 12.0.1
Bumps [@types/markdown-it](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/markdown-it) from 12.0.0 to 12.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/markdown-it)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 05:07:50 +00:00
dependabot[bot] 732e87a174
Bump koa from 2.13.0 to 2.13.1
Bumps [koa](https://github.com/koajs/koa) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](https://github.com/koajs/koa/compare/2.13.0...2.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 05:06:35 +00:00
dependabot[bot] f29a8cd955
Bump @types/sharp from 0.26.1 to 0.27.0
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.26.1 to 0.27.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 05:05:43 +00:00
dependabot[bot] 836ebaafb0
Bump ssb-db from 20.3.0 to 20.4.0
Bumps [ssb-db](https://github.com/ssbc/ssb-db) from 20.3.0 to 20.4.0.
- [Release notes](https://github.com/ssbc/ssb-db/releases)
- [Commits](https://github.com/ssbc/ssb-db/compare/v20.3.0...v20.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-05 05:04:32 +00:00
Christian Bundy 54637c041b
Merge pull request #564 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.167
Bump @types/lodash from 4.14.166 to 4.14.167
2021-01-04 08:51:24 -08:00
dependabot[bot] de3fd62561
Bump @types/lodash from 4.14.166 to 4.14.167
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.166 to 4.14.167.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-04 05:10:10 +00:00
Christian Bundy f0fcf85dc9
Merge pull request #563 from fraction/justinabrahms-patch-1
Copying solution to the issue into the docs.
2021-01-01 12:50:12 -08:00
Justin Abrahms 0fad190801
Update configuring.md
closes #439
2021-01-01 00:31:43 -08:00
Christian Bundy 7e5f37ddef
Merge pull request #562 from J053Fabi0/master
Better translations for Spanish
2020-12-31 13:44:06 -08:00
Jose Fabio 698121813b npm run fix 2020-12-30 10:22:03 -07:00
Jose Fabio 4623c203a4 Even more translations 2020-12-30 09:52:34 -07:00
Jose Fabio 7d936f458f More translations 2020-12-29 20:19:58 -07:00
Jose Fabio b0b3900e80 Better translations for Spanish 2020-12-29 20:13:03 -07:00
Christian Bundy 7c257003eb
Merge pull request #561 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.166
Bump @types/lodash from 4.14.165 to 4.14.166
2020-12-24 07:12:12 -08:00
Christian Bundy cf5839ab5c
Merge pull request #560 from fraction/dependabot/npm_and_yarn/highlight.js-10.5.0
Bump highlight.js from 10.4.1 to 10.5.0
2020-12-24 07:11:56 -08:00
dependabot[bot] e49d80a1da
Bump @types/lodash from 4.14.165 to 4.14.166
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.165 to 4.14.166.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-24 05:05:54 +00:00
dependabot[bot] 14046182ec
Bump highlight.js from 10.4.1 to 10.5.0
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.4.1 to 10.5.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.4.1...10.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-24 05:04:41 +00:00
Christian Bundy 1cefa76cf6
Merge pull request #556 from fraction/dependabot/npm_and_yarn/types/markdown-it-12.0.0
Bump @types/markdown-it from 10.0.3 to 12.0.0
2020-12-23 09:56:54 -08:00
Christian Bundy 0beb6215f3
Merge pull request #557 from fraction/dependabot/npm_and_yarn/markdown-it-12.0.4
Bump markdown-it from 12.0.3 to 12.0.4
2020-12-23 09:56:41 -08:00
dependabot[bot] 6f3383cbcf
Bump markdown-it from 12.0.3 to 12.0.4
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 12.0.3 to 12.0.4.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/12.0.3...12.0.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-23 16:00:56 +00:00
Christian Bundy ad7eceac95
Merge pull request #559 from fraction/dependabot/npm_and_yarn/sharp-0.27.0
Bump sharp from 0.26.3 to 0.27.0
2020-12-23 07:58:09 -08:00
dependabot[bot] b68559c4aa
Bump sharp from 0.26.3 to 0.27.0
Bumps [sharp](https://github.com/lovell/sharp) from 0.26.3 to 0.27.0.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.26.3...v0.27.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-23 05:05:23 +00:00
Christian Bundy 57662bd224
Merge pull request #558 from fraction/dependabot/npm_and_yarn/file-type-16.1.0
Bump file-type from 16.0.1 to 16.1.0
2020-12-22 09:11:36 -08:00
dependabot[bot] 76d2b26397
Bump file-type from 16.0.1 to 16.1.0
Bumps [file-type](https://github.com/sindresorhus/file-type) from 16.0.1 to 16.1.0.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v16.0.1...v16.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-22 05:04:15 +00:00
dependabot[bot] d6d7b43ab2
Bump @types/markdown-it from 10.0.3 to 12.0.0
Bumps [@types/markdown-it](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/markdown-it) from 10.0.3 to 12.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/markdown-it)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-17 05:04:55 +00:00
Christian Bundy 7a76df4072
Merge pull request #555 from fraction/dependabot/npm_and_yarn/types/yargs-15.0.12
Bump @types/yargs from 15.0.11 to 15.0.12
2020-12-16 09:49:47 -08:00
dependabot[bot] e5caea33b1
Bump @types/yargs from 15.0.11 to 15.0.12
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 15.0.11 to 15.0.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-16 05:05:50 +00:00
Christian Bundy 1a7cbd4c7a
Merge pull request #553 from fraction/dependabot/npm_and_yarn/husky-4.3.6
Bump husky from 4.3.5 to 4.3.6
2020-12-14 09:09:42 -08:00
dependabot[bot] 5b3fb396fc
Bump husky from 4.3.5 to 4.3.6
Bumps [husky](https://github.com/typicode/husky) from 4.3.5 to 4.3.6.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v4.3.5...v4.3.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-14 05:15:40 +00:00
Christian Bundy 9b12cf6881
Merge pull request #545 from fraction/dependabot/npm_and_yarn/yargs-16.2.0
Bump yargs from 16.1.1 to 16.2.0
2020-12-12 20:49:37 -08:00
Christian Bundy dbe555e49e
Merge pull request #550 from fraction/dependabot/npm_and_yarn/husky-4.3.5
Bump husky from 4.3.0 to 4.3.5
2020-12-12 20:49:25 -08:00
Christian Bundy e534f06631
Merge pull request #552 from fraction/dependabot/npm_and_yarn/ini-1.3.8
Bump ini from 1.3.5 to 1.3.8
2020-12-12 09:44:00 -08:00
dependabot[bot] 8a64352da1
Bump ini from 1.3.5 to 1.3.8
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-12 04:44:36 +00:00
Daan Wynen 71926c7bd5
Merge pull request #544 from Perelandra0x309/add-custom-style
Add support for linking an optional custom-style.css file from the user's oasis configuration folder.
2020-12-09 16:36:55 +01:00
Supernova 1b47d439ec Add support for linking an optional custom-style.css file from the user's oasis configuration folder. 2020-12-08 12:37:26 -05:00
Christian Bundy e7d7999749
Merge pull request #551 from fraction/dependabot/npm_and_yarn/markdown-it-12.0.3
Bump markdown-it from 12.0.2 to 12.0.3
2020-12-08 07:23:57 -08:00
dependabot[bot] 3e10be4172
Bump markdown-it from 12.0.2 to 12.0.3
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 12.0.2 to 12.0.3.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/12.0.2...12.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-08 05:08:17 +00:00
dependabot[bot] 648e74e205
Bump husky from 4.3.0 to 4.3.5
Bumps [husky](https://github.com/typicode/husky) from 4.3.0 to 4.3.5.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v4.3.0...v4.3.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-08 05:06:14 +00:00
Daan Wynen 3a6e484f71
Merge pull request #549 from johanbove/patch-1
Update README.md
2020-12-08 02:20:13 +01:00
Johan Bové 3b5f5bcf9f
Update README.md
Added link to the Gitlab source code repository
2020-12-07 22:05:41 +01:00
dependabot[bot] 8da7d6514e
Bump yargs from 16.1.1 to 16.2.0
Bumps [yargs](https://github.com/yargs/yargs) from 16.1.1 to 16.2.0.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v16.1.1...v16.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-07 05:13:49 +00:00
Christian Bundy 2d4063e2dd
Merge pull request #542 from fraction/dependabot/npm_and_yarn/highlight.js-10.4.1
Bump highlight.js from 10.4.0 to 10.4.1
2020-12-04 08:01:59 -08:00
dependabot[bot] 143da01030
Bump highlight.js from 10.4.0 to 10.4.1
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.4.0 to 10.4.1.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.4.0...10.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-04 05:04:42 +00:00
Christian Bundy 3e79de2620
Merge pull request #541 from fraction/dependabot/npm_and_yarn/types/yargs-15.0.11
Bump @types/yargs from 15.0.10 to 15.0.11
2020-12-03 09:05:02 -08:00
dependabot[bot] 21138816d9
Bump @types/yargs from 15.0.10 to 15.0.11
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 15.0.10 to 15.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-03 05:05:15 +00:00
Christian Bundy d673702011
Merge pull request #540 from christianbundy/add-rebuild
Add rebuild button to settings
2020-12-02 08:49:30 -08:00
Christian Bundy a02744d0eb Add rebuild button to settings
Problem: The latest release seems to have some index problems, which is
frustrating, but might be able to be circumvented with a database
rebuild. The rebuild was something that Ahau funded and I'm excited to
be able to finally expose this to users without asking them to `rm -rf`
random files in their `~/.ssb` directory.

Solution: Replaced unused 'progress' bars (always at 100%) with rebuild
button.
2020-11-29 10:55:00 -08:00
Christian Bundy 72eb2c8c41
Merge pull request #532 from black-puppydog/common-good-4.0.3
Common good 4.0.3
2020-11-26 07:10:46 -08:00
Daan Wynen 10fc3d89fe Fir common-good call
Use `test` instead of `check`.
This was changed in common-good 3.0.
See the [commit](3dc492ea7d)

Also added a pretty aggressive ignore-list for dev-dependencies for depcheck.
2020-11-25 23:30:04 +01:00
dependabot[bot] 956893a0fe Bump common-good from 2.0.3 to 4.0.3
Bumps [common-good](https://github.com/christianbundy/common-good) from 2.0.3 to 4.0.3.
- [Release notes](https://github.com/christianbundy/common-good/releases)
- [Commits](https://github.com/christianbundy/common-good/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-25 21:15:12 +01:00
Christian Bundy 9ca0493176
Merge pull request #531 from christianbundy/release-2.17.0
2.17.0
2020-11-25 08:01:58 -08:00
cblgh df2ebced9e 2.17.0 2020-11-25 07:52:54 -08:00
Christian Bundy 8a5a17124e
Merge pull request #529 from fraction/dependabot/npm_and_yarn/ssb-blobs-2.0.1
Bump ssb-blobs from 1.2.3 to 2.0.1
2020-11-25 07:47:25 -08:00
dependabot[bot] 2dfcc88c12
Bump ssb-blobs from 1.2.3 to 2.0.1
Bumps [ssb-blobs](https://github.com/ssbc/ssb-blobs) from 1.2.3 to 2.0.1.
- [Release notes](https://github.com/ssbc/ssb-blobs/releases)
- [Commits](https://github.com/ssbc/ssb-blobs/compare/v1.2.3...v2.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-25 06:29:47 +00:00
Christian Bundy 81efb9aef1
Merge pull request #530 from fraction/dependabot/npm_and_yarn/types/pull-stream-3.6.2
Bump @types/pull-stream from 3.6.0 to 3.6.2
2020-11-24 21:35:34 -08:00
Christian Bundy e5db883a4c
Merge pull request #507 from christianbundy/upgrade-koa-router
Upgrade @koa/router
2020-11-24 21:35:22 -08:00
Christian Bundy 925e4bc78b Merge branch 'master' of github.com:fraction/oasis into upgrade-koa-router 2020-11-24 20:46:51 -08:00
dependabot[bot] 9ef9ab9ff4
Bump @types/pull-stream from 3.6.0 to 3.6.2
Bumps [@types/pull-stream](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pull-stream) from 3.6.0 to 3.6.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pull-stream)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-25 04:11:26 +00:00
Christian Bundy 010b4535c8
Merge pull request #524 from christianbundy/revert-css-changes
Revert CSS changes from preview PR
2020-11-24 20:04:41 -08:00
Christian Bundy 50fa52fb09
Merge pull request #521 from christianbundy/add-more-tests
Add more comprehensive tests
2020-11-24 20:04:01 -08:00
Christian Bundy 73be3b79c6 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/types/yargs-15.0.10' into add-more-tests 2020-11-23 08:19:27 -08:00
Christian Bundy 416b036187 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/husky-4.3.0' into add-more-tests 2020-11-23 08:19:13 -08:00
Christian Bundy 47ead0c624 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/types/mkdirp-1.0.1' into add-more-tests 2020-11-23 08:18:55 -08:00
Christian Bundy c56b546428 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/types/koa__router-8.0.3' into add-more-tests 2020-11-23 08:18:33 -08:00
dependabot[bot] cd6f2182e4
Bump @types/yargs from 15.0.4 to 15.0.10
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 15.0.4 to 15.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:18:10 +00:00
dependabot[bot] 25cc918fce
Bump husky from 3.1.0 to 4.3.0
Bumps [husky](https://github.com/typicode/husky) from 3.1.0 to 4.3.0.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v3.1.0...v4.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:16:46 +00:00
dependabot[bot] 5d892823de
Bump @types/mkdirp from 1.0.0 to 1.0.1
Bumps [@types/mkdirp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mkdirp) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mkdirp)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:15:24 +00:00
dependabot[bot] f09c3fc274
Bump @types/koa__router from 8.0.2 to 8.0.3
Bumps [@types/koa__router](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa__router) from 8.0.2 to 8.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa__router)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-23 05:14:05 +00:00
Christian Bundy 6250f4f0a4 Revert CSS changes from preview PR
Problem: There were lots of CSS changes in the preview + blob PR and I
didn't take enough time to look at them. It looks like a few of them
made style problems (e.g. extra specing in the 'next' / 'previous' links
on the profile pages) and it made it harder (IMO) to determine that
links are links (since we've been using font weight to distinguish).

Solution: Revert those changes back to the previous defaults. If the
margin glitch was on purpose or anyone feels strongly about
distinguishing links using some other style (color?) then I'm happy to
merge those, but I'd like to fix the extra margin and have *some* way to
distinguish links in the mean time.
2020-11-22 18:31:27 -08:00
Christian Bundy 70e87d5e8e Add ssb-private1
Problem: With the new ssb-db@20 we have to explicitly add ssb-private1
to ensure that we can see private messages.

Solution: Add ssb-private1 as a plugin.
2020-11-22 18:02:20 -08:00
Christian Bundy 68acfc833d Merge branch 'master' of github.com:fraction/oasis into add-more-tests 2020-11-22 16:55:37 -08:00
Christian Bundy 65b7df9ea9 Remove comments to disable linters
Problem: Our tests seem to have been disabled in various places, which
means that type errors, typos, and other small problems were introduced.

Solution: Remove the comments and fix the underlying problems without
disabling the linters.
2020-11-22 16:52:12 -08:00
Daan Wynen 25a95dcba2
Merge pull request #470 from christianbundy/re-add-husky
Revert "Removes husky to fix #346"
2020-11-23 01:43:52 +01:00
Christian Bundy 26fa0203a7 npm dedupe 2020-11-22 16:38:23 -08:00
Christian Bundy 74ed560ace Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-db-20.3.0' into add-more-tests-ssb-db 2020-11-22 16:14:15 -08:00
Christian Bundy 2262116d08 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-backlinks-2.1.1' into add-more-tests 2020-11-22 15:58:15 -08:00
Christian Bundy 76f2792c0b Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-search-1.3.0' into add-more-tests 2020-11-22 15:47:07 -08:00
Christian Bundy 6cbaa447d3 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-friends-4.3.0' into add-more-tests 2020-11-22 15:46:56 -08:00
Christian Bundy f77498ae0a Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-conn-0.19.1' into add-more-tests 2020-11-22 15:46:44 -08:00
Christian Bundy 9f1b05de70 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-meme-1.1.0' into add-more-tests 2020-11-22 15:46:30 -08:00
Christian Bundy ebb634b097 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-invite-2.1.6' into add-more-tests 2020-11-22 15:46:16 -08:00
Christian Bundy c7b1e0a249 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-blobs-1.2.3' into add-more-tests 2020-11-22 15:45:25 -08:00
Christian Bundy 70e87b8217 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-ooo-1.3.3' into add-more-tests 2020-11-22 15:44:57 -08:00
Christian Bundy 587f9d5efe Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-query-2.4.5' into add-more-tests 2020-11-22 15:44:44 -08:00
Christian Bundy b261c3ea98 Merge remote-tracking branch 'upstream/dependabot/npm_and_yarn/ssb-room-1.3.0' into add-more-tests 2020-11-22 15:44:30 -08:00
Christian Bundy c86865a5ca Add more comprehensive tests
Problem: I've been worried about merging these version bump pull
requests since we don't have many tests, and I *really* don't want to
merge any catostrophic breaking changes anywhere.

Solution: Add some tests that are more comprehensive, starting by
creating a temporary SSB database and keypair and then editing the
profile, previewing a message, publishing a message, etc., until we have
a handful of small functions actually being tested. This won't ensure
that everything works forever, and it *really* doesn't test replication,
but it should help increase our confidence that test success means that
fewer things are broken.
2020-11-22 15:35:15 -08:00
dependabot[bot] 57cb5c225d
Bump ssb-db from 19.4.0 to 20.3.0
Bumps [ssb-db](https://github.com/ssbc/ssb-db) from 19.4.0 to 20.3.0.
- [Release notes](https://github.com/ssbc/ssb-db/releases)
- [Commits](https://github.com/ssbc/ssb-db/compare/v19.4.0...v20.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:26:32 +00:00
dependabot[bot] e2f9a4d0a3
Bump ssb-backlinks from 1.0.0 to 2.1.1
Bumps [ssb-backlinks](https://github.com/ssbc/ssb-backlinks) from 1.0.0 to 2.1.1.
- [Release notes](https://github.com/ssbc/ssb-backlinks/releases)
- [Commits](https://github.com/ssbc/ssb-backlinks/commits/v2.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:26:09 +00:00
dependabot[bot] 49c606e654
Bump ssb-search from 1.2.1 to 1.3.0
Bumps [ssb-search](https://github.com/ssbc/ssb-search) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/ssbc/ssb-search/releases)
- [Commits](https://github.com/ssbc/ssb-search/compare/v1.2.1...v1.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:25:48 +00:00
dependabot[bot] 91b5c37207
Bump ssb-friends from 4.1.4 to 4.3.0
Bumps [ssb-friends](https://github.com/ssbc/ssb-friends) from 4.1.4 to 4.3.0.
- [Release notes](https://github.com/ssbc/ssb-friends/releases)
- [Commits](https://github.com/ssbc/ssb-friends/compare/v4.1.4...v4.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:25:27 +00:00
dependabot[bot] c87f0762d2
Bump ssb-conn from 0.17.0 to 0.19.1
Bumps [ssb-conn](https://github.com/staltz/ssb-conn) from 0.17.0 to 0.19.1.
- [Release notes](https://github.com/staltz/ssb-conn/releases)
- [Commits](https://github.com/staltz/ssb-conn/compare/v0.17.0...v0.19.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:25:07 +00:00
dependabot[bot] 805a6219f7
Bump ssb-meme from 1.0.4 to 1.1.0
Bumps [ssb-meme](https://github.com/ssbc/ssb-meme) from 1.0.4 to 1.1.0.
- [Release notes](https://github.com/ssbc/ssb-meme/releases)
- [Commits](https://github.com/ssbc/ssb-meme/compare/v1.0.4...v1.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:24:39 +00:00
dependabot[bot] 55d84224a2
Bump ssb-invite from 2.1.4 to 2.1.6
Bumps [ssb-invite](https://github.com/ssbc/ssb-invite) from 2.1.4 to 2.1.6.
- [Release notes](https://github.com/ssbc/ssb-invite/releases)
- [Commits](https://github.com/ssbc/ssb-invite/commits/v2.1.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:24:16 +00:00
dependabot[bot] 7071eb06c3
Bump ssb-blobs from 1.2.2 to 1.2.3
Bumps [ssb-blobs](https://github.com/ssbc/ssb-blobs) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/ssbc/ssb-blobs/releases)
- [Commits](https://github.com/ssbc/ssb-blobs/commits/v1.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:23:54 +00:00
dependabot[bot] eda7855598
Bump ssb-ooo from 1.3.2 to 1.3.3
Bumps [ssb-ooo](https://github.com/dominictarr/ssb-ooo) from 1.3.2 to 1.3.3.
- [Release notes](https://github.com/dominictarr/ssb-ooo/releases)
- [Commits](https://github.com/dominictarr/ssb-ooo/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:23:28 +00:00
dependabot[bot] 819eb74715
Bump ssb-query from 2.4.3 to 2.4.5
Bumps [ssb-query](https://github.com/dominictarr/ssb-query) from 2.4.3 to 2.4.5.
- [Release notes](https://github.com/dominictarr/ssb-query/releases)
- [Commits](https://github.com/dominictarr/ssb-query/compare/v2.4.3...v2.4.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:23:07 +00:00
dependabot[bot] 74937c763d
Bump ssb-room from 1.2.2 to 1.3.0
Bumps [ssb-room](https://github.com/staltz/ssb-room) from 1.2.2 to 1.3.0.
- [Release notes](https://github.com/staltz/ssb-room/releases)
- [Commits](https://github.com/staltz/ssb-room/compare/v1.2.2...1.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 20:22:43 +00:00
Christian Bundy acf94e2d2e Add note about pre-commit hook 2020-11-22 21:08:47 +01:00
Christian Bundy 679a2bff74 Revert "Removes husky to fix #346"
Problem: I keep forgetting to run tests and my commits aren't actually
passing in CI. I'd really like for these to be run automatically so that
I don't have to remember my pre-commit hooks.

Solution: Revert commit d9e829e2e8, which
Nick Wynja added to remove Husky as a pre-commit hook. I hope that
anyone who doesn't want to run the pre-commit hook will run Git with the
`--no-verify` option, and anyone bummed at this change will open a
conversation to discuss in more details (or just revert *this* commit).

See-also: https://github.com/fraction/oasis/issues/346
2020-11-22 21:08:45 +01:00
Daan Wynen 76789a0ed6
Merge pull request #509 from christianbundy/eat-flotilla
Merge flotilla source code into Oasis
2020-11-22 20:42:30 +01:00
Christian Bundy c993adc01a Merge flotilla source code into Oasis
Problem: I thought it would be a good idea to keep our SSB stack in
another module but it just creates friction and adds another layer to
our stack that has to be independently upgraded and versioned.

Solution: Merge the @fraction/flotilla source code into Oasis so that we
don't have to maintain two separate projects.
2020-11-22 10:10:53 -08:00
Christian Bundy 781e647fce Upgrade @koa/router
This also fixes our routes so that we're listening on `/foo` instead of
`/foo/` with an accidental trailing slash.
2020-11-21 20:15:03 -08:00
Christian Bundy 3600e09ab0
Merge pull request #505 from fraction/dependabot/npm_and_yarn/file-type-16.0.1
Bump file-type from 15.0.1 to 16.0.1
2020-11-21 17:36:05 -08:00
Christian Bundy 5f910c86b5
Merge pull request #501 from fraction/dependabot/npm_and_yarn/types/mkdirp-1.0.1
Bump @types/mkdirp from 1.0.0 to 1.0.1
2020-11-21 17:25:45 -08:00
Christian Bundy 95cef65be2
Merge pull request #506 from fraction/dependabot/npm_and_yarn/pretty-ms-7.0.1
Bump pretty-ms from 6.0.1 to 7.0.1
2020-11-21 17:22:06 -08:00
Christian Bundy 6522172a46
Merge pull request #499 from fraction/dependabot/npm_and_yarn/types/yargs-15.0.10
Bump @types/yargs from 15.0.4 to 15.0.10
2020-11-21 17:18:12 -08:00
dependabot[bot] 6a0ad69969
Bump file-type from 15.0.1 to 16.0.1
Bumps [file-type](https://github.com/sindresorhus/file-type) from 15.0.1 to 16.0.1.
- [Release notes](https://github.com/sindresorhus/file-type/releases)
- [Commits](https://github.com/sindresorhus/file-type/compare/v15.0.1...v16.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 01:11:13 +00:00
Christian Bundy e9f52201ca
Merge pull request #504 from fraction/dependabot/npm_and_yarn/ssb-config-3.4.5
Bump ssb-config from 3.4.4 to 3.4.5
2020-11-21 17:10:19 -08:00
dependabot[bot] 4c309c6ddc
Bump @types/mkdirp from 1.0.0 to 1.0.1
Bumps [@types/mkdirp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mkdirp) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mkdirp)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 01:09:47 +00:00
Christian Bundy e5c7c60257
Merge pull request #502 from fraction/dependabot/npm_and_yarn/debug-4.3.1
Bump debug from 4.1.1 to 4.3.1
2020-11-21 17:08:26 -08:00
Christian Bundy ce8d4cbf57
Merge pull request #503 from fraction/dependabot/npm_and_yarn/highlight.js-10.4.0
Bump highlight.js from 9.18.1 to 10.4.0
2020-11-21 17:08:13 -08:00
Christian Bundy 5d306b7364
Merge pull request #500 from fraction/dependabot/npm_and_yarn/types/markdown-it-10.0.3
Bump @types/markdown-it from 0.0.9 to 10.0.3
2020-11-21 17:06:36 -08:00
dependabot[bot] fa1accd073
Bump @types/yargs from 15.0.4 to 15.0.10
Bumps [@types/yargs](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yargs) from 15.0.4 to 15.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yargs)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 01:04:07 +00:00
Christian Bundy 4f0132b59f
Merge pull request #498 from fraction/dependabot/npm_and_yarn/types/sharp-0.26.1
Bump @types/sharp from 0.24.0 to 0.26.1
2020-11-21 17:02:22 -08:00
dependabot[bot] c72dd99c00
Bump pretty-ms from 6.0.1 to 7.0.1
Bumps [pretty-ms](https://github.com/sindresorhus/pretty-ms) from 6.0.1 to 7.0.1.
- [Release notes](https://github.com/sindresorhus/pretty-ms/releases)
- [Commits](https://github.com/sindresorhus/pretty-ms/compare/v6.0.1...v7.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 01:00:09 +00:00
dependabot[bot] 6c41285826
Bump ssb-config from 3.4.4 to 3.4.5
Bumps [ssb-config](https://github.com/ssbc/ssb-config) from 3.4.4 to 3.4.5.
- [Release notes](https://github.com/ssbc/ssb-config/releases)
- [Commits](https://github.com/ssbc/ssb-config/compare/v3.4.4...v3.4.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:59:27 +00:00
dependabot[bot] 83224ea2f0
Bump highlight.js from 9.18.1 to 10.4.0
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 9.18.1 to 10.4.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/9.18.1...10.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:59:07 +00:00
dependabot[bot] 249b201079
Bump debug from 4.1.1 to 4.3.1
Bumps [debug](https://github.com/visionmedia/debug) from 4.1.1 to 4.3.1.
- [Release notes](https://github.com/visionmedia/debug/releases)
- [Commits](https://github.com/visionmedia/debug/compare/4.1.1...4.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:58:45 +00:00
dependabot[bot] a27f7c4716
Bump @types/markdown-it from 0.0.9 to 10.0.3
Bumps [@types/markdown-it](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/markdown-it) from 0.0.9 to 10.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/markdown-it)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:57:59 +00:00
dependabot[bot] ae9da3df5b
Bump @types/sharp from 0.24.0 to 0.26.1
Bumps [@types/sharp](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/sharp) from 0.24.0 to 0.26.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/sharp)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:57:17 +00:00
Christian Bundy 5fbc54fa74
Merge pull request #495 from christianbundy/gha-16
Increase dependabot open PR limit
2020-11-21 16:55:02 -08:00
Christian Bundy ae4220a409 Increase dependabot open PR limit
Problem: 5 is not a lot and I'd rather have the builds all done and
ready when I'm ready to merge them instead of having to do them in
chunks of 5.

Solution: Allow 16 open PRs at a time. We can change as needed.
2020-11-21 16:51:26 -08:00
Christian Bundy 520ae4b2ad
Merge pull request #493 from fraction/dependabot/npm_and_yarn/sharp-0.26.3
Bump sharp from 0.25.2 to 0.26.3
2020-11-21 16:45:47 -08:00
Christian Bundy ab280610a9
Merge pull request #494 from fraction/dependabot/npm_and_yarn/ssb-ref-2.14.2
Bump ssb-ref from 2.13.9 to 2.14.2
2020-11-21 16:45:35 -08:00
Christian Bundy de557045d8
Merge pull request #492 from fraction/dependabot/npm_and_yarn/types/highlight.js-10.1.0
Bump @types/highlight.js from 9.12.3 to 10.1.0
2020-11-21 16:45:25 -08:00
dependabot[bot] 8740a194aa
Bump ssb-ref from 2.13.9 to 2.14.2
Bumps [ssb-ref](https://github.com/ssbc/ssb-ref) from 2.13.9 to 2.14.2.
- [Release notes](https://github.com/ssbc/ssb-ref/releases)
- [Commits](https://github.com/ssbc/ssb-ref/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:32:39 +00:00
dependabot[bot] 1478579c40
Bump sharp from 0.25.2 to 0.26.3
Bumps [sharp](https://github.com/lovell/sharp) from 0.25.2 to 0.26.3.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Changelog](https://github.com/lovell/sharp/blob/master/docs/changelog.md)
- [Commits](https://github.com/lovell/sharp/compare/v0.25.2...v0.26.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:32:20 +00:00
dependabot[bot] 31036493eb
Bump @types/highlight.js from 9.12.3 to 10.1.0
Bumps [@types/highlight.js](https://github.com/highlightjs/highlight.js) from 9.12.3 to 10.1.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/commits/10.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:31:57 +00:00
Christian Bundy 539aab0dbb
Merge pull request #487 from fraction/dependabot/npm_and_yarn/lodash-4.17.20
Bump lodash from 4.17.19 to 4.17.20
2020-11-21 16:29:38 -08:00
Christian Bundy 8d43f62e21
Merge pull request #489 from fraction/dependabot/npm_and_yarn/markdown-it-12.0.2
Bump markdown-it from 10.0.0 to 12.0.2
2020-11-21 16:29:02 -08:00
Christian Bundy 8c1f2c0606
Merge pull request #488 from fraction/dependabot/npm_and_yarn/changelog-version-2.0.0
Bump changelog-version from 1.0.1 to 2.0.0
2020-11-21 16:27:40 -08:00
Christian Bundy 2002235b95
Merge pull request #486 from fraction/dependabot/npm_and_yarn/koa-2.13.0
Bump koa from 2.11.0 to 2.13.0
2020-11-21 16:25:32 -08:00
Christian Bundy b6e7493680
Merge pull request #485 from fraction/dependabot/npm_and_yarn/yargs-16.1.1
Bump yargs from 15.3.1 to 16.1.1
2020-11-21 16:25:23 -08:00
dependabot[bot] 3255b97c7b
Bump markdown-it from 10.0.0 to 12.0.2
Bumps [markdown-it](https://github.com/markdown-it/markdown-it) from 10.0.0 to 12.0.2.
- [Release notes](https://github.com/markdown-it/markdown-it/releases)
- [Changelog](https://github.com/markdown-it/markdown-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/markdown-it/markdown-it/compare/10.0.0...12.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:20:09 +00:00
dependabot[bot] 8078ffb9cf
Bump changelog-version from 1.0.1 to 2.0.0
Bumps [changelog-version](https://github.com/AlbertoFdzM/changelog-version) from 1.0.1 to 2.0.0.
- [Release notes](https://github.com/AlbertoFdzM/changelog-version/releases)
- [Changelog](https://github.com/AlbertoFdzM/changelog-version/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/AlbertoFdzM/changelog-version/compare/v1.0.1...v2.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:19:47 +00:00
dependabot[bot] 565ba19642
Bump lodash from 4.17.19 to 4.17.20
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.20.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.20)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:19:27 +00:00
dependabot[bot] 3d7dd24753
Bump koa from 2.11.0 to 2.13.0
Bumps [koa](https://github.com/koajs/koa) from 2.11.0 to 2.13.0.
- [Release notes](https://github.com/koajs/koa/releases)
- [Changelog](https://github.com/koajs/koa/blob/master/History.md)
- [Commits](https://github.com/koajs/koa/compare/2.11.0...2.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:19:06 +00:00
dependabot[bot] f0c74e8e31
Bump yargs from 15.3.1 to 16.1.1
Bumps [yargs](https://github.com/yargs/yargs) from 15.3.1 to 16.1.1.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v15.3.1...v16.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:18:42 +00:00
Christian Bundy b243a321ab
Merge pull request #478 from fraction/dependabot/npm_and_yarn/types/lodash-4.14.165
Bump @types/lodash from 4.14.150 to 4.14.165
2020-11-21 16:16:08 -08:00
Christian Bundy 2f0b6ddaad
Merge pull request #481 from fraction/dependabot/npm_and_yarn/koa-body-4.2.0
Bump koa-body from 4.1.1 to 4.2.0
2020-11-21 16:16:00 -08:00
Christian Bundy b3afaf06c7
Merge pull request #479 from fraction/dependabot/npm_and_yarn/nodemon-2.0.6
Bump nodemon from 2.0.3 to 2.0.6
2020-11-21 16:15:52 -08:00
Christian Bundy 0bb999e567
Merge pull request #477 from fraction/dependabot/npm_and_yarn/types/koa-2.11.6
Bump @types/koa from 2.11.3 to 2.11.6
2020-11-21 16:15:43 -08:00
Christian Bundy d85d56cc54
Merge pull request #482 from fraction/dependabot/npm_and_yarn/supertest-6.0.1
Bump supertest from 4.0.2 to 6.0.1
2020-11-21 16:15:31 -08:00
Christian Bundy f41137cd78
Merge pull request #484 from christianbundy/gh-faster
Make GitHub Actions workflow faster
2020-11-21 16:14:50 -08:00
Daan Wynen d133a8d5e9
Merge pull request #468 from christianbundy/remove-unused-fixtures
Remove unused fixtures
2020-11-22 01:05:38 +01:00
Christian Bundy f7c4d3cda5 Make GitHub Actions workflow faster
Problem: PRs are being run twice, once as a push and once as a PR.

Solution: Run only as a push against master or a PR against master.
2020-11-21 16:04:17 -08:00
dependabot[bot] e046bad5c3
Bump supertest from 4.0.2 to 6.0.1
Bumps [supertest](https://github.com/visionmedia/supertest) from 4.0.2 to 6.0.1.
- [Release notes](https://github.com/visionmedia/supertest/releases)
- [Commits](https://github.com/visionmedia/supertest/compare/v4.0.2...v6.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:01:21 +00:00
dependabot[bot] f19d6db50a
Bump koa-body from 4.1.1 to 4.2.0
Bumps [koa-body](https://github.com/dlau/koa-body) from 4.1.1 to 4.2.0.
- [Release notes](https://github.com/dlau/koa-body/releases)
- [Changelog](https://github.com/dlau/koa-body/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dlau/koa-body/compare/v4.1.1...v4.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:01:14 +00:00
dependabot[bot] 3eb8c67da4
Bump nodemon from 2.0.3 to 2.0.6
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.3 to 2.0.6.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.3...v2.0.6)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:01:12 +00:00
dependabot[bot] 594ec86da2
Bump @types/lodash from 4.14.150 to 4.14.165
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.150 to 4.14.165.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:01:11 +00:00
dependabot[bot] 5d9380e454
Bump @types/koa from 2.11.3 to 2.11.6
Bumps [@types/koa](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa) from 2.11.3 to 2.11.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-22 00:01:11 +00:00
Christian Bundy b1d433c775 Merge branch 'master' of github.com:fraction/oasis into remove-unused-fixtures 2020-11-21 15:59:28 -08:00
Christian Bundy c4d7bf4798
Merge pull request #483 from christianbundy/gh-action
Convert .travis.yml to GitHub Action
2020-11-21 15:55:57 -08:00
Christian Bundy bf9173cae1 Convert .travis.yml to GitHub Action 2020-11-21 15:50:50 -08:00
Christian Bundy 783b2c718c
Merge pull request #476 from fraction/dependabot/npm_and_yarn/types/koa__router-8.0.3
Bump @types/koa__router from 8.0.2 to 8.0.3
2020-11-21 15:33:24 -08:00
Christian Bundy 57e24fe3c6
Merge pull request #475 from fraction/dependabot/npm_and_yarn/types/pull-stream-3.6.2
Bump @types/pull-stream from 3.6.0 to 3.6.2
2020-11-21 15:33:12 -08:00
Daan Wynen 9e57b011f7
Merge pull request #469 from christianbundy/stricter-regex
Use stricter regex for @mention match
2020-11-22 00:29:10 +01:00
dependabot[bot] cf24201305
Bump @types/pull-stream from 3.6.0 to 3.6.2
Bumps [@types/pull-stream](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/pull-stream) from 3.6.0 to 3.6.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/pull-stream)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-21 23:22:32 +00:00
dependabot[bot] cf4bc3b0b6
Bump @types/koa__router from 8.0.2 to 8.0.3
Bumps [@types/koa__router](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/koa__router) from 8.0.2 to 8.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/koa__router)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-21 23:22:31 +00:00
Christian Bundy 326b079265
Merge pull request #474 from fraction/dependabot/npm_and_yarn/types/supertest-2.0.10
Bump @types/supertest from 2.0.9 to 2.0.10
2020-11-21 15:21:08 -08:00
Christian Bundy d6ec22aa0c
Merge pull request #473 from fraction/dependabot/npm_and_yarn/tap-14.11.0
Bump tap from 14.10.7 to 14.11.0
2020-11-21 15:20:58 -08:00
Christian Bundy 47a9c4b81f
Merge pull request #472 from fraction/dependabot/npm_and_yarn/open-7.3.0
Bump open from 7.0.3 to 7.3.0
2020-11-21 15:20:47 -08:00
dependabot[bot] 918a74f55e
Bump @types/supertest from 2.0.9 to 2.0.10
Bumps [@types/supertest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/supertest) from 2.0.9 to 2.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/supertest)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-21 23:10:14 +00:00
dependabot[bot] e1b33597f3
Bump tap from 14.10.7 to 14.11.0
Bumps [tap](https://github.com/tapjs/node-tap) from 14.10.7 to 14.11.0.
- [Release notes](https://github.com/tapjs/node-tap/releases)
- [Commits](https://github.com/tapjs/node-tap/compare/v14.10.7...v14.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-21 23:09:54 +00:00
dependabot[bot] 709ec00554
Bump open from 7.0.3 to 7.3.0
Bumps [open](https://github.com/sindresorhus/open) from 7.0.3 to 7.3.0.
- [Release notes](https://github.com/sindresorhus/open/releases)
- [Commits](https://github.com/sindresorhus/open/compare/v7.0.3...v7.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-21 23:09:31 +00:00
Daan Wynen 4070b4648e
Merge pull request #471 from fraction/add-dependabot
Add Dependabot
2020-11-22 00:07:48 +01:00
Christian Bundy f68dd8fbe5
Add Dependabot 2020-11-21 14:59:38 -08:00
Christian Bundy dde991a680 Use stricter regex for @mention match
Problem: You can't publish email addresses or user@host combos or
anything like that because the regex is super liberal in what it
matches.

Solution: Ensure that the first word in a message is a mention *or*
ensure that there's whitespace before a mention. This also adds a
regex101 link (in lieu of proper testing, for now) which makes this
easier to test and track over time.

See-also: https://github.com/fraction/oasis/issues/466
2020-11-20 17:09:55 -08:00
Christian Bundy e94d7ac2ba Remove unused fixtures
Problem: These fixtures seem unused.

Solution: DELETE THEM!
2020-11-20 16:42:07 -08:00
Christian Bundy a5450d8a0f
Merge pull request #465 from christianbundy/fix-tests
Fix tests and remove workaround
2020-11-19 06:40:04 -08:00
Christian Bundy 0aacf3bbc3 Fix tests and remove workaround
Problem: Recently there was a PR [0] merged with a quickfix to avoid
some test failures, which is something I've been trying to avoid. While
`process.exit()` works fine, I'm worried that it means we don't
understand what's happening under the hood, *plus* I have the [maybe
unjustified?] worry that it might kill the process during a database
write or something dangerous. It looks like this particular test hang
was caused by both a stream and some number of intervals that were left
open.

Solution: Provide a way to close the stream and intervals in `index.js`
and ensure that we do that before closing the server.

[0]: https://github.com/fraction/oasis/pull/462
2020-11-11 08:25:38 -08:00
Christian Bundy 4e0960d2d1
Merge pull request #462 from cryptix/post-preview-pr-ready
Post preview with blobs and mentions
2020-11-11 08:24:25 -08:00
Alexander Cobleigh 2fc33f450d document quick fix for making the server definitively exit 2020-11-11 16:57:28 +01:00
Alexander Cobleigh e567443925 try workaround 2020-11-11 15:19:05 +01:00
Henry e7ea4dbb37 make code flow more shallow 2020-11-01 14:45:14 +01:00
Henry e3906e2230 fix race on blobs variable
fixes TypeError: Cannot read property 'startsWith' of undefined
2020-11-01 14:40:43 +01:00
Alexander Cobleigh 4d5c571df3 restore common-good check & fix its errors
after having restored the package-lock.json to that of the master branch, this
PR now uses common-good@2.0.3, which has common-good check as a command.

i ran it manually as $(npm bin)/common-good check, and fixed whatever
it complained about.
2020-10-21 15:33:01 +02:00
Alexander Cobleigh d88d960c52 reset test/basic.js
this time without cryptix's basic blob test (to see if CI completes)
2020-10-21 14:53:18 +02:00
Alexander Cobleigh 988d35a736 manually edit package-lock
the purpose is to only add the two new dependencies this PR introduces, piexifjs
and file-types (and their transitive dependencies, ofc), without affecting any
other dependencies, as compared to oasis's current master branch
2020-10-21 13:58:15 +02:00
Alexander Cobleigh 756fd180e4 fix eslint errors 2020-10-20 13:55:52 +02:00
Alexander Cobleigh 0624aeb5fc shuffle css around to make prettier / common-good happy 2020-10-20 13:51:02 +02:00
Alexander Cobleigh e08901d88c replace warning with comment 2020-10-20 13:28:52 +02:00
Alexander Cobleigh 6220da4b52 fix button sizes 2020-10-19 10:44:52 +02:00
Henry 67241ce286 pin deps 2020-10-19 10:38:21 +02:00
Henry 4884f264fd add simple test for blob uploads 2020-10-19 10:06:35 +02:00
Henry e7dd215f4d fix common-good setup
somehow it's cli arguments changed
2020-10-19 10:06:34 +02:00
Henry 3bdca12a21 invalidate @mentions cache if the user follows someone 2020-10-19 10:06:07 +02:00
Henry c3acbc80d1 fix @mentions lookup table
with duplicates ignored switching back to a previous name doesn't work.
Imagine names [a,b,a], with duplicates ignored the query only returns [a,b].
2020-10-19 10:06:07 +02:00
Alexander Cobleigh 2f746d99e1 remove bracket from regex 2020-10-19 10:06:07 +02:00
Alexander Cobleigh ffb207ce57 add more delims, fix double nicknames 2020-10-19 10:06:07 +02:00
Henry 8f9ef5e3c7 change name->feed lookup structure
we had duplicates and _old_ names in the first attempt,
with this new strucutre only one name per feed is kept (the most recent)

also: tweak regexp some more

should not correctly match end of string and NOT match inside md link
https://regex101.com/r/Uu6iTj/3/
2020-10-19 10:06:07 +02:00
Alexander Cobleigh 28f1821fd5 improve mentions regex edge cases 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 9fb2b87708 add i18n for mentions component 2020-10-19 10:06:06 +02:00
Alexander Cobleigh d4a1602940 add much improved mentions listing 2020-10-19 10:06:06 +02:00
Henry 6ea47ebac6 some more comments 2020-10-19 10:06:06 +02:00
Alexander Cobleigh a2817cf5fb implement relationship-based name matching 2020-10-19 10:06:06 +02:00
Henry d1e68e94a7 some prefix matching logic
lowercase the searches and see if they match the beginning of a name.
2020-10-19 10:06:06 +02:00
Alexander Cobleigh 632d23cfae add german translations (thx cryptix) 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 8127008ce4 add i18n.preview for all languages except .de, improve labels 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 2fca62549e delineate bottom border of summary details 2020-10-19 10:06:06 +02:00
Henry 9004280d0b some @mentions in preview
replaces immediatly if there is one match,
but just spews multiple ones.

* add silly in-memory about:name cache

rational is also commented the code. the tl:dr; is oasis already doesnt
use ssb-about or other indexing plugins.

butt for @mentions we need a quick way to lookup names to feeds,
otherwise we block the preview flow with long query times.
2020-10-19 10:06:06 +02:00
Alexander Cobleigh 8fe9c5b6f5 make subtopicView and commentView consistent w/ threads 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 2f042c5964 remove superfluous padding top from post-preview2C 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 53ee4a58a9 tweak post preview css 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 6d50e53604 remove exif data from uploaded jpegs 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 680a894efd add blob upload to comment, subtopics 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 119c1f8584 implement content warnings for comments, subtopics
also make sure to only display content warning in summary for subtopics
2020-10-19 10:06:06 +02:00
Alexander Cobleigh 0449ebd425 refactor previewView, fix displaying content warnings in previews 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 2d5781f0fe add subtopic previewing 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 83ab086fb5 extract preview code into generatePreview 2020-10-19 10:06:06 +02:00
Alexander Cobleigh e63937c830 condense threads in summaries view, as well 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 0e8ee0c63d improve thread view 2020-10-19 10:06:06 +02:00
Alexander Cobleigh 0ea5f998f5 fix crash w/ no likes, improve preview styling 2020-10-19 10:06:06 +02:00
Henry 5cb4c8aff1 use file-type for mime and enhanced preview
and cleanup blob addition to text
2020-10-19 10:06:02 +02:00
Henry be412793c2 whoops cleanup 2020-10-19 10:04:39 +02:00
Alexander Cobleigh e64b595b54 implement comment previewing 2020-10-19 10:04:39 +02:00
Alexander Cobleigh cc8d2db6a3 extract preview code into generatePreview 2020-10-19 10:04:39 +02:00
Alexander Cobleigh 52382ba3a9 condense threads in summaries view, as well 2020-10-19 10:04:39 +02:00
Alexander Cobleigh d2c5c5feea make like button the same size as other footer actions 2020-10-19 10:04:39 +02:00
Alexander Cobleigh b4fb448e53 improve thread view 2020-10-19 10:04:39 +02:00
Alexander Cobleigh 5064e32abb ignore vim swap files 2020-10-19 10:04:39 +02:00
Alexander Cobleigh b101472767 improve visual hierarchy by refining bold text use 2020-10-19 10:04:39 +02:00
Henry 423c0c11f4 begin working on preview with blobs 2020-10-19 10:04:39 +02:00
Christian Bundy 77f8b6c7bf
Merge pull request #461 from black-puppydog/timestamp-tooltip
Add absolute post time as tooltip to timestamps.
2020-10-12 15:20:56 -07:00
Daan Wynen 8ae7e3125c Add absolute post time as tooltip to timestamps.
Oh, so Christian's birthday was "1y ago"? But when *exactly* was that?
Hover the timestamp to find out! :)
2020-10-12 23:36:45 +02:00
Christian Bundy d01759f770
Merge pull request #459 from fraction/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-07-20 09:19:47 -07:00
dependabot[bot] f8e7f25d6c
Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-19 05:08:58 +00:00
Christian Bundy 7c8fb572f6
Merge pull request #451 from black-puppydog/blob-get-params
Allow GET params in /blob calls.
2020-05-25 08:45:53 -07:00
Christian Bundy 526c53b8f5
Merge pull request #449 from black-puppydog/render-blogs
Add rendering of blog messages.
2020-05-25 08:41:38 -07:00
Daan Wynen a12ad9018c Allow GET params in /blob calls.
This allows blobs to load when the blob reference in the markdown has
`?contentType=image/jpeg` or similar hints attached.
It does so by simply removing the GET parameters from the URL though.
It would be a bit nicer to actually use those hints to set the right
HTTP response headers, but somehow koa keeps ignoring / overwriting (?)
the manually-set `Content-Type` headers, so this has to do for now.
2020-05-25 03:48:59 +02:00
Daan Wynen 9519050eb2 Add rendering of blog messages.
Patchwork does that. So if we're aiming for feature parity...
Also, blogs are neat. :)
2020-05-25 03:46:29 +02:00
Christian Bundy eb9e44981a
Merge pull request #448 from black-puppydog/feed-pagination
Add simple pagination to user feeds.
2020-05-24 10:43:55 -07:00
Daan Wynen a40b2eefc1 make the linters happy.
this time they had a *lot* of opinions. :P
2020-05-23 21:14:49 +02:00
Daan Wynen e8c8aa49a7 Add simple pagination to user feeds.
This is simply based on sequence numbers and the `gt`/`lt` arguments of
`createUserStream`.
2020-05-23 06:13:11 +02:00
Christian Bundy 68ed94e7dd
Merge pull request #447 from nickwynja/fix-profile-edit
Fix broken Profile Edit
2020-05-19 07:14:00 -07:00
Nick Wynja d26fc919b4 Fix broken Profile Edit 2020-05-19 07:42:19 -04:00
Christian Bundy f6794f2a99
Merge pull request #434 from christianbundy/docker-refactor
Refactor Docker example
2020-05-17 19:14:59 -07:00
Christian Bundy 09ec80bffe
Merge pull request #438 from nickwynja/thread-separator
Adds visual separator between different threads
2020-05-13 12:42:11 -07:00
Nick Wynja e19a0b457b Adds visual separator for threads 2020-05-13 14:31:19 -04:00
Christian Bundy 63888766dc
Merge pull request #435 from nickwynja/sticky-fix
Improve wrapping of sticky section header
2020-05-12 06:48:23 -07:00
Christian Bundy 637a478072
Merge pull request #436 from nickwynja/titles
Adds view specific titles
2020-05-12 06:47:58 -07:00
Nick Wynja b4f0509e21 Adds mystery description fallback
If a message had no obvious text because it didn't have a content type
of post, use the mystery description as to not break the `postSnippet()`
function and give a valid snippet in the title.
2020-05-12 09:33:28 -04:00
Nick Wynja 8ce7d73edd adds title for imageSearch 2020-05-12 09:26:08 -04:00
Nick Wynja 45c9ffe3f5 Adds view specific titles 2020-05-12 09:13:46 -04:00
Nick Wynja bdc43a61e3 Improve wrapping of sticky section header 2020-05-12 09:06:51 -04:00
Christian Bundy a5d5e446c7 Refactor Docker example
Problem: The Docker example was using Alpine with the Tini dependency
and some neat custom stuff, but it wasn't super clear to understand
everything that was going on. It was also slow because lots of stuff was
compiling from source.

Solution: Replace neat custom stuff with boring defaults for clarity and
much faster builds.
2020-05-10 13:52:47 -07:00
Sean Billig 58765f8b0e
Merge pull request #425 from Powersource/image-search
Image search
2020-05-07 08:44:44 -07:00
Jacob Karlsson c205826b48 Merge branch 'master' of github.com:fraction/oasis into image-search 2020-05-06 20:05:37 +02:00
Nick Wynja 41d436b8f0
Merge pull request #427 from christianbundy/conn-hops
Upgrade Flotilla and SSB-CONN, remove auto-stage
2020-05-04 16:57:45 -04:00
Christian Bundy 8e30c93de8 Fix 'cannot set autostart of undefined'
Problem: `customConfig.conn` isn't defined.

Solution: Use `lodash.set()`.
2020-05-04 13:44:00 -07:00
Christian Bundy f86b73b40e Upgrade Flotilla and SSB-CONN, remove auto-stage
Problem: The auto-stage code was a horrible hack that may be causeing an
OOM bug if too many peers are staged too quickly.

Solution: Since SSB-CONN now supports a variable number of connection
hops, we can remove the auto-stage hack and use the default scheduler
instead of trying to staple on our own hacky scheduler fix.
2020-05-04 13:27:06 -07:00
Jacob Karlsson 3b753f16ac Apply style fixes 2020-05-03 23:14:19 +02:00
Jacob Karlsson f63a0dfa0a Add i18n for image search 2020-05-03 23:02:44 +02:00
Jacob Karlsson 51ae2966f1 Add sidebar entry 2020-05-03 22:38:34 +02:00
Jacob Karlsson e456c1d9c5 Add image search 2020-05-03 22:16:44 +02:00
Nick Wynja 87c46061b7
Merge pull request #410 from christianbundy/fix-summary-style
Fix summary style
2020-04-16 21:01:30 -04:00
Cinnamon ec1616d985
Merge pull request #414 from christianbundy/rename-to-subtopic
Rename "reply" to "subtopic"
2020-04-16 11:36:02 -07:00
Christian Bundy 8e2eb404e0 Rename "reply" to "subtopic"
Problem: The words "comment" and "reply" are super ambiguous, but
renaming them is hard.

Solution: I think "subtopic" captures the sentiment well, and makes it
clear that you're leaving the current topic to start a new topic (rather
than just replying to an individual message).
2020-04-16 08:31:35 -07:00
Christian Bundy 031a0efd61 Remove dashed summary style from indented summary
Problem: The indented summary took up lots of visual attention which
isn't what we wanted. Also a bad merge broke the previous `<summary>`/

Solution: Fix the bad merge and remove the dashes style from the
indented summary elements.
2020-04-15 07:27:23 -07:00
Christian Bundy 0ef45c7249 Merge branch 'master' of github.com:fraction/oasis into fix-summary-style 2020-04-15 07:14:24 -07:00
Cinnamon 2867d05b75
Merge pull request #411 from christianbundy/no-metric-css
Replace "metric CSS" with --size-N
2020-04-14 18:00:43 -07:00
Christian Bundy 02571d4d90 Merge branch 'master' of github.com:fraction/oasis into fix-summary-style 2020-04-14 13:21:01 -07:00
Nick Wynja 7314b3e716
Merge pull request #408 from christianbundy/fix-allow-host-preset
Fix allow-host preset not working correctly
2020-04-14 16:19:07 -04:00
Nick Wynja fcf0b152cc
Merge pull request #409 from christianbundy/simple-sync
Add timeout to sync and refactor
2020-04-14 16:05:30 -04:00
Christian Bundy 3be8ff92c4 Replace "metric CSS" with --size-N
Problem: The "metric CSS" was kind of clever but mostly just confusing.

Solution: Use `--size-N` for the size, where the size is `2^n`. Double
size is `--size-1`, half size is `--size--1` (negative one). The
negatives kind of suck but I couldn't think of a better solution that
didn't give up the flexibility, brevity, or the ability to sort
alphabetically.

Fixes: https://github.com/fraction/oasis/issues/100
2020-04-14 12:19:38 -07:00
Christian Bundy 2eb983719c Fix summary style
Problem: the `<summary>` element had a broken bottom margin on content
warnings, and isn't obvious that it's not just text.

Solution: Fix the margin and used a dashed border to indicate that the
content can be expanded. I think this is more intuitive than no border,
and I think the dashed line draws parallels with "cut outs" that might
make expansion intuitive (?), but either way I think it's better than
the previous design.
2020-04-14 11:52:42 -07:00
Christian Bundy ef53618543 Run linter
Problem: I always forget to run the linter. I should probably add this
as a personal git-hook.

Solution: `npm run fix`.
2020-04-14 11:36:25 -07:00
Christian Bundy ce8c15a6eb Add timeout to sync and refactor
Problem: The sync goes forever, which isn't good if we're in an edge
case (like having peers who are offline with us).

Solution: Add a 5-minute timeout and refactor to use a design that's
maybe simpler? This is just my stab at the previous behavior, but there
are definitely improvements that could be made!
2020-04-14 11:32:58 -07:00
Christian Bundy 8ccfb1a1ec Fix allow-host preset not working correctly
Problem: The preset for allow-host is coming from "host".

Solution: Make the preset for allow-host come from "allow-host".
2020-04-14 10:53:23 -07:00
Christian Bundy 1b6c559115
Merge pull request #403 from nickwynja/sync
Introduces sync endpoint
2020-04-14 10:39:01 -07:00
Nick Wynja d9423b17e4 Use target for progress checks 2020-04-14 12:55:29 -04:00
Nick Wynja 2ecfee4a24 Clean up 2020-04-14 08:08:10 -04:00
Nick Wynja eaf8a9d713 Lint fix 2020-04-14 08:03:27 -04:00
Nick Wynja ed12afbb91 Refactor peer checking
Split peers and peers connected and add function to disconnect
2020-04-14 07:57:31 -04:00
Christian Bundy 6fb1da68eb
Merge pull request #407 from christianbundy/release-2.16.0
2.16.0
2020-04-13 14:47:28 -07:00
Nick Wynja f3eac9fff8 Lint fix 2020-04-13 17:35:42 -04:00
Christian Bundy 09ff4cad21 2.16.0 2020-04-13 14:32:21 -07:00
Nick Wynja a896f637e5 Progress checking and connected peers
Rework how I'm doing progress checking and be very verbose about it
until I understand how this all works. Also refactors connected peer
function into shared model for use on settings page.
2020-04-13 17:27:03 -04:00
Christian Bundy 91251b1fa5
Merge pull request #406 from cinnamon-bun/offline-warning-message
Change offline warning message
2020-04-13 14:25:06 -07:00
Cinnamon c30b0fc0fd
Change warning message about offline mode
The warning message talked about "pre-existing servers" which might not make sense to everyone.
2020-04-13 14:14:08 -07:00
Cinnamon 939052db4e
Merge pull request #1 from fraction/master
merge from fraction/oasis
2020-04-13 14:09:41 -07:00
Nick Wynja e392b68d1f Merge remote-tracking branch 'upstream/master' into sync 2020-04-13 16:09:03 -04:00
Nick Wynja 796da05931
Merge pull request #405 from christianbundy/enable-fr
Add Français (FR) to the language drop-down
2020-04-13 16:05:16 -04:00
Nick Wynja f0adeb7a4b Merge remote-tracking branch 'upstream/master' into sync 2020-04-13 15:50:54 -04:00
Nick Wynja 016bbabc24
Merge pull request #395 from christianbundy/start-ssb-immediately
Start SSB service immediately instead of waiting
2020-04-13 15:50:15 -04:00
Nick Wynja 82bfcfa350 Merge remote-tracking branch 'upstream/master' into sync 2020-04-13 15:48:54 -04:00
Christian Bundy 69ee3f1611 Resolve ensureConnection() race condition
Problem: If you call `ensureConnection()` two times really fast, it'll
spin off two separate connection attempts, each with their own socket,
which keeps the tests from closing.

Solution: If there's a pending connection, keep track of it, and only
attempt a new connection if there are no pending connections.
2020-04-13 11:48:41 -07:00
Jonathan Dahan 18f5d661fb
Merge pull request #402 from christianbundy/server-on-listening
Replace setImmediate() with .on('listening')
2020-04-13 13:29:39 -04:00
Christian Bundy 81c03bebde Add Français (FR) to the language drop-down
Problem: The FR translation is added in `i18n.js` but it's not available
in the drop-down language selection menu.

Solution: Add it to the menu and ensure that the menu is sorted
alphabetically by the name of the language.
2020-04-13 10:24:01 -07:00
Christian Bundy 40292a74e1
Merge pull request #394 from zicmama/master
Added french "fr" translation
2020-04-13 10:14:55 -07:00
Cinnamon 8fdf2cda21
Merge pull request #404 from fraction/fix-tpo-typo
Fix "tpo" typo
2020-04-13 09:55:04 -07:00
Fred e0904dae8c
Merge pull request #1 from christianbundy/npm-fix-fr
Run `npm run fix`
2020-04-13 18:46:41 +02:00
Christian Bundy 9f08a24053 If open() is called during close(), close server
Problem: I think that if `open()` is called after `close()`, it keeps a
server open. This keeps the tests running forever.

Solution: Just before `open()` resolves, check `closing` and [if
necessary] close the server that we just started by re-calling
`close()`.
2020-04-13 09:20:48 -07:00
Christian Bundy 1985e8898c Run `npm run fix`
Problem: The linter was throwing lots of un-fun errors.

Solution: `npm run fix` to resolve them.
2020-04-13 09:11:04 -07:00
Christian Bundy 41cf751389
Fix "tpo" typo
Problem: I wrote "tpo". I meant "typo".

Solution: Fix the tpo.
2020-04-13 09:03:37 -07:00
Christian Bundy cbdf00e648 Replace initial ensureConnection() with open()
Problem: When we use `ensureConnection()`, it doesn't have any handling
for when the database is being closed, and therefore can keep the
database up and running forever (which fails the tests).

Solution: Use `cooler.open()`, which has some database close handling
built in, and doesn't keep the tests open forever (causing them to time
out and fail).
2020-04-13 08:52:12 -07:00
Nick Wynja fd1d63ffba Introduces sync endpoint
Starts, waits until connected to peers, waits for progress, disconnects
2020-04-13 11:28:36 -04:00
Christian Bundy 6fe0d1c39c Replace setImmediate() with .on('listening')
Problem: Unfortunately `setImmediate()` doesn't actually ensure that
`server !== null`, so we can get fun race condition errors that have
been reported on Windows.

Solution: Replace `setImmediate()` hack with event emitter that actually
ensures that the server is listening (and hopefully isn't `null)`.

Fixes: https://github.com/fraction/oasis/issues/401
2020-04-13 08:27:14 -07:00
Sean Billig e5703770ff
Merge pull request #398 from christianbundy/allow-host
Add --allow-host CLI flag for for proxy use-case
2020-04-12 09:50:31 -07:00
Christian Bundy f9674b9377
Merge pull request #397 from sbillig/fix-likehover
Fix 'liked by' hover in replies in Thread view
2020-04-11 10:01:38 -07:00
Christian Bundy ebf6e17389 Add --allow-host CLI flag for for proxy use-case
Problem: When proxying Oasis, the CSRF + DNS rebind security precautions
will respond with HTTP 400 if you use a hostname that Oasis doesn't
know about. For example, if Oasis is listening on `localhost` and you
use Caddy/Nginx/etc to proxy that to `oasis.example.com`, then Oasis
will see GET requests as DNS rebind attacks and POST requests as CSRF
attacks.

Solution: Add `--allow-host` command-line flag so that you can
`--allow-host oasis.example.com` and ensure that the host is allowed by
the security measures.
2020-04-11 08:36:29 -07:00
sean billig dcbd37d941 Remove postInAside() in favor of post(); fixes 'liked by' in replies 2020-04-10 20:59:28 -07:00
Christian Bundy f30fb20b5e Start SSB service immediately instead of waiting
Problem: During a refactor the SSB connection management was changed to
be more conservative, so it only ensures that we have a connection once
the server is started. This isn't good, because it means `oasis
--no-open` no longer starts an SSB service in the background.

Solution: Run `ensureConnection()` to ensure that we have a connection
to the SSB service regardless of regardless of whether we've received
any requests over HTTP.
2020-04-10 15:24:33 -07:00
Fred 84bb9051cc
Added french "fr" translation
1st "fr" translation
2020-04-11 00:11:35 +02:00
Christian Bundy 8e4a1c8e53 2.15.0 2020-04-10 12:51:36 -07:00
Christian Bundy a24b5a7acf Fix broken changelog moving logic
Problem: The `npm version` command is supposed to do some changelog
magic but the paths are broken.

Solution: Use the correct paths.
2020-04-10 12:50:45 -07:00
Christian Bundy ff77308033 Fix broken getMessages() logic
Problem: When replying to a private thread you only see the root post
because it's hiding all private comments. Instead, it should be hiding
all *encrypted* comments that we can't decrypt.

Solution: Use `isNotEncrypted()` instead of `isNotPrivate()`.
2020-04-10 12:46:44 -07:00
Christian Bundy 012db59be2
Merge pull request from GHSA-j438-45hc-vjhm
Fix CSRF and DNS rebind vulnerabilities
2020-04-10 12:40:20 -07:00
Christian Bundy 627e1b3c76 Add tests for CSRF and DNS rebind
Problem: We had these problems in the past and we can't have them again.
Solution: Tests make it really easy to double-check that we remain immune.
2020-04-10 12:33:22 -07:00
Christian Bundy 2968f7d80a Merge https://github.com/fraction/oasis into advisory-fix-1 2020-04-10 10:51:29 -07:00
Cinnamon 475949be1a
Merge pull request #393 from christianbundy/fix-public-threads
Fix private posts rendered alongside public posts
2020-04-09 20:09:36 -07:00
Christian Bundy 5cd0432f2e Fix private posts rendered alongside public posts
Problem: The Threads view advertises that it only shows public posts,
but is showing some private posts as well. This is not a security
concern, it's just a UI inconsistency.

Solution: Ensure that private posts are filtered from the view before
rendering. This also integrates a refactor that uses functions to check
for basic info like whether a message is a post, whether it's
encrypted/decrypted, whether it has a root, whether it has a fork, etc.
2020-04-09 08:16:43 -07:00
Sean Billig 33b83f1ae8
Merge pull request #387 from christianbundy/update-deps
Update npm dependencies
2020-04-08 18:28:43 -07:00
Christian Bundy ecdd78c42e Merge branch 'master' of github.com:fraction/oasis into update-deps 2020-04-08 14:52:06 -07:00
Cinnamon 84546cf6ee
Merge pull request #392 from christianbundy/fix-windows-test
Fix Windows test on Travis CI
2020-04-08 14:48:07 -07:00
Christian Bundy 7d168f8de3 Fix Windows test on Travis CI
Problem: There's an intermittent test failure on Travis CI that seems on
only happen when we have two test suites. Since the lifecycle suite only
tests a subset of the basic test, we can safely remove it without
compromising any test coverage.

Solution: Remove the redundant lifecycle test and try not to think about
the problem too much. Maybe in the future when we need a second test
suite we can resolve this problem, or maybe the underlying bug will be
resolved downstream (e.g. https://github.com/tapjs/node-tap/pull/662),
but right now I think the benefits of "no intermittent test failures"
outweights the costs of "all tests must go in one file".
2020-04-08 10:23:27 -07:00
Cinnamon 9a880fc6c6
Merge pull request #389 from christianbundy/add-tests
Add very basic test suite
2020-04-07 18:27:56 -07:00
Christian Bundy 8582dc40f8 Attempt fixing Windows test
Problem: For some reason the Windows test is timing out but I'm really
not sure why.

Solution: Try to make the lifecycle test copy the basic test.
2020-04-06 15:17:21 -07:00
Christian Bundy 3886b1fc53 Increase test timeout and remove log statements
Problem: The Windows tests seem to be failing, it looks like a timeout
problem? Also there are a handful of debug statements around the code
that can be safely removed.

Solution: Double the timeout length and remove debug statements.
2020-04-06 13:22:07 -07:00
Christian Bundy cb1be6bc8b Fix open sockets that weren't closing during tests
Problem: The test suite isn't closing the database because `app.close()`
only affects the HTTP server. This means that tests don't exit cleanly
and sockets remain open and all sorts of really fun stuff that we don't
want while writing tests.

Solution: Refactor `src/ssb.js` so that we can exit cleanly and have
less rope to hang ourselves with. Add a small lifecycle test that can
help us ensure that the bare minimum lifecycle events are working
correctly, plus now the previous tests are passing on my machine too.
2020-04-06 12:14:58 -07:00
Christian Bundy 12dfd04536 Merge branch 'master' of github.com:fraction/oasis into add-tests 2020-04-03 13:50:04 -07:00
Nick Wynja 6353286f05
Merge pull request #388 from christianbundy/fix-config
Fix config bug
2020-04-03 16:49:26 -04:00
Christian Bundy 3c9ec37d2f Add very basic test suite
Problem: ESLint and TypeScript help catch some types of regressions, but
they don't protect us against obvious stuff like "the server won't
start". This means that humans need to test a bunch of stuff manually,
and that can be really tedious and exhausting.

Solution: Yesterday someone invented this cool concept called "testing"
where you write automated tests for your software to ensure it actually
works the way you expect. It might have beeen invented before yesterday,
I don't know. Anyway, this solution adds a bunch of tests that send HTTP
GET requests to a bunch of endpoints to make sure the server is at least
returning HTTP 200 responses. It also fixes a race condition where HTTP
server was available before the readme / version strings were loaded.
2020-04-03 09:17:13 -07:00
Christian Bundy cc36f03bb1 Fix config bug
Problem: I made a bad merge in 2836c80 which broke the server in some
environments. I had issues running the globablly installed binary,
whereas `npm start` seemed to work fine. Anyway, there's an error about
some missing config options because we weren't importing SSB-Config into
the server configuration. Instead, the full config was just:

```json
{ "conn": { "autostart": true } }
```

This lacks important properties like `shs`, which means that the server
can't start. Fun!

Solution: Pass SSB-Config first and then overlay our custom config on
top. I've also added comments and changed the variable names so that
this is harder to miss in the future.
2020-04-03 07:20:37 -07:00
Christian Bundy 182d6d68bc Update npm dependencies
Problem: Our dependencies are getting ahead of us!

Solution: Catch up with `npm update`. I think Markdown-It was the only
breaking change, and it didn't affect us.
2020-04-03 07:11:11 -07:00
Sean Billig a2d6b59703
Merge pull request #352 from christianbundy/tcp-connect
Fall back to TCP socket if Unix connection fails
2020-04-02 10:50:51 -07:00
Sean Billig 4318b9a22a
Merge pull request #384 from christianbundy/clean-up-root
Clean up root of project directory
2020-04-02 07:39:47 -07:00
Sean Billig b97e27b24b
Merge pull request #350 from christianbundy/add-mailmap
Add .mailmap for canonical identities
2020-04-02 07:38:06 -07:00
Sean Billig b9aaa698fa
Merge pull request #383 from christianbundy/fix-button-hover
Fix footer button hover background
2020-04-02 07:36:06 -07:00
Christian Bundy 7f95a6f7ac Re-add stylelint config
Problem: Apparently we were still using that.

Solution: Re-add the file.
2020-04-01 18:28:59 -07:00
Christian Bundy b01ff74dbc Clean up root of project directory
Problem: Project root has a handful of files that aren't used at all or
could be placed elsewhere.

Solution: Delete unused files and move the changelog to the
documentation directory with the other Markdown files (other than the
readme, of course).
2020-04-01 15:04:57 -07:00
Christian Bundy 2836c80941 Merge branch 'master' of github.com:fraction/oasis into tcp-connect 2020-04-01 08:08:41 -07:00
Christian Bundy 72ee2e90fb Fix footer button hover background
Problem: Footer buttons have the normal button background hover state
that makes them difficult to read. This was meant to be fixed in another
PR but I think I got the CSS order wrong.

Solution: Reorder the CSS hierarchy to fix the bug. For real this time.
2020-04-01 07:45:15 -07:00
Sean Billig 8fc5437b6b
Merge pull request #381 from christianbundy/fix-italian
Fix linter problems with Italian translation
2020-03-31 15:14:08 -07:00
Christian Bundy 361fe9783e
Merge pull request #382 from timjrobinson/improve-liked-by
Show liked-by in title attr, handle many likes
2020-03-31 11:38:57 -07:00
Tim Robinson 48fc0e0086 Don't show likedby with zero likes. Improve style.
- Don't add "Liked by..." title when there are zero likes.
- Refactor code to use const's and have a single defined message.
2020-03-31 11:05:12 -07:00
Tim Robinson 206044e21f Show liked-by in title attr, handle many likes
- Instead of having a custom on hover effect, just add the Liked by
message to the title of the heart.
- When there are > 16 likes on a post, show +X more to convey this to
users.
2020-03-31 10:56:49 -07:00
Christian Bundy 302bd3fa8c Merge commit 'refs/pull/367/head' of github.com:fraction/oasis into fix-italian 2020-03-31 10:27:02 -07:00
Christian Bundy ac6441d3e0
Merge pull request #377 from timjrobinson/add-liked-names
Show who liked content on hover
2020-03-31 10:13:55 -07:00
Christian Bundy 81b6c907bb
Merge pull request #378 from nickwynja/thread-query
Updates query for threads
2020-03-31 10:11:30 -07:00
Jonathan Dahan 044ab08565
Merge pull request #379 from nickwynja/header-index
Fix z-index on sticky header
2020-03-31 12:13:11 -04:00
Nick Wynja 922086199d Fix z-index on sticky header 2020-03-31 11:05:38 -04:00
Nick Wynja 0e698df8f3 Updates query for threads
Previous query incorrectly pulled and sorted posts, often showing years
old posts from newly followed people. This now behaves more consistently
as "recent threads from people in your extended network".
2020-03-31 10:34:47 -04:00
Tim Robinson 4884a49dfb Pretty-ify code. Remove unnecessary comment 2020-03-31 00:19:58 -07:00
Tim Robinson 8cce580008 Show who liked content on hover
- Adds a hover popup that shows the names of everyone who liked a post
when hovering of the heart.
- Add new call to post.get that retrieves the names of all voters and
returns them instead of their ID's.
2020-03-30 23:53:27 -07:00
Sean Billig 573d7096f3
Merge pull request #372 from christianbundy/block-unblock
Add block and unblock to author profile
2020-03-28 15:51:24 -07:00
Christian Bundy 7e22829578 Fix own profile error
Problem: A `null` relationship represents when it's your profile, which
isn't very intuitive. It causes an error when we try to check for the
`blocking` and `following` properties, which don't exist on `null`.

Solution: Instead of `null`, set a `me` property to tell whether this
relationship is our own profile.
2020-03-28 13:32:02 -07:00
Christian Bundy b629727e4f
Merge pull request #373 from sbillig/docs
minor doc fixes; add gh cli instructions
2020-03-28 12:35:39 -07:00
sean billig 974fb7fc07 minor doc fixes; add gh cli instructions 2020-03-28 11:34:04 -07:00
Christian Bundy e7bd3ed305 Add block and unblock to author profile
Problem: We have a way to follow and unfollow, but there's no way to
block or unblock. Also if you go to the profile of a blocked peer, their
posts still show up.

Solution: Add block and unblock and hide messages from blocked peers on
their profile page.

Fixes: https://github.com/fraction/oasis/issues/370
2020-03-28 10:03:31 -07:00
Sean Billig 033dbede33
Merge pull request #363 from christianbundy/type-defs
Add TypeScript definitions for better guardrails
2020-03-27 19:19:17 -07:00
Sean Billig 0c5116ad0c
Merge branch 'master' into type-defs 2020-03-27 19:10:35 -07:00
Sean Billig 4aa2841247
Merge pull request #339 from christianbundy/add-auto-hops
Automatically connect to replicated peers
2020-03-27 17:20:18 -07:00
wuhei 6d396c16cc typos 2020-03-28 00:04:10 +01:00
Sean Billig e96486b1d0
Merge pull request #366 from christianbundy/fix-double-channel
Avoid processing popular posts twice
2020-03-27 14:51:02 -07:00
Jonathan Dahan f3644354ac
Merge pull request #368 from christianbundy/add-contributing-maintaining
Add contributing and maintainting documents
2020-03-27 17:34:55 -04:00
Christian Bundy 4091fce767 Fix linter problems
Problem: This doesn't pass the linter.

Solution: Run `npm run fix` and disable the spell-checker when we
define language names.
2020-03-27 14:14:39 -07:00
Christian Bundy 3627ce4658 Fix CSpell error in example typo
Problem: The sample typo in `docs/contributing.md` was failing our
spell-check test.

Solution: Disable the spell-chack on that line.
2020-03-27 13:47:50 -07:00
Christian Bundy 927c356303 Add contributing and maintainting documents
Problem: We had our contract in `contributing.md` but that didn't really
give actionable information on how to contribute or how to maintain this
project.

Solution: Move contract to `contract.md` and start documents for
contributing and maintaining.
2020-03-27 12:41:51 -07:00
wuhei b27b6241f2 Italian translation, changed a string in the Spanish translation 2020-03-27 19:12:49 +01:00
Sean Billig 288d5f10fa
Merge pull request #341 from christianbundy/root-channel
Don't append channel to non-root posts
2020-03-27 10:46:07 -07:00
Sean Billig e53003fbd5
Merge pull request #365 from christianbundy/add-chat
Add Matrix chat room to readme
2020-03-27 10:44:29 -07:00
Christian Bundy 5b2ae2a219 Avoid processing popular posts twice
Problem: Messages are being fetched with `post.get()`, which runs the
`transform()` function to decorate them with Markdown/etc, but then
they're being passed through `transform()` a second time at the end of
the function. This is inefficient and applies side-effects (like adding
channels to the post) twice.

Solution: Remove the final `transform()` so that these posts are only
decorated once.

Fixes: https://github.com/fraction/oasis/issues/358
2020-03-27 09:43:57 -07:00
Christian Bundy 7152d42a5c Add Matrix chat room to readme
Problem: There's a chat room but it isn't in the readme.

Solution: Put it in the readme.

Fixes: https://github.com/fraction/oasis/issues/318
2020-03-27 09:24:13 -07:00
Christian Bundy 555249277f Remove @ts-ignore workaround
Problem: The workaround is no longer necessary now that the new version
of @types/koa has been published. Thanks to @peterblazejewicz,
@harryparkdotio, and @orta for the quick upstream fix.

Solution: Run `npm update` and remove the `@ts-ignore` comment.
2020-03-27 09:13:31 -07:00
Christian Bundy fb23d25217 Add more type definitions to reduce implicit any
Problem: We still have heaps of implicit 'any' types that our linters
can't make sense of.

Solution: Keep on adding type documentation! Slowly but surely I'm
hoping we can reduce the amount of untyped JavaScript in the repo.
2020-03-27 08:21:40 -07:00
Christian Bundy defb57321e Merge branch 'master' of github.com:fraction/oasis into type-defs 2020-03-27 08:02:44 -07:00
Christian Bundy 4883efbc2c
Merge pull request #362 from nickwynja/inline-header-fix
Revert selector to span to fix lock alignment
2020-03-27 07:21:07 -07:00
Nick Wynja bae675f039 Revert selector to span to fix lock alignment 2020-03-27 10:11:11 -04:00
Nick Wynja 8efe326cdf
Merge pull request #357 from christianbundy/consistent-ui
Fix UI inconsistencies
2020-03-27 09:44:47 -04:00
Christian Bundy 3ada298d53
Merge pull request #360 from msiqu/patch-1
fix follow button link for non-english languages
2020-03-26 17:46:15 -07:00
mario siqueira acba28af67 Prettiered 2020-03-26 18:13:38 -03:00
Mario Siqueira 2c86eb5cf1
fixed the fix
Previous fix did not take into account "unfollow". Now it does
2020-03-26 17:56:10 -03:00
Mario Siqueira a5ae700b92
fix follow button link for non-english languages
currently if non-english language is set in configuration, the FOLLOW button doesn't work (it takes the i18n translation as part of the URL).
2020-03-26 16:48:16 -03:00
Christian Bundy 43c8310abf Reduce indent border size
Problem: The indent borders take up lots of space and visual attention
when you're in highly-nested threads.

Solution: Reduce their size by half.
2020-03-26 11:22:24 -07:00
Christian Bundy 3e6489db67 Fix CSRF and DNS rebind vulnerabilities
Problem: Since we don't validate the referer hostname or the HTTP host
header, an attacker who can trick an Oasis user into clicking a
malicious link can submit HTTP requests to localhost, potentially
publishing messages or extracting information.

Solution: Ensure that all requests have valid hostnames in the referer
to protect against CSRF attacks, ensure that all requests have valid
hostnames in the HTTP header to protect against DNS rebind attacks, and
ensure that errors are only output in the HTTP response when we're sure
that the request is valid.
2020-03-26 10:13:03 -07:00
Christian Bundy 9ddb23b501 Fix UI inconsistencies
Problem: After some fantastic new pull requests, there are some
inconsistencies between how each author implemented different features.

Solution: Fix regressions and iron out inconsistencies. This fixes the
heart highlight bug, uses the same indentation for Summaries + Threads +
the thread view, tightens up the CSP now that we don't need
unsafe-inline styles, and uses a neutral tone for indents with the same
width as the blockquote border (so far violet has been reserved for
private messages).
2020-03-25 16:03:51 -07:00
Jacob Karlsson 7e1b38394b Fix style 2020-03-25 21:31:23 +01:00
Jacob Karlsson e8b2a2d163 Merge branch 'master' of github.com:fraction/oasis into hide-forks 2020-03-25 21:24:09 +01:00
Jacob Karlsson 86450d49ce Auto-expand ancestors of the linked post 2020-03-25 21:09:04 +01:00
Jonathan Dahan b765a0defd
Merge pull request #356 from christianbundy/fix-link
Fix Markdown link bug
2020-03-25 14:49:30 -04:00
Christian Bundy c4aaf47a06 Fix Markdown link bug
Problem: Some sigil links were broken because of a bug in SSB-Markdown
that was recently resolved.

Solution: Upgrade SSB-Markdown.

Fixes: https://github.com/fraction/oasis/issues/242
2020-03-25 10:15:26 -07:00
Jonathan Dahan 9bbf082304
Merge pull request #342 from christianbundy/connected-only
Only show connected peers in settings
2020-03-25 10:01:18 -04:00
Jonathan Dahan ef4678064a
Merge pull request #345 from christianbundy/remove-issue-version
Remove version question from issue template
2020-03-25 09:59:08 -04:00
Christian Bundy 3f335eedbf
Merge pull request #353 from nickwynja/threads
Introduces Threads
2020-03-25 06:36:54 -07:00
Nick Wynja 95e7a31dcd lint fix 2020-03-25 09:05:53 -04:00
Sean Billig 03a6a143cd
Merge pull request #349 from christianbundy/fix-theme
Fix theme using capitalization
2020-03-24 19:22:47 -07:00
Christian Bundy 4653bdb01f Fall back to TCP socket if Unix connection fails
Problem: We're only attempting connection via Unix sockets, but some SSB
services may choose to only listen on TCP sockets.

Solution: Start by attempting connection to Unix socket and fallback to
the TCP socket remote if that doesn't work, before just trying to start
our own SSB service.
2020-03-24 19:06:23 -07:00
Nick Wynja 48f8108340 Merge master 2020-03-24 21:00:38 -04:00
Christian Bundy e1288c8a08
Merge pull request #348 from nickwynja/sticky
Text-based browser spacing issues and sticky headers enhancement
2020-03-24 17:05:49 -07:00
Christian Bundy 9ee58369cc Add .mailmap for canonical identities
Problem: Some of us have a few different emails, which show up as
different people when we commit. It would be great to merge these Git
identities so that they don't show up as different people.

Solution: Use `.mailmap`, which lets people choose their favorite
canonical email address for this project.
2020-03-24 16:59:20 -07:00
Nick Wynja a96aaa5012 Merge conflict 2020-03-24 19:57:22 -04:00
Nick Wynja 3280956d3b Adds sticky section headers
While reading long conversations, it's easy to get a bit lost as to whom
 is saying what. With some basic CSS, we can keep the header of the post
 sticky so you can see more context above the message.
2020-03-24 19:40:12 -04:00
Nick Wynja fa874e8f4f Fixes spacing issues in text-based browsers
Closes #329; Addresses spacing issues in text-based browsers by introducting block
elements and non-breaking spaces.
2020-03-24 19:40:12 -04:00
Christian Bundy a4ccae8833 Fix theme using capitalization
Problem: Capitalization in "sulphurPool" was causing a file not found.

Solution: Replace "sulphurPool" with "sulphurpool".
2020-03-24 14:55:50 -07:00
Christian Bundy e0a20e4915 Merge commit 'd9e8' 2020-03-24 14:45:33 -07:00
Jonathan Dahan af19f5f24e
Merge pull request #340 from christianbundy/npm-update-march-23
Update npm dependencies
2020-03-24 17:36:10 -04:00
Nick Wynja d9e829e2e8 Removes husky to fix #346 2020-03-24 15:19:33 -04:00
Christian Bundy 11c413d447 Merge branch 'master' of github.com:fraction/oasis into npm-update-march-23 2020-03-24 12:09:39 -07:00
Christian Bundy 3f6d9fa159 Remove version question from issue template
Problem: Almost everyone is on the latest version and we probably don't
need to ask for what version they're using.

Solution: Remove the question.
2020-03-24 11:35:24 -07:00
Christian Bundy 519fc499ac
Merge pull request #343 from nickwynja/theme-config
Load theme using existing config mechanisms
2020-03-24 11:25:27 -07:00
Nick Wynja a4b00696ab Load theme using existing config mechanisms
This allow someone to pass in the theme as a command line arg or set the
theme in defaults.json, while still allowing someone to set the theme on
a per-browser basis as a cookie.
2020-03-24 14:11:27 -04:00
Christian Bundy 64ab443e27 Only show connected peers in settings
Problem: The peer list shows peers that are connected and in the process
of establishing a new connection, which has lots of turbulence. It's
confusing to see dozens of "connections" that only exist for a few
milliseconds when they're actually just connection attempts.

Solution: Only show peers with the state "connected".
2020-03-24 09:47:45 -07:00
Christian Bundy f64a512e52
Merge pull request #335 from christianbundy/fix-private-message
Fix crash when linking directly to private message
2020-03-24 09:35:01 -07:00
Christian Bundy 72eec63e1a
Merge pull request #251 from christianbundy/add-build-script
Add build script that creates zip files
2020-03-24 09:34:23 -07:00
Christian Bundy aeebd2d4eb Don't append channel to non-root posts
Problem: When publishing a root post, other clients give you the option
of adding a `channel` property, which is basically just a hashtag. We
show this at the end of the message, but since replies often copy the
`channel` property then it gets appended to every reply.

Solution: Only append the channel as a hashtag for root posts.
2020-03-24 09:26:54 -07:00
Christian Bundy c9fffe2b9c Add TypeScript definitions for better guardrails
Problem: We have TypeScript enabled on the project but have been missing
lots of definition files, so there are like 500 errors when you enable
`--noImplicitAny`.

Solution: Add definitions and fix the bugs that they point out. This
reduces the number of errors with `--noImplicitAny` to 285.
2020-03-24 09:23:52 -07:00
Christian Bundy dd388feefe Revert @fraction/flotilla change 2020-03-24 08:15:05 -07:00
Christian Bundy 1adbd15afd Don't append channel to non-root posts
Problem: When publishing a root post, other clients give you the option
of adding a `channel` property, which is basically just a hashtag. We
show this at the end of the message, but since replies often copy the
`channel` property then it gets appended to every reply.

Solution: Only append the channel as a hashtag for root posts.
2020-03-24 08:11:13 -07:00
Christian Bundy 42e051fc6a Merge branch 'add-auto-hop' 2020-03-23 19:55:46 -07:00
Christian Bundy 488852f205 Resolve Travis CI + Windows EOL bug
Problem: Travis CI is converting our EOL characters and it's causing
problems when we're parsing with Prettier.

Solution: Disable auto-conversion.
2020-03-23 19:20:38 -07:00
Christian Bundy 32465e5983 Update npm dependencies
Problem: Our dependencies are falling behind and it'd be nice to have
them up-to-date. The only big update it that Common-Good upgraded to the
latest version of Prettier.

Solution: Update them!
2020-03-23 18:59:53 -07:00
Christian Bundy 01a9ae6347 Automatically connect to replicated peers
Problem: By default we only connect to people that we're directly
following, which often don't have public IP addresses.

Solution: Automatically connect to all available peers within our
replication hops (default 2) to make peering more reliable.
2020-03-23 14:21:38 -07:00
Christian Bundy 8c71d93ab3
Merge pull request #337 from justinabrahms/master
Actually shift cards over, rather than just a minor indent.
2020-03-23 09:02:13 -07:00
Jacob Karlsson cbb8ff381c Add previews of forks 2020-03-22 23:43:25 +01:00
Jacob Karlsson 3ed1e3e12f Rename variables with old names 2020-03-22 22:22:35 +01:00
Jacob Karlsson 3439433630 Don't make deep indented messages shrink 2020-03-22 22:14:39 +01:00
Jacob Karlsson a84d469c7d Remove old way of indenting forks 2020-03-22 22:06:07 +01:00
Jacob Karlsson 66627be257 Simplify repeated logic 2020-03-22 21:48:59 +01:00
Jacob Karlsson aae34fbfad Remove inner functions by combining them 2020-03-22 21:36:26 +01:00
Jacob Karlsson 3b1bdc9218 Fix off-by-1 error WAOW 2020-03-22 21:20:30 +01:00
Jacob Karlsson 7171732bc0 Remove old commented code 2020-03-22 20:58:27 +01:00
Jacob Karlsson dba4ec2955 Add basic fork styling 2020-03-22 20:54:48 +01:00
Justin Abrahms b5d37c7c8d Actually shift cards over, rather than just a minor indent. 2020-03-21 20:09:28 -07:00
Jacob Karlsson 7b05b78e52 Merge remote-tracking branch 'origin/master' into hide-forks 2020-03-21 14:43:37 +01:00
Christian Bundy bdcc127674 Fix crash when linking directly to private message
Problem: Trying to view a private message crashes the server and leaks a
bunch of memory. That's bad. This problem is caused by faulty handling
in the function that finds thread ancestors. There's some code that says
"if the next ancestor is a private message, just return the ancestors
that we know about", which returns nothing when we're looking up a
private post (because we can't identify *any* ancestors).

Solution: Ensure that we're only resolving the promise once in the
function by chaining `else if`s and ensure that we only return the
ancestor list if there are actually ancestor in it. If the ancestor list
is empty, we can just return the single message that we know about and
pass it off.
2020-03-20 11:33:18 -07:00
Christian Bundy 7ad7f5bb7a
Merge pull request #332 from georgeowell/update-readme
Added patchbay to same time server list
2020-03-19 07:07:49 -07:00
KawaiiPunk 34b5047770
Added patchbay to same time server list 2020-03-19 04:05:20 +00:00
Cinnamon 6f3a13d144
Merge pull request #325 from christianbundy/indexing-error-message
Indexing error message
2020-03-17 18:59:08 -07:00
Christian Bundy 64d60491b2
Merge pull request #327 from christianbundy/merge-316
Merge 316
2020-03-17 10:36:07 -07:00
Christian Bundy 122ed68a82 Merge commit 'refs/pull/316/head' of github.com:fraction/oasis 2020-03-17 10:22:22 -07:00
Christian Bundy e5df3a1497 Rename errorView() to indexingView()
Problem: Since the `errorView()` has a refresh we can probably just call
it `indexingView()` and add the indexing-specific code.

Solution:  Rename `errorView()` to `indexingView()` and add a progress
bar for it.
2020-03-17 07:41:57 -07:00
Christian Bundy 1f050b18a4 Add auto-refreshing error page on indexing error
Problem: The indexing message is being thrown as an error, which is
pasted as plaintext, so we can't do a page refresh. This is frustrating
when you're waiting for the indexes to finish because you have to
manually refresh a bunch while you wait.

Solution: Use the prototype from @justinabrahms to add an HTML message
for the indexing error and automatically refresh the page every ten
seconds.
2020-03-17 07:24:46 -07:00
Justin Abrahms 5c2d536d92 An html error message. 2020-03-16 20:25:43 -07:00
Christian Bundy 089291525e
Merge pull request #322 from justinabrahms/patch-1
Fix issue w/ mkdirp race condition
2020-03-16 14:46:48 -07:00
Justin Abrahms 84b2abc123
Fix issue w/ mkdirp race condition
Previously you would get this error due to imperfect path creation

```
node contrib/install-systemd-service.js
fs.js:114
    throw err;
    ^

Error: ENOENT: no such file or directory, copyfile '/home/justin/src/github.com/fraction/oasis/contrib/oasis.service' -> '/home/justin/.config/systemd/user/oasis.service'
    at Object.copyFileSync (fs.js:1728:3)
    at Object.<anonymous> (/home/justin/src/github.com/fraction/oasis/contrib/install-systemd-service.js:27:6)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
```
2020-03-15 13:57:35 -07:00
Christian Bundy 0639201c3d
Merge pull request #317 from georgeowell/master
Added reference to "plain text" instead of just text
2020-03-12 12:57:14 -07:00
KawaiiPunk f032cbcc7f
Added reference to "plain text" instead of just text 2020-03-12 19:44:28 +00:00
Nick Wynja c3a4474256 Merge branch 'master' of https://github.com/fraction/oasis into threads 2020-03-11 23:22:11 -04:00
Cinnamon 54e95d1071
Merge pull request #277 from christianbundy/add-profile-image-upload
Add profile image upload
2020-03-11 17:45:09 -07:00
Christian Bundy a6c6f8ebab
Merge pull request #314 from fraction/cinnamon-bun-contributors-1
Rename AUTHORS to CONTRIBUTORS and add myself
2020-03-11 17:31:48 -07:00
Cinnamon dba544c9b5
Merge branch 'master' into add-profile-image-upload 2020-03-11 17:20:47 -07:00
Cinnamon fd67e212d0
Rename AUTHORS to CONTRIBUTORS and add myself
jump in everyone, the water's fine
2020-03-11 17:11:38 -07:00
Christian Bundy 504e9ba8fe
Merge pull request #312 from fraction/cinnamon-bun-maintainers-1
Add myself to MAINTAINERS
2020-03-11 16:29:28 -07:00
Cinnamon 363d4f869b
Add myself to MAINTAINERS 2020-03-11 16:16:36 -07:00
Cinnamon d2cdef8244
Merge pull request #299 from christianbundy/indexing-error
Present error message while waiting for indexing
2020-03-11 16:03:56 -07:00
Cinnamon 3e74a5cd2e
Merge pull request #298 from christianbundy/2019-03-npm-update
Upgrade npm dependencies
2020-03-11 16:02:09 -07:00
KawaiiPunk 4e27dd4b59
Added references to posts from yourself in Topics and Summaries 2020-03-11 21:54:22 +00:00
KawaiiPunk 836c5a06ed
Changed desription to mention that latest also includes posts from yourself 2020-03-11 21:47:40 +00:00
Christian Bundy 2c806af919
Merge pull request #311 from georgeowell/rearrange-settings
Rearrange settings
2020-03-11 07:10:34 -07:00
Christian Bundy 861dc76524
Merge pull request #309 from hng/feature/fix-popular-link
Fix link to popular view in navigation
2020-03-11 07:09:26 -07:00
Christian Bundy 228cab563d
Merge pull request #310 from georgeowell/view-thread-label
View thread label
2020-03-11 07:08:42 -07:00
Henning Schumann 076f5f21c1 Fixed link to popular view in navigation 2020-03-11 11:30:49 +01:00
KawaiiPunk 4232d0f05b
Moved peer connections to the top of settings 2020-03-11 09:26:02 +00:00
KawaiiPunk 850d1d2373
Rearranged settings in order of most likely use 2020-03-11 09:14:14 +00:00
KawaiiPunk daf82588ab
Tweaked edit your profile description to make it clearer 2020-03-11 08:55:29 +00:00
KawaiiPunk dc723595b4
Removed reference to "basic post" 2020-03-11 08:52:27 +00:00
KawaiiPunk e4dd883e2a
Changed reference to message to comment for consistency 2020-03-11 08:51:03 +00:00
Christian Bundy f3f8e3dda3
Merge pull request #307 from christianbundy/cherry-pick-2
finished spanish i18n
2020-03-10 20:16:50 -07:00
Christian Bundy 8cdeb809fd
Merge pull request #306 from christianbundy/cherry-pick-seekr
lands on /mentions instead of /public/popular/day
2020-03-10 20:15:24 -07:00
mario 8c3fc3f393 finished spanish i18n 2020-03-10 20:05:56 -07:00
mario cc4f6caef2 lands on /mentions instead of /public/popular/day 2020-03-10 20:02:00 -07:00
Christian Bundy c575aebb03 2.14.0 2020-03-10 16:57:46 -07:00
Christian Bundy 8738e6a83d
Merge pull request #302 from seekr/patch-1
Added more spanish translations
2020-03-10 11:06:47 -07:00
seekr 01f6366455
Merge pull request #2 from christianbundy/pr-302
Remove duplicate `search` in Spanish i18n
2020-03-10 14:52:22 -03:00
seekr fc2137381a
fix duplicate search for es 2020-03-10 14:49:47 -03:00
Christian Bundy 3595f06e79 Remove duplicate `search` in Spanish i18n
Problem: There are two `search` entries in the Spanish
internationalization.

Solution: Remove one of them!
2020-03-10 10:35:39 -07:00
seekr 2117b9f76b
more updates to spanish 2020-03-10 11:31:27 -03:00
seekr 8fbbdaaaf4
started adding spanish translations 2020-03-10 10:01:06 -03:00
Nick Wynja 7e601ae35a Adds Threads view for seeing wider conversation 2020-03-10 08:42:56 -04:00
Christian Bundy d97cd9a351
Merge pull request #281 from fraction/cinnamon-bun-patch-2
README: add FAQ about running alongside other SSB apps
2020-03-09 15:19:56 -07:00
Christian Bundy f2cf067b67 Present error message while waiting for indexing
Problem: When our views are still indexing the database they apparently
don't respond over MuxRPC, which means that we're just waiting forever
until they finish. This means that people who are indexing the database
get an HTTP response that might take an hour to finish.

Solution: If we have more than 1 mebibyte of backlog, present an error
message explaining the situation and asking for a bit of patience.
2020-03-09 15:14:28 -07:00
Christian Bundy 81909a2584 Appease linter
Problem: Linter is complaining about the previous commit.

Solution: `npm run fix`.
2020-03-09 15:07:49 -07:00
Christian Bundy 9b193cda14 Upgrade npm dependencies
Problem: Patchwork is soon going to release with a new SSB-Backlinks,
and since we share a database with Patchwork we should make sure we're
on the same version. If we're on different versions, we'll be constantly
regenerating indexes and that isn't fun for anyone.

Solution: Upgrade npm dependencies.
2020-03-09 14:34:18 -07:00
Christian Bundy d97c04d93f
Merge pull request #295 from hng/feature/small-i18n-improvements
Small i18n improvements
2020-03-09 07:20:07 -07:00
Henning Schumann 15417422a4 Made "private/public" comment translatable 2020-03-09 12:19:01 +01:00
Henning Schumann 314033cdd0 Made content warning text field placeholder translatable 2020-03-09 11:57:21 +01:00
Christian Bundy a2e7f4ad6d
Merge pull request #293 from hng/feature/translations-de
Add German translations
2020-03-08 17:57:46 -07:00
Henning Schumann b86eeeb3e5 Finished up German translations :) 2020-03-08 19:26:36 +01:00
Cinnamon e7c38e3ec5
Merge pull request #285 from christianbundy/vanilla-markdown
Vanilla markdown
2020-03-06 11:57:08 -08:00
Henning Schumann d035b165fd Even more German translations 2020-03-06 17:17:00 +01:00
Jacob Karlsson 5c1cd759bc Fix bug with missing flatness 2020-03-06 17:00:06 +01:00
Jacob Karlsson e4a9548cda Add basic hiding of forks 2020-03-06 16:33:31 +01:00
Henning Schumann d628486ae1 More German translations 2020-03-05 21:22:20 +01:00
Henning Schumann 6aca504921 Merge remote-tracking branch 'upstream/master' into feature/translations-de 2020-03-05 19:53:53 +01:00
Christian Bundy 497cff22f6
Merge pull request #284 from georgeowell/small-text-tweaks
Small text tweaks to /publish
2020-03-03 16:35:43 -08:00
KawaiiPunk 3ed7a52d37
Specified "this post" rather than "the post" in /publish 2020-03-04 00:17:06 +00:00
Christian Bundy cb1cf5e87e Render vanilla Markdown with basic renderer
Problem: The SSB-Markdown library has some SSB-flavored quirks, like
messing with newline behavior, and is inappropriate for rendering plain
Markdown like the readme.

Solution: Since SSB-Markdown uses Markdown-It under the hood, we can use
the same library and just render our Markdown *without* the SSB-flavored
quirks. This gives us the ability to wrap text and avoid SSB-Markdown
problems without having to rewrite all of our Markdown.
2020-03-03 16:13:56 -08:00
KawaiiPunk d4cb2cf9e9
Changed "warning to "content warning" 2020-03-04 00:11:45 +00:00
Christian Bundy 398a082f63 Revert "Fixed wrapping in README to improve readability of /settings/readme"
This reverts commit 4edb15c1ee.
2020-03-03 16:06:36 -08:00
KawaiiPunk 47aa7d3efb
Changed references to "messages" in /publish to "posts" 2020-03-04 00:04:20 +00:00
Christian Bundy 8647b46ae2
Merge pull request #283 from georgeowell/small-text-tweaks
Fixed wrapping in README to improve readability of /settings/readme
2020-03-03 16:04:18 -08:00
KawaiiPunk 107bee5e52
Added word public for emphasis on /publish 2020-03-04 00:00:00 +00:00
KawaiiPunk 4edb15c1ee
Fixed wrapping in README to improve readability of /settings/readme 2020-03-03 23:40:46 +00:00
Christian Bundy 3d9134d3c2
Merge pull request #282 from georgeowell/master
Updated Github issue and pull request templates
2020-03-03 15:21:44 -08:00
KawaiiPunk 0841202525
PULL_REQUEST_TEMPLATE.md: Added markdown h2 styling 2020-03-03 22:59:21 +00:00
KawaiiPunk 0f3f2ac85b
ISSUE_TEMPLATE.md: Changed to markdown h2 and added version/commit question 2020-03-03 22:57:32 +00:00
Christian Bundy ce5679cd8a
Merge pull request #279 from fraction/cinnamon-bun-patch-1
README.md: clarify installation instructions
2020-03-02 14:59:03 -08:00
Cinnamon d6c8aeb30f
README: add FAQ about running alongside other SSB apps
Patchwork freezes on launch if Oasis is already running (because of an SSB server conflict, I assume).  I added an FAQ to guide people around that pothole.
2020-03-02 13:28:35 -08:00
Christian Bundy e0611ebd74 Appease linter
Problem: The linter was complaining about the recent changes to
`README.md`.

Solution: Run `npm run fix`.
2020-03-02 11:38:08 -08:00
Cinnamon 9f6e5befbc
README.md: clarify installation instructions
The example command `oasis` all by itself wasn't obviously a command-line command, so I added a sentence about it.

Also added a sentence about installing Node, geared at non-technical people.
2020-03-02 11:28:08 -08:00
Cinnamon 209b6a57a1
Merge pull request #276 from christianbundy/simple-install
Simplify installation
2020-03-02 11:17:52 -08:00
Christian Bundy 2e7cb4ad66 Remove readme and startup focus on configuration
Problem: A big chunk of both the readme and the startup output is
dedicated to configuration, which feels to me to be focused on
developers and advanced users rather than beginners who just want to try
using Oasis.

Solution: Move readme configuration info to its own file and hide all
config output (except one line) behind `--debug`. While doing this I
noticed that we're `require()`ing a few modules that we don't need
before setting `process.env.DEBUG`, which I've reorganized so that we
don't accidentally disable debug mode for those modules.
2020-03-01 11:39:01 -08:00
Christian Bundy 1f6f635935 Remove debugging cruft
Problem: I have debug mode manually enabled and have `console.log()`
calls sprinkled through the code and I'm doing `require("crypto")` too
many times.

Solution: Remove debugging cruft so that we don't have a perma-debug
mode.
2020-03-01 11:19:23 -08:00
Christian Bundy 02d6d5adac Add profile image upload
Problem: We can set our name and profile description but profile images
are expected by most people and supported by most clients and we don't
have them. A profile without an image can sometimes lack the intimacy
you'd get if you let people upload profile images that they can use as a
visual avatar.

Solution: Add profile image upload to the Edit Profile page and add a
bunch of plumbing for `ssb.blobs.add()` to add the blob and publish a
message setting it as a profile image.
2020-03-01 11:11:09 -08:00
Christian Bundy 3758bbf636 Simplify installation
Problem: The install instructions in the readme contains quotes because
it has a `*`, but `#semver:` does what we need without the quotes. The
`docs/install.md` file also has some unnecessary complexity, like
cloning via SSH (only useful for maintainers), which I think we can
safely remove.

Solution: Change the install instruction and reorganize
`docs/install.md` to be more relevant to people who are installing from
source.
2020-02-29 08:31:07 -08:00
Cinnamon 3c1453db33
Merge pull request #270 from christianbundy/fix-extended
Fix Extended page sorting posts incorrectly
2020-02-28 14:53:28 -08:00
Cinnamon f137e7155c
Merge pull request #271 from christianbundy/render-channel
Show channel as text appended to posts
2020-02-28 14:52:54 -08:00
Christian Bundy 9d3553352f Show channel as text appended to posts
Problem: Other clients render a `channel` property, which is basically a
way to add a single hashtag to your post, but Oasis doesn't support
that. This means that someone might post "this is fun!" under the
channel #running and people using Oasis would just see "this is fun!"
without any context.

Solution: Add the hashtag to the bottom of the post, which visually
looks the same as someone adding two newlines and a hashtag to the end
of the text in their post.
2020-02-27 17:21:23 -08:00
Christian Bundy dcd995140b Fix Extended page sorting posts incorrectly
Problem: The Extended page is sorting by received timestamp, not
asserted timestamp.

Solution: Find the `Date.now` and replace it with `Date.now()`, which
refers to the current date instead of `undefined`, which is what you get
if you try to `JSON.stringify(Date.now)`.
2020-02-27 16:53:41 -08:00
Cinnamon 881b251aaa
Merge pull request #261 from christianbundy/edit-profile
Add profile edit page
2020-02-27 15:52:16 -08:00
Cinnamon e9fc29c592
Merge branch 'master' into edit-profile 2020-02-27 14:05:37 -08:00
Cinnamon f9a787bef0
Merge pull request #260 from christianbundy/fix-dta-queries
Fix queries with an unused `{index: "DTA"}` option
2020-02-27 14:02:43 -08:00
Cinnamon 763c9f7672
Merge pull request #262 from christianbundy/existing-oasis
Detect existing Oasis server running on interface
2020-02-27 14:01:21 -08:00
Cinnamon 2e59c0e994
Merge pull request #263 from christianbundy/hide-blocked-search
Hide search results from blocked feeds
2020-02-27 14:00:27 -08:00
Cinnamon 9e77d04308
Merge pull request #269 from christianbundy/hashtag-search
Add hashtag support to search
2020-02-27 13:57:03 -08:00
Christian Bundy 927026937c Add hashtag support to search
Problem: Searching for a hashtag should bring you to the hashtag page,
and the hashtag page should have some useful information about which
page you're on instead of just showing you the messages.

Solution: Add code so that if you search for a hashtag you're brought to
that page, and display some useful help text at the top of the page
explaining the hashtag page. While ensuring that the hashtag page showed
posts from around the network (instead of only people you're following)
I fixed the popular page so that it has the same behavior again (fixing
a regression) and filtered out gatherings (fixing *another* regression)
on the popular page. These probably should've happened in another commit
but I got carried away. :/

Happy to split this commit into two if it hurts to bundle the popular
fixes with the hashtag fix, but I'm low on energy and want to at least
open a PR in case it doesn't bother anyone.
2020-02-27 12:14:29 -08:00
Christian Bundy fb2e042a12 Remove debug output and add comments
Problem: The previous code was printing debug output so that I could
ensure that my argument checking worked correctly, but we don't want to
distribute a binary that echoes back your arguments to you.

Solution: Remove the debug output and add lots of comments to document
all of my misunderstandings of how the current code works. :~)
2020-02-26 20:40:23 -08:00
Christian Bundy 9b53ee94dc Replace C launcher with Golang launcher
Problem: I don't know what I'm doing and can't figure out how to
cross-compile this simple C program to macOS and Windows

Solution: @cryptix reminded me that Go makes cross-compiling easy, so I
took a stab at writing my first Go program. It seems to be working on
macOS and Linux, but I haven't tested on Windows.
2020-02-26 18:20:47 -08:00
Christian Bundy 51981ebfdb Fix argument expansion on Windows
Problem: Apparently one of the previous commits switched us to
shell-style argument expansion.

Solution: Use the appropriate solution on Windows, `%*`.
2020-02-26 15:40:13 -08:00
Christian Bundy dd81f0877a Fix typo in batch file path
Problem: We were using `darwin` instead of `win`.

Solution: Replace `darwin` with `win` to ensure that we're using the
correct path in the batch file we produce.
2020-02-26 15:36:19 -08:00
Christian Bundy 340f2842fa Hide search results from blocked feeds
Problem: The search results weren't hiding results from blocked feeds.

Solution: Add `socialFilter()` to ensure that all blocked feeds are
removed from search results as the first step in the stream processing.
2020-02-26 15:26:40 -08:00
Christian Bundy ddf57b227f Detect existing Oasis server running on interface
Problem: Sometimes you try to run Oasis twice and the second time you
run the program it blows up in your face about the port being taken.
Most other software just focuses or reopens the window instead of
throwing errors at you.

Solution: Implement `/.well-known/oasis` as a sanity check to see
whether the thing listening on the HTTP port. If it replies "oasis" then
we can open the tab (unless `config.open === false`) and avoid throwing
the error.
2020-02-26 14:11:14 -08:00
Christian Bundy 3686113043 Add profile edit page
Problem: An SSB client should allow you to declare your own name, but
Oasis didn't support that behavior at all.

Solution: Add a basic 'Edit Profile' page that lets you set your name
and description. This doesn't implement profile images because I had
limited time and didn't want to think about encoding formats, but it's
worth mentioning that I remember something about binary uploads with the
default form encoding actually send 3 times as much data because of
escapes or something? This might not effect us because we're on
localhost, but I want to make a note that this isn't implemented yet.

This also makes a small change regarding the `<label>` element --
previously we were writing them as siblings to the input and using the
`for` attribute to target the input, but while messing with the CSS I
tried putting them directly in the `label()` and it ends up having the
same effect with less code.
2020-02-26 13:45:40 -08:00
Christian Bundy 7db90bd5e9 Fix queries with an unused `{index: "DTA"}` option
Problem: Trying to use the DTA index when using SSB-Query doesn't work,
because that index only exists on SSB-Backlinks.

Solution: Change the filter to ensure that we're sorted by the asserted
timestamp and ignoring messages from the future. The SSB-Backlinks
plugin was taking the minimum between `.value.timestamp` and `timestamp`
but since we're not using SSB-Backlinks in this query (or maybe at all?)
we get to make our own little hacky query. Cel taught me that the
`$sort` option causes problems here because it buffers the entire result
in memory before doing the sort. Boo. Instead we just need to reference
the property that we want to be sorted by with some operation, even if
it does nothing (like `{ $gt: null }`), but since we're filtering time
travelers we actually need `{ $lge: Date.now() }` there anyway.
2020-02-26 12:16:02 -08:00
Christian Bundy 8ed77e5a64 Add basedir check for macOS shell script
Problem: When running the Darwin binary from another directory, the
script would look in the user's current working directory for both
`node` and `src`, which is wrong.

Solution: Set `BASEDIR` and use it so that we use the correct paths.
2020-02-26 07:35:01 -08:00
Christian Bundy 6812347b02 Distribute shell/batch scripts on macOS/Window
Problem: I've quickly learned that cross-compiling is a major headache
and that C programming lacks both rainbows and butterflies. It seems
that my executable only works on Linux, but probably not macOS or
Windows.

Solution: Use shell scripts on macOS, which work when you double-click
them, and batch scripts on Windows, which I *think* work when you
double-click them. I haven't tested this on a macOS device yet, but I
tested the previous shell script on macOS and it seemed to work fine.
Unless I've done something silly, this should work on macOS, but the
Windows batch script is just me writing code from memory and probably
doesn't work correcly. I'll probably beg @SoapDog to help me fix it.
2020-02-25 20:41:57 -08:00
Christian Bundy 4fac7a70b4 Move C program to its own file
Problem: Writing C in a heredoc is super janky and I think it's worth
avoiding whenever we can. We've also been getting compiler warnings that
we should probably resolve.

Solution: Move the C to its own file and resolve the compiler warnings.
2020-02-25 17:58:08 -08:00
Christian Bundy 3a486c851f Replace shell script with C program for max compat
Problem: The shell script didn't work on other platforms and the
AppImage hack ended up confusing people who tried to install it with
AppImageLauncher.

Solution: This feels absolutely ridiculous, but I've written the worst C
program in the world which does the equivalent of `exec ./node src "$@"`
and immediately gets out of our way. This ends up being an executable
that both Nautilus and Dolphin (GNOME and KDE file managers) let us
double-click, and should also work on macOS. It might even work on
Windows if we rename it as an `.exe`, but I'm not sure and *definitely*
haven't tested that.
2020-02-25 16:20:33 -08:00
Christian Bundy 8eb9fa12c4 Provide debugging output for failed module require
Problem: We try to `require()` our native modules to ensure that they
work correctly, but when they don't work we need to produce an error
that will help us debug the problem.

Solution: Switch from `node -p` to `node -e` to avoid printing
unnecessary output and don't redirect output for mandatory modules so
that we can debug them.
2020-02-25 12:58:36 -08:00
Christian Bundy f32e93e7a2 Reduce installer size
Problem: The installer contained npm and npx and a bunch of code that we
really don't need unless we're building from source. Since we don't want
our end-users to build anything from source, we can remove these.

Solution: Use shell-check to make some small fixups to the code and
remove everything we're downloading via wget except the `node` binary.
This requires moving the "build from source" fallback, and also includes
the `.appimage` hack when building from Linux to get double-click
opening working.
2020-02-25 07:38:16 -08:00
Christian Bundy f9013255ef Avoid making installer build from source
Problem: The previous approach of having the installer run `npm install`
was hazardous at best and didn't work well offline.

Solution: Package all of the source code with the application and use
the installer to ensure that it works on the target device. The
installer should ensure that we can `require()` the module, and if that
doesn't work then it should choose between two options:

- If the module is optional, `rm -rf` it and don't worry about it.
- If the module is mandatory, try running `npm install` with some flags
  to ensure that we stay offline and print the absolute minimal output.
  This should never happen, because we should never be packaging Oasis
  for architectures and platforms that we don't have prebuilds for, but
  it's a fine fallback behavior for experimental hackery.
2020-02-24 14:45:44 -08:00
Christian Bundy 4a2125f4d5
Merge pull request #257 from fraction/readme-config-path
Update README - fix config path on mac os
2020-02-24 12:44:49 -08:00
Cinnamon b1ae066dcb
Update README - fix config path on mac os 2020-02-24 12:21:12 -08:00
Christian Bundy e88575ff7f
Merge pull request #255 from black-puppydog/master
Add config documentation (addresses #254).
2020-02-23 13:51:21 -08:00
Daan Wynen 7ec64e04bf Add config documentation (addresses #254). 2020-02-23 12:09:51 +01:00
Cinnamon c86678985e
Merge pull request #253 from christianbundy/refactor-default-config
Refactor default config loader
2020-02-22 14:36:05 -08:00
Christian Bundy 948d195e64
Merge pull request #252 from black-puppydog/master
Read settings from $XDG_CONFIG_HOME/oasis/config.json
2020-02-22 11:24:13 -08:00
Christian Bundy 3838987d55 Refactor default config loader
Problem: We load the default config with `require()`, which would allow
arbitrary JavaScript execution, are producing debug output everywhere
with `console.log()` statements, and don't have instructions for how to
write the config file. The config file is also `.config/**/config.json`,
and I think it would be helpful to specify that this is the **default**
config rather than any other kind of config.

Solution: Rename the config to `~/.config/oasis/default.json`, replace
the `require()` with `fs.readFile()`, remove `console.log()` for
debugging, and add some example JSON for how to use the config file.
2020-02-22 11:23:59 -08:00
Christian Bundy 5d6ef8acbe Pass through build script command-line arguments
Problem: Running `./oasis --version` should output the current version,
it shouldn't just start the server by default.

Solution: Pass through command-line arguments with `$@` so that we
respect what the user is asking us to do.
2020-02-22 08:53:29 -08:00
Daan Wynen 35c42f6b95 Read settings from ~/.config/oasis/config.json
This should give pretty much expected behaviour. Each config value
can be set by three sources:

1. By command-line argument. If it is not given, then
2. By config file. Or, lastly
3. By default value in the source code.

I can't test that the config file is searched and read from the right
place on windows or macOS, but on linux it works.
2020-02-22 10:32:50 +01:00
Cinnamon 8eebedff4c
Merge pull request #250 from christianbundy/unix-noauth
Add support for Unix socket with noauth
2020-02-21 16:05:01 -08:00
Christian Bundy 1e79b123aa Add build script that creates zip files
Problem: Most people don't have npm installed and we probably shouldn't
force them to have a full development environment to use Oasis. It would
be nice to have a way to install Oasis without any development tools.

Solution: Add a build script that can create .zip files that work on
Unix systems like macOs and Linux. Users will need to download the zip,
extract it, and double-click the `oasis` script. This script will run
`npm start || npm install && npm start`, which uses binaries that we
ship in the zip file so that they don't need to have `node` or `npm`
installed.
2020-02-21 16:04:53 -08:00
Christian Bundy ed5e6e5f61 Add support for Unix socket with noauth
Problem: We're doing tons of unnecessary cryptography by encrypting the
connection between the "client" and "server", which are often running in
the same process.

Solution: Instead of connecting to the SSB service over TCP and
encrypting the stream, just connect over a socket (supported on Windows,
macOS, and Linux) and don't bother encrypting anything. This is what
Patchwork and Patchbay do already, and since our secret is at
`~/.ssb/secret` then we should be comfortable with `~/.ssb/socket` being
a trusted file where access implies authentication.

Local tests suggest that when sodium-native is available, this commit
reduces the time to render the 'Popular (Day)' page by 17%, but when we
have to fall back to JavaScript cryptography the same page now takes 30%
less time to render. My intuition is that this improvement is more
dramatic on mobile, but requires further testing before we can pat
ourselves on the back too much. :)
2020-02-21 09:23:46 -08:00
Jonathan Dahan bbbf3f8808
Merge pull request #247 from christianbundy/add-termux-docs
Add Termux install documentation
2020-02-21 11:04:02 -05:00
Christian Bundy 0bbb4d9bba Remove `--no-optional` to install sodium-native
Problem: I thought `--no-optional` would just ignore our top-level
optional dependencies, but it ends up ignoring deep optionl dependencies
like sodium-native. We really want these dependencies if we can build
them.

Solution: Remove the `--no-optional` suggestion and add a note about
what to do if Sharp doesn't install correctly, which is very likely
since Termux doesn't have libvips available.
2020-02-21 07:43:21 -08:00
Christian Bundy f11eff31de
Merge pull request #248 from cinnamon-bun/master
Add docs/translating.md -- instructions for adding new languages
2020-02-20 15:36:25 -08:00
Cinnamon 4fb61a3bf6 Add docs/translating.md -- instructions for adding new languages 2020-02-20 15:15:29 -08:00
Christian Bundy cf1a88e2f7 Add Termux install documentation
Problem: The Termux install is new and exciting and there isn't any
documentation on how to experiment with it.

Solution: Add some documentation like we've done with systemd and
Docker so that we can collaborate and figure it out in the repo!
2020-02-20 15:12:38 -08:00
Cinnamon 0f893b815b
Merge pull request #246 from christianbundy/remove-ssb-mentions-workaround
Update SSB-Mentions and remove workaround
2020-02-20 12:39:52 -08:00
Christian Bundy 293dcabe68 Update SSB-Mentions and remove workaround
Problem: We've been using a workaround to filter the results of
SSB-Mentions, but that's just been fixed upstream and so we don't need
the workaround anymore.

Solution: Update the SSB-Mentions package and remove the workaround.
2020-02-19 14:38:10 -08:00
Cinnamon cf05f46dec
Merge pull request #244 from christianbundy/private-latest
Remove private posts from public views
2020-02-19 14:23:04 -08:00
Christian Bundy a775c99421 Remove private posts from public views
Problem: During the SSB-Query refactor I used `{ private: false }` in an
attempt to hide private messages, but apparently this option is only
available via SSB-Backlinks, so it was ignored without any warning (!).
This allowed private messages to be displayed in public views.

Solution: Remove the unused option and add a filter to public views that
ensures that private messages are always hidden.
2020-02-19 10:27:06 -08:00
Cinnamon 6f5de95d01
Merge pull request #230 from christianbundy/no-messages-by-type
Replace messagesByType() with SSB-Query read
2020-02-18 21:24:14 -08:00
Cinnamon 96e60868cd
Merge pull request #234 from christianbundy/no-img-border
Remove image border
2020-02-18 21:20:18 -08:00
Cinnamon cef75354ae
Merge pull request #236 from christianbundy/no-private-mentions-page
Remove private messages from Mentions
2020-02-18 12:31:01 -08:00
Cinnamon 545944a73e
Merge pull request #235 from christianbundy/friendly-EADDRINUSE
Add friendly EADDRINUSE error message
2020-02-18 12:27:36 -08:00
Christian Bundy b22f458da1 Remove private messages from Mentions
Problem: Private messages should only be showing up in the Private page,
not the Mentions page, but right now they're showing up in Mentions.

Solution: Add a check to ensure that Mentions doesn't have any private
messages.
2020-02-18 11:44:40 -08:00
Christian Bundy 00943affea Add friendly EADDRINUSE error message
Problem: When the port was already taken by another process we've been
dumping a big esoteric error message that really isn't helpful for most
people.

Solution: Catch the error and give our users a friendly error message
with a suggestion on how to run Oasis on another port.
2020-02-18 11:34:21 -08:00
Cinnamon 6c6c46e4be
Merge pull request #233 from christianbundy/publish-redirect-latest
Redirect to Latest after publishing new message
2020-02-18 11:19:31 -08:00
Christian Bundy a0449cefe0 Remove image border
Problem: I added an image border to try to make it easier to see the
boundaries of images but it's not really necessary and at least one
person didn't love it, which is grounds for removal.

Solution: Get it out of here! This commit removes the image border and
also removes a random `console.log()` that shouldn't have been left in
`src/index.js`.
2020-02-18 11:15:43 -08:00
Jonathan Dahan 16f19e85fb
Merge pull request #232 from christianbundy/add-version
Add Oasis version to settings
2020-02-18 14:03:41 -05:00
Cinnamon 4a24e7a663
Merge pull request #223 from christianbundy/summaries-page
Create 'Summaries' page for new summary view
2020-02-18 10:56:28 -08:00
Christian Bundy 97c71be4bd Redirect to Latest after publishing new message
Problem: After publishing a message you were redirected to the Popular
view, which wasn't good feedback that your message had been published.

Solution: After publishing a new message, redirect to the Latest view.
2020-02-18 10:52:37 -08:00
Christian Bundy 8088a9aa8b Add Oasis version to settings
Problem: It was impossible to tell which version of Oasis you're
running, which makes it hard to know when you need to update.

Solution: Put the version in the settings so it's easy to reference.
2020-02-18 10:44:36 -08:00
Jonathan Dahan 8237e08d73
Merge pull request #228 from christianbundy/authors
Add AUTHORS and MAINTAINERS files
2020-02-18 11:50:15 -05:00
Jonathan Dahan b25e34bb1c
Merge pull request #229 from christianbundy/no-npm
Remove references to npm registry publish
2020-02-17 20:26:39 -05:00
Christian Bundy aa6f797937 Replace messagesByType() with SSB-Query read
Problem: The `messagesByType()` queries don't let us sort by asserted
time, which means that we can get messages from a long time ago that
just ended up on our computer.

Solution: Use SSB-Query everywhere. The query syntax isn't really my
favorite but it lets us make declarative queries that respect the
asserted timestamp instead of just the received timestamp.
2020-02-17 17:11:18 -08:00
Christian Bundy 51635ce6f6 Remove references to npm registry publish
Problem: The npm registry is great for proprietary modules who need to
ship binaries but not really useful for free and open source software.
It creates a divide between users and our Git repo, and introduces a
for-profit company as an intermediary to distribute Oasis.

Solution: Remove the npm registry as a distribution platform and just
use our Git repository instead. This removes npm registry references
from the readme, instead prioritizing the GitHub repository, and leaves
room for others to mirror the Git repository (for allows us to move to
less-Microsofty Git hosting).
2020-02-17 16:40:53 -08:00
Christian Bundy 9a000800ec Add AUTHORS and MAINTAINERS files
Problem: It's hard to know who has worked on the project and who is
maintaining the project, for security and code of conduct issues.

Solution: Add AUTHORS and MAINTAINERS files to track who has contributed
code and mixed in their copyright (woo!) and keep track of who is
committed to maintaining the project and merging patches.
2020-02-17 16:38:02 -08:00
Jonathan Dahan b1b58d8a64
Merge pull request #225 from christianbundy/search-refs
Redirect search to SSB references
2020-02-17 16:56:10 -05:00
Christian Bundy 99c51b4a12 Redirect search to SSB references
Problem: There wasn't an easy way to copy and paste a message ID, feed
ID, or blob ID and get directed to that page in Oasis.

Solution: When someone pastes one of the above into the search, just
redirect the browser to the correct page rather than searching for that
text.
2020-02-17 12:46:37 -08:00
Christian Bundy 58b4d419f7 Create 'Summaries' page for new summary view
Problem: Until we have a way to change the view of each page, it seems
to me that each of the views that we're experimenting with should be on
their own page rather than modifying the existing pages to add more
functionality. I'm also noticing that I can't process all of the
information that's on the screen when the new horizontal layout is used,
and I think we would benefit from using the previous layout
consistently.

Solution: Move the summary view to its own page so that we can continue
to iterate on it without modifying the popular view, which is already
complex, and revert the style changes to maintain consistency with the
rest of the linear design (threads go downward, indentation denotes
sub-threads, etc).
2020-02-17 12:08:03 -08:00
Jonathan Dahan 5b37240067
Merge pull request #218 from christianbundy/fix-like
Fix likes not working with Patchwork as server
2020-02-17 11:43:48 -05:00
Christian Bundy 97b8d6924c
Merge pull request #219 from ciex/comments-preview
Show a preview of comments in listings
2020-02-17 07:59:36 -08:00
Christian Bundy 161235190d
Merge pull request #190 from fraction/tag-and-publish-on-npm
tag and publish on npm
2020-02-17 07:38:56 -08:00
Vincent Ahrend 4913b3a93a Add VSCode files to gitignore 2020-02-17 12:57:38 +01:00
Vincent Ahrend 2e7bc4739b Add code style fixes 2020-02-17 12:57:01 +01:00
Vincent Ahrend 6977cc3ee3 Show a preview of comments in post listings 2020-02-16 20:14:23 +01:00
Christian Bundy 3abd28ade2 Fix likes not working with Patchwork as server
Problem: Recently we refactored the code so that we calls over MuxRPC
used promises, which was incompatible with the client-side SSB-Tangle
plugin that was expecting a callback. While debugging this error, I also
noticed that our `{ ws: { http: false } }` code wasn't doing anything,
and that our connection error handler was handling all kinds of
unrelated errors that would make debug more difficult.

Solution: Use `util.promisify()` to convert the callback-style function
into a promise-style function, remove the unused SSB-WS code, and reduce
the scope of the error catcher so that it'll continue to output errors
unless they're "cannot connect to sbot".
2020-02-16 10:24:42 -08:00
Cinnamon e9a7cc5fa1
Merge pull request #215 from christianbundy/default-about
No more `null` for unknown names and descriptions
2020-02-14 20:49:02 -08:00
Cinnamon 22b00e6a09
Merge pull request #214 from christianbundy/publish-custom
Hide custom publish behind publish menu
2020-02-14 20:47:54 -08:00
Christian Bundy 21c19ed70a No more `null` for unknown names and descriptions
Problem: When we couldn't figure out someone's name or description we
were using `null`, which got coerced to a string and ended up with us
calling people `"@null"`. Not ideal!

Solution: Support a use-case where someone doesn't have a profile
description or a name, and use the first 8 characters of their public
key for their name if they haven't set a name themselves.
2020-02-14 13:58:59 -08:00
Christian Bundy 876ba89947 Hide custom publish behind publish menu
Problem: The new custom publish was called 'Manual mode', which I'm
afraid isn't super easy to understand for people who don't already know
SSB. The custom publishing page didn't follow the same conventions as
other pages, either.

Solution: Hide the custom publish mode behind the publish page, with a
warning that it's for 'advanced users', and ensure that it uses the same
conventions and visual styles as other pages and code around the app.
2020-02-14 12:33:26 -08:00
Daan Wynen 5c038e70a3 [WIP] raw json submission form 2020-02-14 20:50:36 +01:00
Cinnamon 827ed528db
Merge pull request #212 from christianbundy/fix-publish
Fix publish not working without content warning
2020-02-13 18:12:11 -08:00
Christian Bundy 8a9e260728 Fix publish not working without content warning
Problem: The new content warning code was applying a content warning to
all posts, which tried to publish an invalid content warning `""` and
threw an error.

Solution: Only publish a content warning if it's a string with non-zero
length.
2020-02-13 15:55:41 -08:00
Cinnamon 3f78b98a30
Merge pull request #206 from christianbundy/fix-popular
Fix popular page to only show posts from following
2020-02-12 17:43:35 -08:00
Cinnamon dc4e0fed91
Merge pull request #207 from christianbundy/no-private-mentions
Remove automatic mentions from private threads
2020-02-12 17:42:10 -08:00
Cinnamon faf1e6f11b
Merge pull request #210 from christianbundy/markdown-emoji
Use color emoji in Markdown posts
2020-02-12 17:41:23 -08:00
Christian Bundy 81f83e0e7b Use color emoji in Markdown posts
Problem: Emoji from Markdown posts were being displayed in the default
font, which doesn't always use color emoji.

Solution: Use the `.emoji` CSS class on those emoji to ensure that the
correct emoji font is used.
2020-02-12 12:25:55 -08:00
Jonathan Dahan 9bba867b46
Merge pull request #209 from christianbundy/remove-roadmap
Remove roadmap now that they're all issues
2020-02-12 14:20:30 -05:00
Christian Bundy 657c6f271d Remove roadmap now that they're all issues
Problem: The roadmap should exist in the issue tracker, not the repo.

Solution: Since all of the roadmap items have been converted into
issues, we're now good to remove the roadmap from the repo.
2020-02-12 11:04:48 -08:00
Christian Bundy 2bc3aed067 Remove automatic mentions from private threads
Problem: When replying to a private thread we already know who the
recipients are, and they're already going to get the notification, so
there's really no reason to add a mention.

Solution: Remove the mention when the message is private.
2020-02-12 11:00:23 -08:00
Christian Bundy 683f7ead9d Fix popular page to only show posts from following
Problem: Previously we were only counting likes from people you follow,
but showing messages from anyone. This was backward, and could
potentially show messages from blocked authors that were liked by people
you follow.

Solution: Move the `socialFilter()` invocation down the pipeline so that
it sorts the output messages, not the likes.
2020-02-12 10:36:28 -08:00
Christian Bundy ca7e558a33
Merge pull request #204 from georgeowell/patch-1
Added latest roadmap.md progress
2020-02-12 09:22:02 -08:00
kawaiipunk 932dbcc43b
Added latest roadmap.md progress
Added ticks for "Content warning" and "Get"
2020-02-12 16:48:15 +00:00
Jonathan Dahan 0259a949c4
Merge pull request #200 from christianbundy/fix-sources
Fix sources bug and thread ancestor bug
2020-02-12 10:49:15 -05:00
Henning Schumann 18fc02dc87 Started German translation 2020-02-12 16:47:09 +01:00
Christian Bundy 9f98ff41c8 Fix umbrella "message not found" and invalid msgs
Problem: Any error thrown while looking for thread ancestors was
throwing a "message not found" error, which was incorrect and useless.
This error caused me to his refresh repeatedly, not understanding that I
was publishing multiple messages. Super bad. While investigating this I
found that there's a slightly different problem where someone can post
an *invalid* message link, which we don't currently have handling for.

Solution: Only show that error when it's actually happening, and add
support for just ignoring when we see an invalid message link as `root`
or `fork`.
2020-02-11 20:14:48 -08:00
Christian Bundy bc5c242bfb Fix sources that didn't return promises
Problem: In the old `cooler.read()` implementation, sources returned
promises, but that isn't the case in the native SSB-Client promise
impelementation. This means that in at least one place, there's a bug
where it tries to call `.then()` on a non-promise.

Solution: Remove promise-based code from streams, which don't require
any special handling anymore.
2020-02-11 20:01:12 -08:00
Christian Bundy f70dae3f0e
Merge pull request #199 from jedahan/content-warning-publish
Add content warning publishing, fixes #191
2020-02-11 19:31:51 -08:00
Jonathan Dahan adfed1bead Add content warning publishing, fixes #191 2020-02-11 22:18:10 -05:00
Cinnamon 0cbb2cc87f
Merge pull request #198 from christianbundy/improve-readme
Improve readme with more details about Oasis
2020-02-11 17:56:50 -08:00
Cinnamon 0cfd824677
Merge pull request #196 from christianbundy/ssb-client-promises
Replace cooler methods with SSB-Client promises
2020-02-11 17:55:36 -08:00
Cinnamon ccaabadd17
Merge pull request #197 from christianbundy/extended-self
Fix extended page so it doesn't show your posts
2020-02-11 17:53:30 -08:00
Christian Bundy 56ce91daee Improve readme with more details about Oasis
Problem: The previous readme didn't really have very much information
about what Oasis is or what we want it to be. It wasn't very enticing.

Solution: Zoom out a bit and give a top-3 list of features that
distinguishes Oasis from other social networking applications and SSB
applications in general.
2020-02-11 15:53:31 -08:00
Christian Bundy 8071382874 Fix extended page so it doesn't show your posts
Problem: Your posts show up in Extended, which is unexpected because I'm
the center of my network, not some rando at the periphery.

Solution: Use the `socialFilter()` function to make sure that the
extended view only shows people in your extended network, not you. :)
2020-02-11 13:25:16 -08:00
Christian Bundy 1e28b29758 Replace cooler methods with SSB-Client promises
Problem: We started using `cooler.get()` and `cooler.read()` because it
was impossible to use promises with SSB-Client.

Solution: I made some downstream pull requests into the MuxRPC module
and the SSB-Client module, which means that both of them now natively
support promises. This commit removes the weird convenience methods and
replaces them with the native promise support, which should hopefully
make the code easier to read and write.
2020-02-11 13:20:50 -08:00
Cinnamon ca16413ad0
Merge pull request #195 from christianbundy/replace-screenshot
Replace screenshot with wider screenshot of art
2020-02-11 10:05:15 -08:00
Christian Bundy 800b201552 Replace screenshot with wider screenshot of art
Problem: I didn't really like random text posts from me being in the
readme, and the aspect ratio of the screenshot meant that it ended up
taking up lots of vertical space.

Solution: Use a wide screenshot of some concept art to keep it from
stretching vertically very far while still showing off the absolute
basics of Oasis.
2020-02-10 19:40:21 -08:00
Christian Bundy 705c671e6d
Merge pull request #193 from jedahan/screenshot
add screenshot to readme, fixes #59
2020-02-10 19:27:52 -08:00
Christian Bundy 57d9448992
Merge pull request #194 from jdjkelly/feature/rename-meta
Changes /meta to /settings
2020-02-10 19:10:10 -08:00
Joshua Kelly f7ab71e891 Changes /meta to /settings
Problem: meta was renamed in the UI to settings, but the URLs say meta

Solution: Rename them to /settings/*
2020-02-10 18:07:55 -08:00
Jonathan Dahan ec6092aa2e add screenshot to readme, fixes #59 2020-02-10 13:54:19 -05:00
Jonathan Dahan a3e22df15e
tag and publish on npm
this is just a sketch, and we need to set NPM_AUTH_TOKEN
2020-02-10 13:17:37 -05:00
Cinnamon f6b34f4984
Merge pull request #189 from christianbundy/release-2.13.1
2.13.1
2020-02-10 10:01:55 -08:00
Christian Bundy 6031b11470 2.13.1 2020-02-09 16:05:36 -08:00
Cinnamon 68631d76a9
Merge pull request #188 from christianbundy/fix-about
Fix bug where others could still change your name
2020-02-09 16:03:45 -08:00
Christian Bundy 410b97e9e4 Fix bug where others could still change your name
Problem: There was one missing component that would filter out nicknames
from other people. This caused a problem where we could get a name for a
feed but it could've been assigned by a friend, which we don't want
right now.

Solution: Ensure that the subject of the message is the same as the
author of the message.
2020-02-09 13:50:49 -08:00
Cinnamon 74e6925058
Merge pull request #186 from christianbundy/release-2.13.0
2.13.0
2020-02-09 13:30:42 -08:00
Christian Bundy dfb498181b 2.13.0 2020-02-09 08:11:32 -08:00
Cinnamon 2295e7858a
Merge pull request #184 from christianbundy/get-about
Use custom getAbout() to replace SSB-About
2020-02-08 19:36:45 -08:00
Cinnamon 15784efa68
Merge pull request #185 from christianbundy/add-robots
Add basic robots.txt to keep search engines away
2020-02-08 19:26:34 -08:00
Christian Bundy df11dc07bc Add basic robots.txt to keep search engines away
Problem: Search engines are controversial and my understanding is that
most people on SSB don't want their messages indexed by search engines.
If that's the case, we should probably disable it.

Solution: Add basic `robots.txt` file to ask search engines to stay away
and please don't save info. I'm concerned that, like `publicWebHosting`
redactions, it gives a false sense of privacy, but it seems like this is
probably what most people would want?
2020-02-08 19:04:08 -08:00
Christian Bundy e3c0b65e5c Use custom getAbout() to replace SSB-About
Problem: The SSB-About plugin is incompatible with our needs. More info
in the GitHub issue linked below and in the code comments.

Solution: Unfortunately, roll our own alternative to the SSB-About
plugin so that we can be 100% sure that it pulls the latest 'about'
published by an author about themselves and doesn't just skip `false`.
2020-02-08 18:50:06 -08:00
Cinnamon d944d8f711 Merge pull request #181 from christianbundy/public-option
Add --public option for public viewers
2020-02-08 16:07:18 -08:00
Cinnamon 1b489ba485
Merge pull request #182 from christianbundy/social-filter-fix
Fix and document `socialFilter()`
2020-02-08 16:04:06 -08:00
Christian Bundy 803538628c Fix and document `socialFilter()`
Problem: The `socialFilter()` function wasn't documented and contained a
bug where it wouldn't show your posts when `following = true`. This is
because you usually don't follow yourself, so `following = true` was
basically equivalent to `me = false`.

Solution: Add some documentation and resolve the bug by adding special
handling for when the message is from us *before* passing to the general
implementation for follow/block checking.

Resolves https://github.com/fraction/oasis/issues/155
Resolves https://github.com/fraction/oasis/issues/177
2020-02-08 11:13:51 -08:00
Christian Bundy 0236358dc8 Add --public option for public viewers
Problem: It's hard to show off Oasis or take screenshots without
respecting the `publicWebHosting` convention. While `publicWebHosting`
lacks a formal specification and I'm a bit confused about what its
boundaries are, it sounds like some of our friends would like to avoid
us publishing any of their content on the public web if we can avoid it.

Solution: Add --public option that turns Oasis into a public web viewer.
This makes it **slightly inconvenient** to see these public posts, but
should absolutely not be mistaken for a privacy guarantee. Only HTTP GET
endpoints are allowed, so random people can't publish or change
settings. The name, avatar, description, content warning, and message
contents are replaced with "Redacted", but again, this is all public
information that we can never provide real privacy for.

Resolves https://github.com/fraction/oasis/issues/48
2020-02-08 10:46:57 -08:00
Christian Bundy f4257a5e27
Merge pull request #175 from fraction/cinnamon-bun-patch-1
Remove duplicate line from security.md
2020-02-07 14:06:54 -08:00
Cinnamon 7f55628358
Merge pull request #154 from christianbundy/add-invite-code
Add invite code
2020-02-06 15:17:40 -08:00
Cinnamon 7ee77172f2
Merge branch 'master' into add-invite-code 2020-02-06 14:22:55 -08:00
Cinnamon d76e594e3a
Remove duplicate line from security.md 2020-02-06 14:15:03 -08:00
Cinnamon 36dabe41e3
Merge pull request #174 from christianbundy/re-add-publish
Re-add publish to nav menu
2020-02-06 13:23:34 -08:00
Christian Bundy 20b8bd188b Re-add publish to nav menu
Problem: Publish was missing! Oops.

Solution: Re-add it.

Resolves https://github.com/fraction/oasis/issues/171
2020-02-06 11:44:37 -08:00
Cinnamon e6844eb1c4
Merge pull request #169 from christianbundy/fix-blob-sniff
Remove nosniff from blob URLs
2020-02-05 19:31:18 -08:00
Cinnamon 0c38413e9c
Merge pull request #168 from christianbundy/emoji
Fix emoji and breaking space in main nav
2020-02-05 17:44:03 -08:00
Christian Bundy 0240401413 Remove nosniff from blob URLs
Problem: We use nosniff to keep the web browser from getting confused
about what kinds of content we're serving in Oasis, but this causes
problems for blob URLs that have arbitrary data.

Solution: Remove nosniff on blob URLs to let the browser figure out what
kind of content we're serving.

Resolves https://github.com/fraction/oasis/issues/138
2020-02-05 17:03:04 -08:00
Christian Bundy 602a495c7c Fix emoji and breaking space in main nav
Problem: The regular space in the sidebar emoji was breaking the line at
a specific viewport width and the emoji were being shown as the wrong
font.

Solution: Use a non-breaking space and `font-family: initial` for
full-color emoji instead of using the system font.

Resolves https://github.com/fraction/oasis/issues/150
Resolves https://github.com/fraction/oasis/issues/153
2020-02-05 14:35:30 -08:00
Cinnamon 8304dce44e
Merge pull request #161 from christianbundy/private-mentions-publish
Add view info for Private, Mentions, and Publish
2020-02-05 12:50:50 -08:00
Jonathan Dahan 5ffa7fef04
Merge pull request #162 from christianbundy/fix-social-filter
Fix socialFilter() to change `{ me = null }`
2020-02-05 13:49:51 -05:00
Christian Bundy a642d20edd Fix socialFilter() to change `{ me = null }`
Problem: The socialFilter was hiding posts published by the user, which
felt weird and uncanny.

Solution: Fix the default so that `{ me }` isn't hidden from a view
unless the model specifically wants that to happen.

Resolves https://github.com/fraction/oasis/issues/156
2020-02-04 18:05:50 -08:00
Christian Bundy d212948833 Add view info for Private, Mentions, and Publish
Problem: The Private and Mentions page didn't have view labels yet, and
Publish should be its own page instead of being at the top of every
page.

Solution: Inspired by @cinnamon-bun's work to add friendly view labels,
plus a new Publish page.  This also moves the period selection from the
popular page into the view label, which felt better to me with the
previous `<section>` background. I also tried a different text format
for describing the pages, using a common form and using `<strong>` to
draw attention to any change from "Posts from people you follow, sorted
by recency" which feels like the expected default for most people.

@cinnamon-bun: To me this feels like a fun back-and-forth where I'm
riffing on your work and hoping that you do the same, but if it feels
wrong/rude please let me know. Trying to work on designs with a system
like C4 is super new for me and I wouldn't be surprised if there are
pain points to fix!

Resolves https://github.com/fraction/oasis/issues/160
2020-02-04 17:52:50 -08:00
Christian Bundy 547ceeeac9 Add basic follow-back invites to settings page
Problem: There was no way to onboard new users since we couldn't redeem
invites.

Solution: Add basic follow-back invites to the settings page. This takes
an invite string, runs it through invite.accept, and either returns the
error in full *or* redeems the invite quietly.
2020-02-04 15:03:05 -08:00
Christian Bundy 8358bb5dab
Merge pull request #157 from cinnamon-bun/feed-descriptions
Add description of each feed at the top of the page
2020-02-04 14:57:53 -08:00
Cinnamon 351ee2a2b5 remove leftover console.log 2020-02-04 14:21:33 -08:00
Cinnamon b79ece89e6 add title to likes page 2020-02-04 13:59:54 -08:00
Cinnamon 479285d244 add help text explaining what is in each view 2020-02-04 13:30:28 -08:00
Cinnamon 21f50d1c72
Merge pull request #139 from christianbundy/add-i18n
Add basic scaffolding for internationalization
2020-02-04 11:45:50 -08:00
Christian Bundy de117f8416 Merge branch 'master' of github.com:fraction/oasis into add-i18n 2020-02-04 09:57:45 -08:00
Cinnamon ebdee55d80
Merge pull request #148 from christianbundy/add-topics-page
Add topics page
2020-02-04 09:45:33 -08:00
Cinnamon 7dfd84b65e
Merge pull request #146 from christianbundy/no-strangers
No strangers
2020-02-03 21:55:27 -08:00
Christian Bundy 1099395dfa Merge branch 'master' of github.com:fraction/oasis into add-i18n 2020-02-03 21:51:59 -08:00
Cinnamon 01d2ad7781
Merge pull request #133 from christianbundy/faster-following
Make 'Following' page way faster
2020-02-03 21:40:32 -08:00
Cinnamon 833e74ae8a
Merge pull request #141 from christianbundy/fix-search
Fix search hanging when querying 3 or fewer chars
2020-02-03 21:34:28 -08:00
Cinnamon 1a25b09cbc
Merge pull request #143 from christianbundy/fix-img
Fix /image/ URL returning a broken image
2020-02-03 21:25:43 -08:00
Cinnamon 4d00893981
Merge pull request #145 from christianbundy/fix-key-not-found
Make "key not found" error more useful
2020-02-03 21:19:46 -08:00
Cinnamon ea1a2dfce1
Merge pull request #151 from christianbundy/add-github-install
Add bleeding-edge install instructions to readme
2020-02-03 21:17:41 -08:00
Cinnamon 6ef9f7f5b6
Merge pull request #147 from christianbundy/fix-nav
Fix nav alignment on smaller screens
2020-02-03 21:12:46 -08:00
Christian Bundy d40a5c6a88 Add bleeding-edge install instructions to readme
Problem: https://github.com/fraction/oasis/issues/149

Solution: Add note to the readme advertising the npm install straight
from GitHub, which will pull the latest `master`.
2020-02-03 09:41:37 -08:00
Christian Bundy 7f40a99799 Add 'Topics' page to show latest root posts
Problem: @masukomi pointed out that the 'latest' view doesn't show the
awesome slice of content that you'll see if you just look at root posts.

Solution: Let's experiment with them! This commit adds a 'Topics' page
that has the latest root posts from people you're following.
2020-02-02 16:54:37 -08:00
Christian Bundy e28095e27d Fix nav alignment on smaller screens
Problem: The nav is aligned to the left of the screen on mobile, which
feels off-center and unbalanced on mobile. https://github.com/fraction/oasis/issues/135

Solution: Center the menu to optimize for space around the links.
2020-02-02 16:43:15 -08:00
Christian Bundy c2ea8f7cb5 Hide strangers on popular+latest and hide blocked
Problem: We shouldn't be showing any strangers on the popular or latest
pages. We shouldn't be showing anyone who's been blocked on any of those
feeds.

Solution: Don't show blocked people on any pages and don't show
strangers on the popular / latest pages.
2020-02-02 16:37:49 -08:00
Christian Bundy 9258f4753c Make "key not found" error more useful
Problem: If the user tries to see a thread and the link points to a
message we don't have, then we don't have any way to display anything in
the thread. How could we even know which thread it's in?

Solution: Throw the error but make it more useful and fix the "non-error
thrown" verbiage that we've inherited from a dependency trying to throw
a non-error.
2020-02-02 15:36:15 -08:00
Christian Bundy d0e98b9663 Fix /image/ URL returning a broken image
Problem: I think during a refactor this code was changed and ended up
breaking the "fake image" that we return when the user doesn't have an
image. We also don't see image errors because they aren't in the browser
viewport if they return text and we don't `console.error()` our errors.

Solution: Fix the image code to return a PNG as a buffer and duplicate
errors to stderr.
2020-02-02 14:42:40 -08:00
Jonathan Dahan 5be294b89e
Merge pull request #142 from christianbundy/describe-blob-security
Add document describing blob security model
2020-02-02 17:20:45 -05:00
Jonathan Dahan d1d221c2ec
Merge pull request #140 from christianbundy/fix-readme-link
Fix help link in readme
2020-02-02 17:01:36 -05:00
Christian Bundy e92d5adec6 Add document describing blob security model
Problem: I still haven't found any best practices for how to run HTML on
your domain without any security concerns. I feel reasonably confident
that our current security precautions mitigate any potential attacks,
but I want to be very up-front with any security mitigations that aren't
so common that they're boring and predictable.  Resolves https://github.com/fraction/oasis/issues/5.

Solution: Add a document to describe our current security model and
mitigations so that we can point at it when asking friends to review the
model and ensure we don't have any holes.
2020-02-02 14:00:20 -08:00
Christian Bundy 5635b36074 Merge branch 'master' of github.com:fraction/oasis into fix-search 2020-02-02 12:24:06 -08:00
Christian Bundy b0103ad847 Fix search hanging when querying 3 or fewer chars
Problem: SSB-Search has a bug where too few characters just hangs the
search indefinitely and never returns. https://github.com/fraction/oasis/issues/107

Solution: Enforce a minimum length of 3 characters in the search. I
bumped into another bug where HyperScript, a dependency of HyperAxe,
doesn't support the `minlength` attribute, so I had to deploy a small
workaround for that too. The fixes aren't very pretty but they're better
than just ignoring the problem.
2020-02-02 12:20:47 -08:00
Christian Bundy 5601fe9d8d Fix help link in readme
Problem: Help link in readme was pointing to the issue type selection
which is no longer useful because we just have one template.

Solution: Fix the link and point directly to the issue creation link.
2020-02-02 11:33:33 -08:00
Christian Bundy edf87a70df Persist language in cookies and fix fork drop-down
Problem: The previous commits didn't persist language choices and the
drop-down's initial value wasn't respecting the language you selected.

Solution: Persist the language choice in a cookie, defaulting to
English, and build the drop-down with the selected language. This also
changes the word "Spanish" to "Español", and slightly refactors
`http.js` to accept *middleware* rather than just routes. This lets us
add other middleware, such as the language selection middleware added in
this commit.
2020-02-02 09:31:43 -08:00
Christian Bundy f009d91955
Merge pull request #1 from bramdroid/patch-1
Regolas > Reglas, typo fix
2020-02-01 14:29:34 -08:00
bramdroid 7acd841f3f
Update i18n.js 2020-02-01 14:27:24 -08:00
Christian Bundy 5225deef39 Remove duplicate condition 2020-02-01 14:16:06 -08:00
Christian Bundy 339fbdcf6a Add super basic language selection
Problem: The previous commit added English as a language but didn't add
other languages or ways to switch between them.

Solution: Add the most primitive language selection possible and a few
small translations contributed by @bramdroid during a totally unrelated
conversation. This does not persist the language selection and doesn't
auto-select the current language from the dropdown, but those should be
easy to add in the future.
2020-02-01 14:08:37 -08:00
Christian Bundy 214ef3335e Add basic scaffolding for internationalization
Problem: It was impossible to do any internationalization because
strings were all embedded throughout Oasis.

Solution: Add an internationalization submodule that provides
language-specific strings for the text elements in views. In future
commits we can add language selection and fallbacks for when the
selected language doesn't support the text we need to have translated.
2020-02-01 13:20:22 -08:00
Christian Bundy 75b5beeb24 Make 'Following' page way faster
Problem: The 'Following' page was super slow because we were doing a
MuxRPC request on every single message.

Solution: Do one request to see who we have relationships with, filter
out the people we aren't following, and then check against that list
instead of doing a bunch of MuxRPC calls.

| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|:---|---:|---:|---:|---:|
| `curl http://localhost:3000/public/latest/following` | 500.9 ± 163.4 | 392.1 | 881.4 | 1.00 |
| `curl http://localhost:3456/public/latest/following` | 4663.7 ± 184.6 | 4438.6 | 5075.2 | 9.31 ± 3.06 |
2020-01-31 21:31:33 -08:00
Christian Bundy ff54db563a
Merge pull request #132 from fraction/no-follow-yourself
Remove follow button from your own profile
2020-01-31 21:05:54 -08:00
Cinnamon 173e0ee4b9
Merge pull request #127 from christianbundy/view-markdown
Move Markdown handling from model module to view
2020-01-31 20:39:11 -08:00
Cinnamon 12ad2c5834 Remove follow button from your own profile 2020-01-31 20:34:46 -08:00
Christian Bundy 0e9243eff0 Merge branch 'master' of github.com:fraction/oasis into view-markdown 2020-01-31 17:48:05 -08:00
Christian Bundy ede2a4efcc
Merge pull request #130 from fraction/reorder-navbar
Navbar refresh: reorder, rename, add emojis
2020-01-31 17:46:57 -08:00
Cinnamon b34fce33c2 Let navbar items wrap on narrow screen 2020-01-31 16:34:37 -08:00
Cinnamon fecee28dd4
Merge pull request #122 from christianbundy/faster-popular
Make 'Popular' page faster
2020-01-31 16:18:59 -08:00
Cinnamon 753b4512f7 Change Latest emoji from NEW to a rabbit 2020-01-31 16:08:07 -08:00
Cinnamon 71d96128bd Change header on meta page to "Settings" 2020-01-31 15:58:40 -08:00
Cinnamon 08479d47a6 Move profile link before mentions link 2020-01-31 15:56:06 -08:00
Cinnamon 4e53aca6d9 Adjust navbar links - reorder, rename, and add emojis 2020-01-31 15:51:32 -08:00
Cinnamon 0c6a2458b8
Merge pull request #123 from christianbundy/following
Add basic following page
2020-01-31 15:32:01 -08:00
Cinnamon 22fe9763d7
Merge pull request #125 from christianbundy/no-links2
Update Flotilla to drop SSB-Links2
2020-01-31 15:29:11 -08:00
Cinnamon 1702ca5796
Merge pull request #128 from christianbundy/fix-svg
Fix SVG rendering by setting content-type
2020-01-31 15:26:16 -08:00
Christian Bundy 01701d5119 Fix SVG rendering by setting content-type
Problem: Most browsers parse SVG files as XML and refuse to display it
in an `<img>` tag. It's usually unsafe to have browsers try to sniff the
file type themselves, because they can be tricked into running unsafe
code, so we want to set the file type ourselves in the server.

Solution: Use the Is-SVG library for a quick-n-dirty check for whether a
buffer is an SVG. If so, we set the file type accordingly.
2020-01-31 15:04:13 -08:00
Christian Bundy 02326867a1 Move Markdown handling from model module to view
Problem: The model code was doing our Markdown rendering, which feels to
me like a layer violation because *generally* the model is meant to be a
thin abstraction over the underlying database without any concept of the
presentation layer.

Solution: Move the Markdown renderer to the view module and manage
Markdown rendering in the presentation layer.
2020-01-31 14:39:18 -08:00
Christian Bundy dc23b8bdf2 Update Flotilla to drop SSB-Links2
Problem: We aren't using the index at all so Oasis is just wasting time
and CPU power.

Solution: Upgrade Flotilla and resolve the problem.
2020-01-31 12:59:26 -08:00
Jonathan Dahan 16d2424469
Merge pull request #124 from christianbundy/lts-builds
Specify exact Node.js engine support and test it
2020-01-31 14:45:42 -05:00
Christian Bundy 17cb550539 Specify exact Node.js engine support and test it
Problem: Targeting only the latest version of Node.js and the latest LTS
means that we have a sort of rolling backward-compatibility that's hard
to reason about. If we break compatibility, we should release those
changes as a major version, but the current strategy makes it difficult
to tell exactly when we're breaking compatibility.

Solution: Specify the exact Node.js versions that we want to support in
`package.json` and add the specific tests to `.travis.yml`. In the
future we can break compatibility if it's helpful but we'll have to do
so explicitly and release the change as a major version.
2020-01-31 10:59:10 -08:00
Christian Bundy ca2bc656f5 Add basic following page
Problem: We don't always want to see all of the messages on our
computer, sometimes we just want to see messages from the people we're
explicitly following. The 'Popular' and 'Latest' pages don't help with
that.

Solution: Add a super basic page that just shows the latest messages
from the people you're explicitly following.
2020-01-30 20:54:47 -08:00
Christian Bundy 10fd740ef7 Make 'Popular' page faster
Problem: The popular page is ungodly slow.

Solution: Make it faster! This is done by checking the timestamp before
the other constraints that we add to messages, which is mostly useful
because most messages that fail the filter will fail on the timestamp
check.
2020-01-30 18:15:22 -08:00
Jonathan Dahan 7040063bd8
Merge pull request #119 from martingrondin/master
Fixed capitalization on networking buttons on Meta page.
2020-01-30 12:54:00 -05:00
Jonathan Dahan c5ee60b5b1
Merge pull request #120 from christianbundy/must
Replace "must" with "shall" in contributing.md
2020-01-30 12:53:53 -05:00
Christian Bundy 1dd741a381 Replace "must" with "shall" in contributing.md
Problem: The word "shall" is ambiguous and seems pretentious rather than
friendly. More info here: https://www.plainlanguage.gov/guidelines/conversational/shall-and-must/

Solution: Replace "shall" with "must". It has the same semantics with
none of the ambiguity or cultural baggage.
2020-01-30 09:12:58 -08:00
martingrondin d0d12bd83f Fixed capitalization on networking buttons on Meta page. 2020-01-30 02:04:49 -05:00
Christian Bundy 671c5f3fd3
Merge pull request #106 from jedahan/c4
C4
2020-01-29 17:22:28 -08:00
Jonathan Dahan 0fc2bdd30e
Merge pull request #1 from christianbundy/pr/106
Appease linter with `npm run fix`
2020-01-29 18:20:40 -05:00
Christian Bundy 04c5e97789 Appease linter with `npm run fix`
Problem: `docs/contributing.md` was failing the Prettier test.

Solution: `npm run fix`
2020-01-29 18:20:06 -05:00
Christian Bundy 7d6dd163e2 Appease linter with `npm run fix`
Problem: `docs/contributing.md` was failing the Prettier test.

Solution: `npm run fix`
2020-01-29 13:19:50 -08:00
Christian Bundy 0dc4b0cc00
Merge pull request #118 from jedahan/github-issue-template-typo
fix typo in github issue template
2020-01-29 11:29:13 -08:00
Jonathan Dahan 35f2c5b904 fix typo in github issue template 2020-01-28 22:18:52 -05:00
Cinnamon eca2309769
Merge pull request #114 from christianbundy/filter-private-from-profile
Hide private messages from author profiles
2020-01-28 18:08:15 -08:00
Christian Bundy bc386e1ac4
Merge pull request #115 from fraction/add-license-1
Add LICENSE file (for AGPL-3.0)
2020-01-28 18:05:01 -08:00
Cinnamon 72214effcb
Add LICENSE file (for AGPL-3.0)
The README says this is AGPL-3.0 but we don't have a standard LICENSE file.  I added this using the tool at https://github.com/fraction/oasis/community
2020-01-28 17:45:00 -08:00
Christian Bundy 53c1a1ad94 Hide private messages from author profiles
Problem: Showing private posts on profiles is scary and may give people
the impression that these posts are visible.
https://github.com/fraction/oasis/issues/113

Solution: Hide private messages when rendering public profiles and
change the method name to be very clear that it only returns public
messages.
2020-01-28 17:15:48 -08:00
Christian Bundy 82f080f3c6
Merge pull request #108 from christianbundy/release-2.12.0
2.12.0
2020-01-28 13:10:56 -08:00
Jonathan Dahan a3c08a6341 Relax MUST to SHOULD for commit message format 2020-01-28 14:33:06 -05:00
Jonathan Dahan a4ff159b94 Thank and explain why we have contributing.md 2020-01-28 14:33:06 -05:00
Jonathan Dahan ffbee28f88 explain that our contributing.md is an implementation of C4 2020-01-28 14:33:06 -05:00
Jonathan Dahan e2dd57be3d remove liquid templates from contributing.md 2020-01-28 14:33:06 -05:00
Jonathan Dahan 1da4a2b865 add contributing link to readme 2020-01-28 14:33:05 -05:00
Jonathan Dahan a3265dc635 add upstream C4/42 contributing document 2020-01-28 14:33:05 -05:00
53 changed files with 15410 additions and 5072 deletions

View File

@ -3,32 +3,60 @@
"language": "en",
"words": [
"AGPL",
"APPDATA",
"Argyris",
"CSRF",
"EACCESS",
"EXIF",
"Hintjens",
"Kata",
"LGPL",
"Machinekit",
"OSSEC",
"Pieter",
"Termux",
"abortable",
"autoconf",
"automake",
"backlinks",
"christianbundy",
"dogfood",
"hyperaxe",
"hyperscript",
"libsodium",
"libtool",
"manyverse",
"mebibyte",
"mebibytes",
"minlength",
"mkdir",
"monokai",
"msgs",
"multiserver",
"muxrpc",
"nanohtml",
"noauth",
"nosniff",
"paramap",
"patchbay",
"patchfoo",
"patchfox",
"piexifjs",
"promisify",
"rebecca",
"recps",
"roadmap",
"sameorigin",
"systemctl",
"sbot",
"shortname",
"socio",
"ssbc",
"sulphurpool",
"summerfruit",
"systemctl",
"systemd",
"unfollow",
"unikitty",
"systemd"
"zeromq"
]
}

5
.depcheckrc Normal file
View File

@ -0,0 +1,5 @@
ignores: [
"@types/*",
"husky",
"stylelint-config-recommended"
]

View File

@ -1 +1,2 @@
node_modules
.git

15
.drone.yml Normal file
View File

@ -0,0 +1,15 @@
---
kind: pipeline
name: publish docker image
steps:
- name: build and publish
image: plugins/docker
settings:
username:
from_secret: docker_reg_username_3wc
password:
from_secret: docker_reg_passwd_3wc
repo: 3wordchant/oasis
tags: latest
dockerfile: contrib/Dockerfile

View File

@ -1,16 +0,0 @@
module.exports = {
env: {
commonjs: true,
es6: true,
node: true
},
extends: "eslint:recommended",
globals: {
Atomics: "readonly",
SharedArrayBuffer: "readonly"
},
parserOptions: {
ecmaVersion: 2018
},
rules: {}
};

View File

@ -1,3 +1,3 @@
**What's the problem you want to solved?**
## What's the problem you want solved?
**Is there a solution you'd like to recommend?**
## Is there a solution you'd like to recommend?

View File

@ -1,3 +1,3 @@
**What's the problem you solved?**
## What's the problem you solved?
**What solution are you recommending?**
## What solution are you recommending?

12
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "daily"
open-pull-requests-limit: 16

28
.github/workflows/pr.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: Node.js CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [10.x, 12.x, 14.x]
os: [macos-latest, windows-latest, ubuntu-latest]
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm test

7
.gitignore vendored
View File

@ -6,3 +6,10 @@ dist/
node_modules/
tmp/
yarn.lock
# Visual Studio Code
launch.json
*.code-workspace
# Vim
.*.sw[a-z]

4
.mailmap Normal file
View File

@ -0,0 +1,4 @@
Cinnamon <cinnamon_oasis@fastmail.com> <cinnamon_bun_github@fastmail.com>
Cinnamon <cinnamon_oasis@fastmail.com> <32660718+cinnamon-bun@users.noreply.github.com>
Jonathan Dahan <github@jonathan.is> <hi@jonathan.is>
kawaiipunk <kawaiipunk@posteo.net> <georgeowell@users.noreply.github.com>

View File

@ -1,3 +0,0 @@
.*
docs
*.tgz

1
.prettierignore Normal file
View File

@ -0,0 +1 @@
.nyc_output

View File

@ -1,20 +0,0 @@
# Use Node.js configuration.
language: node_js
# Both latest Node.js and latest LTS.
node_js:
- lts/*
- node
# All of the operating systems!
# Note: Windows support is very iffy.
os:
- linux
- osx
- windows
# Don't build arbitrary branches, just pull requests + master + semver tags.
branches:
only:
- master
- "/^v\\d+\\.\\d+\\.\\d+$/"

661
LICENSE Normal file
View File

@ -0,0 +1,661 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.

107
README.md
View File

@ -1,57 +1,100 @@
# Oasis
**Friendly Scuttlebutt interface designed for simplicity and accessibility.**
This is an experimental client built with HTML, CSS, and Node.js without any
front-end JavaScript. The goal is to support basic social messaging schemas with
some extra tools for debugging, _not_ to support all known message types.
Oasis is a **free, open-source, peer-to-peer social application** that helps
you follow friends and discover new ones on [Secure Scuttlebutt (SSB)][ssb].
## Usage
**🦀 Powered by SSB.**
You're the center of your own distributed network. Online or offline, SSB works
anywhere that you are. Follow the people you want to see and never worry about
spam again. Switch to any SSB app you want at any time.
```console
$ oasis --help
Usage: oasis [options]
**🌐 Bring your own browser.**
Use your favorite web browser to read and write messages to the people you care
about. Oasis runs a small HTTP server on your own computer, so you don't need
to worry about adding another Electron app to your computer.
Options:
--version Show version number [boolean]
-h, --help Show help [boolean]
--open Automatically open app in web browser. Use --no-open to disable.
[boolean] [default: true]
--offline Don't try to connect to scuttlebutt peers or pubs. This can be
changed on the 'meta' page while Oasis is running.
[boolean] [default: false]
--host Hostname for web app to listen on [string] [default: "localhost"]
--port Port for web app to listen on [number] [default: 3000]
--debug Use verbose output for debugging [boolean] [default: false]
**🏰 Just HTML and CSS.**
No browser JavaScript! Oasis has strict security rules that prevent any
JavaScript from running in your browser, which helps us make Oasis accessible
and easy to improve.
## Example
After installing, launch Oasis from the command line by running:
```sh
oasis
```
It will then pop open a browser window for you.
![Screenshot of Oasis](./docs/screenshot.png)
Use `oasis --help` to get configuration options. You can change the default
values with a custom [configuration](./docs/configuring.md).
## Installation
Most people should install Oasis with [npm](https://npmjs.org/).
First, you'll need Node.js and npm on your computer. Run `node --version` to see if you have it. If not, or if it's older than the [**current** or **active LTS** version](https://nodejs.org/en/about/releases/), you should [download Node.js](https://nodejs.org/en/about/releases/) first.
Then you can install the stable version of Oasis:
```shell
npm --global install @fraction/oasis@latest
npm -g install fraction/oasis#semver:
```
Please make sure that your Node.js version is the [**current** or **active LTS** release](https://nodejs.org/en/about/releases/).
Or, for faster updates and less stability, install Oasis from GitHub and upgrade often.
Want more? Check out [`install.md`](https://github.com/fraction/oasis/blob/master/docs/install.md).
```shell
npm -g install fraction/oasis
```
Check out [`install.md`](https://github.com/fraction/oasis/blob/master/docs/install.md)
for more information.
## FAQ
### Can I use the same profile from multiple computers?
No, this is a limitation of SSB. You'll need to make a separate profile on each device. There is a workaround [we'd like to implement](https://github.com/fraction/oasis/issues/267) which ties your multiple profiles together.
### Can I run this at the same time as Patchwork and other SSB apps?
Yes! They will both use the same data and profile. You can either run them one at a time or simultaneously. If you run them at the same time, start Patchwork first, then Oasis.
Details: SSB apps have two parts: a "server" that manages the database (on your own computer), and a user interface that gets things from the server to display. Only one server can run at a time, but multiple apps can use it.
| App | Runs its own SSB server | Can use SSB server of another app |
| --------- | ---------------------------------- | ---------------------------------------------- |
| Oasis | Yes, unless one is already running | Yes |
| Patchwork | Yes | No, only uses its own server |
| Patchbay | Yes | No, only uses its own server |
| Patchfox | No | Yes, depends on other apps to provide a server |
### Can I use Oasis as a desktop app?
Yes! Check out [Oasis-Desktop](https://github.com/fraction/oasis-desktop)!
## Resources
- [Architecture](https://github.com/fraction/oasis/blob/master/docs/architecture.md)
- [Help](https://github.com/fraction/oasis/issues/new/choose)
- [Roadmap](https://github.com/fraction/oasis/blob/master/docs/roadmap.md)
- [Security Policy](https://github.com/fraction/oasis/blob/master/docs/security.md)
- [Source Code](https://github.com/fraction/oasis.git)
- [Chat room](https://matrix.to/#/!YQpqIZlvBVPYRwrkXp:matrix.org?via=matrix.org)
- [Contributing](https://github.com/fraction/oasis/blob/master/docs/contributing.md)
- [Help](https://github.com/fraction/oasis/issues/new)
- [Security policy](https://github.com/fraction/oasis/blob/master/docs/security.md)
- Source code: [Github](https://github.com/fraction/oasis.git) and [Gitlab](https://gitlab.com/fraction/oasis)
## See Also
- [patchbay](https://github.com/ssbc/patchbay)
- [patchwork](https://github.com/ssbc/patchwork)
- [ssb-browser-demo](https://github.com/arj03/ssb-browser-demo)
- [ssb-server](https://github.com/ssbc/ssb-server)
- [yap](https://github.com/dominictarr/yap)
- [Oasis-Desktop](https://github.com/fraction/oasis-desktop)
- [Patchbay](https://github.com/ssbc/patchbay)
- [Patchwork](https://github.com/ssbc/patchwork)
- [SSB-Browser](https://github.com/arj03/ssb-browser-demo)
- [SSB-Server](https://github.com/ssbc/ssb-server)
- [Yap](https://github.com/dominictarr/yap)
## License
AGPL-3.0
[ssb]: https://en.wikipedia.org/wiki/Secure_Scuttlebutt

View File

@ -1,16 +1,25 @@
FROM node:12-alpine
RUN apk add --update --no-cache libtool autoconf automake alpine-sdk python3
RUN mkdir /app
WORKDIR /app
ADD package.json .
ADD package-lock.json .
FROM node:lts
# Ensure that the ~/.ssb directory is persistent and owned by the 'node' user.
RUN mkdir /home/node/.ssb && chown node:node /home/node/.ssb
VOLUME /home/node/.ssb
# Don't run as root.
USER node
# Create app directory and use it.
RUN mkdir /home/node/app
WORKDIR /home/node/app
# Add dependency metadata and install dependencies.
ADD package.json package-lock.json ./
RUN npm ci
ADD . ./
EXPOSE 3000
EXPOSE 8008
VOLUME /root/.ssb
ADD https://github.com/just-containers/s6-overlay/releases/download/v1.21.8.0/s6-overlay-amd64.tar.gz /tmp/
RUN tar xzf /tmp/s6-overlay-amd64.tar.gz -C /
RUN mkdir /etc/services.d/oasis/
RUN printf "#!/usr/bin/execlineb -P\n/usr/local/bin/node /app/src/index.js --host 0.0.0.0 --open false" >> /etc/services.d/oasis/run
ENTRYPOINT ["/init"]
# Add the rest of the source code.
ADD ./ ./
# Expose ports for Oasis and SSB replication.
EXPOSE 3000 8008
# Listen on the container's public interfaces but allow 'localhost' connections.
CMD ["node", ".", "--host", "0.0.0.0", "--allow-host", "localhost"]

View File

@ -21,7 +21,7 @@ const targetPath = path.join(systemdUserHome, "oasis.service");
if (fs.existsSync(targetPath)) {
console.log("Cowardly refusing to overwrite file:", targetPath);
} else {
mkdirp(systemdUserHome);
mkdirp.sync(systemdUserHome);
const sourcePath = path.join(__dirname, "oasis.service");
fs.copyFileSync(sourcePath, targetPath);

2
docs/CONTRIBUTORS Normal file
View File

@ -0,0 +1,2 @@
Christian Bundy <christianbundy@fraction.io>
Cinnamon <cinnamon_oasis@fastmail.com>

2
docs/MAINTAINERS Normal file
View File

@ -0,0 +1,2 @@
Christian Bundy <christianbundy@fraction.io>
Cinnamon <cinnamon_oasis@fastmail.com>

View File

@ -54,7 +54,7 @@ require("./foobar/index.js"); // excessive specificity
**Note:** I want to make _very_ clear that this is an experiment, not a claim
that this is Objectively Better.
### Any my [hyper]axe
### And my [hyper]axe
Converting JSON data to HTML templates is hard work. I started with Swig but
when I realized it wasn't maintained I rewrote everything in EJS. I liked it a

35
docs/blob-security.md Normal file
View File

@ -0,0 +1,35 @@
# Blob security
**This is how we secure blob pages from interacting with Oasis. If you notice
any errors or omissions, please follow the steps in the security policy.**
One of the problems we have when hosting content from other people in a P2P
network is avoiding
[arbitrary code execution](https://en.wikipedia.org/wiki/Arbitrary_code_execution).
In the context of Oasis, we need to be very sure that we aren't letting any code
other than Oasis run in the browser. Markdown is a security concern, but it's
got lots of eyeballs on the problem, whereas blob security is a security
concern without any common best practices. The problem we need to solve isn't
super common: hosting arbitrary data, especially HTML, in a safe way that doesn't
open security vulnerabilities.
The way we currently deal with this is a [content security policy (CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP),
which gives Oasis a way to tell the web browser which features can be safely
disabled. Since Oasis doesn't use any front-end JavaScript, we can disable all
JavaScript being run by the web browser. This is _huge_ and massively reduces
the surface area that might be vulnerable to attack. You can find all of the
CSP code in [`http.js`](https://github.com/fraction/oasis/blob/master/src/http.js).
With JavaScript out of the way, the only attack vector that we should worry
about is an [HTML form](https://developer.mozilla.org/en-US/docs/Learn/Forms#See_also).
If one of these were embedded in a blob, they would be able to send HTTP POST
requests to our API endpoints, impersonating the user. A button called "click
me", could publish posts, change follow status, make changes to our settings
page, or other bad behavior that we want to avoid.
The mitigation for this is a referrer check on all POST endpoints, which helps
us guarantee that all form submissions came from a non-blob page. If we receive
an HTTP POST without a referrer, we throw an error. If we receive a referrer from
a blob page, we throw an error. If a form submission passes these two checks,
we can safely assume that the POST request came from a legitimate person using
Oasis.

48
docs/configuring.md Normal file
View File

@ -0,0 +1,48 @@
# Configuring
The default options can be permanently set with a configuration file found in a
standard folder for configuration, depending on your operating system:
- Linux: `$XDG_CONFIG_HOME/oasis/default.json`.
Usually this is `/home/<your username>/.config/oasis/default.json`
- Windows `%APPDATA%\oasis\default.json`.
- Mac OS, `/Users/<your username>/Library/Preferences/oasis/default.json`
The configuration file can override any or all of the command-line _defaults_.
Here is an example customizing the port number and the "open" settings:
```json
{
"open": false,
"port": 19192
}
```
If you run `oasis --help` you'll see all of the parameters, which are also defined in the source code here: https://github.com/fraction/oasis/blob/master/src/cli.js
## Semantics
Which value is given is decided like this:
1. If an argument is given on the command-line, use that value.
2. Otherwise, use the value from the configuration file if present.
3. If neither command-line nor configuration file are given, use the built-in default value.
# Custom Styles
The stylesheet values may be overridden by adding custom values to a file found in a
standard folder for configuration, depending on your operating system:
- Linux: `$XDG_CONFIG_HOME/oasis/custom-style.css`.
Usually this is `/home/<your username>/.config/oasis/custom-style.css`
- Windows `%APPDATA%\oasis\custom-style.css`.
- Mac OS, `/Users/<your username>/Library/Preferences/oasis/custom-style.css`
As an example the width used for the main body may be changed to a different
fixed width or a dynamic width:
```css
:root {
--measure: 75%;
}
```

130
docs/contract.md Normal file
View File

@ -0,0 +1,130 @@
# Collective Code Construction Contract - Oasis Implementation
The Collective Code Construction Contract (C4) is an evolution of the github.com [Fork + Pull Model](https://help.github.com/articles/about-pull-requests/), aimed at providing an optimal collaboration model for free software projects.
This is the Oasis-specific implementation, based on [revision 2 of C4](https://github.com/zeromq/rfc/blob/63024673f19ad136652ff7b3bfb3a6547811e006/42/README.md).
## Summary
Thank you for contributing to Oasis! Here we try capture how we collaborate, and why we do it this way.
This entire document is open for changes, if there is anything that is confusing or can be improved, please start a discussion with us!
## License
Copyright (c) 2009-2016 Pieter Hintjens.
This Specification is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This Specification is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses>.
## Abstract
C4 provides a standard process for contributing, evaluating and discussing improvements on software projects. It defines specific technical requirements for projects like a style guide, unit tests, `git` and similar platforms. It also establishes different personas for projects, with clear and distinct duties. C4 specifies a process for documenting and discussing issues including seeking consensus and clear descriptions, use of "pull requests" and systematic reviews.
## Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](http://tools.ietf.org/html/rfc2119).
## 1. Goals
C4 is meant to provide a reusable optimal collaboration model for open source software projects. It has these specific goals:
1. To maximize the scale and diversity of the community around a project, by reducing the friction for new Contributors and creating a scaled participation model with strong positive feedbacks;
1. To relieve dependencies on key individuals by separating different skill sets so that there is a larger pool of competence in any required domain;
1. To allow the project to develop faster and more accurately, by increasing the diversity of the decision making process;
1. To support the natural life cycle of project versions from experimental through to stable, by allowing safe experimentation, rapid failure, and isolation of stable code;
1. To reduce the internal complexity of project repositories, thus making it easier for Contributors to participate and reducing the scope for error;
1. To enforce collective ownership of the project, which increases economic incentive to Contributors and reduces the risk of hijack by hostile entities.
## 2. Design
### 2.1. Preliminaries
1. The project MUST use the git distributed revision control system.
1. The project MUST be hosted on github.com or equivalent, herein called the "Platform".
1. The project MUST use the Platform issue tracker.
1. The project SHOULD have clearly documented guidelines for code style.
1. A "Contributor" is a person who wishes to provide a patch, being a set of commits that solve some clearly identified problem.
1. A "Maintainer" is a person who merges patches to the project. Maintainers are not developers; their job is to enforce process.
1. Contributors MUST NOT have commit access to the repository unless they are also Maintainers.
1. Maintainers MUST have commit access to the repository.
1. Everyone, without distinction or discrimination, MUST have an equal right to become a Contributor under the terms of this contract.
### 2.2. Licensing and Ownership
1. The project MUST use a share-alike license such as the MPLv2, or a GPLv3 variant thereof (GPL, LGPL, AGPL).
1. All contributions to the project source code ("patches") MUST use the same license as the project.
1. All patches are owned by their authors. There MUST NOT be any copyright assignment process.
1. Each Contributor MUST be responsible for identifying themselves in the project Contributor list.
### 2.3. Patch Requirements
1. Maintainers and Contributors MUST have a Platform account and SHOULD use their real names or a well-known alias.
1. A patch SHOULD be a minimal and accurate answer to exactly one identified and agreed problem.
1. A patch MUST adhere to the code style guidelines of the project if these are defined.
1. A patch MUST adhere to the "Evolution of Public Contracts" guidelines defined below.
1. A patch MUST NOT include non-trivial code from other projects unless the Contributor is the original author of that code.
1. A patch MUST compile cleanly and pass project self-tests on at least the principal target platform.
1. A patch commit message SHOULD consist of a single short (less than 50 characters) line stating the problem ("Problem: ...") being solved, followed by a blank line and then the proposed solution ("Solution: ...").
1. A "Correct Patch" is one that satisfies the above requirements.
### 2.4. Development Process
1. Change on the project MUST be governed by the pattern of accurately identifying problems and applying minimal, accurate solutions to these problems.
1. To request changes, a user SHOULD log an issue on the project Platform issue tracker.
1. The user or Contributor SHOULD write the issue by describing the problem they face or observe.
1. The user or Contributor SHOULD seek consensus on the accuracy of their observation, and the value of solving the problem.
1. Users MUST NOT log feature requests, ideas, suggestions, or any solutions to problems that are not explicitly documented and provable.
1. Thus, the release history of the project MUST be a list of meaningful issues logged and solved.
1. To work on an issue, a Contributor MUST fork the project repository and then work on their forked repository.
1. To submit a patch, a Contributor MUST create a Platform pull request back to the project.
1. A Contributor MUST NOT commit changes directly to the project.
1. If the Platform implements pull requests as issues, a Contributor MAY directly send a pull request without logging a separate issue.
1. To discuss a patch, people MAY comment on the Platform pull request, on the commit, or elsewhere.
1. To accept or reject a patch, a Maintainer MUST use the Platform interface.
1. Maintainers SHOULD NOT merge their own patches except in exceptional cases, such as non-responsiveness from other Maintainers for an extended period (more than 1-2 days).
1. Maintainers MUST NOT make value judgments on correct patches.
1. Maintainers MUST merge correct patches from other Contributors rapidly.
1. Maintainers MAY merge incorrect patches from other Contributors with the goals of (a) ending fruitless discussions, (b) capturing toxic patches in the historical record, (c) engaging with the Contributor on improving their patch quality.
1. The user who created an issue SHOULD close the issue after checking the patch is successful.
1. Any Contributor who has value judgments on a patch SHOULD express these via their own patches.
1. Maintainers SHOULD close user issues that are left open without action for an uncomfortable period of time.
### 2.5. Branches and Releases
1. The project MUST have one branch ("master") that always holds the latest in-progress version and SHOULD always build.
1. The project MUST NOT use topic branches for any reason. Personal forks MAY use topic branches.
1. To make a stable release a Maintainer must tag the repository. Stable releases MUST always be released from the repository master.
### 2.6. Evolution of Public Contracts
1. All Public Contracts (APIs or protocols) MUST be documented.
1. All Public Contracts SHOULD have space for extensibility and experimentation.
1. A patch that modifies a stable Public Contract SHOULD not break existing applications unless there is overriding consensus on the value of doing this.
1. A patch that introduces new features SHOULD do so using new names (a new contract).
1. New contracts SHOULD be marked as "draft" until they are stable and used by real users.
1. Old contracts SHOULD be deprecated in a systematic fashion by marking them as "deprecated" and replacing them with new contracts as needed.
1. When sufficient time has passed, old deprecated contracts SHOULD be removed.
1. Old names MUST NOT be reused by new contracts.
### 2.7. Project Administration
1. The project founders MUST act as Administrators to manage the set of project Maintainers.
1. The Administrators MUST ensure their own succession over time by promoting the most effective Maintainers.
1. A new Contributor who makes correct patches, who clearly understands the project goals, and the process SHOULD be invited to become a Maintainer.
1. Administrators SHOULD remove Maintainers who are inactive for an extended period of time, or who repeatedly fail to apply this process accurately.
1. Administrators SHOULD block or ban "bad actors" who cause stress and pain to others in the project. This should be done after public discussion, with a chance for all parties to speak. A bad actor is someone who repeatedly ignores the rules and culture of the project, who is needlessly argumentative or hostile, or who is offensive, and who is unable to self-correct their behavior when asked to do so by others.
## Further Reading
- [Argyris' Models 1 and 2](http://en.wikipedia.org/wiki/Chris_Argyris) - the goals of C4 are consistent with Argyris' Model 2.
- [Toyota Kata](http://en.wikipedia.org/wiki/Toyota_Kata) - covering the Improvement Kata (fixing problems one at a time) and the Coaching Kata (helping others to learn the Improvement Kata).
## Implementations
- The [ZeroMQ community](http://zeromq.org) uses the C4 process for many projects.
- [OSSEC](http://www.ossec.net/) [uses the C4 process](https://ossec-docs.readthedocs.org/en/latest/development/oRFC/orfc-1.html).
- The [Machinekit](http://www.machinekit.io/) community [uses the C4 process](http://www.machinekit.io/about/).

68
docs/contributing.md Normal file
View File

@ -0,0 +1,68 @@
# Contributing
If you want to dive into the details, please see the [contract](./contract.md)
that defines the contributor role in this project. If you're comfortable with
a top-level summary, you can start here first.
Our workflow is basically [GitHub Flow][github-flow] with specific roles:
- **Contributor:** Write patches that reduce the number of problems.
- **Maintainers:** Merge patches that reduce the number of problems.
If you have an issue, it's best to open an issue to describe the problem and
discuss solutions, but don't worry if you've already skipped that step.
Assuming you already have a [developer install](./install.md) you should be
able to start editing source code. There are a few useful commands you should
know about:
- **`npm install`**: Ensure that software dependencies are installed.
- **`npm test`**: Ensure that all automated tests pass.
- **`npm run fix`**: If an automated test failed, this may fix it.
Please run `npm test` before writing a commit, because if there are errors then
maintainers won't be able to merge your patch. Please ask for help if `npm test`
is giving you any trouble.
**Note:** `npm run fix` is run automatically as a pre-commit hook. You always
have the option to disable pre-commit hooks with `git commit --no-verify`.
## Frequently Failed Tests
### Unknown word
<!-- spell-checker:disable -->
```
/src/index.js:10:42 - Unknown word (Scuttlebtut)
```
<!-- spell-checker:enable -->
If this word is a typo, please fix the typo. If this error is a mistake, and
you're sure that this is a word, please add the word to `.cspell.json`.
### Code style issues found
```
Checking formatting...
src/index.js
README.md
Code style issues found in the above file(s). Forgot to run Prettier?
```
You can use `npm run fix` to resolve inconsistent code style. Please remember to
add those changes with `git add` or similar before you commit.
## Tips
### TypeScript opportunities
If you're looking for places where TypeScript would enjoy more detail, you can
run the TypeScript linter with `--noImplicitAny`:
```sh
npx tsc --allowJs --resolveJsonModule --lib es2018,dom --checkJs --noEmit --skipLibCheck --noImplicitAny src/index.js
```
[github-flow]: https://guides.github.com/introduction/flow/

View File

@ -8,42 +8,39 @@ If you want to run Oasis in the background, see [`with-systemd.md`](./with-syste
If you want to run Oasis in a container, see [`with-docker.md`](./with-docker.md).
If you want to run Oasis on Android via Termux, see [`with-termux.md`](./with-termux.md).
## Download
### HTTPS
Most people should download Oasis over HTTPS.
Download Oasis from GitHub over HTTPS.
```shell
git clone https://github.com/fraction/oasis.git
```
### SSH
If you already have SSH, you may prefer to download over SSH instead.
```shell
git clone git@github.com:fraction/oasis.git
```
## Install
## Install dependencies
Most people should build and install Oasis with npm.
```shell
cd oasis
npm install
npm --global install .
npm install --only=prod
```
## Start
You did it! Oasis should now be installed.
You can try Oasis without installing with:
```shell
oasis --help
node .
```
If you have problems, read the documentation on [downloading and installing
packages globally](https://docs.npmjs.com/downloading-and-installing-packages-globally)
or [get some help](https://github.com/fraction/oasis/issues/new/choose).
## Install globally
If you want to install to make `oasis` available globally:
```shell
npm -g install .
```
If you see a permission error, see [resolving EACCESS permission errors](https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally). If you any other problems, please [reach out for help](https://github.com/fraction/oasis/issues/new).

35
docs/maintaining.md Normal file
View File

@ -0,0 +1,35 @@
# Maintaining
Please read the [contract](./contract) that defines the maintainer role in this
project. In short:
- Please merge any patches that reduce the number of problems in this project.
- If you have small nitpicks about a patch, please merge the patch and write a
new patch with your preferred improvements.
- **Take care of yourself and don't burn out.** Please don't sacrifice your
health to improve this project, and know that there are much more important
things in life than merging pull requests quickly.
## Tips
### Checking out a patch
If you want to check out pull request number 42 and you're comfortable running
the code on your local device.
```sh
remote="https://github.com/fraction/oasis.git"
git fetch "$remote"
git reset --hard $remote master
git pull "$remote" pull/42/head
npm ci && npm test && npm start
```
No need to add their fork as a remote.
Or for ultimate convenience (and github lock-in), use the [github cli tool](https://cli.github.com):
```sh
gh pr list
gh pr checkout 42
```

View File

@ -1,44 +0,0 @@
# Roadmap
- [ ] Get
- [x] Author
- [x] Name
- [x] Description
- [x] Image
- [x] Follow / unfollow (public)
- [x] Block / unblock (public)
- [x] Likes
- [x] Metadata ("about" messages)
- [x] Markdown mention
- [ ] Posts
- [x] Render Markdown
- [x] Posts from author
- [x] Posts about hashtag
- [x] Posts that are thread roots
- [x] Posts that are thread comments
- [x] Nested comments in threads
- [ ] Pagination to view older posts
- [x] Search to filter posts by content
- [x] Notifications (by author mention)
- [x] Content warning
- [ ] Set
- [ ] Author
- [ ] Self
- [ ] Name
- [ ] Description
- [ ] Image
- [ ] Others
- [ ] Follow / unfollow (public)
- [ ] Block / unblock (public)
- [ ] Posts
- [x] New
- [x] Reply
- [x] Comment
- [ ] Pre-publish preview
- [ ] Add blob attachment(s)
- [x] Correctly set `branch`
- [ ] Content warning
- [x] Votes
- [x] Like
- [x] Unlike
- [x] Correctly set `branch`

BIN
docs/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -13,7 +13,6 @@ If everything is working correctly, it's likely that:
It's important to know that this is not a silver bullet:
- Your public messages can be read by anyone on the Secure Scuttlebutt network.
- Your public messages can be read by anyone on the Secure Scuttlebutt network.
- Your IP address can be seen by anyone that peers with you.
- Your private messages can be read by anyone with access to your private key.

24
docs/translating.md Normal file
View File

@ -0,0 +1,24 @@
# How to add a new language to Oasis
### 1. Make your own fork of the Oasis repository
### 2. Add a new language choice on the settings page
https://github.com/fraction/oasis/blob/16f19e85fbff2b656dd0f9f361bb3ae9f9da4e20/src/views/index.js#L794-L797
```
languageOption("en", "English"),
languageOption("es", "Español")
```
Search the file for `English` to find the right spot.
### 3. Add translated strings to i18n.js
https://github.com/fraction/oasis/blob/16f19e85fbff2b656dd0f9f361bb3ae9f9da4e20/src/views/i18n.js#L4-L12
Add a new sub-object for the new language and put translated strings in it.
Oasis uses English as a fallback if a language is not complete yet, so you can work incrementally.
### 4. Make a pull request!

View File

@ -14,5 +14,7 @@ docker volume create ssb
## Run
```
docker run --mount source=ssb,target=/root/.ssb --publish 3000:3000 --rm oasis
docker run --mount source=ssb,target=/home/node/.ssb --publish 127.0.0.1:3000:3000 --rm oasis
```
You should now be able to open http://localhost:3000 in your browser.

51
docs/with-termux.md Normal file
View File

@ -0,0 +1,51 @@
# With Termux
**Warning:** Experimental.
Use [Termux](https://termux.com/) to run Oasis on Android.
Please note that this is very experimental and very slow.
## Build
Copy and paste the commands below into your terminal and run them.
```shell
# Install dependencies, some are optional (in case you need to build from source)
pkg install \
autoconf \
automake
git \
libsodium \
libtool \
make \
nodejs \
python
# Allow global npm dependencies
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.profile
source ~/.profile
# Upgrade npm
npm install -g npm
# Install Oasis
npm --global install 'fraction/oasis#semver:*'
```
## Run
Oasis should open in your browser at http://localhost:3000 after you run:
```
oasis
```
If you see an error about Sharp installing incorrectly, delete it and try again.
```
rm -rf node_modules/sharp
oasis
```

10982
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "@fraction/oasis",
"version": "2.12.0",
"version": "2.17.0",
"description": "friendly neighborhood scuttlebutt interface",
"repository": {
"type": "git",
@ -16,56 +16,107 @@
"dev": "nodemon --inspect src/index.js --debug --no-open",
"fix": "common-good fix",
"start": "node src/index.js",
"test": "common-good check --dependency-check-suffix '-i husky -i changelog-version -i mkdirp -i nodemon -i stylelint-config-recommended'",
"test": "tap --timeout 240 && common-good test",
"preversion": "npm test",
"version": "changelog-version && git add CHANGELOG.md"
"version": "mv docs/CHANGELOG.md ./ && changelog-version && mv CHANGELOG.md docs/ && git add docs/CHANGELOG.md"
},
"dependencies": {
"@fraction/base16-css": "^1.1.0",
"@fraction/flotilla": "^3.0.2",
"@koa/router": "^10.0.0",
"debug": "^4.1.1",
"highlight.js": "^9.18.0",
"env-paths": "^2.2.0",
"file-type": "^16.0.1",
"highlight.js": "^11.0.0",
"hyperaxe": "^1.3.0",
"is-svg": "^4.2.1",
"koa": "^2.7.0",
"koa-body": "^4.1.0",
"koa-mount": "^4.0.0",
"koa-router": "^7.4.0",
"koa-static": "^5.0.0",
"lodash": "^4.17.11",
"open": "7.0.0",
"pretty-ms": "^5.0.0",
"lodash.shuffle": "^4.2.0",
"markdown-it": "^12.0.2",
"open": "^8.0.1",
"piexifjs": "^1.0.4",
"pretty-ms": "^7.0.1",
"pull-abortable": "^4.1.1",
"pull-paramap": "^1.2.2",
"pull-sort": "^1.0.2",
"pull-stream": "^3.6.12",
"require-style": "^1.1.0",
"sharp": "^0.23.0",
"ssb-client": "^4.8.0",
"ssb-config": "^3.4.3",
"ssb-markdown": "^6.0.3",
"ssb-mentions": "^0.5.0",
"secret-stack": "^6.3.0",
"sharp": "^0.28.0",
"ssb-about": "^2.0.1",
"ssb-backlinks": "^2.1.1",
"ssb-blobs": "^2.0.1",
"ssb-client": "^4.9.0",
"ssb-config": "^3.4.4",
"ssb-conn": "^5.0.0",
"ssb-db": "^20.3.0",
"ssb-ebt": "^7.0.1",
"ssb-friends": "^5.0.0",
"ssb-invite": "^2.1.6",
"ssb-keys": "^8.0.0",
"ssb-lan": "^1.0.0",
"ssb-logging": "^1.0.0",
"ssb-markdown": "^6.0.7",
"ssb-master": "^1.0.3",
"ssb-meme": "^1.1.0",
"ssb-mentions": "^0.5.2",
"ssb-msgs": "^5.2.0",
"ssb-no-auth": "^1.0.0",
"ssb-onion": "^1.0.0",
"ssb-ooo": "^1.3.3",
"ssb-plugins": "^1.0.2",
"ssb-private1": "^1.0.1",
"ssb-query": "^2.4.5",
"ssb-ref": "^2.13.9",
"ssb-replicate": "^1.3.0",
"ssb-room": "^1.3.0",
"ssb-search": "^1.3.0",
"ssb-tangle": "^1.0.1",
"ssb-thread-schema": "^1.1.1",
"yargs": "^15.0.0"
"ssb-unix-socket": "^1.0.0",
"ssb-ws": "^6.2.3",
"yargs": "^17.0.0"
},
"devDependencies": {
"changelog-version": "^1.0.1",
"common-good": "^1.1.19",
"husky": "^3.0.5",
"mkdirp": "^0.5.1",
"nodemon": "^2.0.2",
"stylelint-config-recommended": "^3.0.0"
"@types/debug": "^4.1.5",
"@types/highlight.js": "^10.1.0",
"@types/koa": "^2.11.3",
"@types/koa__router": "^8.0.2",
"@types/koa-mount": "^4.0.0",
"@types/koa-static": "^4.0.1",
"@types/lodash": "^4.14.150",
"@types/markdown-it": "^12.0.0",
"@types/mkdirp": "^1.0.0",
"@types/nodemon": "^1.19.0",
"@types/pull-stream": "^3.6.0",
"@types/sharp": "^0.28.0",
"@types/supertest": "^2.0.9",
"@types/yargs": "^17.0.2",
"changelog-version": "^2.0.0",
"common-good": "^4.0.3",
"husky": "^7.0.1",
"mkdirp": "^1.0.4",
"nodemon": "^2.0.3",
"stylelint-config-recommended": "^5.0.0",
"supertest": "^6.0.1",
"tap": "^14.10.7"
},
"optionalDependencies": {
"sharp": "^0.23.0"
"sharp": "^0.28.0"
},
"bugs": {
"url": "https://github.com/fraction/oasis/issues"
},
"homepage": "https://github.com/fraction/oasis#readme",
"directories": {
"doc": "docs"
"doc": "docs",
"test": "test"
},
"keywords": []
"keywords": [],
"engines": {
"node": "^10.0.0 || >=12.0.0"
}
}

77
scripts/build.sh Executable file
View File

@ -0,0 +1,77 @@
#!/bin/sh
set -ex
BASEDIR="$(dirname "$0")"
TARGET_VERSION="12.16.1"
cd "$BASEDIR/.."
git clean -fdx
mkdir -p vendor
cd vendor
get_tgz () {
TARGET_PLATFORM="$1"
TARGET="node-v$TARGET_VERSION-$TARGET_PLATFORM-x64"
ARCHIVE="$TARGET.tar.gz"
URL="https://nodejs.org/dist/v$TARGET_VERSION/$ARCHIVE"
TARGET_NODE="$TARGET/bin/node"
wget "$URL"
tar -xvf "$ARCHIVE" "$TARGET_NODE"
rm -f "$ARCHIVE"
}
get_zip () {
TARGET_PLATFORM="$1"
TARGET="node-v$TARGET_VERSION-$TARGET_PLATFORM-x64"
ARCHIVE="$TARGET.zip"
URL="https://nodejs.org/dist/v$TARGET_VERSION/$ARCHIVE"
TARGET_NODE="$TARGET/node.exe"
wget "$URL"
unzip "$ARCHIVE" "$TARGET_NODE"
rm -f "$ARCHIVE"
}
get_tgz darwin
get_tgz linux
get_zip win
cd ..
# Avoid building anything from source.
npm ci --only=prod --ignore-scripts --no-audit --no-fund
# More trouble than it's worth :)
rm -rf ./node_modules/sharp
export GOARCH="amd64"
# Darwin (shell script)
export GOOS="darwin"
OUTFILE="oasis-$GOOS-$GOARCH"
go build -ldflags "-X main.node=vendor/node-v$TARGET_VERSION-darwin-x64/bin/node" -o "$OUTFILE" scripts/oasis.go
chmod +x "$OUTFILE"
# Linux (ELF executable)
export GOOS="linux"
OUTFILE="oasis-$GOOS-$GOARCH"
go build -ldflags "-X main.node=vendor/node-v$TARGET_VERSION-linux-x64/bin/node" -o "$OUTFILE" scripts/oasis.go
chmod +x "$OUTFILE"
# Windows (batch file)
export GOOS="windows"
OUTFILE="oasis-$GOOS-$GOARCH.exe"
go build -ldflags "-X main.node=vendor\\node-v$TARGET_VERSION-win-x64\\bin\\node" -o "$OUTFILE" scripts/oasis.go
chmod +x "$OUTFILE"
# I think if the zip already exists it's adding files to the existing archive?
ZIP_PATH="/tmp/oasis-x64.zip"
rm -f "$ZIP_PATH"
zip -r "$ZIP_PATH" . -x ".git/**"
git clean -fdx

57
scripts/oasis.go Normal file
View File

@ -0,0 +1,57 @@
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
)
// The relative path to the `node` binary depends on the platform, so we
// pass this via an `-ldflags` hack I don't completely understand. In my
// head this is similar to how GCC lets you use `-D` to define a macro to
// be inserted by the preprocessor.
var node string
func main() {
// The problem with relative paths is that they only work when
// you run `./oasis-platform-x64`, but not when you run a command
// like `./path/to/oasis-platform-x64`. To resolve this problem
// we need to put together an absolute path, which we can build
// with the first argument (the relative path of this executable)
// and the relative path of either the `node` binary or the
// source code directory so that we can run `node src`.
node := filepath.Join(filepath.Dir(os.Args[0]), node)
src := filepath.Join(filepath.Dir(os.Args[0]), "src")
// We know that the command will be the absolute path to `node`
// and the first argument will be the absolute path to the `src`
// directory, but we need to get collect the rest of the arguments
// programatically by pulling them out of the `os.Args` slice and
// putting them in a new slice called `args`.
args := []string{src}
for i := 1; i < len(os.Args); i++ {
args = append(args, os.Args[i])
}
// This seems to execute the script and pass-through all of the
// arguments we want, *plus* it hooks up stdout and stderr, but
// the exit code of Oasis doesn't seem to be passed through. This
// is easy to test with a command like:
//
// ./oasis-platform-x64 --port -1
//
// This should give an exit code of 1, but it seems to exit 0. :/
cmd := exec.Command(node, args...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
// This catches problems like "no such file or directory" if the
// `node` variable points to a path where there isn't a binary.
//
// TODO: I think we're supposed to handle the exit code here.
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
}

View File

@ -29,22 +29,19 @@
--fg-light: var(--base06);
--bg-light: var(--base07);
/* line */
--peta: 32rem;
--tera: 16rem;
--giga: 8rem;
--mega: 4rem;
--kilo: 2rem;
--whole: 1rem;
--milli: 0.5rem;
--micro: 0.25rem;
--nano: 0.125rem;
--pico: 0.0625rem;
/* size (2^n) */
--size-3: 8rem;
--size-2: 4rem;
--size-1: 2rem;
--size-0: 1rem;
--size--1: 0.5rem;
--size--2: 0.25rem;
--size--3: 0.125rem;
--size--4: 0.0625rem;
/* size */
--common-radius: var(--micro);
--measure: calc(var(--peta) + var(--mega));
--common-radius: var(--size--2);
--measure: 36rem;
--line: 1.5rem;
--code-size: 85%;
}
@ -73,7 +70,7 @@ html {
main {
margin: 0;
margin-bottom: var(--whole);
margin-bottom: var(--size-0);
}
/* https://www.desmos.com/calculator/3elcf5cwhn */
@ -103,34 +100,67 @@ h4,
h5,
h6 {
color: var(--bg-light);
margin: var(--whole) 0;
margin: var(--size-0) 0;
}
ul,
ol {
padding-left: var(--whole);
padding-left: var(--size-0);
margin-left: var(--size--3);
}
a {
color: var(--fg-light);
}
button {
button,
.file-button {
cursor: pointer;
background: var(--fg);
color: var(--bg);
border: var(--pico) solid var(--fg);
padding: var(--milli) var(--whole);
border: var(--size--4) solid var(--fg);
padding: var(--size--1) var(--size-0);
border-radius: var(--common-radius);
font-size: 8pt;
}
section > footer > a,
section > footer > form > button {
.file-button {
float: right;
margin: 0;
background: transparent;
color: var(--fg);
}
#blob {
visibility: hidden;
height: 0;
padding: 0;
margin: 0;
}
section header a {
display: flex;
color: var(--fg-status);
text-decoration: none;
margin-right: var(--size--2);
margin-left: var(--size--2);
font-weight: bold;
}
/* For use with elements specific for
* rendering in a text browser and intended
* to be hidden in a graphical browser. */
.text-browser {
display: none;
}
section > footer > div > a,
section > footer > div > form > button {
color: var(--fg-status);
font-weight: bold;
}
section > footer > form > button {
section > footer > div > form > button {
display: inline-block;
border: 0;
background: transparent;
@ -142,25 +172,39 @@ select,
input {
background: var(--bg);
color: var(--fg);
border: var(--pico) solid var(--bg-selection);
padding: var(--milli);
margin-right: var(--whole);
border: var(--size--4) solid var(--bg-selection);
padding: var(--size--1);
margin: var(--size-0) 0;
-moz-appearance: none;
appearance: none;
border-radius: var(--common-radius);
display: block;
}
.contentWarning {
background-color: var(--bg);
box-sizing: border-box;
display: block;
font-size: var(--size-0);
padding: var(--size-0);
width: 100%;
margin: var(--size-0) 0;
border: var(--size--4) solid var(--bg-selection);
border-radius: var(--common-radius);
color: var(--fg);
}
textarea {
background-color: var(--bg);
box-sizing: border-box;
display: block;
font-size: var(--whole);
padding: var(--whole);
font-size: var(--size-0);
padding: var(--size-0);
resize: vertical;
width: 100%;
margin: var(--whole) 0;
margin: var(--size-0) 0;
height: 12rem;
border: var(--pico) solid var(--bg-selection);
border: var(--size--4) solid var(--bg-selection);
border-radius: var(--common-radius);
color: var(--fg);
}
@ -172,23 +216,24 @@ textarea:focus {
border-color: var(--blue);
}
/* Prevent button styles being applied to heart button */
button:focus,
button:hover {
background-color: var(--fg-light);
}
section > footer > form > button:hover,
section > footer > form > button:focus {
section > footer > div > form > button:hover,
section > footer > div > form > button:focus {
background-color: transparent;
}
pre {
overflow-x: auto;
background-color: var(--bg);
padding: var(--milli);
padding: var(--size--1);
font-size: 92%;
border-radius: var(--common-radius);
border: var(--pico) solid var(--bg-status);
border: var(--size--4) solid var(--bg-status);
}
section code {
@ -199,7 +244,7 @@ section code {
font-size: var(--code-size);
background-color: var(--bg);
border-radius: var(--common-radius);
border: var(--pico) solid var(--bg-status);
border: var(--size--4) solid var(--bg-status);
}
section pre code {
@ -214,19 +259,23 @@ section pre code {
section blockquote {
margin-left: 0;
border-left: var(--milli) solid var(--bg-status);
padding-left: var(--whole);
border-left: var(--size--1) solid var(--bg-status);
padding-left: var(--size-0);
}
section img,
section video {
max-width: 100%;
max-height: 100vh;
border: var(--pico) solid var(--bg-status);
border-radius: var(--common-radius);
box-sizing: border-box;
}
section > h1 {
margin-top: 0;
padding-top: 0;
}
.profile > img,
.profile > h1 {
display: inline-block;
@ -240,40 +289,31 @@ section > header.profile {
.profile > img {
width: 4rem;
height: 4rem;
margin-right: var(--whole);
margin-right: var(--size-0);
border-radius: var(--common-radius);
}
.private {
border-left: var(--milli) solid var(--violet);
border-left: var(--size--1) solid var(--violet);
border-color: var(--violet);
}
section.thread-target {
border: var(--pico) solid var(--blue);
box-shadow: 0 0 var(--micro) var(--blue);
border: var(--size--4) solid var(--blue);
box-shadow: 0 0 var(--size--2) var(--blue);
}
section.thread-target.private {
border: var(--pico) solid var(--violet);
border-left: var(--milli) solid var(--violet);
border: var(--size--4) solid var(--violet);
border-left: var(--size--1) solid var(--violet);
border-color: var(--violet);
box-shadow: 0 0 var(--micro) var(--violet);
box-shadow: 0 0 var(--size--2) var(--violet);
}
section audio {
width: 100%;
}
section > :first-child {
margin-top: 0;
padding-top: 0;
}
.content > :last-child {
margin-bottom: 0;
}
@media screen {
html {
min-height: 100%;
@ -289,16 +329,7 @@ section > :first-child {
}
nav {
margin: var(--whole) 0;
}
section header a {
display: flex;
color: var(--fg-status);
text-decoration: none;
font-weight: bold;
margin-right: var(--micro);
margin-left: var(--micro);
margin: var(--size-0) 0;
}
nav > ul > li > a {
@ -307,42 +338,82 @@ nav > ul > li > a {
font-weight: bold;
}
nav > ul > li > a.current {
.author-action > a {
text-decoration: underline;
}
section header a:hover {
text-decoration: underline;
}
nav > ul > li > a:hover {
text-decoration: underline;
}
nav > ul > li > a.current {
font-weight: bold;
}
section {
padding: var(--whole);
padding: var(--size-0);
border-radius: var(--common-radius);
margin: var(--whole) 0;
margin: var(--size-0) 0;
word-wrap: break-word;
background: var(--bg);
width: 100%;
box-sizing: border-box;
}
.indent section,
.thread-container section {
margin: unset;
border-radius: unset;
border-bottom: var(--fg-alt) solid 1px;
}
.indent details[open] {
border-bottom: var(--fg-alt) solid 1px;
}
.indent section:last-of-type,
.thread-container section:last-of-type {
border-bottom: unset;
}
.mentions-container {
display: grid;
grid-template-columns: 4rem auto;
grid-column-gap: 1rem;
margin-bottom: var(--size-0);
}
section > header {
height: var(--line);
display: flex;
margin-bottom: var(--whole);
justify-content: space-between;
background: var(--bg);
color: var(--fg-status);
margin-bottom: calc(-1 * var(--size--1));
margin-top: calc(-1 * var(--size--1));
padding-bottom: var(--size--1);
padding-top: var(--size--1);
position: sticky;
top: 0;
z-index: 1;
}
section > header > div {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
section header a > .avatar {
width: var(--line);
height: var(--line);
border-radius: var(--common-radius);
margin-right: var(--micro);
margin-right: var(--size--2);
}
section header span {
display: flex;
}
section header .author > a:first-child {
margin-left: 0;
color: var(--fg-light);
display: inline-flex;
}
/*
@ -371,17 +442,27 @@ section > .centered-footer {
}
section > footer {
display: flex;
justify-content: space-between;
margin-top: var(--whole);
color: var(--fg-status);
}
section > footer > * {
section > footer br {
display: none;
}
section > footer > div {
display: flex;
justify-content: space-between;
}
section > footer > div > * {
text-decoration: none;
}
section > footer > form > button.liked {
section > footer > div > form > button:first-of-type {
font-size: 100%;
}
section > footer > div > form > button.liked {
color: var(--red);
}
@ -392,6 +473,7 @@ label {
nav > ul {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin: 0;
padding: 0;
@ -399,12 +481,12 @@ nav > ul {
nav > ul > li {
list-style: none;
margin-right: var(--size--1);
}
.profile {
margin-top: var(--whole);
display: flex;
margin-bottom: var(--whole);
margin-bottom: var(--size-0);
}
progress {
@ -419,12 +501,22 @@ progress {
border-color: var(--blue);
}
/* content warning! */
summary {
padding: var(--milli);
margin: 0;
padding: var(--size--1);
margin: var(--size-0) 0;
cursor: pointer;
border: var(--pico) solid var(--bg-selection);
background: var(--bg);
border-radius: var(--common-radius);
list-style-type: "+ ";
border: var(--size--4) dashed var(--fg-status);
}
details[open] > summary {
list-style-type: " ";
}
.indent > details > summary {
border: none;
}
.md-mention {
@ -433,7 +525,7 @@ summary {
-webkit-user-select: all;
user-select: all;
background: none;
font-size: 50%;
overflow: hidden;
}
table {
@ -443,8 +535,8 @@ table {
td,
th {
padding: var(--milli);
outline: var(--pico) solid var(--bg-status);
padding: var(--size--1);
outline: var(--size--4) solid var(--bg-status);
}
th {
@ -454,17 +546,37 @@ th {
input[type="search"] {
width: 100%;
margin: var(--whole) 0;
margin: var(--size-0) 0;
}
.image-search-grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: var(--size-0);
}
.image-search-grid .image-result {
display: flex;
flex-direction: column;
align-items: center;
padding: var(--size--1) 0;
background: var(--bg);
border-radius: var(--common-radius);
}
.image-search-grid .image-result .result-text {
hyphens: auto;
text-align: center;
}
hr {
border: var(--pico) solid var(--fg-alt);
border: var(--size--4) solid var(--fg-alt);
}
.form-button-group {
display: flex;
justify-content: space-between;
margin: var(--whole) 0;
margin: var(--size-0) 0;
}
/* sidebar only appears on big screens */
@ -472,12 +584,12 @@ hr {
body > nav > ul {
justify-content: right;
flex-direction: column;
margin-right: var(--kilo);
margin-right: var(--size-1);
position: sticky;
top: var(--whole);
top: var(--size-0);
}
body > nav > ul > li {
margin-bottom: var(--whole);
margin-bottom: var(--size-0);
}
main {
width: 100%;
@ -489,3 +601,143 @@ hr {
max-width: none;
}
}
/* Use the browser's default font rendering instead of using our fancy
* font-family above. This resolves a problem where some emoji were being
* rendered in the system-ui font, which is rarely what we want.
*/
.emoji {
font-family: initial;
}
/* This indent is used on the summaries page to create an indent of 1. It might
* be wise to nest these recursively on the thread view, which would make it so
* that we don't need any inline CSS anymore.
*/
.indent {
padding-left: 1rem;
border-left: var(--size--2) solid var(--bg-selection);
}
.mentions-image {
grid-row: 1 / span 2;
}
.mentions-image > img {
border: var(--fg) solid 1px;
}
.mentions-container .emoji {
font-size: 1.5rem;
}
.mentions-name {
font-size: 1.25rem;
text-decoration: unset;
}
.mentions-name:hover {
text-decoration: underline;
}
.emo-rel {
display: inline-grid;
align-items: center;
grid-template-columns: 2rem auto;
grid-column-gap: 0.25rem;
}
.mentions-listing {
display: inline;
background-color: var(--bg);
padding: var(--size--1);
border-radius: var(--common-radius);
border: var(--size--4) solid var(--bg-status);
user-select: all;
font-size: var(--size--1);
overflow-x: auto;
width: 24rem;
}
section.post-preview {
padding-top: 0;
background: var(--bg-selection);
border: var(--fg-alt) solid 1px;
}
section.post-preview > section > footer {
display: none;
}
section.post.blocked {
font-style: italic;
}
section > footer > div > a:hover,
section > footer > div > form > button:hover {
text-decoration: underline;
}
.author-action {
flex-grow: 1;
}
section header .author > a:first-child {
margin-left: 0;
color: var(--fg-light);
font-weight: bold;
}
.theme-preview {
width: calc(100% / 15);
height: var(--size-0);
margin-top: var(--size-0);
display: inline-block;
}
.theme-preview-00 {
background-color: var(--base00);
}
.theme-preview-01 {
background-color: var(--base01);
}
.theme-preview-02 {
background-color: var(--base02);
}
.theme-preview-03 {
background-color: var(--base03);
}
.theme-preview-04 {
background-color: var(--base04);
}
.theme-preview-05 {
background-color: var(--base05);
}
.theme-preview-06 {
background-color: var(--base06);
}
.theme-preview-07 {
background-color: var(--base07);
}
.theme-preview-08 {
background-color: var(--base08);
}
.theme-preview-09 {
background-color: var(--base09);
}
.theme-preview-0A {
background-color: var(--base0A);
}
.theme-preview-0B {
background-color: var(--base0B);
}
.theme-preview-0C {
background-color: var(--base0C);
}
.theme-preview-0D {
background-color: var(--base0D);
}
.theme-preview-0E {
background-color: var(--base0E);
}
.theme-preview-0F {
background-color: var(--base0F);
}

View File

@ -1,8 +1,13 @@
"use strict";
const yargs = require("yargs");
const _ = require("lodash");
module.exports = () =>
/**
* @param {object} presets
* @param {string} defaultConfigFile
*/
module.exports = (presets, defaultConfigFile) =>
yargs
.scriptName("oasis")
.env("OASIS")
@ -12,27 +17,45 @@ module.exports = () =>
.options("open", {
describe:
"Automatically open app in web browser. Use --no-open to disable.",
default: true,
type: "boolean"
default: _.get(presets, "open", true),
type: "boolean",
})
.options("offline", {
describe:
"Don't try to connect to scuttlebutt peers or pubs. This can be changed on the 'meta' page while Oasis is running.",
default: false,
type: "boolean"
"Don't try to connect to scuttlebutt peers or pubs. This can be changed on the 'settings' page while Oasis is running.",
default: _.get(presets, "offline", false),
type: "boolean",
})
.options("host", {
describe: "Hostname for web app to listen on",
default: "localhost",
type: "string"
default: _.get(presets, "host", "localhost"),
type: "string",
})
.options("allow-host", {
describe:
"Extra hostname to be whitelisted (useful when running behind a proxy)",
default: _.get(presets, "allow-host", null),
type: "string",
})
.options("port", {
describe: "Port for web app to listen on",
default: 3000,
type: "number"
default: _.get(presets, "port", 3000),
type: "number",
})
.options("public", {
describe:
"Assume Oasis is being hosted publicly, disable HTTP POST and redact messages from people who haven't given consent for public web hosting.",
default: _.get(presets, "public", false),
type: "boolean",
})
.options("debug", {
describe: "Use verbose output for debugging",
default: false,
type: "boolean"
}).argv;
default: _.get(presets, "debug", false),
type: "boolean",
})
.options("theme", {
describe: "The theme to use, if a theme hasn't been set in the cookies",
default: _.get(presets, "theme", "atelier-sulphurpool-light"),
type: "string",
})
.epilog(`The defaults can be configured in ${defaultConfigFile}.`).argv;

View File

@ -4,19 +4,67 @@ const path = require("path");
const mount = require("koa-mount");
/**
* @param {{ host: string, port: number, routes: any }} input
* @type function
* @param {{ host: string, port: number, middleware: any[], allowHost: string | null }} input
* @return function
*/
module.exports = ({ host, port, routes }) => {
module.exports = ({ host, port, middleware, allowHost }) => {
const assets = new Koa();
assets.use(koaStatic(path.join(__dirname, "assets")));
const app = new Koa();
module.exports = app;
app.on("error", err => {
const validHosts = [];
// All non-GET requests must have a path that doesn't start with `/blob/`.
const isValidRequest = (request) => {
// All requests must use our hostname to prevent DNS rebind attacks.
if (validHosts.includes(request.hostname) !== true) {
console.log(`Invalid HTTP hostname: ${request.hostname}`);
return false;
}
// All non-GET requests must ...
if (request.method !== "GET") {
// ...have a referer...
if (request.header.referer == null) {
console.log("No referer");
return false;
}
try {
const refererUrl = new URL(request.header.referer);
// ...with a valid hostname...
if (validHosts.includes(refererUrl.hostname) !== true) {
console.log(`Invalid referer hostname: ${refererUrl.hostname}`);
return false;
}
// ...and must not originate from a blob path.
if (refererUrl.pathname.startsWith("/blob/")) {
console.log(`Invalid referer path: ${refererUrl.pathname}`);
return false;
}
} catch (e) {
console.log(`Invalid referer URL: ${request.header.referer}`);
return false;
}
}
// If all of the above checks pass, this is a valid request.
return true;
};
app.on("error", (err, ctx) => {
// Output full error objects
err.message = err.stack;
err.expose = true;
console.error(err);
// Avoid printing errors for invalid requests.
if (isValidRequest(ctx.request)) {
err.message = err.stack;
err.expose = true;
}
return null;
});
@ -24,14 +72,12 @@ module.exports = ({ host, port, routes }) => {
// headers
app.use(async (ctx, next) => {
await next();
const csp = [
"default-src 'none'",
"img-src 'self'",
"form-action 'self'",
"media-src 'self'",
"style-src 'self' 'unsafe-inline'"
"style-src 'self'",
].join("; ");
// Disallow scripts.
@ -40,8 +86,15 @@ module.exports = ({ host, port, routes }) => {
// Disallow <iframe> embeds from other domains.
ctx.set("X-Frame-Options", "SAMEORIGIN");
// Disallow browsers overwriting declared media types.
ctx.set("X-Content-Type-Options", "nosniff");
const isBlobPath = ctx.path.startsWith("/blob/");
if (isBlobPath === false) {
// Disallow browsers overwriting declared media types.
//
// This should only happen on non-blob URLs.
// See: https://github.com/fraction/oasis/issues/138
ctx.set("X-Content-Type-Options", "nosniff");
}
// Disallow sharing referrer with other domains.
ctx.set("Referrer-Policy", "same-origin");
@ -49,17 +102,39 @@ module.exports = ({ host, port, routes }) => {
// Disallow extra browser features except audio output.
ctx.set("Feature-Policy", "speaker 'self'");
if (ctx.method !== "GET") {
const referer = ctx.request.header.referer;
ctx.assert(referer != null, `HTTP ${ctx.method} must include referer`);
const refererUrl = new URL(referer);
const isBlobUrl = refererUrl.pathname.startsWith("/blob/");
ctx.assert(
isBlobUrl === false,
`HTTP ${ctx.method} from blob URL not allowed`
);
const validHostsString = validHosts.join(" or ");
ctx.assert(
isValidRequest(ctx.request),
400,
`Request must be addressed to ${validHostsString} and non-GET requests must contain non-blob referer.`
);
await next();
});
middleware.forEach((m) => app.use(m));
const server = app.listen({ host, port });
server.on("listening", () => {
const address = server.address();
if (typeof address === "string") {
// This shouldn't happen, but TypeScript was complaining about it.
throw new Error("HTTP server should never bind to Unix socket");
}
if (allowHost !== null) {
validHosts.push(allowHost);
}
validHosts.push(address.address);
if (validHosts.includes(host) === false) {
validHosts.push(host);
}
});
app.use(routes);
app.listen({ host, port });
return server;
};

File diff suppressed because it is too large Load Diff

1913
src/models.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,130 +0,0 @@
"use strict";
// This module exports a function that connects to SSB and returns a "cooler"
// interface. This interface is poorly defined and should be replaced with
// native support for Promises in the MuxRPC module.
const ssbClient = require("ssb-client");
const ssbConfig = require("ssb-config");
const flotilla = require("@fraction/flotilla");
const ssbTangle = require("ssb-tangle");
const debug = require("debug")("oasis");
const server = flotilla(ssbConfig);
const log = (...args) => {
const isDebugEnabled = debug.enabled;
debug.enabled = true;
debug(...args);
debug.enabled = isDebugEnabled;
};
const rawConnect = () =>
new Promise((resolve, reject) => {
ssbClient((err, api) => {
if (err) {
reject(err);
} else {
if (api.tangle === undefined) {
// HACK: SSB-Tangle isn't available in Patchwork, but we want that
// compatibility. This code automatically injects SSB-Tangle into our
// stack so that we don't get weird errors when using Patchwork.
//
// See: https://github.com/fraction/oasis/issues/21
api.tangle = ssbTangle.init(api);
}
resolve(api);
}
});
});
let handle;
const createConnection = config => {
handle = new Promise(resolve => {
rawConnect()
.then(ssb => {
log("Using pre-existing Scuttlebutt server instead of starting one");
resolve(ssb);
})
.catch(() => {
log("Initial connection attempt failed");
log("Starting Scuttlebutt server");
server(config);
const connectOrRetry = () => {
rawConnect()
.then(ssb => {
log("Retrying connection to own server");
resolve(ssb);
})
.catch(e => {
log(e);
connectOrRetry();
});
};
connectOrRetry();
});
});
return handle;
};
module.exports = ({ offline }) => {
if (offline) {
log("Offline mode activated - not connecting to scuttlebutt peers or pubs");
log(
"WARNING: offline mode cannot control the behavior of pre-existing servers"
);
}
const config = {
conn: {
autostart: !offline
},
ws: {
http: false
}
};
createConnection(config);
return {
connect() {
// This has interesting behavior that may be unexpected.
//
// If `handle` is already an active [non-closed] connection, return that.
//
// If the connection is closed, we need to restart it. It's important to
// note that if we're depending on an external service (like Patchwork) and
// that app is closed, then Oasis will seamlessly start its own SSB service.
return new Promise(resolve => {
handle.then(ssb => {
if (ssb.closed) {
createConnection();
}
resolve(handle);
});
});
},
/**
* @param {function} method
*/
get(method, ...opts) {
return new Promise((resolve, reject) => {
method(...opts, (err, val) => {
if (err) {
reject(err);
} else {
resolve(val);
}
});
});
},
read(method, ...args) {
return new Promise(resolve => {
resolve(method(...args));
});
}
};
};

56
src/ssb/flotilla.js Normal file
View File

@ -0,0 +1,56 @@
const stack = require("secret-stack");
const shuffle = require("lodash.shuffle");
const debug = require("debug")("oasis");
const ssbConfig = require("ssb-config");
const plugins = [
// Authentication often hooked for authentication.
require("ssb-master"),
// Methods often used during init().
require("ssb-db"),
// Method `replicate()` often hooked for improvements.
require("ssb-replicate"),
// Required by ssb-about, ssb-tangle, etc.
require("ssb-backlinks"),
// Required by ssb-room
require("ssb-conn"),
shuffle([
require("ssb-about"),
require("ssb-blobs"),
require("ssb-ebt"),
require("ssb-friends"),
require("ssb-invite"),
require("ssb-lan"),
require("ssb-logging"),
require("ssb-meme"),
require("ssb-no-auth"),
require("ssb-onion"),
require("ssb-ooo"),
require("ssb-plugins"),
require("ssb-private1"),
require("ssb-query"),
require("ssb-room/tunnel/client"),
require("ssb-search"),
require("ssb-tangle"),
require("ssb-unix-socket"),
require("ssb-ws"),
]),
];
module.exports = (config) => {
const server = stack();
// TODO: Move this out of the main function.
const walk = (input) => {
if (Array.isArray(input)) {
input.forEach(walk);
} else {
debug(input.name || "???");
server.use(input);
}
};
walk(plugins);
return server({ ...ssbConfig, ...config });
};

223
src/ssb/index.js Normal file
View File

@ -0,0 +1,223 @@
"use strict";
// This module exports a function that connects to SSB and returns an interface
// to call methods over MuxRPC. It's a thin wrapper around SSB-Client, which is
// a thin wrapper around the MuxRPC module.
const { promisify } = require("util");
const ssbClient = require("ssb-client");
const ssbConfig = require("ssb-config");
const ssbTangle = require("ssb-tangle");
const ssbKeys = require("ssb-keys");
const debug = require("debug")("oasis");
const path = require("path");
const lodash = require("lodash");
const fs = require("fs");
const os = require("os");
const flotilla = require("./flotilla");
// Use temporary path if we're running a test.
// TODO: Refactor away 'OASIS_TEST' variable.
if (process.env.OASIS_TEST) {
ssbConfig.path = fs.mkdtempSync(path.join(os.tmpdir(), "oasis-"));
ssbConfig.keys = ssbKeys.generate();
}
const socketPath = path.join(ssbConfig.path, "socket");
const publicInteger = ssbConfig.keys.public.replace(".ed25519", "");
const remote = `unix:${socketPath}~noauth:${publicInteger}`;
/**
* @param formatter {string} input
* @param args {any[]} input
*/
const log = (formatter, ...args) => {
const isDebugEnabled = debug.enabled;
debug.enabled = true;
debug(formatter, ...args);
debug.enabled = isDebugEnabled;
};
/**
* @param [options] {object} - options to pass to SSB-Client
* @returns Promise
*/
const connect = (options) =>
new Promise((resolve, reject) => {
const onSuccess = (api) => {
if (api.tangle === undefined) {
// HACK: SSB-Tangle isn't available in Patchwork, but we want that
// compatibility. This code automatically injects SSB-Tangle into our
// stack so that we don't get weird errors when using Patchwork.
//
// See: https://github.com/fraction/oasis/issues/21
api.tangle = ssbTangle.init(api);
// MuxRPC supports promises but the raw plugin does not.
api.tangle.branch = promisify(api.tangle.branch);
}
resolve(api);
};
ssbClient(process.env.OASIS_TEST ? ssbConfig.keys : null, options)
.then(onSuccess)
.catch(reject);
});
let closing = false;
let serverHandle;
let clientHandle;
/**
* Attempts connection over Unix socket, falling back to TCP socket if that
* fails. If the TCP socket fails, the promise is rejected.
* @returns Promise
*/
const attemptConnection = () =>
new Promise((resolve, reject) => {
const originalConnect = process.env.OASIS_TEST
? new Promise((resolve, reject) =>
reject({
message: "could not connect to sbot",
})
)
: connect({ remote });
originalConnect
.then((ssb) => {
debug("Connected to existing Scuttlebutt service over Unix socket");
resolve(ssb);
})
.catch((e) => {
if (closing) return;
debug("Unix socket failed");
if (e.message !== "could not connect to sbot") {
throw e;
}
connect()
.then((ssb) => {
log("Connected to existing Scuttlebutt service over TCP socket");
resolve(ssb);
})
.catch((e) => {
if (closing) return;
debug("TCP socket failed");
if (e.message !== "could not connect to sbot") {
throw e;
}
reject(new Error("Both connection options failed"));
});
});
});
let pendingConnection = null;
const ensureConnection = (customConfig) => {
if (pendingConnection === null) {
pendingConnection = new Promise((resolve) => {
attemptConnection()
.then((ssb) => {
resolve(ssb);
})
.catch(() => {
debug("Connection attempts to existing Scuttlebutt services failed");
log("Starting Scuttlebutt service");
// Adjust with `customConfig`, which declares further preferences.
serverHandle = flotilla(customConfig);
// Give the server a moment to start. This is a race condition. :/
setTimeout(() => {
attemptConnection()
.then(resolve)
.catch((e) => {
throw new Error(e);
});
}, 100);
});
});
const cancel = () => (pendingConnection = null);
pendingConnection.then(cancel, cancel);
}
return pendingConnection;
};
module.exports = ({ offline }) => {
if (offline) {
log("Offline mode activated - not connecting to scuttlebutt peers or pubs");
log(
"WARNING: Oasis can connect to the internet through your other SSB apps if they're running."
);
}
// Make a copy of `ssbConfig` to avoid mutating.
const customConfig = JSON.parse(JSON.stringify(ssbConfig));
// This is unnecessary when https://github.com/ssbc/ssb-config/pull/72 is merged
customConfig.connections.incoming.unix = [
{ scope: "device", transform: "noauth" },
];
// Only change the config if `--offline` is true.
if (offline === true) {
lodash.set(customConfig, "conn.autostart", false);
}
// Use `conn.hops`, or default to `friends.hops`, or default to `0`.
lodash.set(
customConfig,
"conn.hops",
lodash.get(ssbConfig, "conn.hops", lodash.get(ssbConfig.friends.hops, 0))
);
/**
* This is "cooler", a tiny interface for opening or reusing an instance of
* SSB-Client.
*/
const cooler = {
open() {
// This has interesting behavior that may be unexpected.
//
// If `clientHandle` is already an active [non-closed] connection, return that.
//
// If the connection is closed, we need to restart it. It's important to
// note that if we're depending on an external service (like Patchwork) and
// that app is closed, then Oasis will seamlessly start its own SSB service.
return new Promise((resolve, reject) => {
if (clientHandle && clientHandle.closed === false) {
resolve(clientHandle);
} else {
ensureConnection(customConfig).then((ssb) => {
clientHandle = ssb;
if (closing) {
cooler.close();
reject(new Error("Closing Oasis"));
} else {
resolve(ssb);
}
});
}
});
},
close() {
closing = true;
if (clientHandle && clientHandle.closed === false) {
clientHandle.close();
}
if (serverHandle) {
serverHandle.close();
}
},
};
// Important: This ensures that we have an SSB connection as soon as Oasis
// starts. If we don't do this, then we don't even attempt an SSB connection
// until we receive our first HTTP request.
cooler.open();
return cooler;
};

950
src/views/i18n.js Normal file
View File

@ -0,0 +1,950 @@
const { a, em, strong } = require("hyperaxe");
const i18n = {
en: {
// navbar items
extended: "Extended",
extendedDescription: [
"Posts from ",
strong("people you don't follow"),
", sorted by recency. When you follow someone you may download messages from the people they follow, and those messages show up here.",
],
popular: "Popular",
popularDescription: [
"Posts from people in your network, sorted by ",
strong("hearts"),
" in a given period. Hearts are counted from ",
em("everyone"),
", including people you don't follow, so this shows posts from your friends that are popular in your extended network.",
],
latest: "Latest",
latestDescription:
"Posts from yourself and people you follow, sorted by recency.",
topics: "Topics",
topicsDescription: [
strong("Topics"),
" from yourself and people you follow, sorted by recency. Select the timestamp of any post to see the rest of the thread.",
],
summaries: "Summaries",
summariesDescription: [
strong("Topics and some comments"),
" from yourself and people you follow, sorted by recency. Select the timestamp of any post to see the rest of the thread.",
],
threads: "Threads",
threadsDescription: [
strong("Posts that have comments"),
" from people you follow and your extended network, sorted by recency. Select the timestamp of any post to see the rest of the thread.",
],
profile: "Profile",
manualMode: "Manual Mode",
mentions: "Mentions",
mentionsDescription: [
strong("Posts that mention you"),
" from ",
strong("anyone"),
" sorted by recency. Sometimes people may forget to @mention you, and those posts won't show up here.",
],
private: "Private",
privateDescription: [
"The latest comment from ",
strong("private threads that include you"),
", sorted by recency. Private posts are encrypted for your public key, and have a maximum of 7 recipients. Recipients cannot be added after the thread has started. Select the timestamp to view the full thread.",
],
search: "Search",
imageSearch: "Image Search",
settings: "Settings",
// post actions
comment: "Comment",
subtopic: "Subtopic",
json: "JSON",
// relationships
unfollow: "Unfollow",
follow: "Follow",
block: "Block",
unblock: "Unblock",
newerPosts: "Newer posts",
olderPosts: "Older posts",
feedRangeEmpty: "The given range is empty for this feed. Try viewing the ",
seeFullFeed: "full feed",
feedEmpty: "The local client has never seen posts from this account.",
beginningOfFeed: "This is the beginning of the feed",
noNewerPosts: "No newer posts have been received yet.",
relationshipNotFollowing: "No one is following the other",
relationshipTheyFollow: "They follow you",
relationshipMutuals: "You are mutuals",
relationshipFollowing: "You are following",
relationshipYou: "This is you",
relationshipBlocking: "You are blocking",
relationshipBlockingPost: "This message hides content from a blocked user.",
relationshipNone: "You are neither following or blocking",
relationshipConflict: "You are somehow both following and blocking",
// author view
viewLikes: "View likes",
// likes view
likedBy: "'s likes",
// composer
attachFiles: "Attach files",
mentionsMatching: "Matching Mentions",
preview: "Preview",
publish: "Publish",
contentWarningPlaceholder: "Optional content warning for this post",
publishCustomDescription: [
"Publish a custom message by entering ",
a({ href: "https://en.wikipedia.org/wiki/JSON" }, "JSON"),
" below. This may be useful for prototyping or publishing messages that Oasis doesn't support. This message cannot be edited or deleted.",
],
commentWarning: [
" Published comments cannot be edited or deleted. To respond to an individual message, select ",
strong("subtopic"),
" instead.",
],
commentPublic: "public",
commentPrivate: "private",
commentLabel: ({ publicOrPrivate, markdownUrl }) => [
"Write a ",
strong(`${publicOrPrivate} comment`),
" on this thread with ",
a({ href: markdownUrl }, "Markdown"),
". Preview shows attached media.",
],
publishLabel: ({ markdownUrl, linkTarget }) => [
"Write a new public post in ",
a(
{
href: markdownUrl,
target: linkTarget,
},
"Markdown"
),
". Published posts cannot be edited or deleted. Preview to see attached media before publishing.",
],
publishCustomInfo: ({ href }) => [
"If you're an advanced user, you can also ",
a({ href }, "publish a custom message"),
".",
],
publishBasicInfo: ({ href }) => [
"If you're not an advanced user, you should ",
a({ href }, "publish a post"),
".",
],
publishCustom: "Publish custom",
subtopicLabel: ({ markdownUrl }) => [
"Create a ",
strong("public subtopic"),
" of this message with ",
a({ href: markdownUrl }, "Markdown"),
". Messages cannot be edited or deleted. To respond to an entire thread, select ",
strong("comment"),
" instead. Preview shows attached media.",
],
// settings
settingsIntro: ({ readmeUrl, version }) => [
`You're using Oasis ${version}. Check out `,
a({ href: readmeUrl }, "the readme"),
", configure your theme, or view debugging information below.",
],
theme: "Theme",
themeIntro:
"Choose from any theme you'd like. The default theme is Atelier-SulphurPool-Light. You can also set your theme in the default configuration file.",
setTheme: "Set theme",
language: "Language",
languageDescription:
"If you'd like to use Oasis in another language, choose one below. Please be aware that this is very new and very basic. We'd love your help translating Oasis to other languages and locales.",
setLanguage: "Set language",
status: "Status",
peerConnections: "Peer Connections 💻⚡️💻",
connectionsIntro:
"Your computer is syncing data with these other computers. It will connect to any scuttlebutt pub and peer it can find, even if you have no relationship with them, as it looks for data from your friends.",
noConnections: "No peers connected.",
connectionActionIntro:
"You can decide when you want your computer to network with peers. You can start, stop, or restart your networking whenever you'd like.",
startNetworking: "Start networking",
stopNetworking: "Stop networking",
restartNetworking: "Restart networking",
sync: "Connect and Sync",
indexes: "Indexes",
indexesDescription:
"Oasis keeps a cache of common calculations so that we can save time. Unfortunately this is a common source of bugs. Rebuilding your indexes is safe, and may fix some types of bugs.",
invites: "Invites",
invitesDescription:
"Redeem an invite by pasting it below. If it works, you'll follow the feed and they'll follow you back.",
acceptInvite: "Accept invite",
// search page
searchLabel: "Add word(s) to look for in downloaded messages.",
// image search page
imageSearchLabel: "Enter words to search for images labelled with them",
// posts and comments
commentDescription: ({ parentUrl }) => [
" commented on ",
a({ href: parentUrl }, " thread"),
],
commentTitle: ({ authorName }) => [`Comment on @${authorName}'s message`],
subtopicDescription: ({ parentUrl }) => [
" created a subtopic from ",
a({ href: parentUrl }, " a message"),
],
subtopicTitle: ({ authorName }) => [`Subtopic on @${authorName}'s message`],
mysteryDescription: "posted a mysterious message",
// misc
oasisDescription: "Friendly neighborhood scuttlebutt interface",
submit: "Submit",
editProfile: "Edit profile",
editProfileDescription:
"Edit your profile with Markdown. Old versions of your profile information still exist and can't be deleted, but most SSB apps don't show them.",
profileName: "Profile name (plain text)",
profileImage: "Profile image",
profileDescription: "Profile description (Markdown)",
hashtagDescription:
"Posts from people in your network that reference this hashtag, sorted by recency.",
rebuildName: "Rebuild database indexes",
},
/* spell-checker: disable */
es: {
latest: "Novedades",
profile: "Mi Perfil",
search: "Buscar",
imageSearch: "Buscar fotos",
settings: "Configuración",
// navbar items
extended: "Red extendida",
extendedDescription: [
"Publicaciones de ",
strong("personas que no sigues"),
", ordenadas por las más recientes. Quando sigas a una persona, podrás descargar publicaciones de otras personas que ella sige, y esas publicaciones aparecerán aquí.",
],
popular: "Populares",
popularDescription: [
"Publicaciones de personas de tu red, ordenadas por cantidad de ",
strong("Me Gusta"),
" en determinados periodos. Se cuentan los Me Gusta de ",
em("todos"),
", incluidos aquellos que no sigues. Esta es una lista de las publicaciones más populares de tu red de contacto.",
],
latestDescription:
"Publicaciones de aquellos que sigues, ordenadas por las más recientes.",
topics: "Tópicos",
topicsDescription: [
strong("Tópicos"),
" de las personas que sigues, ordenados por los más recientes. Selecciona la hora de una publicación para leer el hilo completo.",
],
summaries: "Resumen",
summariesDescription: [
strong("Tópicos y algunos comentarios"),
" de las personas que sigues, ordenados por los más recientes. Selecciona la hora de una publicación para leer el hilo completo.",
],
threads: "Hilos",
threadsDescription: [
strong("Posts que tienen comentarios"),
" de personas que sigues y de tu red extendida, ordenados por los más recientes. Selecciona la hora de una publicación para leer el hilo completo.",
],
manualMode: "Modo manual",
mentions: "Menciones",
mentionsDescription: [
strong("Publicaciones de "),
strong("cualquier persona"),
" que te mencionan, ordenadas por las más recientes. Solo aparecen menciones en el formato @mención.",
],
private: "Privado",
privateDescription: [
"Los comentarios más recientes de ",
strong("hilos privados que te incluyen"),
". Las publicaciones privadas están cifradas para ti, y contienen un máximo de 7 destinatarios. No se podrán adicionar nuevos destinarios después que empieze el hilo. Selecciona la hora de una publicación para leer el hilo completo.",
],
// post actions
comment: "Comentar",
reply: "Responder",
subtopic: "Subhilo",
json: "JSON",
// relationships
unfollow: "Dejar de seguir",
follow: "Seguir",
relationshipNotFollowing: "Ustedes dos no se siguen",
relationshipTheyFollow: "Ellos te siguen",
relationshipMutuals: "Ustedes se siguen mutuamente",
relationshipFollowing: "Siguiendo",
relationshipYou: "Tú",
relationshipBlocking: "Bloqueado",
relationshipNone: "No estás siguiendo ni bloqueando",
relationshipConflict: "De alguna forma lo estás siguiendo y bloqueando",
// author view
viewLikes: "Ver Me Gusta",
// likes view
likedBy: "le gusta",
// composer
attachFiles: "Agregar archivos",
mentionsMatching: "Menciones coincidentes",
preview: "Vista previa",
publish: "Publicar",
contentWarningPlaceholder: "Advertencia opcional para esta publicación",
publishCustomDescription: [
"Compone un mensaje avanzado usando ",
a({ href: "https://en.wikipedia.org/wiki/JSON" }, "JSON"),
". Esto puede ser útil para prototipar o componer tipos de mensaje que Oasis aún no soporta. Este mensaje no podrá ser editado o borrado.",
],
commentWarning: [
" Los mensajes no podrán ser editados o borrados. Para responder a mensajes, selecciona ",
strong("Responder"),
".",
],
commentPublic: "público",
commentPrivate: "privado",
commentLabel: ({ publicOrPrivate, markdownUrl }) => [
"Escribe un ",
strong(`${publicOrPrivate} comentario`),
" con ",
a({ href: markdownUrl }, "Markdown"),
" en este hilo.",
],
publishLabel: ({ markdownUrl, linkTarget }) => [
"Escribe un mensaje público con ",
a(
{
href: markdownUrl,
target: linkTarget,
},
"Markdown"
),
". Los mensajes no podrán ser editados o borrados.",
],
publishCustomInfo: ({ href }) => [
"Si eres un usuario avanzado, puedes también ",
a({ href }, "publicar un mensaje avanzado"),
".",
],
publishBasicInfo: ({ href }) => [
"Si no eres un usuario avanzado, lo mejor es ",
a({ href }, "publicar un mensaje normal."),
".",
],
publishCustom: "Publicar avanzado",
replyLabel: ({ markdownUrl }) => [
"Escribe una ",
strong("respuesta pública"),
" a este mensaje con ",
a({ href: markdownUrl }, "Markdown"),
". Los mensajes no podrán ser editados o borrados. Para responder a todo un hilo, selecciona ",
strong("comentario"),
".",
],
// settings
settingsIntro: ({ readmeUrl, version }) => [
`Estás usando Oasis ${version}. Lee `,
a({ href: readmeUrl }, "el Readme"),
", configura un tema, o consulta información de debug abajo.",
],
theme: "Tema",
themeIntro:
"Elige un tema. Atelier-SulphurPool-Light es el tema por defecto.",
setTheme: "Elige el tema",
language: "Idioma",
languageDescription:
"Si queres usar Oasis en otro idioma, elige aquí. Atención, que esta funcionalidad es aún nueva y básica. Necesitamos ayuda con traducciones para otros idiomas y formatos.",
setLanguage: "Seleccionar idioma",
status: "Estado",
peerConnections: "Conexiones de pares 💻⚡️💻",
connectionsIntro:
"Tu computadora se está sincronizando con las siguientes computadoras. Se conectará con cualquier par de scuttlebutt que encuentre, aún si no los conoce, ya que podrían tener información de tus amigos.",
noConnections: "Sin pares conectados.",
connectionActionIntro:
"Podrás decidir cuándo conectar tu computadora a la red de pares. Podrás iniciar, detener o reiniciar las conexiones siempre que quieras.",
startNetworking: "Iniciar las conexiones",
stopNetworking: "Detener las conexiones",
restartNetworking: "Reiniciar las conexiones",
indexes: "Índices",
indexesDescription:
"Oasis mantiene una caché con datos precalculados para ahorrar tiempo. Lamentablemente, esto es a menudo una causa de errores. Reconstruir esta chaché puede solucionar algunos errores si se presentan.",
invites: "Invitaciones",
invitesDescription:
"Utiliza una invitación aquí. Si funciona, empezarás a seguir a esa persona y ella te seguirá a ti también.",
acceptInvite: "Aceptar la invitación",
// search page
searchLabel:
"Busca con palabras clave entre las publicaciones que tienes descargadas.",
// posts and comments
commentDescription: ({ parentUrl }) => [
" comentó en el hilo ",
a({ href: parentUrl }, ""),
],
replyDescription: ({ parentUrl }) => [
" respondido al ",
a({ href: parentUrl }, "mensaje "),
],
// image search page
imageSearchLabel:
"Busca con palabras clave entre los títulos de las fotos que tienes descargadas.",
// posts and comments
commentTitle: ({ authorName }) => [
`Comentó en el mensaje de @${authorName}`,
],
subtopicDescription: ({ parentUrl }) => [
" creó un nuevo hilo para ",
a({ href: parentUrl }, "este mensaje"),
],
subtopicTitle: ({ authorName }) => [
`Nuevo hilo en el mensaje de @${authorName}`,
],
mysteryDescription: "publicó un mensaje misterioso",
// misc
oasisDescription:
"Una bonita interfaz para el amigable vecindario de scuttlebutt",
submit: "Enviar",
editProfile: "Editar perfil",
editProfileDescription:
"Edita tu perfil con Markdown. Los cambios serán publicados permanentemente, y habrá un registro de cada cambio disponeble públicamente, aunque la mayoría de las apps de scuttlebutt no muestran el historial.",
profileName: "Nombre de perfil (texto)",
profileImage: "Imagen de perfil",
profileDescription: "Descripción de perfil (Markdown)",
hashtagDescription:
"Publicaciones de personas en tu red que mencionan este hashtag, ordenadas por las más recientes.",
rebuildName: "Reconstruir índices de la base de datos",
},
de: {
extended: "Erweitert",
extendedDescription: [
"Beiträge von ",
strong("Leuten denen du nicht folgst"),
", sortiert nach Aktualität. Wenn du jemandem folgst lädst du eventuell auch Beiträge von Leuten herunter denen diese Person folgt, hier erscheinen diese Beiträge.",
],
popular: "Beliebt",
popularDescription: [
"Beiträge von Leuten in deinem Netzwerk, sortiert nach ",
strong("Herzen"),
" in der angegebenen Periode. Herzen werden von ",
em("jedem"),
" gezählt, auch von Personen denen du nicht folgst. D.h. hier werden Beiträge von deinen Freund*innen angezeigt die in deinem erweiterten Netzwerk populär sind.",
],
latest: "Aktuell",
latestDescription:
"Beiträge von Leuten denen du folgst, sortiert nach Aktualität.",
topics: "Themen",
topicsDescription: [
strong("Themen"),
" von Leuten denen du folgst, sortiert nach Aktualität. Klicke auf den Zeitstempel eines Beitrages um den Rest des Threads zu sehen.",
],
summaries: "Übersicht",
summariesDescription: [
strong("Themen und einige Kommentare"),
" von Leuten denen du folgst, sortiert nach Aktualität. Klicke auf den Zeitstempel eines Beitrages um den Rest des Threads zu sehen.",
],
profile: "Profil",
manualMode: "Manueller Modus",
mentions: "Erwähnungen",
mentionsDescription: [
strong("Beiträge in denen du erwähnt wirst"),
" von ",
strong("allen"),
", sortiert nach Aktualität. Manchmal vergessen Leute dich zu @erwähnen, diese Beiträge werden hier nicht erscheinen.",
],
private: "Privat",
privateDescription: [
"Die letzten Kommentare aus ",
strong("privaten Threads die dich beinhalten"),
", sortiert nach Aktualität. Private Beiträge werden mit deinem öffentlichen Schlüssel verschlüsselt und haben maximal 7 Empfänger*innen. Empfänger*innen können nicht hinzugefügt werden nachdem ein Thread gestartet wurde. Klicke auf den Zeitstämpel um einen komplette Thread anzuzeigen.",
],
search: "Suche",
settings: "Einstellungen",
// post actions
comment: "Kommentieren",
reply: "Antworten",
json: "JSON",
// relationships
unfollow: "Entfolgen",
follow: "Folgen",
relationshipNotFollowing: "No one is following the other",
relationshipTheyFollow: "They follow you",
relationshipMutuals: "You are mutuals",
relationshipFollowing: "Du folgst",
relationshipYou: "Das bist du",
relationshipBlocking: "Du blockierst",
relationshipNone: "Weder folgst noch blockst du",
relationshipConflict: "Irgendwie folgst und blockst du gleichzeitig",
// author view
viewLikes: "Likes ansehen",
// likes view
likedBy: "'s Likes",
// composer
attachFiles: "Datei Hinzufügen",
mentionsMatching: "Matching Mentions",
preview: "Vorschau",
publish: "Veröffentlichen",
contentWarningPlaceholder: "Optionale Inhaltswarnung für diesen Beitrag",
publishCustomDescription: [
"Veröffentliche eine benutzerdefinierte Nachricht durch das Eingeben von ",
a({ href: "https://en.wikipedia.org/wiki/JSON" }, "JSON"),
" unten. Dies kann zum Prototyping oder dem veröffentlichen von Nachrichten die Oasis nicht unterstützt nützlich sein. Diese Nachricht kann nicht bearbeitet oder gelöscht werden.",
],
commentWarning: [
" Nachrichten können nicht bearbeitet oder gelöscht werden. Um auf eine einzelne Nachricht zu antworten, wähle ",
strong("antworten"),
" stattdessen.",
],
commentPublic: "öffentlichen",
commentPrivate: "privaten",
commentLabel: ({ publicOrPrivate, markdownUrl }) => [
"Verfasse einen ",
strong(`${publicOrPrivate} Kommentar`),
" in diesem Thread mit ",
a({ href: markdownUrl }, "Markdown"),
".",
],
publishLabel: ({ markdownUrl, linkTarget }) => [
"Verfasse einen neuen öffentlichen Beitrag in ",
a(
{
href: markdownUrl,
target: linkTarget,
},
"Markdown"
),
". Beiträge können nicht bearbeitet oder gelöscht werden.",
],
publishCustomInfo: ({ href }) => [
"Wenn du ein erfahrener Benutzer bist kannst du auch ",
a({ href }, "eine benutzerdefinierte Nachricht veröffentlichen"),
".",
],
publishBasicInfo: ({ href }) => [
"Wenn du kein erfahrener Benutzer bist, solltest du ",
a({ href }, "einen einfachen Beitrag veröffentlichen"),
".",
],
publishCustom: "Benutzerdefinierte Veröffentlichung",
replyLabel: ({ markdownUrl }) => [
"Verfasse eine ",
strong("öffentliche Antwort"),
" zu dieser Nachricht mit ",
a({ href: markdownUrl }, "Markdown"),
". Nachrichten können nicht bearbeitet oder gelöscht werden. Um auf einen kompletten Thread zu antworten, klicke auf ",
strong("kommentieren"),
" stattdessen.",
],
// settings
settingsIntro: ({ readmeUrl, version }) => [
`Du verwendest Oasis ${version}. Lese `,
a({ href: readmeUrl }, "die Readme"),
", konfiguriere dein Theme oder schaue dir Debugging-Informationen weiter unten an.",
],
theme: "Theme",
themeIntro:
"Wähle ein Theme das dir gefällt. Das Standard-Theme ist Atelier-SulphurPool-Light.",
setTheme: "Theme einstellen",
language: "Sprache",
languageDescription:
"Wenn du Oasis in einer anderen Sprache nutzen möchtest, wähle unten eine aus. Bitte beachte, dass dies sehr neu und noch am Anfang ist. Wir freuen uns über deine Hilfe bei der Übersetzung von Oasis in andere Sprachen.",
setLanguage: "Sprache einstellen",
status: "Status",
peerConnections: "Verbindungen zu Peers 💻⚡️💻",
connectionsIntro:
"Dein Computer synchronisiert Daten mit diesen anderen Computern. Auf der Suche nach Daten von deinen Freund*innen werden Verbindungen zu allen Scuttlebutt Pubs und Peers aufgenommen die gefunden werden, auch wenn du keine Beziehung mit diesen hast.",
noConnections: "Keine Peers verbunden.",
connectionActionIntro:
"Du kannst entscheiden wann dein Computer mit Peers netzwerken soll. Du kannst das Netzwerken starten, stoppen oder neustarten wann immer du willst.",
startNetworking: "Netzwerken starten",
stopNetworking: "Netzwerken stoppen",
restartNetworking: "Netzwerken neustarten",
indexes: "Indizes",
invites: "Einladungen",
invitesDescription:
"Löse eine Einladung durch einfügen unten ein. Wenn es geklappt hat wirst du dem Feed folgen und sie werden dir folgen.",
acceptInvite: "Einladung annehmen",
// search page
searchLabel:
"Füge Wörte hinzu nach denen in heruntergeladenen Nachrichten gesucht werden soll.",
// posts and comments
commentDescription: ({ parentUrl }) => [
" kommentierte auf ",
a({ href: parentUrl }, " Thread"),
],
replyDescription: ({ parentUrl }) => [
" antwortete auf ",
a({ href: parentUrl }, " Nachricht"),
],
mysteryDescription: "veröffentlichte eine mysteriöse Nachricht",
// misc
oasisDescription: "Freundliches Scuttlebutt Interface",
submit: "Abschicken",
editProfile: "Profil bearbeiten",
editProfileDescription:
"Bearbeite dein Profil mit Markdown. Nachrichten können nicht bearbeitet oder gelöscht werden. Alte Versionen deiner Profilinformationen bleiben existieren und sind öffentliche Informationen, aber die meisten SSB-Apps zeigen diese nicht an.",
profileName: "Profilname (Text)",
profileDescription: "Profilbeschreibung (Markdown)",
hashtagDescription:
"Beiträge von Leuten in deinem Netzwerk die dieses Hashtag referenzieren, sortiert nach Aktualität.",
},
it: {
// navbar items
extended: "Rete estesa",
extendedDescription: [
"Cronologia dei post scritti da ",
strong("persone che non segui"),
". Quando segui qualcuno potresti scaricare post pubblicati da persone a te estranee ma seguite da loro, e questi messaggi compariranno qui.",
],
popular: "In evidenza",
popularDescription: [
"Posts dalle persone nel tuo network, ordinati per ",
strong("like"),
" in un dato periodo. I like vengono contati tra i post di ",
em("chiunque"),
", incluse le persone che non segui, quindi qui vedrai i post dei tuoi amici che sono più popolari nella tua rete estesa.",
],
latest: "Novità",
latestDescription:
"Post scritti da te e dalle persone che segui, ordinati per data.",
topics: "Argomenti",
topicsDescription: [
strong("Argomenti"),
" scritti da te e dalle persone che segui, ordinati per data. Seleziona il timestamp di un post per visualizzarne il thread.",
],
summaries: "Riassunti",
summariesDescription: [
strong("Argomenti e qualche commento"),
" scritto da te e dalle persone che segui, in ordine cronologico. Clicca il timestamp di un post per visualizzarne il thread.",
],
threads: "Thread",
threadsDescription: [
strong("Posts che hanno commenti"),
" scritti da persone che segui e dalla tua rete estesa, ordinati cronologicamente. from people you follow and your extended network, sorted by recency. Clicca il timestamp di un post per visualizzarne il thread.",
],
profile: "Profilo",
manualMode: "Modalità manuale",
mentions: "Menzioni",
mentionsDescription: [
strong("Post che ti menzionano,"),
" scritti da ",
strong("chiunque"),
", ordinati cronologicamente. A volte le persone dimenticano di @menzionarti, in quel caso i loro post non verranno mostrati qui.",
],
private: "Privato",
privateDescription: [
"Gli ultimi commenti su ",
strong("thread privati di cui fai parte"),
", ordinati cronologicamente. I post privati sono crittati con la tua chiave pubblica, e possono avere un massimo di 7 destinatari. Non è possibile aggiungere destinatari una volta che il thread è iniziato. Clicca il timestamp di un post per visualizzarne il thread.",
],
search: "Cerca",
settings: "Impostazioni",
// post actions
comment: "Commenta",
reply: "Rispondi",
json: "JSON",
// relationships
unfollow: "Non seguire più",
follow: "Segui",
relationshipNotFollowing: "No one is following the other",
relationshipTheyFollow: "They follow you",
relationshipMutuals: "You are mutuals",
relationshipFollowing: "Stai seguendo",
relationshipYou: "Sei tu",
relationshipBlocking: "Stai bloccando",
relationshipNone: "Non stai né seguendo né bloccando",
relationshipConflict:
"In qualche modo non meglio precisato stai seguendo e bloccando allo stesso tempo",
// author view
viewLikes: "Visualizza like",
// likes view
likedBy: "Like di ", // here the subject of the sentence should be put at the end (as if it were "liked by X" instead of "X's likes"
// composer
attachFiles: "Aggiungere i file",
mentionsMatching: "Menzioni corrispondenti",
preview: "Visualizza l'anteprima",
publish: "Pubblica",
contentWarningPlaceholder:
"Avviso su possibili contenuti per adulti nel post, opzionale",
publishCustomDescription: [
"Pubblica un messaggio su misura inserendo dati ",
a({ href: "https://en.wikipedia.org/wiki/JSON" }, "JSON"),
" qui sotto. Torna utile per realizzare prototipi o per pubblicare post ancora non supportati da Oasis. Questo messaggio non potrà essere modificato né rimosso.",
],
commentWarning: [
" I commenti non possono essere modificati né rimossi. Per rispondere ad un messaggio, seleziona ",
strong("rispondi"),
" invece.",
],
commentPublic: "pubblico",
commentPrivate: "privato",
commentLabel: ({ publicOrPrivate, markdownUrl }) => [
"Scrivi un ",
strong(`${publicOrPrivate} commento`),
" su questo thread con ",
a({ href: markdownUrl }, "Markdown"),
".",
],
publishLabel: ({ markdownUrl, linkTarget }) => [
"Scrivi un post pubblico in ",
a(
{
href: markdownUrl,
target: linkTarget,
},
"Markdown"
),
". I post non possono essere modificati né rimossi.",
],
publishCustomInfo: ({ href }) => [
"Se sei uno smanettone puoi anche ",
a({ href }, "pubblicare un messaggio su misura"),
".",
],
publishBasicInfo: ({ href }) => [
"Se non sei uno smanettone ti consigliamo di ",
a({ href }, "pubblicare un post"),
".",
],
publishCustom: "Pubblica su misuram",
replyLabel: ({ markdownUrl }) => [
"Scrivi una ",
strong("risposta pubblica"),
" a questo messaggio con ",
a({ href: markdownUrl }, "Markdown"),
". I messaggi non possono essere modificati né rimossi. Per rispondere ad un intero thread seleziona ",
strong("commenta"),
" invece.",
],
// settings
settingsIntro: ({ readmeUrl, version }) => [
`Stai usando Oasis ${version}. Dai un'occhiata al `,
a({ href: readmeUrl }, "file readme"),
", configura il tuo tema o leggi i log di debugging qui sotto.",
],
theme: "Tema",
themeIntro:
"Scegli il tema che più ti piace. Il tema predefinito si chiama Atelier-SulphurPool-Light. Puoi anche selezionare il tuo tema nel file di configurazione.",
setTheme: "Set theme",
language: "Lingua",
languageDescription:
"Se vuoi utilizzare Oasis in un'altra lingua, puoi sceglierla qui sotto. Attenzione, è una nuova funzionalità e la traduzione potrebbe non essere perfetta. Se parli una lingua straniera ci piacerebbe che ci aiutassi a tradurre Oasis in altre lingue.",
setLanguage: "Seleziona lingua",
status: "Stato attuale",
peerConnections: "Connessioni coi peer 💻⚡️💻",
connectionsIntro:
"Il tuo computer sincronizza i dati con questi computer e si connetterà a qualsiasi pub o utente scuttlebutt con cui riesce ad entrare in contatto. Dato che preleva dati dalla tua cerchia di amici, potresti vedere dati scritti da utenti che non conosci.",
noConnections: "Nessun peer connesso.",
connectionActionIntro:
"Puoi decidere se vuoi che il tuo computer entri in contatto con peer connessi alla stessa intranet in cui ti trovi ora. Puoi far partire, fermare o far ripartire questo tipo di connessioni quando vuoi.",
startNetworking: "Inizia networking locale",
stopNetworking: "Ferma networking locale",
restartNetworking: "Ricarica networking locale",
indexes: "Indici",
invites: "Inviti",
invitesDescription:
"Utilizza un invito che hai ricevuto incollandolo qui sotto. Se viene accettato ne seguirai il feed e ne riceverai il follow.",
acceptInvite: "Accetta l'invito",
// search page
searchLabel: "Cerca tra i messaggi che hai scaricato.",
// posts and comments
commentDescription: ({ parentUrl }) => [
" ha commentato il ",
a({ href: parentUrl }, " thread"),
],
replyDescription: ({ parentUrl }) => [
" ha risposto al ",
a({ href: parentUrl }, " messaggio "),
],
mysteryDescription: "ha postato un messaggio misterioso",
// misc
oasisDescription: "Interfaccia per scuttlebutt facile da usare",
submit: "Vai",
editProfile: "Modifica profilo",
editProfileDescription:
"Modifica il tuo profilo usando Markdown. Le versioni precedenti del tuo profilo continueranno ad esistere e non possono essere eliminate, ma la maggior parte dei client per SSB non le mostreranno.",
profileName: "Nome profilo (testo non formattato)",
profileImage: "Immagine di profilo",
profileDescription: "Descrizione del profilo (Markdown)",
hashtagDescription:
"Post da persone nella tua rete che menzionano questo hashtag, ordinati cronologicamente.",
},
fr: {
// navbar items
extended: "Étendue",
extendedDescription: [
"Messages de ",
strong("quelqu'un que vous ne suivez pas"),
", triées ancienneté. Lorsque vous suivez quelqu'un, vous pouvez télécharger les messages des personnes qu'il suit, et ces messages apparaissent ici.",
],
popular: "Populaire",
popularDescription: [
"Messages des personnes de votre réseau, triés par ",
strong("votes"),
" dans une période donnée. Les votes sont comptés à partir de ",
em("tous"),
", y compris les personnes que vous ne suivez pas, donc cela montre les messages de vos amis qui sont populaires dans votre réseau étendu.",
],
latest: "Dernières nouvelles",
latestDescription:
"Les messages de vous-même et des personnes que vous suivez, triés par ancienneté.",
topics: "Sujets",
topicsDescription: [
strong("Sujets"),
" de vous-même et des personnes que vous suivez, classés par ancienneté. Sélectionnez l'horodatage de n'importe quel message pour voir le reste du fil de discussion.",
],
summaries: "Résumés",
summariesDescription: [
strong("Sujets et commentaires"),
" de vous-même et des personnes que vous suivez, classés par ancienneté. Sélectionnez l'horodatage de n'importe quel message pour voir le reste du fil de discussion.",
],
threads: "Fils de discussion",
threadsDescription: [
strong("Messages avec commentaires"),
" des personnes que vous suivez et de votre réseau étendu, classés par ancienneté. Sélectionnez l'horodatage de n'importe quel message pour voir le reste du fil de discussion.",
],
profile: "Profil",
manualMode: "Mode Manuel",
mentions: "Mentions",
mentionsDescription: [
strong("Postes qui vous mentionnent"),
" from ",
strong("n'importe qui"),
" triées par ancienneté. Parfois, les gens peuvent oublier de vous @mentionner, et ces messages n'apparaîtront pas ici.",
],
private: "Privé",
privateDescription: [
"Le dernier commentaire de ",
strong("des fils de discussion privés qui vous incluent"),
", triées par ancienneté. Les messages privés sont cryptés par clé publique, et ont un maximum de 7 destinataires. Les destinataires ne peuvent pas être ajoutés après le démarrage du fil de discussion. Sélectionnez l'horodatage pour voir le fil de discussion complet.",
],
search: "Rechercher",
settings: "Paramètres",
// post actions
comment: "Commentaire",
reply: "Réponse",
json: "JSON",
// relationships
unfollow: "Ne plus suivre",
follow: "Suivre",
block: "Bloquer",
unblock: "Débloquer",
relationshipNotFollowing: "No one is following the other",
relationshipTheyFollow: "Il/elle te suivent",
relationshipMutuals: "Vous êtes des mutuellements",
relationshipFollowing: "Vous suivez",
relationshipYou: "C'est vous",
relationshipBlocking: "Vous bloquez",
relationshipNone: "Vous ne suivez ni ne bloquez",
relationshipConflict:
"D'une certaine manière, vous suivez et bloquez à la fois",
// author view
viewLikes: "Voir les votes",
// likes view
likedBy: "a voté",
// composer
attachFiles: "Ajouter des fichiers",
mentionsMatching: "Matching Mentions",
preview: "Examiner",
publish: "Publier",
contentWarningPlaceholder:
"Avertissement de contenu facultatif pour ce poste",
publishCustomDescription: [
"Publier un message personnalisé en entrant ",
a({ href: "https://en.wikipedia.org/wiki/JSON" }, "JSON"),
" ci-dessous. Cela peut être utile pour le prototypage ou la publication de messages qu'Oasis ne prend pas en charge. Ce message ne peut pas être modifié ou supprimé.",
],
commentWarning: [
" Les commentaires ne peuvent être ni modifiés ni supprimés. Pour répondre à un message individuel, sélectionnez ",
strong("répondre"),
" à la place.",
],
commentPublic: "public",
commentPrivate: "privé",
commentLabel: ({ publicOrPrivate, markdownUrl }) => [
"Ecrire un ",
strong(`${publicOrPrivate} commentaire`),
" sur ce fil avec ",
a({ href: markdownUrl }, "Markdown"),
".",
],
publishLabel: ({ markdownUrl, linkTarget }) => [
"Rédiger un nouveau poste public dans ",
a(
{
href: markdownUrl,
target: linkTarget,
},
"Markdown"
),
". Les messages ne peuvent être ni modifiés ni supprimés.",
],
publishCustomInfo: ({ href }) => [
"Si vous êtes un utilisateur avancé, vous pouvez également ",
a({ href }, "publier un message personnalisé"),
".",
],
publishBasicInfo: ({ href }) => [
"Si vous n'êtes pas un utilisateur avancé, vous devez ",
a({ href }, "publier un message"),
".",
],
publishCustom: "Publier un type particulier",
replyLabel: ({ markdownUrl }) => [
"Ecrire un ",
strong("réponse publique"),
" à ce message avec ",
a({ href: markdownUrl }, "Markdown"),
". Les messages ne peuvent être ni modifiés ni supprimés. Pour répondre à un fil de discussion entier, sélectionnez ",
strong("commentaire"),
" en remplacement.",
],
// settings
settingsIntro: ({ readmeUrl, version }) => [
`Vous utilisez Oasis ${version}. Consultez `,
a({ href: readmeUrl }, "le lisez-moi"),
", configurez votre thème, ou consultez les informations de débogage ci-dessous.",
],
theme: "Thème",
themeIntro:
"Choisissez le thème que vous souhaitez. Le thème par défaut est Atelier-SulphurPool-Light. Vous pouvez également définir votre thème dans le fichier de configuration par défaut.",
setTheme: "Choisir thème",
language: "Langue",
languageDescription:
"Si vous souhaitez utiliser Oasis dans une autre langue, choisissez l'une des langues ci-dessous. Sachez qu'il s'agit d'une langue très nouvelle et très basique. Nous aimerions que vous nous aidiez à traduire Oasis dans d'autres langues et d'autres lieux.",
setLanguage: "Choisir la langue",
status: "Status",
peerConnections: "Connexions pair à pair 💻⚡️💻",
connectionsIntro:
"Votre ordinateur synchronise les données avec ces autres ordinateurs. Il se connecte à n'importe quel pub de ragots et peer-to-peer qu'il peut trouver, même si vous n'avez pas de relation avec eux, en cherchant des données de vos amis.",
noConnections: "Aucun pair n'est connecté.",
connectionActionIntro:
"Vous pouvez décider quand vous voulez que votre ordinateur soit en réseau avec vos pairs. Vous pouvez démarrer, arrêter ou redémarrer votre réseau quand vous le souhaitez.",
startNetworking: "Activer le réseau",
stopNetworking: "Désactiver le réseau",
restartNetworking: "Redémarrer le réseau",
indexes: "Index",
invites: "Invitations",
invitesDescription:
"Utilisez une invitation en la collant ci-dessous. Si cela fonctionne, vous suivrez le flux et ils vous suivront en retour.",
acceptInvite: "Accepter l'invitation",
// search page
searchLabel:
"Ajouter un ou plusieurs mots à rechercher dans les messages téléchargés.",
// posts and comments
commentDescription: ({ parentUrl }) => [
" a commenté ",
a({ href: parentUrl }, " fil de discussion"),
],
replyDescription: ({ parentUrl }) => [
" a répondu à ",
a({ href: parentUrl }, " message"),
],
mysteryDescription: "a posté un message mystérieux",
// misc
oasisDescription: "Une interface conviviale pour des bavardages entre amis",
submit: "Soumettre",
editProfile: "Modifier le profil",
editProfileDescription:
"Modifiez votre profil en Markdown. Les anciennes versions des informations de votre profil existent toujours et ne peuvent pas être supprimées, mais la plupart des applications SSB ne les affichent pas.",
profileName: "Nom du profil (texte en clair)",
profileImage: "Image du profil",
profileDescription: "Description du profil (Markdown)",
hashtagDescription:
"Les messages des personnes de votre réseau qui font référence à ce hashtag, triés par ordre de récence.",
},
};
module.exports = i18n;

File diff suppressed because it is too large Load Diff

View File

@ -3,9 +3,10 @@
const md = require("ssb-markdown");
const ssbMessages = require("ssb-msgs");
const ssbRef = require("ssb-ref");
const { span } = require("hyperaxe");
/** @param {{ link: string}[]} mentions */
const toUrl = mentions => {
const toUrl = (mentions) => {
/** @type {{name: string, link: string}[]} */
const mentionNames = [];
@ -20,7 +21,7 @@ const toUrl = mentions => {
ssbMessages.links(mentions, "feed").forEach(handleLink);
/** @param {string} ref */
const urlHandler = ref => {
const urlHandler = (ref) => {
// @mentions
const found = mentionNames.find(({ name }) => name === ref);
if (found !== undefined) {
@ -33,8 +34,12 @@ const toUrl = mentions => {
if (ssbRef.isMsgId(ref)) {
return `/thread/${encodeURIComponent(ref)}`;
}
if (ssbRef.isBlobId(ref)) {
return `/blob/${encodeURIComponent(ref)}`;
const splitIndex = ref.indexOf("?");
const blobRef = splitIndex === -1 ? ref : ref.slice(0, splitIndex);
// const blobParams = splitIndex !== -1 ? ref.slice(splitIndex) : "";
if (ssbRef.isBlobId(blobRef)) {
return `/blob/${encodeURIComponent(blobRef)}`;
}
if (ref && ref[0] === "#") {
return `/hashtag/${encodeURIComponent(ref.substr(1))}`;
@ -51,5 +56,7 @@ const toUrl = mentions => {
*/
module.exports = (input, mentions = []) =>
md.block(input, {
toUrl: toUrl(mentions)
toUrl: toUrl(mentions),
/** @param character {string} */
emoji: (character) => span({ class: "emoji" }, character).outerHTML,
});

View File

@ -1,162 +0,0 @@
"use strict";
const {
a,
article,
button,
details,
div,
footer,
form,
header,
img,
section,
span,
summary,
pre
} = require("hyperaxe");
const highlightJs = require("highlight.js");
const lodash = require("lodash");
module.exports = ({ msg }) => {
const encoded = {
key: encodeURIComponent(msg.key),
author: encodeURIComponent(msg.value.author),
parent: encodeURIComponent(msg.value.content.root)
};
const url = {
author: `/author/${encoded.author}`,
likeForm: `/like/${encoded.key}`,
link: `/thread/${encoded.key}#${encoded.key}`,
parent: `/thread/${encoded.parent}#${encoded.parent}`,
avatar: msg.value.meta.author.avatar.url,
json: `/json/${encoded.key}`,
reply: `/reply/${encoded.key}`,
comment: `/comment/${encoded.key}`
};
const isPrivate = Boolean(msg.value.meta.private);
const isRoot = msg.value.content.root == null;
const isThreadTarget = Boolean(
lodash.get(msg, "value.meta.thread.target", false)
);
// TODO: I think this is actually true for both replies and comments.
const isReply = Boolean(lodash.get(msg, "value.meta.thread.reply", false));
const { name } = msg.value.meta.author;
const timeAgo = msg.value.meta.timestamp.received.since.replace("~", "");
const depth = lodash.get(msg, "value.meta.thread.depth", 0);
const markdownContent = msg.value.meta.md.block();
const hasContentWarning =
typeof msg.value.content.contentWarning === "string";
const likeButton = msg.value.meta.voted
? { value: 0, class: "liked" }
: { value: 1, class: null };
const likeCount = msg.value.meta.votes.length;
const messageClasses = [];
if (isPrivate) {
messageClasses.push("private");
}
if (isThreadTarget) {
messageClasses.push("thread-target");
}
if (isReply) {
// True for comments too, I think
messageClasses.push("reply");
}
const isFork = msg.value.meta.postType === "reply";
const postOptions = {
post: null,
comment: ["commented on ", a({ href: url.parent }, " thread")],
reply: ["replied to ", a({ href: url.parent }, " message")],
mystery: "posted a mysterious message"
};
const emptyContent = "<p>undefined</p>\n";
const articleElement =
markdownContent === emptyContent
? article(
{ class: "content" },
pre({
innerHTML: highlightJs.highlight(
"json",
JSON.stringify(msg, null, 2)
).value
})
)
: article({ class: "content", innerHTML: markdownContent });
const articleContent = hasContentWarning
? details(summary(msg.value.content.contentWarning), articleElement)
: articleElement;
const fragment = section(
{
id: msg.key,
class: messageClasses.join(" "),
style: `margin-left: ${depth}rem;`
},
header(
span(
{ class: "author" },
a(
{ href: url.author },
img({ class: "avatar", src: url.avatar, alt: "" }),
name
),
postOptions[msg.value.meta.postType]
),
span(
{ class: "time" },
isPrivate ? "🔒" : null,
a({ href: url.link }, timeAgo)
)
),
articleContent,
// HACK: centered-footer
//
// Here we create an empty div with an anchor tag that can be linked to.
// In our CSS we ensure that this gets centered on the screen when we
// link to this anchor tag.
//
// This is used for redirecting users after they like a post, when we
// want the like button that they just clicked to remain close-ish to
// where it was before they clicked the button.
div({ id: `centered-footer-${encoded.key}`, class: "centered-footer" }),
footer(
form(
{ action: url.likeForm, method: "post" },
button(
{
name: "voteValue",
type: "submit",
value: likeButton.value,
class: likeButton.class
},
`${likeCount}`
)
),
a({ href: url.comment }, "Comment"),
isPrivate || isRoot || isFork ? null : a({ href: url.reply }, "Reply"),
a({ href: url.json }, "JSON")
)
);
return fragment;
};

View File

@ -1,62 +0,0 @@
"use strict";
const {
a,
body,
head,
html,
li,
link,
main,
meta,
nav,
title,
ul
} = require("hyperaxe");
const doctypeString = "<!DOCTYPE html>";
const toAttributes = obj =>
Object.entries(obj)
.map(([key, val]) => `${key}=${val}`)
.join(", ");
module.exports = (...elements) => {
const nodes = html(
{ lang: "en" },
head(
title("Oasis"),
link({ rel: "stylesheet", href: "/theme.css" }),
link({ rel: "stylesheet", href: "/assets/style.css" }),
link({ rel: "stylesheet", href: "/assets/highlight.css" }),
link({ rel: "icon", type: "image/svg+xml", href: "/assets/favicon.svg" }),
meta({ charset: "utf-8" }),
meta({
name: "description",
content: "friendly neighborhood scuttlebutt interface"
}),
meta({
name: "viewport",
content: toAttributes({ width: "device-width", "initial-scale": 1 })
})
),
body(
nav(
ul(
li(a({ href: "/" }, "Popular")),
li(a({ href: "/public/latest" }, "Latest")),
li(a({ href: "/inbox" }, "Inbox")),
li(a({ href: "/mentions" }, "Mentions")),
li(a({ href: "/profile" }, "Profile")),
li(a({ href: "/search" }, "Search")),
li(a({ href: "/meta" }, "Meta"))
)
),
main({ id: "content" }, elements)
)
);
const result = doctypeString + nodes.outerHTML;
return result;
};

115
test/basic.js Normal file
View File

@ -0,0 +1,115 @@
// HACK: Prevent Oasis from opening the web browser.
process.argv.push("--no-open", "--offline");
process.env.OASIS_TEST = true;
const app = require("../src");
const supertest = require("supertest");
const tap = require("tap");
// TODO: Generate programmatically?
const paths = [
"/inbox",
"/mentions",
"/profile",
"/profile?gt=0",
"/profile?lt=100",
"/profile/edit",
"/public/latest",
"/public/latest/extended",
"/public/latest/summaries",
"/public/latest/threads",
"/public/latest/topics",
"/public/popular/day",
"/public/popular/week",
"/publish",
"/publish/custom",
"/search",
"/search?query=foo",
"/settings",
"/settings/readme",
];
tap.setTimeout(0);
tap.test("edit profile", (t) => {
supertest(app)
.post("/profile/edit")
.field("name", "allison-wonderland")
.field("description", "example description **published**")
.attach("image", __filename)
.set("Referer", "http://localhost:3000/")
.set("Host", "localhost")
.expect(302)
.end(t.end);
});
tap.test("preview", (t) => {
supertest(app)
.post("/publish/preview")
.field("text", "example message **previewed**")
.field("contentWarning", "")
.set("Referer", "http://localhost:3000/")
.set("Host", "localhost")
.expect(200)
.expect(({ text }) =>
text.includes("example message <strong>previewed</strong>")
)
.end(t.end);
});
tap.test("publish", (t) => {
supertest(app)
.post("/publish")
.field("text", "example message **published**")
.set("Referer", "http://localhost:3000/")
.set("Host", "localhost")
.expect(302)
.end(t.end);
});
tap.test("profile", (t) => {
supertest(app)
.get("/profile")
.set("Host", "localhost")
.expect(200)
.expect(({ text }) => text.includes("allison-wonderland"))
.expect(({ text }) =>
text.includes("example description <strong>published</strong>")
)
.expect(({ text }) =>
text.includes("example message <strong>published</strong>")
)
.end(t.end);
});
tap.test("DNS rebind attack fails", (t) => {
supertest(app)
.get("/inbox")
.set("Host", "example.com")
.expect(400)
.end(t.end);
});
tap.test("CSRF attack should fail with no referer", (t) => {
supertest(app).post("/conn/settings/stop").expect(400).end(t.end);
});
tap.test("CSRF attack should fail with wrong referer", (t) => {
supertest(app)
.post("/conn/settings/stop")
.set("Host", "example.com")
.expect(400)
.end(t.end);
});
paths.forEach((path) => {
tap.test(path, (t) => {
supertest(app).get(path).set("Host", "localhost").expect(200).end(t.end);
});
});
// HACK: This closes the database.
tap.teardown(() => {
app.close();
app._close();
});