Commit Graph

623 Commits

Author SHA1 Message Date
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
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
Jonathan Dahan adfed1bead Add content warning publishing, fixes #191 2020-02-11 22:18:10 -05: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
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
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
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 2295e7858a
Merge pull request #184 from christianbundy/get-about
Use custom getAbout() to replace SSB-About
2020-02-08 19:36:45 -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
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
Cinnamon 7ee77172f2
Merge branch 'master' into add-invite-code 2020-02-06 14:22:55 -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
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
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
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
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
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
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 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
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 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
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 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
martingrondin d0d12bd83f Fixed capitalization on networking buttons on Meta page. 2020-01-30 02:04:49 -05: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 ec3e4d489a Merge branch 'master' of github.com:fraction/oasis into conn-buttons 2020-01-28 10:25:42 -08:00
Christian Bundy b56b4bcd74 Update Flotilla to fix conn.stop bug
Problem: Stopping the networking would sometimes allow peers to remain
connected, which was confusing.

Solution: Upgrade to latest SSB-CONN to pull in a bugfix for this
behavior. Huge thanks to @staltz for the quick fix!
2020-01-28 10:22:24 -08:00
Christian Bundy 6735783b3f Fix sidebar moving along X axis on short pages
Problem: On short pages, like the search page, there's no scrollbar
gutter on the right side of the page, which moves everything a few
pixels to the right. After banging my head against this for an hour I finally
realized that it only happens when your viewport is taller than the
content on the page, which creates the scrollbar. This was reported as:
https://github.com/fraction/oasis/issues/96

Solution: Change the display so that we consistently show a scrollbar
gutter on the right side of the page regardless of whether we need it
(e.g. on very short pages or on very tall monitors). This means that
when we center the content on the page it won't move depending on the
height of the page, which was frustrating and janky.
2020-01-28 12:11:39 -05:00
Christian Bundy 03976b288d Solve inconsistent widths between pages
Problem: The `<section>` elements on some pages have different sizes,
which means that the sidebar is doing wonky stuff.

Solution: Make the sections all have a consistent width. Note that
there's still a few pixels of jank on the 'search' page, I'm not sure
why that's happening. The element inspector is reporting that everything
is the same width but that isn't true.
2020-01-28 12:11:39 -05:00
Christian Bundy 40c19c6a20 Add simple nav sidebar on large screens
Problem: Putting the navigation at the top of the screen makes it
impossible to use when you're scrolling through a page, which isn't a
good user experience. It was never meant to be permanent, and I think
everyone has pointed out that it's been a pain.

Solution: Super simple sidebar nav when people are on bigger screens.
This doesn't solve the problem on mobile, and it doesn't incorporate the
'popular' page's interval settings, but I think it's a step in the right
direction.
2020-01-28 12:11:39 -05:00
Jonathan Dahan d5e47a581d
Merge branch 'master' into caps 2020-01-28 16:22:39 +00:00
Jonathan Dahan 43f29e7658
Merge branch 'master' into favicon-dimensions 2020-01-28 16:05:26 +00:00
Christian Bundy ae08e0715f Use capitalization for Oasis links and buttons
Problem: Using all-lowercase-everything isn't really a standard around
the web and it might be better to use consistent capitalization. This
was brought up in: https://github.com/fraction/oasis/issues/98

Solution: This changes the main navigation to use links with the first
letter capitalized, like how Patchwork + Twitter + Mastodon + etc do it.
This means that we're consistently using sentence case everywhere, which
I think is our best option. Originally I tried experimenting with
all-caps for actions, which I found aesthetically pleasing, but you have
to reduce the font size to make it look good (bad!) and I was reading
that all-caps text is harder for friends with dyslexia or vision
impairments.
2020-01-27 15:48:13 -08:00
Christian Bundy 0e026e020c
Merge branch 'master' into favicon-dimensions 2020-01-27 13:33:00 -08:00
Christian Bundy b61d696a53
Merge branch 'master' into fix-tangle 2020-01-27 13:32:58 -08:00
Christian Bundy 4d1e505701 Change to only inject SSB-Tangle when necessary
Problem: We were overwriting SSB-Tangle with itself, which is fine, but
kind of confusing and requires some knowledge on what is and isn't safe
for Secret-Stack.

Solution: Only inject SSB-Tangle if it doesn't already exist, which
makes the code easier to reason about.
2020-01-27 12:06:33 -08:00
Christian Bundy 64a2ed135c Update CLI with more info on --offline
Problem: The --offline documentation doesn't mention that networking
status can be changed, which may give the false understanding that the
networking is permanently offline when you use that flag.

Solution: Add a note that mentions that the 'meta' page lets you change
your networking status, and that --offline is only applicable to the
starting state of Oasis.
2020-01-27 11:58:32 -08:00
Christian Bundy f40c6ff484 Fix connection restart behavior
Problem: It was starting then stopping, which isn't what we want.

Solution: Swap the lines and make sure that we stop, *then* start.
2020-01-27 11:52:29 -08:00
Christian Bundy 681e3c6755 Add buttons to 'meta' page to manage networking
Problem: Sometimes you want to disconnect from the network but you don't
want to have to restart Oasis with the `--offline` flag
(https://github.com/fraction/oasis/issues/89). Sometimes networking gets
stuck and you need to run the equivalent of `ssb gossip reconnect`
(https://github.com/fraction/oasis/issues/63).

Solution: Buttons on the 'meta' page that let you start, stop, or
restart SSB-CONN whenever you want. Note that this commit includes an
update to SSB-CONN, but this version and the previous version both have
a bug where hitting 'stop' twice in a row will throw an error. This
commit implements a workaround for the bug, but it's something we'll
want to remove later once the underlying bug is fixed.
2020-01-26 16:55:48 -08:00
Christian Bundy dec0f42b0f Fix tangle bug when Patchwork is used as a server
Problem: Patchwork is missing a plugin that we need to set the `branch`
property when posting a message. This property is important because it
helps us sort threads, so we're throwing an error when it isn't
available. See: https://github.com/fraction/oasis/issues/21

Solution: HACK THE ~~PLANET~~ API. This commit injects the plugin we
need via Oasis, which is a bit of a duct tape solution but it *is* a
solution.
2020-01-26 12:57:42 -08:00
Christian Bundy b6314309f6 Add some basic type info with JSDoc
Problem: When we don't have any documentation for variable types it's
difficult for both humans and machines to parse our code.

Solution: As discussed in https://github.com/fraction/oasis/issues/78,
adding some JSDoc information on function signatures would be a nice
step in the right direction and could make debugging easier.
2020-01-26 12:42:28 -08:00
Christian Bundy 502e5e400d Use ssb-backlinks to improve /inbox page load
Problem: The /inbox page was being rendered super slowly because it was
reading through tons of messages.

Solution: There isn't a way to query the database for "private messages
for me", although maybe there should be, but one way we can get
something close is querying for "messages that reference me". Every
message that's encrypted for us will have a `.value.content.recps`
property that includes our feed ID, so we just have to filter out the
public messages and we're about 4 times faster than the previous
implementation.

```console
$ hyperfine 'curl -I http://localhost:4515/inbox' 'curl -I http://localhost:3000/inbox'
Benchmark #1: curl -I http://localhost:4515/inbox
  Time (mean ± σ):      3.352 s ±  0.093 s    [User: 2.0 ms, System: 4.3 ms]
  Range (min … max):    3.231 s …  3.483 s    10 runs

Benchmark #2: curl -I http://localhost:3000/inbox
  Time (mean ± σ):     811.8 ms ±  88.3 ms    [User: 2.7 ms, System: 2.9 ms]
  Range (min … max):   709.1 ms … 972.5 ms    10 runs

Summary
  'curl -I http://localhost:3000/inbox' ran
    4.13 ± 0.46 times faster than 'curl -I http://localhost:4515/inbox'
```
2020-01-25 10:23:19 -08:00
Christian Bundy 416b715eb0 Fix incorrect comment, throw if no recipients 2020-01-24 14:26:33 -08:00
Christian Bundy 52a4d45217 Fix private reply with `recps` bug
Problem: Trying to reply to some messages sent with Patchbay fail
because the schema check is throwing an error.

Solution: When we encounter `recps` like `{ name, link }`, normalize it
to just `link` and publish a well-formed message that passes the schema
check.
2020-01-23 14:41:23 -08:00
Christian Bundy 5b97ed1913 Change favicon dimensions to fit in tab
Problem: Some of the icon was being clipped in my browser. I think that
this is because the SVG text actuall extends down under the line (like a
`g` or `y`).

Solution: Change SVG viewBox dimensions and SVG size to fit correctly.
2020-01-23 13:43:46 -08:00
Cinnamon b2e7652b31 Show peers by name, by host, or by key 2020-01-23 12:46:09 -08:00
Cinnamon a963248ed3
Merge branch 'master' into meta-names 2020-01-23 12:03:16 -08:00
Cinnamon 9064e2fe2b
Merge branch 'master' into common-good 2020-01-23 11:10:22 -08:00
Christian Bundy 817bfaa7e0 Add prototype for names in peer list 2020-01-22 17:29:14 -08:00
Cinnamon fffa827244 Add help text in Meta about peer connections 2020-01-22 15:19:00 -08:00
Jonathan Dahan e706a048b5 Create svg favicon 2020-01-22 16:23:13 -05:00
Christian Bundy b34b04c2c2 Experiment with common-good module 2020-01-21 16:22:19 -08:00
Christian Bundy 8656b2d18c
Merge branch 'master' into follow-unfollow 2020-01-14 08:54:08 -08:00
Jonathan Dahan 22bf2719be refactor follow and unfollow to share code 2020-01-14 11:32:33 -05:00
Stephen Solka d244bb29c5 filter messages outside time range 2020-01-12 20:39:42 +00:00
Christian Bundy 78b26f3de9 Fix follow button showing on own profile 2020-01-11 15:38:33 -08:00
Christian Bundy 4304178be6 Add follow and unfollow 2020-01-11 15:34:43 -08:00
Christian Bundy 2a6bcc993f Merge branch 'master' of github.com:fraction/oasis into mediator 2020-01-09 09:26:17 -08:00
Christian Bundy 9297b5f198 Separate SSB interface from model code 2020-01-09 09:04:46 -08:00
Christian Bundy ccbc877b8d Move cooler from directory to file 2020-01-09 08:46:39 -08:00
Christian Bundy b144aa378c Move cooler to submodule until refactor 2020-01-08 20:46:54 -08:00
Christian Bundy 0bd3ae42a4 Move controllers into src/index 2020-01-08 13:56:52 -08:00
Christian Bundy 4670ba6d93 Remove configure file 2020-01-08 13:35:20 -08:00
Christian Bundy bc2b9ea929 Change models to follow mediator pattern 2020-01-08 13:10:49 -08:00
Christian Bundy 99ffe1529a Change views to follow mediator pattern 2020-01-08 12:56:49 -08:00
Christian Bundy 0622d97e96 Replace pages with single controller file 2020-01-08 12:38:47 -08:00
Christian Bundy ca29986131 Move shebang from cli.js to index.js 2020-01-08 12:04:43 -08:00
Christian Bundy 5f528588b1 Change src directory to use mediator pattern 2020-01-08 08:37:52 -08:00
Cinnamon 2c46cbf6f2 Add CLI flag for offline mode (using temporary hack with globals) 2020-01-07 11:53:46 -08:00
Christian Bundy 09db160cd4 Merge branch 'private-comment' 2020-01-06 18:11:00 -08:00
Christian Bundy 4d0338a846 Add private publishing security measure 2020-01-06 17:05:41 -08:00
Christian Bundy 1220e12c7a Add automatic reconnection on failure
This automatically reconnects the client, starting an SSB service in the
background if the connection fails repeatedly.
2020-01-06 14:24:30 -08:00
Christian Bundy 950ad15f07 Fix missing space in comment language 2020-01-04 16:13:20 -08:00
Christian Bundy f0702894f8 Remove debugging console.log 2020-01-04 14:57:19 -08:00
Christian Bundy 0723077d19 Add comment response to private messages 2020-01-04 14:53:31 -08:00
Stephen Solka f288201850 yay for test cases. oops change require path 2020-01-01 14:12:04 -05:00
Stephen Solka 79e979708a Merge remote-tracking branch 'origin/master' 2020-01-01 14:01:56 -05:00
Stephen Solka d503a35ed3 move server by cooler. ready for future refactors 2020-01-01 14:01:28 -05:00
mycognosist dc103d6168 Add bottom margin to lift Comment button 2020-01-01 17:27:01 +00:00
Stephen Solka 4882934610 Add support for running oasis in a docker container 2020-01-01 10:07:41 -05:00
Christian Bundy 6d6fe9d268
Fix threading bug with mysterious messages 2019-12-29 15:10:45 -08:00
Christian Bundy 306c1642a3
Change order of 'comment' and 'reply' 2019-12-28 17:30:38 -08:00
Christian Bundy 9ef1920f1d
Change to disable replies to replies
There are very few reasons you'd ever want to do this and I think it's
more helpful to just disable it altogether. A reply should be thought of
as **creating a new thread**, and if you have a response to the thread
that's created then it should be posted as a **comment**.

Making a new thread as a response to an existing thread is an advanced
action and I think the simplicity is worth the small reduction in the
degrees of freedom for advanced users. Maybe I'll change my mind?
2019-12-28 16:47:22 -08:00
Christian Bundy 826c90b8af
Fix comments and rename 'reply all' to 'comment'
This changes some phrasing for clarity and adds some helpful
explanations when you're publishing a comment or a reply.

This also fixes comments on replies, which were previously just being
added as a sibling reply. This doesn't really matter because it has the
same layout in the UI and it's also very rare, but it allows us to have
separate threads for each reply.
2019-12-28 16:30:49 -08:00
Christian Bundy 42c72e7b8d
Change to make Sharp an optional dependency 2019-12-27 16:28:36 -08:00
Christian Bundy 96636685ae
Change to increase resolution of images 2019-12-16 12:37:11 -08:00
Christian Bundy 9db511f51f
Remove meta-table from profiles 2019-12-16 12:07:52 -08:00
Christian Bundy c0e491cec9
Fix profile regression 2019-12-16 11:25:08 -08:00
Christian Bundy 688627a462
Change replies to show full threads 2019-12-16 09:20:27 -08:00
Christian Bundy 733e0a4cfe
Fix like button focus 2019-12-16 08:11:58 -08:00
Christian Bundy 86aa4c5453
Change section view to reduce clutter 2019-12-15 18:22:51 -08:00
Christian Bundy ac3d2b58a0
Change styles to reduce visual noise
Big thanks for @cinnamon-bun for these suggestions!
2019-12-15 16:16:15 -08:00
Christian Bundy 3261648cb9
Fix like button hover 2019-12-15 15:25:22 -08:00
Christian Bundy 2ec97940df
Replace faux-shadow with thin border, change default theme 2019-12-15 14:08:38 -08:00
Christian Bundy 037e173fef
Remove message CSS class 2019-12-15 11:01:02 -08:00
Christian Bundy 2f565ceacf
Change to use more consistent size framework 2019-12-15 10:45:41 -08:00
Christian Bundy c3d650018a
Fix thread target highlight for private messages 2019-12-15 08:52:54 -08:00
Christian Bundy 5a0702c4dd
Add emoji to public publish 2019-12-14 17:07:44 -08:00
Christian Bundy 7cdf74c558
Add extra info for publish and search 2019-12-14 16:32:28 -08:00
Christian Bundy f9e22ae2a5
Change default theme to Tomorrow 2019-12-14 16:06:44 -08:00
Christian Bundy 6805d9e2a6
Change styles more 2019-12-14 14:50:54 -08:00
Christian Bundy 5ce9cca2d1
Change theme to have sections with color contrast
I think I was overusing borders and it gave the UI a wireframey skeleton
feel that wasn't very fleshed out. The dependence on thin borders also
caused trouble when using themes with low color contrast, since you'd
have thin lines that were *also* low-contrast. Bad!

Instead, I'm using a "card UI" style with varying colors, which I think
looks better (???) and seems to be more compatible with more themes.
Happy to roll this back if others don't dig it.
2019-12-14 13:29:04 -08:00
Christian Bundy 072b8160bb
Change style for content warnings 2019-12-13 14:25:39 -08:00
Christian Bundy 277f247be3
Fix form padding regressoin 2019-12-12 15:38:20 -08:00
Christian Bundy 3c78a6ac6c
Fix bug with uppercase in search query 2019-12-12 15:36:32 -08:00
Christian Bundy 122852a14c
Change form padding to margin 2019-12-12 15:32:50 -08:00
Christian Bundy 6205662831
Remove hacky workarounds for SSB-OOO bug
See: https://github.com/ssbc/ssb-ooo/pull/10
2019-12-12 14:37:50 -08:00
Christian Bundy c5284b0af4
Add styling for search box 2019-12-12 14:37:36 -08:00
Christian Bundy e8b1ed910c
Add reduce identity for empty arrays 2019-12-12 11:25:18 -08:00
Christian Bundy af2fff0053
Add CSS for cursor selection 2019-12-12 10:23:59 -08:00
Christian Bundy 8b7d306add
Change styles to re-add message margins 2019-12-12 09:21:25 -08:00
Christian Bundy 68d95abddf
Change `<img>` max-height to be function of view height 2019-12-11 19:35:58 -08:00
Christian Bundy 273afd1d3c
Fix weird `<summary>` margins 2019-12-11 19:32:41 -08:00
Christian Bundy 651d815b7d
Change to re-add box-shadow on thread target 2019-12-11 15:48:12 -08:00
Christian Bundy 13b0d7a8ed
Change to use border rectangles... again 2019-12-11 15:38:13 -08:00
Christian Bundy c7922a5b7c
Change to use consistent vertical rhythm 2019-12-11 11:33:06 -08:00
Christian Bundy 1ef20003dc
Change nested comments to be more explicit 2019-12-11 11:30:48 -08:00
Christian Bundy b03e5035e7
Change to remove left and right border 2019-12-11 11:01:35 -08:00
Christian Bundy 2ee4ece1c1
Change to remove whoami() calls 2019-12-07 17:01:04 -08:00
Christian Bundy c27d298081
Add basic search functionality 2019-12-07 15:25:24 -08:00
Christian Bundy 62bd34b553
Add relationship info to author pages 2019-12-07 15:00:53 -08:00
Christian Bundy 63e1dea1a2
Add option to browse popular by time period 2019-12-07 14:37:03 -08:00
Christian Bundy dbdf5c847f
Change popular page to reduce value of mass likes
Previously each time you liked something it added 1 point to that post.
That's fine, but it meant that if someone posted 10x more likes then
they'd have 10x more influence that others. I tried to reduce this,
making sure that everyone has exactly 1 influence, but it meant that
when someone only liked 1 thing then it's a *very* powerful like.

I think it's a nice middle ground to divide each point by (1 + ln(x)),
where x is the total number of likes that someone has made. This means:

- 1 like = 1 point
- 2 likes = 1.69 points (0.84 each)
- 4 likes = 2.38 points (0.59 each)
- 8 likes = 3.07 points (0.38 each)
- 16 likes = 3.77 points (0.23 each)
- 32 likes = 4.46 points (0.14 each)
- 64 likes = 5.15 points (0.08 each)
2019-12-07 11:43:24 -08:00
Christian Bundy f4c9422440
Add error for when messages lack metadata 2019-12-06 13:11:12 -08:00
Christian Bundy cb47f2a5ca
Replace dog-food filter with popular page
Instead of trying to remove ssb-dev content explicitly I'm going to try
to experiment with a "popular" page that count all of the votes in the
past 24 hours and shows the posts with the most votes.
2019-12-06 11:31:35 -08:00
Christian Bundy 72ba06136a
Add ``` to dog-food filter list 2019-12-04 16:43:24 -08:00
Christian Bundy f0aa1f11df
Change default views to filter ssb-dogfood
The SSB network is full of discussion about the SSB network, which isn't
very accessible for the majority of people. SSB developers use SSB to
talk about SSB, a practice often called "eating your own dog food",
which exascerbates the problem.

This commit filters the "dogfood" from the public thread and comment
views, which can be avoided by appending `/dogfood` to the URL.

- http://localhost:3000/public/threads/dogfood
- http://localhost:3000/public/comments/dogfood

This is a hack, and should be resolved with sorting and filters and all
sorts of fancy options for each list of messages, but I want to start
experimenting with this view (and talking to people who aren't talking
about SSB).
2019-12-04 11:34:48 -08:00
Christian Bundy 37c356ccb8
Fix ssb-mentions adding null mentions
See: https://github.com/ssbc/ssb-mentions/issues/14
2019-11-29 12:50:47 -08:00
Christian Bundy 03a894b133
Add post sub-type to post renderer 2019-11-29 12:50:18 -08:00
Christian Bundy e596f17a9e
Change header size styles 2019-11-29 12:45:22 -08:00
Christian Bundy ccd1a5e96f
Fix extra stdout output left in while debugging 2019-11-15 12:13:26 -08:00
Christian Bundy 0aa9666681
Fix problems identified by tsc 2019-11-15 12:11:31 -08:00
Christian Bundy 623a706a4c
Fix broken likes link on profile 2019-11-15 12:05:57 -08:00
Christian Bundy a769414b36
Fix Markdown mention inserted when replying to self 2019-11-15 12:01:56 -08:00
Christian Bundy 0142a75f15
Change from ssb-gossip to ssb-conn 2019-11-15 11:42:32 -08:00
Christian Bundy 334d4a032b
Change to show your own threads and comments
Not being able to see your own activity in the thread and comment pages
made me feel like a ghost. This change will probably make it slightly
harder to find new content but I think being able to see your own posts
is an important part of the community feedback loop.
2019-11-15 10:20:07 -08:00
Christian Bundy 316807451c
Change to redirect to parent after publish 2019-11-15 10:18:53 -08:00
Christian Bundy aae407b914
Fix branch for posts and votes 2019-11-15 10:07:56 -08:00
Christian Bundy 4d95b1aa7f
Change comment behavior to prevent showing thread roots 2019-11-15 09:47:31 -08:00
Christian Bundy 00890184df
Add thread and like views, rename "status" to "meta"
This should probably be separated into a few commits, but honestly I'm
feeling a bit lazy and I don't think this will hurt anything.

The `<nav>` was getting pretty hectic so I've removed "readme" and
"likes". The readme is now in the "meta" page, previously called
"status", and the likes are now available on each author's profile.

The big change here is that the default view is now the thread view, not
the comment view, so by default you're only going to see new threads
rather than random comments. This makes the feed a bit slower and more
cohesive, so you aren't seeing random comments on posts from 2 years
ago.

To be decided: should the comments view show root posts from threads? Or
should it just show comments? Right now it's basically a firehose view,
but I'm not sure that "firehose" is very accessible language for most
people.
2019-11-15 08:39:15 -08:00
Christian Bundy a44c78f116
Change debug output to be more relevant 2019-11-13 11:24:38 -08:00
Christian Bundy 4adba8b7ee
Fix CSP rule preventing inline CSS 2019-11-12 20:47:58 -08:00
Christian Bundy cd14d5ad03
Fix hashtag page not showing own messages 2019-10-31 15:25:31 -07:00
Christian Bundy f00a7de6a3
Add Feature-Policy header to tighten security 2019-10-30 11:57:22 -07:00
Christian Bundy b8691d7671
Add referer check to secure blob URLs without subdomain option 2019-10-29 14:02:28 -07:00
Christian Bundy 76f38ad33d
Add configurable subdomain setting 2019-10-25 07:49:18 -07:00
Christian Bundy 815d3bfca1
Add blob subdomain and security headers
Serving HTML under the same domain is dangerous, because it means that a
malicious user could serve JavaScript that could act on other pages on
the domain. This could allow a malicious user to read or publish
information from a blob URL.

This commit stops that behavior by delegating blobs to their own blob
subdomain and adding HTTP headers for security so that they can't access
the application.
2019-10-25 07:42:33 -07:00
Christian Bundy ea73181396
Change to use new API from `@fraction/base16-css` 2019-10-15 21:01:14 -07:00
Christian Bundy 977fb3b380
Fix status page throwing error about module path 2019-10-15 20:36:38 -07:00
Christian Bundy b4f928fc48
Fix install bug by using new CSS variable package 2019-10-08 10:32:13 -07:00
Christian Bundy 3187cbe7fe
Fix table with incorrect `<tbody>` 2019-10-07 20:41:00 -07:00
Christian Bundy f48cc18436
Merge branch 'add-about' into develop 2019-10-07 20:19:45 -07:00
Christian Bundy fbeef1b9ec
Add about messages to profile view 2019-10-07 18:53:21 -07:00
Christian Bundy 6eb229dfc1
Add inbox to see latest message from private threads 2019-10-03 12:39:22 -07:00
Christian Bundy 24c1ff79ee
Change maximum posts-per-page size to 128 2019-10-02 15:41:43 -07:00
Christian Bundy 4d6a4a3fb3
Fix blob behavior on 404 2019-10-01 13:44:31 -07:00
Christian Bundy a0afcbfcfd
Fix extra scrollbar appearing on `<body>` 2019-10-01 09:41:30 -07:00
Christian Bundy fddccfc40f
Fix incorrect default theme in text 2019-09-30 18:20:28 -07:00
Christian Bundy 2a8c5b5dd6
Remove `text-align: center` from Markdown mention 2019-09-30 18:13:41 -07:00
Christian Bundy 0caa2144cb
Change default theme to unikitty-light 2019-09-30 18:11:46 -07:00
Christian Bundy 0ce4b971af
Remove console.log debug statements 2019-09-30 17:49:37 -07:00
Christian Bundy 0467db81d2
Use pull-paramap to speed up like page 2019-09-30 17:46:04 -07:00
Christian Bundy f5e2fda069
Add likes page 2019-09-30 17:38:49 -07:00
Christian Bundy f350cd6f6f
Fix `:last-child` bug on message margins 2019-09-30 15:33:42 -07:00
Christian Bundy ad408a7cea
Add theme shout-outs in theme selection page 2019-09-30 14:55:53 -07:00
Christian Bundy 23d615649b
Fix foreground color to increase contrast 2019-09-30 14:49:55 -07:00
Christian Bundy ad9f8bb777
Fix lopsided select padding 2019-09-30 14:48:32 -07:00
Christian Bundy d34226f8a4
Add theme to scrollbars, `<button>`, and `<select>` elements 2019-09-30 14:45:34 -07:00
Christian Bundy df239d1fb5
Fix margin styles causing layout problems 2019-09-30 12:39:24 -07:00
Christian Bundy 7664438a10
Change links to rename "context" and "raw" to "link" and "json" 2019-09-30 12:34:59 -07:00
Christian Bundy 603c211eb6
Add note about the default theme 2019-09-30 11:20:48 -07:00
Christian Bundy 009ccf4706
Change styles to remove duplication 2019-09-30 11:18:29 -07:00
Christian Bundy 88aeac73fd
Add template preview to status page 2019-09-30 10:38:03 -07:00
Christian Bundy 6ba4cd7c0d
Change audio width to 100% of container 2019-09-30 08:43:24 -07:00
Christian Bundy c2dcdb94e0
Fix textarea font color 2019-09-29 19:35:53 -07:00
Christian Bundy 0593635ca3
Add all supported base16 themes 2019-09-29 19:00:30 -07:00
Christian Bundy 8f0ed9b872
Add lots of shared base16 + highlight.js themes 2019-09-29 16:06:41 -07:00
Christian Bundy 2a4d2ea85c
Change border width to be 2px 2019-09-29 14:29:59 -07:00
Christian Bundy b2c900a0e6
Change theme chooser to auto-select current theme 2019-09-29 10:58:02 -07:00
Christian Bundy b652ba08b7
Add basic theme chooser 2019-09-29 10:52:51 -07:00
Christian Bundy 8efaa37bc1
Add solarized light theme to CSS 2019-09-29 09:03:43 -07:00
Christian Bundy fd55969db9
Add thread schema module to confirm assumptions about replies 2019-09-28 15:53:23 -07:00
Christian Bundy 4fd95918c9
Reduce size of Markdown link on profile page 2019-09-27 11:53:43 -07:00
Christian Bundy fe5791e98c
Change thread indentation to be more consistent 2019-09-27 11:40:00 -07:00
Christian Bundy 819986c35b
Remove cache code to prevent empty images being cached 2019-09-27 10:37:50 -07:00
Christian Bundy 4d55a6690f
Switch back to light mode, keep dark mode in repo 2019-09-27 10:37:24 -07:00
Christian Bundy 029b4de21a
Change styles to dark mode 2019-09-27 09:50:37 -07:00
Christian Bundy ba51ed3e1d
Add better reply-all view showing root message 2019-09-26 23:36:47 -07:00
Christian Bundy 92cf6f04ce
Fix public view to avoid showing private messages 2019-09-26 20:27:03 -07:00
Christian Bundy 5f6cc68dbf
Change button hover cursor to pointer 2019-09-26 20:19:54 -07:00
Christian Bundy c349a29601
Add reply-all feature for non-forky replies 2019-09-26 17:19:18 -07:00
Christian Bundy bccae0449a
Change `<code>` style to remove red highlight 2019-09-26 15:11:44 -07:00
Christian Bundy fc9dc2e0e0
Fix image URL to reduce maximum size 2019-09-26 10:50:13 -07:00
Christian Bundy 5e257c4adc
Fix image link bug with ssb-markdown upgrade 2019-09-26 10:18:34 -07:00
Christian Bundy de41a6827a
Change textarea to use consistent styling 2019-09-26 09:57:03 -07:00
Christian Bundy 82e74da571
Add stylelint-config-standard for more opinionated CSS 2019-09-25 19:07:38 -07:00
Christian Bundy d91969365d
Add stylelint to ensure CSS styles aren't broken 2019-09-25 19:05:41 -07:00
Christian Bundy 8a66f7647f
Change textarea to increase height on `:focus` 2019-09-25 18:39:30 -07:00
Christian Bundy 5242640bce
Change source to use shorter lines and keep linter happy 2019-09-25 17:19:55 -07:00
Christian Bundy aa8e0780f3
Remove option to publicly reply to private messages 2019-09-25 13:13:26 -07:00
Christian Bundy face906558
Change public view to contain compose form 2019-09-25 12:48:44 -07:00
Christian Bundy 6442e1b87c
Fix `<body>` margin on low-width screens 2019-09-25 12:35:45 -07:00
Christian Bundy 88b96a386d
Fix crash from messages with invalid timestamps 2019-09-25 11:47:41 -07:00
Christian Bundy e39fffd1e2
Change post model to reduce duplicate code 2019-09-25 11:46:43 -07:00
Christian Bundy 3bfdea7363
Fix blob want() code breaking HTTP requests
The blob.want() command is an asynchronous function that waits for the
blob by default, which isn't what we wanted. This was hanging HTTP
threads and slowing the server down a bunch.
2019-09-25 11:23:41 -07:00
Christian Bundy f233ec7b02
Change <pre> styles to lighter background 2019-09-24 15:06:58 -07:00
Christian Bundy b6c4d202f3
Fix Markdown mention code by removing new styles 2019-09-24 15:04:04 -07:00
Christian Bundy 7ebc63eb7f
Change <pre> styles for legibility 2019-09-24 14:51:15 -07:00
Christian Bundy 5140301cd7
Add readme accessible from web app 2019-09-24 14:22:31 -07:00
Christian Bundy eb9aba026c
Change <nav> margin size for better spacing 2019-09-24 13:54:53 -07:00
Christian Bundy f719f27f39
Add support for raw blob requests 2019-09-23 15:37:26 -07:00
Christian Bundy 3e9cc6b5e1
Change debug messages for blob get/want 2019-09-23 09:02:57 -07:00
Christian Bundy b18fdab014
Add feature to want() missing blobs 2019-09-23 08:45:18 -07:00
Christian Bundy 89dbed8812
Fix mentions so they don't include own posts 2019-09-19 13:33:37 -07:00
Christian Bundy 5d8560f881
Refactor nav into unordered list 2019-09-19 13:31:47 -07:00
Christian Bundy 28f62c8360
Add new compose view for writing root messages 2019-09-19 13:18:48 -07:00
Christian Bundy 270f62f57a
Refactor to remove dependence on ~/.ssb/manifest.json 2019-09-19 13:18:12 -07:00
Christian Bundy cd76598ca1
Add new source link to point to issue templates 2019-09-17 16:08:54 -07:00
Christian Bundy 9d60e2aabc
Add maximum image height for 4:3 ratio 2019-09-16 18:10:49 -07:00
Christian Bundy d5eb21396d
Refactor to remove computed property names 2019-09-16 16:18:38 -07:00
Christian Bundy 4a9361a8b6
Refactor SSB distro into @fraction/flotilla module 2019-09-16 13:41:20 -07:00
Christian Bundy 9c3c689c26
Remove profile photo alt text 2019-09-16 12:53:51 -07:00
Christian Bundy 100dd781f2
Add more details to content warning colors 2019-08-14 19:07:40 -07:00
Christian Bundy fb047f7e60
Refactor code to be more consistent 2019-08-14 18:37:43 -07:00
Christian Bundy 27f237ce75
Add placeholder image for missing avatars 2019-08-14 14:54:26 -07:00
Christian Bundy 2e43805a5d
Upgrade JavaScript module dependencies 2019-08-14 13:30:24 -07:00
Christian Bundy f5962ad117
Add auto-filled value for reply textarea 2019-08-14 12:59:08 -07:00
Christian Bundy d8001e6d76
Add mentions to message and Markdown to profiles 2019-08-14 11:44:25 -07:00
Christian Bundy 5e63ad6216
Add JSON output for unknown root messages 2019-08-13 19:20:10 -07:00
Christian Bundy 3b4fbc8bf9
Add image page to return smaller images for UI 2019-08-13 17:45:14 -07:00
Christian Bundy 5f0e2d5cd1
Add syntax highlighting to status JSON 2019-08-13 16:30:43 -07:00
Christian Bundy ef8fa0fe7c
Add full error output instead of default text 2019-08-13 14:32:31 -07:00
Christian Bundy 0997a3b5b3
Change cursor when hovering over `<summary>` 2019-08-13 14:31:51 -07:00
Christian Bundy 243c0ac14c
Add support for content warnings 2019-08-13 13:53:11 -07:00
Christian Bundy 590c4bccb7
Change order of plugins to fix backlinks bug 2019-08-13 13:19:10 -07:00
Christian Bundy 37d3cd590c
Fix bug where dependencies were parsing argv 2019-08-13 10:32:55 -07:00
Christian Bundy e87cbd37d0
Fix bug where private messages were liked publicly 2019-08-12 14:17:04 -07:00
Christian Bundy d6f4959ec9
Add simple reply mechanism for basic replies 2019-08-07 18:49:23 -07:00
Christian Bundy b8384eea68
Add links to reply and reply all pages 2019-08-06 19:44:09 -07:00
Christian Bundy 6f37644556
Add "use strict" pragma to JS files 2019-07-28 13:49:01 -07:00
Christian Bundy 6b67754f7c
Add more info to status page 2019-07-26 10:51:10 -07:00
Christian Bundy 136df89836
Add support for viewing mentions 2019-07-26 10:06:47 -07:00
Christian Bundy 833275013e
Fix code to avoid async promise executors 2019-07-26 09:58:28 -07:00
Christian Bundy 3043e2c5ce
Fix more linter issues from standard@13 2019-07-26 09:48:41 -07:00
Christian Bundy c3da07a389
Fix linter issues with extra whitespace 2019-07-03 11:30:51 -07:00
Christian Bundy 353947ecca
Refactor to reuse connection handle 2019-07-03 11:21:47 -07:00
Christian Bundy 1d9c61f066
Refactor to parallelize promises 2019-07-03 11:03:10 -07:00
Christian Bundy 1341e4beae
Refactor to reduce whoami calls 2019-07-03 10:53:11 -07:00
Christian Bundy c91b74eb8f
Refactor directories, add docs, fix profile header 2019-07-02 20:52:49 -07:00
Christian Bundy 9c68e96789
Refactor reference check into one place 2019-07-01 08:11:35 -07:00
Christian Bundy cd4ccf3848
Fix replication by adding more plugins (?!?!) 2019-07-01 08:07:14 -07:00
Christian Bundy fcd627ca64
Refactor to isolate `ctx` usage in one place 2019-06-30 16:35:29 -07:00
Christian Bundy e88ead5edc
Change timestamp to clarify time since message 2019-06-30 13:56:27 -07:00
Christian Bundy 29629945ee
Change blockquote style to reduce vertical space 2019-06-30 13:44:36 -07:00
Christian Bundy fced88dcbd
Fix bug where --host and --port don't work
See: https://github.com/ssbc/ssb-config/issues/56
2019-06-30 13:37:58 -07:00
Christian Bundy 888d0152d6
Change message stroke width to be smaller 2019-06-30 13:08:53 -07:00
Christian Bundy a7cd6e1533
Change debug output to use debug module 2019-06-30 13:08:31 -07:00
Christian Bundy da61a18ccc
Change styles and restyle with CSS variables 2019-06-30 12:59:32 -07:00
Christian Bundy bacdc00372
Add debug option to CLI 2019-06-30 11:56:20 -07:00
Christian Bundy 82a96c4644
Fix inconsistent body width 2019-06-29 14:19:25 -07:00
Christian Bundy c0464a8938
Handle error where post parent cannot be found 2019-06-29 14:14:09 -07:00
Christian Bundy dfe3a2eb8e
Fix accessibility issues found with crawler 2019-06-29 13:24:44 -07:00
Christian Bundy 5884790a9e
Fix syntax highlighter with require-style 2019-06-29 12:56:59 -07:00
Christian Bundy 57ec8355b7
Add highlight for thread "target"
I don't think "target" is the right word to use, but when you click a
message and you're taken to the thread I think it's useful to actually
highlight which message you selected.
2019-06-29 12:06:47 -07:00
Christian Bundy a9f4ca30d6
Add command-line interface and --no-open option 2019-06-29 11:44:49 -07:00
Christian Bundy e803b4486b
Change link redirect to center messsage footer
Previously when you liked a post it would redirect you back to the
previous page with the top of the post at the top of the screen. This
was jarring and weird and I didn't like it at all.

This change makes it so that the footer of the message you liked
appears in the center of the screen, which is (in my experience) much
closer to where it usually is when you click the like button.

Before: when you click the like button the scroll resets so the top of the
message is at the top of the screen.

After: when you click the like button the scroll resets so that the footer of
the message is in the center of the screen.

Wanted: a way to redirect back to the original page *without* resetting the
scroll position.
2019-06-29 11:21:26 -07:00
Christian Bundy 098a1ba563
Fix subthread logic bug with incorrect depth 2019-06-29 10:19:02 -07:00
Christian Bundy 01b4a54954
Add spartan status page for simple debugging 2019-06-28 19:55:36 -07:00
Christian Bundy 02e1d9dd7b
Add nested replies to thread view 2019-06-28 13:55:05 -07:00
Christian Bundy 1c491d73c1
Add standalone support if ssb-client can't connect 2019-06-28 09:13:35 -07:00
Christian Bundy 87969f1c6d
Refactor `<ol>` and `<ol>` left padding 2019-06-27 19:41:33 -07:00
Christian Bundy 936b73dc64
Fix raw link broken from hyperaxe rewrite 2019-06-27 15:10:17 -07:00
Christian Bundy 3a11162455
Fix ssb-msgs broken from mechanical edit 2019-06-27 15:07:09 -07:00
Christian Bundy 3e353f312c
Add contributing guidelines 2019-06-27 15:04:54 -07:00
Christian Bundy 762cc50f9a
Add cspell and use real English words 2019-06-27 14:54:32 -07:00
Christian Bundy bebb854cec
Fix weird sentence in src readme 2019-06-27 13:42:01 -07:00
Christian Bundy e60a999a30
Fix indentation in src readme 2019-06-27 13:40:28 -07:00
Christian Bundy 1f6a8c2bed
Refactor to use hyperaxe instead of EJS 2019-06-27 13:36:43 -07:00
Christian Bundy a1b126ec45
Fix logic in configure() 2019-06-27 00:00:40 -07:00
Christian Bundy e81a5a116c
Add source readme 2019-06-26 23:40:38 -07:00
Christian Bundy 400477d5c1
Refactor dependency graph to create layers
I was playing around with Madge and noticed that the previous dependency
graph looked almost *exactly* like a bowl of spaghetti I had last week.
After a few hours on Wikipedia I got interested in refactoring the code
so that each `require()` imported a module from one level deeper into
the tree.

I don't know if this is actually useful, but it's better than spaghetti.

In the future I think I should probably refactor the database
convenience functions out of the "models" since they really aren't
models but it's the best name I could come up with for what they are and
how they're used. This will probably go through some more evolution when
I rip out EJS and replace it with something much smaller.
2019-06-26 22:25:13 -07:00