This just generalizes PdfDetail to also recognize text/plain. It has
been renamed BrowserViewDetail to reflect its more general nature.
Adding more formats will now be trivial: just add entries to the
`supportedMimeTypes` array.
Summary:
Implement audio player using web ui.
Add new blob aspect for audio files.
Test Plan:
1. Upload browser compatible audio to perkeep
2. Navigate to web UI
3. Open the audio blob's detail page
4. Play audio
Before:
Audio cannot be played using web ui
After:
Compatible audio can be played and paused from the detail page
Audio title and artist are shown if available
Issue: #202
Change-Id: Icd450aaa16e9e622a677c23f4f1f699784453dbc
Summary:
Implement audio preview using web ui.
Add new blob handler for audio files.
Test Plan:
1. Upload browser compatible audio to perkeep
2. Navigate to web UI
3. Play audio without leaving perkeep ui
4. Pause audio
Before:
Audio cannot be played using web ui
After:
Compatible audio can be visually identified by the volume icon instead of the default file icon.
Hovering over the audio blob shows a play button.
Click the play button to start playing the audio.
Click the pause button to stop playing the audio.
Issue: #202
Change-Id: Iab8ee4a339f44178992e11e02232d480cd534b3e
This change:
1) makes perkeep.org/server/perkeepd/ui/goui a module on its own, so that it
gets ignored by go mod with respect to perkeep.org. Because there's no reason it
should appear in perkeep.org/go.mod, as it is only used by gopherjs to rebuild
the web UI code.
2) updates a few of our dependencies to keep up with upstream changes (go get
-u, go mod tidy, go mod vendor).
3) readds manually (since go mod vendor removes them)
vendor/github.com/gopherjs/gopherjs (and its deps) as well as vendor/myitcv.io
because they are needed when one wants to rebuild the web UI.
As a result I think we can now drop dep, so it is done in this change as
well.
Change-Id: I155819163e15e214a6ba44bab2c19ae171d83d1b
Per the comment, this is pretty straightforward: just embed it in an
iframe
Tested in Firefox and Chromium.
Fixes#795
Change-Id: Ic9620ae974a4c6c562c769db4f2c0f76f22a4041
A working importer for the Instapaper service. The importer imports
bookmarks, full text articles, and highlights. A blob item handler for
Instapaper highlight permanodes is included to show summarized highlight
content from the server UI.
Also, this CL updates github.com/garyburd.com/go-auth to rev
bca2e7f09a178fd36b034107a00e2323bca6a82e in order to get support for
XAuth requests.
Fixes#1208
Change-Id: I72e0c40b245c7eec4a44bb475fcaa96a0ee9a1c5
The javascript code was taking into account the OmitAuthToken signal
that there should be no auth, but it hadn't been done in the gopherjs
code yet as well.
Fixes#1221
Change-Id: I3eda0cc12c99664739d6073cc1aeba1aeed8a88a
The ref: predicate was treated as a special case, to make it correspond
to navigating to a "blobRef URL", e.g.
http://localhost:3179/ui/sha224-b6a88695e3a9178d45fdfb1fa888939d5adc090f866aaa1d7b5ec3a5
However, we should not do that when the query is only for the prefix of
a blobRef, e.g. "ref:sha224-b6a88695".
This CL therefore adds a check to make sure we're in the presence of a
full blobRef before navigating to the special case.
Fixes#1119
Change-Id: Ib92b43adbb2316c1607d617eb03de132c38de85f
As well as the rectangle which was drawn to show the area corresponding
to the requested location.
The initial zoom is now only based on the location of the search
results.
As (the intended) side-effect, geocoding requests are not needed
anymore, since the map aspect does not need to know the coordinates of a
loc: request anymore. Which allowed to trim down the
server/perkeepd/ui/goui/geo pkg.
Updates #1115
Change-Id: I22983661fd482b652d8bf34a63fa88d7b7695d5e
to c126467f60eb25f8f27e5a981f32a87e3965053f
For acme tls-alpn-01 support.
And enable it in perkeepd.
Remove http-01 challenge support.
Fixes#1078 (by making it obsolote)
Change-Id: I45220b6269024a2ff7a181f69cf708869705dca7
to bf2c84553c7827a1cb6cecf19424fdb93b887d5b.
This is required per the change mentioned in
https://github.com/myitcv/react/issues/116#issuecomment-405631245.
Without this change, 'dep ensure' can't be run, unless the upstream
myitcv.io html is reverted/updated or dep fixes a few issues allowing
project-root calculations to be overridden.
Change-Id: I63ab98b8701dcea753d4e67828f47227801638be
The Mastodon importer uses the Mastodon API (implemented by Mastodon and
Pleroma) to import posts into Perkeep. The webui also now recognizes
Mastodon posts, and displays their text.
The importer does some things differently than most other Perkeep
importers, since it needs to be able to import from arbitrary URLs. It
does not share any credentials globally between all accounts, to enable
use of multiple accounts on multiple servers.
This also introduces new dependencies of go-mastodon and linkheader
(both under the MIT license).
Resolves#1183
Change-Id: I9a532bbd5720992482fc758f14286c11d5bf6ef0
-busy/munching pudgy is replaced with a "dancing" keepy
-sad pudgy replaced by a sad keepy
-everywhere else is normal keepy (which is one sprite of the dancing
keepy animation)
-we still need an "interested" keepy for when the user is about to drop
something on the d&d area
-glitch embedy directory has not been removed yet, to keep the pudgy
animations technique as a reference for future work.
We also need to update the animation in the GCE launcher.
Updates #1177
Change-Id: I95fe53cb51f93b8f498c8f026eddc07285c20db7
This change:
-on startup, makes perkeepd log instruction about the Google geocoding
key, if it is not found in Perkeep configuration directory.
-in the web UI, makes search query errors from the search session show
up in a dialog, instead of just being logged in the javascript console.
Among other things, it will allow users to be more readily informed
that their loc: queries are failing because they don't have a geocode
key setup.
According to the Google geocoding team, we should not share a geocoding
API key (too risky/expensive), and using an API key is the only way to
make geocoding requests. So we have to let users deal with it themselves
unfortunately.
Updates #1115Fixes#1116
Change-Id: I461e7f06a04ffd874678ab8233185999024cb3d8
This change adds an 'Import share' entry in the main menu bar. This
entry creates a dialog that allows the user to enter the URL of a share
claim (the "shareURL" in the following).
That shareURL is sent to the server, which takes care of importing all
the blobs transitively reachable (directory children, and files
contents) through the share claim.
The web UI also keeps on polling the server to update the dialog on the
state of the importing process.
To handle the posted shareURL, and the polling, the server now has a new
HTTP handler: the shareImporter, installed at /ui/importshare.
In a future CL, another approach would be to integrate this handler as
yet another importer. But it would probably be better to do so once we have
a way for importers to report on their progress at any time. For now this
importer has its own dialog to do so, similar to the one for uploads.
Change-Id: I94cd03f834d7d1e9f4ec5c016ffdf16d911856c5
In order to facilitate manual recovery in severe scenarios, the
--keep-going flag will make the server come back online even when there
are index or recovery errors. This will allow further querying on the
unhealthy server to identify missing data or to extract data for
migration to a new/healthy instance.
Fixes#1166
Change-Id: I4153905757d9e7d8014780dd5660a862cb8ba1ab
The old directory aspect (directory_detail.js), was done before the
current (React-based) look and layout of the web UI. It is still
functional, but does not look very good, and does not match the look of
the rest of the web UI.
Therefore, this change adds a new directory layout, with a
blob container approach and layout similar to the one for permanode
sets, and replaces the old one as the default Directory aspect.
It seems to have performance issues (slow loads), but I think it's
better to enable it now, rather than wait again for many months to
land it. Especially if it forces us to address said performance issues.
If it's too bad and users want the old one in the meantime, it should be
easy to re-enable the old as the default.
Change-Id: Ieb0cde8290f0a058008cdc73b596ad1a330ded1a
This change has two major parts, which were interwoven enough to do
them in one change:
1) make serverinit.Config fully opaque, in prep for TOML configs #1134
2) shrink the massive server/perkeepd/camlistored.go file. It was out
of control and had a bunch of code that better belonged
elsewhere. This change moves a few hundred lines of code from
camlistored.go into more logical places: internal/osutil/gce for
GCE stuff, serverinit for config stuff (KeyRingAndId), etc.
I also added a TODO to make it possible to compile perkeepd without
any GCE stuff, which I saw as a possible and worthy goal only after
moving everything away.
Updates #1134
Change-Id: Iea6f84c5aca9c70b97806f4a201ec35e0f630e3b
test/integration: don't listen on file descriptors.
make.go: unrelated, but options to make it much faster.
internal/images: t.Skip on HEIC dependency failures
Fixes#1140
Updates golang/go#25210
Change-Id: I8092155411826d6ed1f8d85230b753d1369044af
We can resurrect later. Or more likely: we'll support perkeepd
being configured (#1134) as only a signing server.
Change-Id: I19278e107baf02864c085421327392a6ffbb3364
Since we renamed Camlistore to Perkeep, we also renamed the docker image
deployed by the launcher, as well as the systemd service that this
docker image runs in.
This means existing users on GCE do not get updates when they restart
the service or reset their instance.
This change adds a check and a function that allows perkeepd to fix the
user-data metadata of its own GCE instance, which is where the names
mentioned above are defined.
Therefore, if we deploy a new camlistore docker image containing that
code, the existing users should get a server capable of self-fixing its
own instance into a perkeep one.
Change-Id: I9ff66f684f0ad647d15e5fcdd08d26c524a18329
This change makes the Permanode aspect come before the Map in the list
of aspects. That way, if there is no specific aspect selected for a
permanode, the default one should then be Permanode rather than Map.
I'm not sure it's not going to break a specific workflow though.
Change-Id: I3d54dc84c7f4fb313d8ed0f7285db69b4ecbf366