5 Commits

Author SHA1 Message Date
12814be5e1 remove doctests
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-25 00:59:19 -05:00
482a3902b5 bump version 2023-02-14 01:06:11 -05:00
2fa1105f40 style 大一點 2023-02-14 01:04:15 -05:00
df44be2b1b improve logger
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-07 00:18:08 -05:00
6e635d1b30 improve ci
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-05 10:38:57 -05:00
26 changed files with 365 additions and 416 deletions

View File

@ -13,20 +13,24 @@ steps:
mount:
- _build
- deps
- assets/node_modules/
- .npm
- .mix
- name: test
image: elixir:1.14.1-alpine
environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
HOST: testing.example.tld
MIX_HOME: /drone/src/.mix
MIX_ARCHIVES: /drone/src/.mix/archives
MIX_ENV: test
commands:
- apk add --no-cache build-base npm git python3
- mix local.rebar --force
- mix local.hex --force
- apk add --no-cache build-base npm git
- mix local.rebar --force --if-missing
- mix local.hex --force --if-missing
- mix deps.get
- mix deps.compile
- npm --prefix ./assets ci --progress=false --no-audit --loglevel=error
- npm set cache .npm
- npm --prefix ./assets ci --no-audit --prefer-offline
- npm run --prefix ./assets deploy
- mix do phx.digest, gettext.extract
- mix test.all
@ -76,7 +80,8 @@ steps:
mount:
- _build
- deps
- assets/node_modules/
- .npm
- .mix
services:
- name: database

View File

@ -1,3 +1,3 @@
elixir 1.14.1-otp-25
erlang 25.1.2
nodejs 16.18.0
nodejs 18.9.1

View File

@ -11,6 +11,7 @@
}
.checkbox {
@apply bg-primary-900;
-ms-transform: scale(1.5);
-moz-transform: scale(1.5);
-webkit-transform: scale(1.5);
@ -26,25 +27,31 @@
.btn {
@apply focus:outline-none px-4 py-2 rounded-lg;
@apply shadow-sm focus:shadow-lg;
@apply shadow-sm active:shadow-lg;
@apply border;
@apply transition-all duration-300 ease-in-out;
}
.btn-primary {
@apply bg-primary-900 focus:bg-primary-900 active:bg-primary-800;
@apply bg-primary-900 active:bg-primary-800;
@apply border-primary-900 hover:border-primary-800 active:border-primary-700;
@apply text-primary-400;
}
.btn-secondary {
@apply bg-primary-800 active:bg-primary-700;
@apply border-primary-800 hover:border-primary-700 active:border-primary-600;
@apply text-primary-400;
}
.btn-alert {
@apply bg-red-700 focus:bg-red-800 active:bg-red-900;
@apply border-red-700 focus:border-red-800 active:border-red-900;
@apply bg-red-700 active:bg-red-900;
@apply border-red-700 active:border-red-900;
@apply text-primary-300;
}
.hr {
@apply mx-auto border border-primary-600 w-full max-w-2xl;
@apply mx-auto border border-primary-600 w-full max-w-3xl;
}
.link {

View File

@ -3,8 +3,8 @@
"description": " ",
"license": "MIT",
"engines": {
"node": "18.12.1",
"npm": "8.19.2"
"node": "v18.9.1",
"npm": "8.10.0"
},
"scripts": {
"deploy": "NODE_ENV=production webpack --mode production",

View File

@ -1,3 +1,7 @@
# v0.1.9
- Improve server log
- Style 大一點
# v0.1.8
- Fix bug with public registration
- Improve templates

View File

@ -16,9 +16,8 @@ defmodule Memex.Accounts do
## Examples
iex> register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %User{} <- get_user_by_email("foo@example.com"), do: :passed
:passed
iex> get_user_by_email("foo@example.com")
%User{}
iex> get_user_by_email("unknown@example.com")
nil
@ -34,9 +33,8 @@ defmodule Memex.Accounts do
## Examples
iex> register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %User{} <- get_user_by_email_and_password("foo@example.com", "valid_password"), do: :passed
:passed
iex> get_user_by_email_and_password("foo@example.com", "valid_password")
%User{}
iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
nil
@ -57,15 +55,14 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> get_user!(user.id)
iex> get_user!(user_id)
user
> get_user!()
iex> get_user!()
** (Ecto.NoResultsError)
"""
@spec get_user!(User.t()) :: User.t()
@spec get_user!(User.id()) :: User.t()
def get_user!(id) do
Repo.get!(User, id)
end
@ -75,10 +72,8 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user1} = register_user(%{email: "foo1@example.com", password: "valid_password"})
iex> {:ok, user2} = register_user(%{email: "foo2@example.com", password: "valid_password"})
iex> with %{admin: [^user1], user: [^user2]} <- list_all_users_by_role(user1), do: :passed
:passed
iex> list_all_users_by_role(user1)
%{admin: [%User{role: :admin}], user: [%User{role: :user}]}
"""
@spec list_all_users_by_role(User.t()) :: %{User.role() => [User.t()]}
@ -91,9 +86,8 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with [^user] <- list_users_by_role(:admin), do: :passed
:passed
iex> list_users_by_role(:admin)
[%User{role: :admin}]
"""
@spec list_users_by_role(:admin) :: [User.t()]
@ -108,13 +102,11 @@ defmodule Memex.Accounts do
## Examples
iex> with {:ok, %User{email: "foo@example.com"}} <-
...> register_user(%{email: "foo@example.com", password: "valid_password"}),
...> do: :passed
:passed
iex> register_user(%{email: "foo@example.com", password: "valid_password"})
{:ok, %User{email: "foo@example.com"}}
iex> with {:error, %Changeset{}} <- register_user(%{email: "foo@example"}), do: :passed
:passed
iex> register_user(%{email: "foo@example"})
{:error, %Changeset{}}
"""
@spec register_user(attrs :: map()) ::
@ -149,11 +141,11 @@ defmodule Memex.Accounts do
## Examples
iex> with %Changeset{} <- change_user_registration(), do: :passed
:passed
iex> change_user_registration()
%Changeset{}
iex> with %Changeset{} <- change_user_registration(%{password: "hi"}), do: :passed
:passed
iex> change_user_registration(%{password: "hi"}
%Changeset{}
"""
@spec change_user_registration() :: User.changeset()
@ -169,8 +161,8 @@ defmodule Memex.Accounts do
## Examples
iex> with %Changeset{} <- change_user_email(%User{email: "foo@example.com"}), do: :passed
:passed
iex> change_user_email(%User{email: "foo@example.com"})
%Changeset{}
"""
@spec change_user_email(User.t()) :: User.changeset()
@ -184,8 +176,8 @@ defmodule Memex.Accounts do
## Examples
iex> with %Changeset{} <- change_user_role(%User{}, :user), do: :passed
:passed
iex> change_user_role(%User{}, :user)
%Changeset{}
"""
@spec change_user_role(User.t(), User.role()) :: User.changeset()
@ -199,17 +191,11 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:ok, %User{}} <-
...> apply_user_email(user, "valid_password", %{email: "new_email@account.com"}),
...> do: :passed
:passed
iex> apply_user_email(user, "valid_password", %{email: "new_email@account.com"})
{:ok, %User{}}
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:error, %Changeset{}} <-
...> apply_user_email(user, "invalid password", %{email: "new_email@account"}),
...> do: :passed
:passed
iex> apply_user_email(user, "invalid password", %{email: "new_email@account"})
{:error, %Changeset{}}
"""
@spec apply_user_email(User.t(), email :: String.t(), attrs :: map()) ::
@ -254,12 +240,8 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %Oban.Job{
...> args: %{email: :update_email, user_id: ^user_id, attrs: %{url: "example url"}}
...> } <- deliver_update_email_instructions(user, "new_foo@example.com", fn _token -> "example url" end),
...> do: :passed
:passed
iex> deliver_update_email_instructions(user, "new_foo@example.com", fn _token -> "example url" end)
%Oban.Job{args: %{email: :update_email, user_id: ^user_id, attrs: %{url: "example url"}}}
"""
@spec deliver_update_email_instructions(User.t(), current_email :: String.t(), function) ::
@ -276,8 +258,8 @@ defmodule Memex.Accounts do
## Examples
iex> with %Changeset{} <- change_user_password(%User{}), do: :passed
:passed
iex> change_user_password(%User{})
%Changeset{}
"""
@spec change_user_password(User.t(), attrs :: map()) :: User.changeset()
@ -290,20 +272,14 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:ok, %User{}} <-
...> reset_user_password(user, %{
...> password: "new password",
...> password_confirmation: "new password"
...> }),
...> do: :passed
:passed
iex> reset_user_password(user, %{
...> password: "new password",
...> password_confirmation: "new password"
...> })
{:ok, %User{}}
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:error, %Changeset{}} <-
...> update_user_password(user, "invalid password", %{password: "123"}),
...> do: :passed
:passed
iex> update_user_password(user, "invalid password", %{password: "123"})
{:error, %Changeset{}}
"""
@spec update_user_password(User.t(), String.t(), attrs :: map()) ::
@ -329,8 +305,8 @@ defmodule Memex.Accounts do
## Examples
iex> with %Changeset{} <- change_user_locale(%User{}), do: :passed
:passed
iex> change_user_locale(%User{})
%Changeset{}
"""
@spec change_user_locale(User.t()) :: User.changeset()
@ -343,9 +319,8 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:ok, %User{}} <- update_user_locale(user, "en_US"), do: :passed
:passed
iex> update_user_locale(user, "en_US")
{:ok, %User{}}
"""
@spec update_user_locale(User.t(), locale :: String.t()) ::
@ -359,13 +334,11 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %User{} <- delete_user!(user, %User{id: 123, role: :admin}), do: :passed
:passed
iex> delete_user!(user, %User{id: 123, role: :admin})
%User{}
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %User{} <- delete_user!(user, user), do: :passed
:passed
iex> delete_user!(user, user)
%User{}
"""
@spec delete_user!(user_to_delete :: User.t(), User.t()) :: User.t()
@ -421,11 +394,10 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> is_admin?(user)
iex> is_admin?(%User{role: :admin})
true
iex> is_admin?(%User{id: Ecto.UUID.generate()})
iex> is_admin?(%User{})
false
"""
@ -439,8 +411,7 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> is_already_admin?(user)
iex> is_already_admin?(%User{role: :admin})
true
iex> is_already_admin?(%User{})
@ -458,15 +429,9 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %Oban.Job{
...> args: %{email: :welcome, user_id: ^user_id, attrs: %{url: "example url"}}
...> } <- deliver_user_confirmation_instructions(user, fn _token -> "example url" end),
...> do: :passed
:passed
iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
%Oban.Job{args: %{email: :welcome, user_id: ^user_id, attrs: %{url: "example url"}}}
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> user = user |> User.confirm_changeset() |> Repo.update!()
iex> deliver_user_confirmation_instructions(user, fn _token -> "example url" end)
{:error, :already_confirmed}
@ -514,12 +479,8 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, %{id: user_id} = user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with %Oban.Job{args: %{
...> email: :reset_password, user_id: ^user_id, attrs: %{url: "example url"}}
...> } <- deliver_user_reset_password_instructions(user, fn _token -> "example url" end),
...> do: :passed
:passed
iex> deliver_user_reset_password_instructions(user, fn _token -> "example url" end)
%Oban.Job{args: %{email: :reset_password, user_id: ^user_id, attrs: %{url: "example url"}}}
"""
@spec deliver_user_reset_password_instructions(User.t(), function()) :: Job.t()
@ -535,11 +496,8 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> {encoded_token, user_token} = UserToken.build_email_token(user, "reset_password")
iex> Repo.insert!(user_token)
iex> with %User{} <- get_user_by_reset_password_token(encoded_token), do: :passed
:passed
iex> get_user_by_reset_password_token(encoded_token)
%User{}
iex> get_user_by_reset_password_token("invalidtoken")
nil
@ -560,20 +518,14 @@ defmodule Memex.Accounts do
## Examples
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:ok, %User{}} <-
...> reset_user_password(user, %{
...> password: "new password",
...> password_confirmation: "new password"
...> }),
...> do: :passed
:passed
iex> reset_user_password(user, %{
...> password: "new password",
...> password_confirmation: "new password"
...> })
{:ok, %User{}}
iex> {:ok, user} = register_user(%{email: "foo@example.com", password: "valid_password"})
iex> with {:error, %Changeset{}} <-
...> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"}),
...> do: :passed
:passed
iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
{:error, %Changeset{}}
"""
@spec reset_user_password(User.t(), attrs :: map()) ::

View File

@ -4,7 +4,7 @@ defmodule Memex.Application do
@moduledoc false
use Application
alias Memex.ErrorReporter
alias Memex.Logger
@impl true
def start(_type, _args) do
@ -33,7 +33,7 @@ defmodule Memex.Application do
[:oban, :job, :start],
[:oban, :job, :stop]
],
&ErrorReporter.handle_event/4,
&Logger.handle_event/4,
[]
)

View File

@ -1,4 +1,4 @@
defmodule Memex.ErrorReporter do
defmodule Memex.Logger do
@moduledoc """
Custom logger for telemetry events
@ -12,41 +12,47 @@ defmodule Memex.ErrorReporter do
data =
get_oban_job_data(meta, measure)
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|> pretty_encode()
Logger.error(meta.reason, data: pretty_encode(data))
Logger.error(meta.reason, data: data)
end
def handle_event([:oban, :job, :start], measure, meta, _config) do
Logger.info("Started oban job", data: get_oban_job_data(meta, measure) |> pretty_encode())
data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Started oban job", data: data)
end
def handle_event([:oban, :job, :stop], measure, meta, _config) do
Logger.info("Finished oban job", data: get_oban_job_data(meta, measure) |> pretty_encode())
data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Finished oban job", data: data)
end
def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do
data =
get_oban_job_data(meta, measure)
|> Map.put(:event, unhandled_event)
|> pretty_encode()
Logger.warning("Unhandled oban job event", data: pretty_encode(data))
Logger.warning("Unhandled oban job event", data: data)
end
def handle_event(unhandled_event, measure, meta, config) do
data = %{
event: unhandled_event,
meta: meta,
measurements: measure,
config: config
}
data =
pretty_encode(%{
event: unhandled_event,
meta: meta,
measurements: measure,
config: config
})
Logger.warning("Unhandled telemetry event", data: pretty_encode(data))
Logger.warning("Unhandled telemetry event", data: data)
end
defp get_oban_job_data(%{job: job}, measure) do
job
|> Map.take([:id, :args, :meta, :queue, :worker])
|> Map.merge(measure)
%{
job: job |> Map.take([:id, :args, :meta, :queue, :worker]),
measurements: measure
}
end
defp pretty_encode(data) do

View File

@ -19,7 +19,8 @@ defmodule MemexWeb.Components.InviteCard do
|> assign_new(:code_actions, fn -> [] end)
~H"""
<div class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4
<div class="px-8 py-4 flex flex-col justify-center items-center space-y-4
bg-primary-900
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out">
<h1 class="title text-xl">
@ -55,7 +56,8 @@ defmodule MemexWeb.Components.InviteCard do
<div class="flex flex-row flex-wrap justify-center items-center">
<code
id={"code-#{@invite.id}"}
class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all text-gray-100 bg-primary-800"
class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all
text-primary-400 bg-primary-800"
phx-no-format
><%= Routes.user_registration_url(Endpoint, :new, invite: @invite.token) %></code>
<%= render_slot(@code_actions) %>

View File

@ -9,7 +9,8 @@ defmodule MemexWeb.Components.UserCard do
~H"""
<div
id={"user-#{@user.id}"}
class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center text-center
class="px-8 py-4 flex flex-col justify-center items-center text-center
bg-primary-900
border border-gray-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out"
>

View File

@ -1,5 +1,5 @@
<div class="mx-auto flex flex-col justify-center items-stretch space-y-8 text-center max-w-3xl">
<h1 class="title text-primary-400 text-2xl">
<h1 class="title text-primary-400 text-xl text-left">
<%= gettext("faq") %>
</h1>
@ -7,16 +7,13 @@
<ul class="flex flex-col justify-center items-stretch space-y-8">
<li class="flex flex-col justify-center items-stretch space-y-2">
<b class="whitespace-nowrap">
<b class="whitespace-nowrap text-left">
<%= gettext("what is this?") %>
</b>
<p>
<%= gettext(
"this is a memex, used to document not just your notes, but also your perspectives and processes."
) %>
</p>
<p>
<%= gettext("some things that this memex is very loosely inspired by:") %>
</p>
@ -55,20 +52,16 @@
</li>
<li class="flex flex-col justify-center items-stretch space-y-2">
<b class="whitespace-nowrap">
<b class="whitespace-nowrap text-left">
<%= gettext("why split up into notes, contexts and pipelines?") %>
</b>
<p>
<%= gettext(
"i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
) %>
</p>
<p>
<%= gettext(
"i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
) %>
</p>
<p>
<%= gettext(
"finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
) %>
@ -76,15 +69,13 @@
</li>
<li class="flex flex-col justify-center items-stretch space-y-2">
<b class="whitespace-nowrap">
<b class="whitespace-nowrap text-left">
<%= gettext("what should my notes be like?") %>
</b>
<p>
<%= gettext(
"in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
) %>
</p>
<p>
<%= gettext(
"spoons? probably not. a particular brand of spoons that you really like? why not :)"
) %>
@ -92,13 +83,11 @@
</li>
<li class="flex flex-col justify-center items-stretch space-y-2">
<b class="whitespace-nowrap">
<b class="whitespace-nowrap text-left">
<%= gettext("what should my contexts be like?") %>
</b>
<p>
<%= gettext("in my opinion, contexts should be like single-topic blog posts.") %>
</p>
<p>
<%= gettext(
"for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
) %>
@ -106,15 +95,13 @@
</li>
<li class="flex flex-col justify-center items-stretch space-y-2">
<b class="whitespace-nowrap">
<b class="whitespace-nowrap text-left">
<%= gettext("what should my pipelines be like?") %>
</b>
<p>
<%= gettext(
"in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
) %>
</p>
<p>
<%= gettext(
"for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
) %>
@ -122,20 +109,16 @@
</li>
<li class="flex flex-col justify-center items-stretch space-y-2">
<b class="whitespace-nowrap">
<b class="whitespace-nowrap text-left">
<%= gettext("how many people should i invite?") %>
</b>
<p>
<%= gettext(
"while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
) %>
</p>
<p>
<%= gettext(
"note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
) %>
</p>
<p>
<%= gettext(
"so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
) %>

View File

@ -1,11 +1,9 @@
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-3xl">
<h1 class="title text-primary-400 text-2xl text-center">
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-lg">
<h1 class="title text-primary-400 text-xl">
<%= gettext("memEx") %>
</h1>
<hr class="hr" />
<ul class="flex flex-col space-y-4 text-center">
<ul class="flex flex-col space-y-4">
<li class="flex flex-col justify-center items-center space-y-2">
<b class="whitespace-nowrap">
<%= gettext("notes:") %>
@ -33,11 +31,8 @@
</p>
</li>
<li class="flex flex-col justify-center items-center space-y-2">
<.link
navigate={Routes.live_path(Endpoint, FaqLive)}
class="link title text-primary-400 text-lg"
>
<li class="flex flex-col justify-center items-center text-right space-y-2">
<.link navigate={Routes.live_path(Endpoint, FaqLive)} class="btn btn-primary">
<%= gettext("read more on how to use memEx") %>
</.link>
</li>
@ -45,7 +40,7 @@
<hr class="hr" />
<ul class="flex flex-col space-y-4 text-center">
<ul class="flex flex-col space-y-4">
<h2 class="title text-primary-400 text-lg">
<%= gettext("features") %>
</h2>
@ -80,31 +75,29 @@
<hr class="hr" />
<ul class="flex flex-col space-y-4 text-center">
<ul class="flex flex-col justify-center space-y-4">
<h2 class="title text-primary-400 text-lg">
<%= gettext("instance information") %>
</h2>
<li class="flex flex-col justify-center space-x-2">
<li class="flex flex-col justify-center items-center space-y-2">
<b>
<%= gettext("admins:") %>
</b>
<p>
<p class="flex flex-col justify-center items-center space-y-2">
<%= if @admins |> Enum.empty?() do %>
<.link href={Routes.user_registration_path(Endpoint, :new)} class="link">
<%= dgettext("prompts", "register to setup memEx") %>
</.link>
<% else %>
<div class="flex flex-wrap justify-center space-x-2">
<a :for={%{email: email} <- @admins} class="link" href={"mailto:#{email}"}>
<%= email %>
</a>
</div>
<a :for={%{email: email} <- @admins} class="link" href={"mailto:#{email}"}>
<%= email %>
</a>
<% end %>
</p>
</li>
<li class="flex flex-row justify-center space-x-2">
<li class="flex flex-col justify-center items-center space-y-2">
<b><%= gettext("registration:") %></b>
<p>
<%= case Application.get_env(:memex, Memex.Accounts)[:registration] do
@ -114,7 +107,7 @@
</p>
</li>
<li class="flex flex-row justify-center items-center space-x-2">
<li class="flex flex-col justify-center items-center space-y-2">
<b><%= gettext("version:") %></b>
<.link
href="https://gitea.bubbletea.dev/shibao/memEx/src/branch/stable/changelog.md"
@ -130,12 +123,12 @@
<hr class="hr" />
<ul class="flex flex-col space-y-2 text-center justify-center">
<ul class="flex flex-col space-y-2">
<h2 class="title text-primary-400 text-lg">
<%= gettext("get involved!") %>
<%= gettext("get involved") %>
</h2>
<li class="flex flex-col justify-center space-x-2">
<li class="flex flex-col justify-center items-center space-y-2">
<.link
href="https://gitea.bubbletea.dev/shibao/memEx"
class="flex flex-row justify-center items-center space-x-2 link"
@ -146,7 +139,7 @@
<i class="fas fa-md fa-code"></i>
</.link>
</li>
<li class="flex flex-col justify-center space-x-2">
<li class="flex flex-col justify-center items-center space-y-2">
<.link
href="https://weblate.bubbletea.dev/engage/memEx"
class="flex flex-row justify-center items-center space-x-2 link"
@ -157,7 +150,7 @@
<i class="fas fa-md fa-language"></i>
</.link>
</li>
<li class="flex flex-col justify-center space-x-2">
<li class="flex flex-col justify-center items-center space-y-2">
<.link
href="https://gitea.bubbletea.dev/shibao/memEx/issues/new"
class="flex flex-row justify-center items-center space-x-2 link"

View File

@ -1,5 +1,5 @@
<div class="w-full flex flex-col space-y-8 justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<div class="mx-auto flex flex-col justify-center items-stretch space-y-4 max-w-3xl">
<h1 class="title text-xl title-primary-500">
<%= gettext("invites") %>
</h1>
@ -8,25 +8,21 @@
<%= gettext("no invites 😔") %>
</h1>
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary ml-auto">
<%= dgettext("actions", "invite someone new!") %>
</.link>
<% else %>
<.link patch={Routes.invite_index_path(Endpoint, :new)} class="btn btn-primary">
<%= dgettext("actions", "create invite") %>
</.link>
<% end %>
<div class="w-full flex flex-row flex-wrap justify-center items-center">
<div class="flex flex-col justify-center items-stretch space-y-4">
<.invite_card :for={invite <- @invites} invite={invite} current_user={@current_user}>
<:code_actions>
<form phx-submit="copy_to_clipboard">
<button
type="submit"
class="mx-2 my-1 btn btn-primary"
class="mx-2 my-1 btn btn-secondary"
phx-click={JS.dispatch("memex:clipcopy", to: "#code-#{invite.id}")}
>
<%= dgettext("actions", "Copy to clipboard") %>
<%= dgettext("actions", "copy") %>
</button>
</form>
</:code_actions>
@ -55,7 +51,7 @@
<a
href="#"
class="btn btn-primary"
class="btn btn-secondary"
phx-click={if invite.disabled_at, do: "enable_invite", else: "disable_invite"}
phx-value-id={invite.id}
>
@ -65,7 +61,7 @@
<a
:if={invite.disabled_at |> is_nil() and not (invite.uses_left |> is_nil())}
href="#"
class="btn btn-primary"
class="btn btn-secondary"
phx-click="set_unlimited"
phx-value-id={invite.id}
data-confirm={
@ -77,16 +73,24 @@
<%= gettext("set unlimited") %>
</a>
</.invite_card>
<.link
:if={@invites != []}
patch={Routes.invite_index_path(Endpoint, :new)}
class="btn btn-primary ml-auto"
>
<%= dgettext("actions", "create invite") %>
</.link>
</div>
<%= unless @admins |> Enum.empty?() do %>
<hr class="hr" />
<h1 class="title text-2xl text-primary-400">
<h1 class="title text-xl text-primary-400">
<%= gettext("Admins") %>
</h1>
<div class="w-full flex flex-row flex-wrap justify-center items-center">
<div class="flex flex-col justify-center items-stretch space-y-4">
<.user_card :for={admin <- @admins} user={admin}>
<.link
href="#"
@ -110,11 +114,11 @@
<%= unless @users |> Enum.empty?() do %>
<hr class="hr" />
<h1 class="title text-2xl text-primary-400">
<h1 class="title text-xl text-primary-400">
<%= gettext("users") %>
</h1>
<div class="w-full flex flex-row flex-wrap justify-center items-center">
<div class="flex flex-col justify-center items-stretch space-y-4">
<.user_card :for={user <- @users} user={user}>
<.link
href="#"

View File

@ -33,7 +33,7 @@
<div
id="disconnect"
class="z-50 fixed opacity-0 bottom-12 right-12 px-8 py-4 w-max h-max
border border-primary-400 shadow-lg rounded-lg bg-primary-800 text-primary-400
border border-primary-400 shadow-lg rounded-lg bg-primary-900 text-primary-400
flex justify-center items-center space-x-4
transition-opacity ease-in-out duration-500 delay-[2000ms]"
>

View File

@ -1,5 +1,5 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center text-center space-y-4">
<h1 class="pb-4 title text-primary-400 text-xl">
<div class="mx-auto pb-8 max-w-3xl flex flex-col justify-center items-stretch text-right space-y-4">
<h1 class="title text-primary-400 text-xl text-left">
<%= gettext("settings") %>
</h1>
@ -11,7 +11,7 @@
action={Routes.user_settings_path(@conn, :update)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
>
<h3 class="title text-primary-400 text-lg col-span-3">
<h3 class="title text-primary-400 text-lg text-center col-span-3">
<%= dgettext("actions", "change email") %>
</h3>
@ -19,9 +19,7 @@
:if={@email_changeset.action && not @email_changeset.valid?()}
class="alert alert-danger col-span-3"
>
<p>
<%= dgettext("errors", "oops, something went wrong! Please check the errors below") %>
</p>
<%= dgettext("errors", "oops, something went wrong! Please check the errors below") %>
</div>
<%= hidden_input(f, :action, name: "action", value: "update_email") %>
@ -55,7 +53,7 @@
action={Routes.user_settings_path(@conn, :update)}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
>
<h3 class="title text-primary-400 text-lg col-span-3">
<h3 class="title text-primary-400 text-lg text-center col-span-3">
<%= dgettext("actions", "change password") %>
</h3>
@ -63,9 +61,7 @@
:if={@password_changeset.action && not @password_changeset.valid?()}
class="alert alert-danger col-span-3"
>
<p>
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
</p>
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %>
</div>
<%= hidden_input(f, :action, name: "action", value: "update_password") %>
@ -109,37 +105,35 @@
:let={f}
for={@locale_changeset}
action={Routes.user_settings_path(@conn, :update)}
class="flex flex-col space-y-4 justify-center items-center"
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
>
<h3 class="title text-primary-400 text-lg">
<h3 class="title text-primary-400 text-lg text-center col-span-3">
<%= dgettext("actions", "change language") %>
</h3>
<div
:if={@locale_changeset.action && not @locale_changeset.valid?()}
class="alert alert-danger"
class="alert alert-danger col-span-3"
>
<p>
<%= dgettext("errors", "oops, something went wrong! Please check the errors below") %>
</p>
<%= dgettext("errors", "oops, something went wrong! Please check the errors below") %>
</div>
<%= hidden_input(f, :action, name: "action", value: "update_locale") %>
<%= select(f, :locale, [{gettext("english"), "en_US"}, {"spanish", "es"}],
class: "mx-2 my-1 min-w-md input input-primary"
class: "mx-2 my-1 min-w-md input input-primary col-start-2"
) %>
<%= error_tag(f, :locale) %>
<%= error_tag(f, :locale, "col-span-3") %>
<%= submit(dgettext("actions", "change language"),
class: "whitespace-nowrap mx-auto btn btn-primary",
class: "whitespace-nowrap mx-auto btn btn-primary col-span-3",
data: [qa: dgettext("prompts", "are you sure you want to change your language?")]
) %>
</.form>
<hr class="hr" />
<div class="flex justify-center items-center">
<div class="flex justify-end items-center">
<.link
href={Routes.export_path(@conn, :export, :json)}
class="mx-4 my-2 btn btn-primary"

View File

@ -71,7 +71,7 @@ defmodule MemexWeb.ViewHelpers do
img_data =
content
|> EQRCode.encode()
|> EQRCode.png(width: width, background_color: <<39, 39, 42>>, color: <<255, 255, 255>>)
|> EQRCode.png(width: width, background_color: <<24, 24, 27>>, color: <<255, 255, 255>>)
|> Base.encode64()
"data:image/png;base64," <> img_data

View File

@ -4,7 +4,7 @@ defmodule Memex.MixProject do
def project do
[
app: :memex,
version: "0.1.8",
version: "0.1.9",
elixir: "~> 1.14",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: Mix.compilers(),

View File

@ -10,11 +10,6 @@
msgid ""
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy to clipboard"
msgstr ""
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
#, elixir-autogen, elixir-format
@ -33,24 +28,24 @@ msgid "Save"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:15
#: lib/memex_web/templates/user_settings/edit.html.heex:45
#: lib/memex_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format
msgid "change email"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:115
#: lib/memex_web/templates/user_settings/edit.html.heex:134
#: lib/memex_web/templates/user_settings/edit.html.heex:111
#: lib/memex_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format
msgid "change language"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:59
#: lib/memex_web/templates/user_settings/edit.html.heex:101
#: lib/memex_web/templates/user_settings/edit.html.heex:57
#: lib/memex_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format
msgid "change password"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:16
#: lib/memex_web/live/invite_live/index.html.heex:82
#, elixir-autogen, elixir-format
msgid "create invite"
msgstr ""
@ -66,7 +61,7 @@ msgstr ""
msgid "delete"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:157
#: lib/memex_web/templates/user_settings/edit.html.heex:151
#, elixir-autogen, elixir-format
msgid "delete user"
msgstr ""
@ -156,7 +151,12 @@ msgstr ""
msgid "send instructions to reset password"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:148
#: lib/memex_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format
msgid "export data as json"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:25
#, elixir-autogen, elixir-format
msgid "copy"
msgstr ""

View File

@ -10,11 +10,6 @@ msgid ""
msgstr ""
"Language: de\n"
#: lib/memex_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format
msgid "Copy to clipboard"
msgstr ""
#: lib/memex_web/templates/user_confirmation/new.html.heex:3
#: lib/memex_web/templates/user_confirmation/new.html.heex:15
#, elixir-autogen, elixir-format
@ -33,24 +28,24 @@ msgid "Save"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:15
#: lib/memex_web/templates/user_settings/edit.html.heex:45
#: lib/memex_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format
msgid "change email"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:115
#: lib/memex_web/templates/user_settings/edit.html.heex:134
#: lib/memex_web/templates/user_settings/edit.html.heex:111
#: lib/memex_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format
msgid "change language"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:59
#: lib/memex_web/templates/user_settings/edit.html.heex:101
#: lib/memex_web/templates/user_settings/edit.html.heex:57
#: lib/memex_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format
msgid "change password"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:16
#: lib/memex_web/live/invite_live/index.html.heex:82
#, elixir-autogen, elixir-format
msgid "create invite"
msgstr ""
@ -66,7 +61,7 @@ msgstr ""
msgid "delete"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:157
#: lib/memex_web/templates/user_settings/edit.html.heex:151
#, elixir-autogen, elixir-format
msgid "delete user"
msgstr ""
@ -156,7 +151,12 @@ msgstr ""
msgid "send instructions to reset password"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:148
#: lib/memex_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format
msgid "export data as json"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:25
#, elixir-autogen, elixir-format
msgid "copy"
msgstr ""

View File

@ -21,7 +21,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/memex_web/live/invite_live/index.html.heex:86
#: lib/memex_web/live/invite_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "Admins"
msgstr ""
@ -63,22 +63,22 @@ msgstr ""
msgid "Visibility: %{visibility}"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:76
#: lib/memex_web/live/home_live.html.heex:71
#, elixir-autogen, elixir-format
msgid "accessible from any internet-capable device"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:90
#: lib/memex_web/live/home_live.html.heex:85
#, elixir-autogen, elixir-format
msgid "admins:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:58
#: lib/memex_web/live/home_live.html.heex:53
#, elixir-autogen, elixir-format
msgid "built with sharing and collaboration in mind"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:80
#: lib/memex_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format
msgid "confirm new password"
msgstr ""
@ -96,33 +96,33 @@ msgstr ""
msgid "contexts"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:20
#: lib/memex_web/live/home_live.html.heex:18
#, elixir-autogen, elixir-format
msgid "contexts:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:73
#: lib/memex_web/live/home_live.html.heex:68
#, elixir-autogen, elixir-format
msgid "convenient:"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:33
#: lib/memex_web/templates/user_settings/edit.html.heex:89
#: lib/memex_web/templates/user_settings/edit.html.heex:31
#: lib/memex_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format
msgid "current password"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:62
#: lib/memex_web/live/invite_live/index.html.heex:58
#, elixir-autogen, elixir-format
msgid "disable"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:14
#: lib/memex_web/live/home_live.html.heex:12
#, elixir-autogen, elixir-format
msgid "document notes about individual items or concepts"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:32
#: lib/memex_web/live/home_live.html.heex:30
#, elixir-autogen, elixir-format
msgid "document your processes, attaching contexts to each step"
msgstr ""
@ -132,53 +132,48 @@ msgstr ""
msgid "edit invite"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:29
#: lib/memex_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "email"
msgstr ""
#: lib/memex_web/components/user_card.ex:29
#: lib/memex_web/components/user_card.ex:30
#, elixir-autogen, elixir-format
msgid "email unconfirmed"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:62
#: lib/memex_web/live/invite_live/index.html.heex:58
#, elixir-autogen, elixir-format
msgid "enable"
msgstr ""
#: lib/memex_web/templates/user_registration/new.html.heex:32
#: lib/memex_web/templates/user_settings/edit.html.heex:129
#: lib/memex_web/templates/user_settings/edit.html.heex:123
#, elixir-autogen, elixir-format
msgid "english"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:50
#: lib/memex_web/live/home_live.html.heex:45
#, elixir-autogen, elixir-format
msgid "features"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:135
#, elixir-autogen, elixir-format
msgid "get involved!"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:156
#: lib/memex_web/live/home_live.html.heex:149
#, elixir-autogen, elixir-format
msgid "help translate"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:85
#: lib/memex_web/live/home_live.html.heex:80
#, elixir-autogen, elixir-format
msgid "instance information"
msgstr ""
#: lib/memex_web/components/invite_card.ex:42
#: lib/memex_web/components/invite_card.ex:43
#, elixir-autogen, elixir-format
msgid "invite disabled"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:112
#: lib/memex_web/live/home_live.html.heex:105
#, elixir-autogen, elixir-format
msgid "invite only"
msgstr ""
@ -195,7 +190,7 @@ msgstr ""
msgid "log in"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:55
#: lib/memex_web/live/home_live.html.heex:50
#, elixir-autogen, elixir-format
msgid "multi-user:"
msgstr ""
@ -205,7 +200,7 @@ msgstr ""
msgid "new invite"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:73
#: lib/memex_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format
msgid "new password"
msgstr ""
@ -228,7 +223,7 @@ msgstr ""
msgid "notes"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:11
#: lib/memex_web/live/home_live.html.heex:9
#, elixir-autogen, elixir-format
msgid "notes:"
msgstr ""
@ -241,27 +236,27 @@ msgstr ""
msgid "pipelines"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:29
#: lib/memex_web/live/home_live.html.heex:27
#, elixir-autogen, elixir-format
msgid "pipelines:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:67
#: lib/memex_web/live/home_live.html.heex:62
#, elixir-autogen, elixir-format
msgid "privacy controls on a per-note, context or pipeline basis"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:64
#: lib/memex_web/live/home_live.html.heex:59
#, elixir-autogen, elixir-format
msgid "privacy:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:23
#: lib/memex_web/live/home_live.html.heex:21
#, elixir-autogen, elixir-format
msgid "provide context around a single topic and hotlink to your notes"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:111
#: lib/memex_web/live/home_live.html.heex:104
#, elixir-autogen, elixir-format
msgid "public signups"
msgstr ""
@ -271,12 +266,12 @@ msgstr ""
msgid "register"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:108
#: lib/memex_web/live/home_live.html.heex:101
#, elixir-autogen, elixir-format
msgid "registration:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:167
#: lib/memex_web/live/home_live.html.heex:160
#, elixir-autogen, elixir-format
msgid "report bugs or request features"
msgstr ""
@ -296,7 +291,7 @@ msgstr ""
msgid "select privacy"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:77
#: lib/memex_web/live/invite_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "set unlimited"
msgstr ""
@ -321,17 +316,17 @@ msgstr ""
msgid "tags"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:114
#: lib/memex_web/live/invite_live/index.html.heex:118
#, elixir-autogen, elixir-format
msgid "users"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:118
#: lib/memex_web/live/home_live.html.heex:111
#, elixir-autogen, elixir-format
msgid "version:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:145
#: lib/memex_web/live/home_live.html.heex:138
#, elixir-autogen, elixir-format
msgid "view the source code"
msgstr ""
@ -508,62 +503,62 @@ msgstr ""
msgid "use [[context-slug]] to link to a context"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:72
#: lib/memex_web/live/faq_live.html.heex:65
#, elixir-autogen, elixir-format
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:102
#: lib/memex_web/live/faq_live.html.heex:91
#, elixir-autogen, elixir-format
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:118
#: lib/memex_web/live/faq_live.html.heex:105
#, elixir-autogen, elixir-format
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:62
#: lib/memex_web/live/faq_live.html.heex:59
#, elixir-autogen, elixir-format
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:67
#: lib/memex_web/live/faq_live.html.heex:62
#, elixir-autogen, elixir-format
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:99
#: lib/memex_web/live/faq_live.html.heex:90
#, elixir-autogen, elixir-format
msgid "in my opinion, contexts should be like single-topic blog posts."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:83
#: lib/memex_web/live/faq_live.html.heex:76
#, elixir-autogen, elixir-format
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:113
#: lib/memex_web/live/faq_live.html.heex:102
#, elixir-autogen, elixir-format
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:31
#: lib/memex_web/live/faq_live.html.heex:28
#, elixir-autogen, elixir-format
msgid "memex"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:51
#: lib/memex_web/live/faq_live.html.heex:48
#, elixir-autogen, elixir-format
msgid "org-mode"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:20
#: lib/memex_web/live/faq_live.html.heex:17
#, elixir-autogen, elixir-format
msgid "some things that this memex is very loosely inspired by:"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:88
#: lib/memex_web/live/faq_live.html.heex:79
#, elixir-autogen, elixir-format
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
msgstr ""
@ -573,27 +568,27 @@ msgstr ""
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:96
#: lib/memex_web/live/faq_live.html.heex:87
#, elixir-autogen, elixir-format
msgid "what should my contexts be like?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:80
#: lib/memex_web/live/faq_live.html.heex:73
#, elixir-autogen, elixir-format
msgid "what should my notes be like?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:110
#: lib/memex_web/live/faq_live.html.heex:99
#, elixir-autogen, elixir-format
msgid "what should my pipelines be like?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:59
#: lib/memex_web/live/faq_live.html.heex:56
#, elixir-autogen, elixir-format
msgid "why split up into notes, contexts and pipelines?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:41
#: lib/memex_web/live/faq_live.html.heex:38
#, elixir-autogen, elixir-format
msgid "zettelkasten"
msgstr ""
@ -608,22 +603,22 @@ msgstr ""
msgid "forgot your password?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:126
#: lib/memex_web/live/faq_live.html.heex:113
#, elixir-autogen, elixir-format
msgid "how many people should i invite?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:134
#: lib/memex_web/live/faq_live.html.heex:119
#, elixir-autogen, elixir-format
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:139
#: lib/memex_web/live/faq_live.html.heex:122
#, elixir-autogen, elixir-format
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:129
#: lib/memex_web/live/faq_live.html.heex:116
#, elixir-autogen, elixir-format
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
msgstr ""
@ -633,32 +628,37 @@ msgstr ""
msgid "language"
msgstr ""
#: lib/memex_web/components/user_card.ex:23
#: lib/memex_web/components/user_card.ex:24
#, elixir-autogen, elixir-format, fuzzy
msgid "user confirmed on%{confirmed_datetime}"
msgstr ""
#: lib/memex_web/components/user_card.ex:34
#: lib/memex_web/components/user_card.ex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "user registered on%{registered_datetime}"
msgstr ""
#: lib/memex_web/components/invite_card.ex:37
#: lib/memex_web/components/invite_card.ex:38
#, elixir-autogen, elixir-format
msgid "uses left: unlimited"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:41
#: lib/memex_web/live/home_live.html.heex:36
#, elixir-autogen, elixir-format, fuzzy
msgid "read more on how to use memEx"
msgstr ""
#: lib/memex_web/components/invite_card.ex:32
#: lib/memex_web/components/invite_card.ex:33
#, elixir-autogen, elixir-format, fuzzy
msgid "uses left: %{uses_left_count}"
msgstr ""
#: lib/memex_web/components/invite_card.ex:52
#: lib/memex_web/components/invite_card.ex:53
#, elixir-autogen, elixir-format
msgid "uses: %{uses_count}"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:128
#, elixir-autogen, elixir-format, fuzzy
msgid "get involved"
msgstr ""

View File

@ -21,7 +21,7 @@ msgid "Invalid email or password"
msgstr ""
#: lib/memex_web/templates/user_reset_password/edit.html.heex:14
#: lib/memex_web/templates/user_settings/edit.html.heex:67
#: lib/memex_web/templates/user_settings/edit.html.heex:64
#, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""
@ -79,8 +79,8 @@ msgstr ""
msgid "must have the @ sign and no spaces"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:23
#: lib/memex_web/templates/user_settings/edit.html.heex:123
#: lib/memex_web/templates/user_settings/edit.html.heex:22
#: lib/memex_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format
msgid "oops, something went wrong! Please check the errors below"
msgstr ""

View File

@ -60,23 +60,23 @@ msgstr ""
msgid "Saving..."
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:136
#: lib/memex_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format
msgid "are you sure you want to change your language?"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:97
#: lib/memex_web/live/invite_live/index.html.heex:125
#: lib/memex_web/live/invite_live/index.html.heex:101
#: lib/memex_web/live/invite_live/index.html.heex:129
#, elixir-autogen, elixir-format
msgid "are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:47
#: lib/memex_web/live/invite_live/index.html.heex:43
#, elixir-autogen, elixir-format
msgid "are you sure you want to delete the invite for %{invite_name}?"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:155
#: lib/memex_web/templates/user_settings/edit.html.heex:149
#, elixir-autogen, elixir-format
msgid "are you sure you want to delete your account?"
msgstr ""
@ -86,7 +86,7 @@ msgstr ""
msgid "are you sure you want to log out?"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:72
#: lib/memex_web/live/invite_live/index.html.heex:68
#, elixir-autogen, elixir-format
msgid "are you sure you want to make %{invite_name} unlimited?"
msgstr ""
@ -112,7 +112,7 @@ msgstr ""
msgid "language updated successfully."
msgstr ""
#: lib/memex_web/live/home_live.html.heex:95
#: lib/memex_web/live/home_live.html.heex:90
#, elixir-autogen, elixir-format, fuzzy
msgid "register to setup memEx"
msgstr ""

View File

@ -10,7 +10,7 @@
msgid ""
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:86
#: lib/memex_web/live/invite_live/index.html.heex:90
#, elixir-autogen, elixir-format
msgid "Admins"
msgstr ""
@ -52,22 +52,22 @@ msgstr ""
msgid "Visibility: %{visibility}"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:76
#: lib/memex_web/live/home_live.html.heex:71
#, elixir-autogen, elixir-format
msgid "accessible from any internet-capable device"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:90
#: lib/memex_web/live/home_live.html.heex:85
#, elixir-autogen, elixir-format
msgid "admins:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:58
#: lib/memex_web/live/home_live.html.heex:53
#, elixir-autogen, elixir-format
msgid "built with sharing and collaboration in mind"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:80
#: lib/memex_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format
msgid "confirm new password"
msgstr ""
@ -85,33 +85,33 @@ msgstr ""
msgid "contexts"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:20
#: lib/memex_web/live/home_live.html.heex:18
#, elixir-autogen, elixir-format
msgid "contexts:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:73
#: lib/memex_web/live/home_live.html.heex:68
#, elixir-autogen, elixir-format
msgid "convenient:"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:33
#: lib/memex_web/templates/user_settings/edit.html.heex:89
#: lib/memex_web/templates/user_settings/edit.html.heex:31
#: lib/memex_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format
msgid "current password"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:62
#: lib/memex_web/live/invite_live/index.html.heex:58
#, elixir-autogen, elixir-format
msgid "disable"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:14
#: lib/memex_web/live/home_live.html.heex:12
#, elixir-autogen, elixir-format
msgid "document notes about individual items or concepts"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:32
#: lib/memex_web/live/home_live.html.heex:30
#, elixir-autogen, elixir-format
msgid "document your processes, attaching contexts to each step"
msgstr ""
@ -121,53 +121,48 @@ msgstr ""
msgid "edit invite"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:29
#: lib/memex_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format
msgid "email"
msgstr ""
#: lib/memex_web/components/user_card.ex:29
#: lib/memex_web/components/user_card.ex:30
#, elixir-autogen, elixir-format
msgid "email unconfirmed"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:62
#: lib/memex_web/live/invite_live/index.html.heex:58
#, elixir-autogen, elixir-format
msgid "enable"
msgstr ""
#: lib/memex_web/templates/user_registration/new.html.heex:32
#: lib/memex_web/templates/user_settings/edit.html.heex:129
#: lib/memex_web/templates/user_settings/edit.html.heex:123
#, elixir-autogen, elixir-format
msgid "english"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:50
#: lib/memex_web/live/home_live.html.heex:45
#, elixir-autogen, elixir-format
msgid "features"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:135
#, elixir-autogen, elixir-format
msgid "get involved!"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:156
#: lib/memex_web/live/home_live.html.heex:149
#, elixir-autogen, elixir-format
msgid "help translate"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:85
#: lib/memex_web/live/home_live.html.heex:80
#, elixir-autogen, elixir-format
msgid "instance information"
msgstr ""
#: lib/memex_web/components/invite_card.ex:42
#: lib/memex_web/components/invite_card.ex:43
#, elixir-autogen, elixir-format
msgid "invite disabled"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:112
#: lib/memex_web/live/home_live.html.heex:105
#, elixir-autogen, elixir-format
msgid "invite only"
msgstr ""
@ -184,7 +179,7 @@ msgstr ""
msgid "log in"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:55
#: lib/memex_web/live/home_live.html.heex:50
#, elixir-autogen, elixir-format
msgid "multi-user:"
msgstr ""
@ -194,7 +189,7 @@ msgstr ""
msgid "new invite"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:73
#: lib/memex_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format
msgid "new password"
msgstr ""
@ -217,7 +212,7 @@ msgstr ""
msgid "notes"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:11
#: lib/memex_web/live/home_live.html.heex:9
#, elixir-autogen, elixir-format
msgid "notes:"
msgstr ""
@ -230,27 +225,27 @@ msgstr ""
msgid "pipelines"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:29
#: lib/memex_web/live/home_live.html.heex:27
#, elixir-autogen, elixir-format
msgid "pipelines:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:67
#: lib/memex_web/live/home_live.html.heex:62
#, elixir-autogen, elixir-format
msgid "privacy controls on a per-note, context or pipeline basis"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:64
#: lib/memex_web/live/home_live.html.heex:59
#, elixir-autogen, elixir-format
msgid "privacy:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:23
#: lib/memex_web/live/home_live.html.heex:21
#, elixir-autogen, elixir-format
msgid "provide context around a single topic and hotlink to your notes"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:111
#: lib/memex_web/live/home_live.html.heex:104
#, elixir-autogen, elixir-format
msgid "public signups"
msgstr ""
@ -260,12 +255,12 @@ msgstr ""
msgid "register"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:108
#: lib/memex_web/live/home_live.html.heex:101
#, elixir-autogen, elixir-format
msgid "registration:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:167
#: lib/memex_web/live/home_live.html.heex:160
#, elixir-autogen, elixir-format
msgid "report bugs or request features"
msgstr ""
@ -285,7 +280,7 @@ msgstr ""
msgid "select privacy"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:77
#: lib/memex_web/live/invite_live/index.html.heex:73
#, elixir-autogen, elixir-format
msgid "set unlimited"
msgstr ""
@ -310,17 +305,17 @@ msgstr ""
msgid "tags"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:114
#: lib/memex_web/live/invite_live/index.html.heex:118
#, elixir-autogen, elixir-format
msgid "users"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:118
#: lib/memex_web/live/home_live.html.heex:111
#, elixir-autogen, elixir-format
msgid "version:"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:145
#: lib/memex_web/live/home_live.html.heex:138
#, elixir-autogen, elixir-format
msgid "view the source code"
msgstr ""
@ -497,62 +492,62 @@ msgstr ""
msgid "use [[context-slug]] to link to a context"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:72
#: lib/memex_web/live/faq_live.html.heex:65
#, elixir-autogen, elixir-format
msgid "finally, i wanted to externalize the processes for common situations that use these thought processes at discrete steps. these are pipelines!"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:102
#: lib/memex_web/live/faq_live.html.heex:91
#, elixir-autogen, elixir-format
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could backlink to the spoon note as an example of how it fits nicely into your hand."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:118
#: lib/memex_web/live/faq_live.html.heex:105
#, elixir-autogen, elixir-format
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could backlink to the physical designs context, maybe with some notes about how it applies in this case."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:62
#: lib/memex_web/live/faq_live.html.heex:59
#, elixir-autogen, elixir-format
msgid "i really admired the idea of a zettelkasten, especially with org-mode backlinks, however I felt like my notes would immediately become too messy by just putting everything into a single hierarchy."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:67
#: lib/memex_web/live/faq_live.html.heex:62
#, elixir-autogen, elixir-format
msgid "i wanted to separate between a personal dictionary of concepts and then my thought processes that are built off of my experiences and life lessons. these are notes, and contexts, respectively."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:99
#: lib/memex_web/live/faq_live.html.heex:90
#, elixir-autogen, elixir-format
msgid "in my opinion, contexts should be like single-topic blog posts."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:83
#: lib/memex_web/live/faq_live.html.heex:76
#, elixir-autogen, elixir-format
msgid "in my opinion, notes should be written by any of the discrete objects or concepts that are meaningful to you in your life."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:113
#: lib/memex_web/live/faq_live.html.heex:102
#, elixir-autogen, elixir-format
msgid "in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:31
#: lib/memex_web/live/faq_live.html.heex:28
#, elixir-autogen, elixir-format
msgid "memex"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:51
#: lib/memex_web/live/faq_live.html.heex:48
#, elixir-autogen, elixir-format
msgid "org-mode"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:20
#: lib/memex_web/live/faq_live.html.heex:17
#, elixir-autogen, elixir-format
msgid "some things that this memex is very loosely inspired by:"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:88
#: lib/memex_web/live/faq_live.html.heex:79
#, elixir-autogen, elixir-format
msgid "spoons? probably not. a particular brand of spoons that you really like? why not :)"
msgstr ""
@ -562,27 +557,27 @@ msgstr ""
msgid "this is a memex, used to document not just your notes, but also your perspectives and processes."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:96
#: lib/memex_web/live/faq_live.html.heex:87
#, elixir-autogen, elixir-format
msgid "what should my contexts be like?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:80
#: lib/memex_web/live/faq_live.html.heex:73
#, elixir-autogen, elixir-format
msgid "what should my notes be like?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:110
#: lib/memex_web/live/faq_live.html.heex:99
#, elixir-autogen, elixir-format
msgid "what should my pipelines be like?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:59
#: lib/memex_web/live/faq_live.html.heex:56
#, elixir-autogen, elixir-format
msgid "why split up into notes, contexts and pipelines?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:41
#: lib/memex_web/live/faq_live.html.heex:38
#, elixir-autogen, elixir-format
msgid "zettelkasten"
msgstr ""
@ -597,22 +592,22 @@ msgstr ""
msgid "forgot your password?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:126
#: lib/memex_web/live/faq_live.html.heex:113
#, elixir-autogen, elixir-format
msgid "how many people should i invite?"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:134
#: lib/memex_web/live/faq_live.html.heex:119
#, elixir-autogen, elixir-format
msgid "note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:139
#: lib/memex_web/live/faq_live.html.heex:122
#, elixir-autogen, elixir-format
msgid "so, i'd recommend inviting anyone you'd like to work on your collective memEx. however, when in doubt, hopefully setting up a new instance is easy enough. if it isn't, then feel free to let me know :)"
msgstr ""
#: lib/memex_web/live/faq_live.html.heex:129
#: lib/memex_web/live/faq_live.html.heex:116
#, elixir-autogen, elixir-format
msgid "while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
msgstr ""
@ -622,32 +617,37 @@ msgstr ""
msgid "language"
msgstr ""
#: lib/memex_web/components/user_card.ex:23
#: lib/memex_web/components/user_card.ex:24
#, elixir-autogen, elixir-format
msgid "user confirmed on%{confirmed_datetime}"
msgstr ""
#: lib/memex_web/components/user_card.ex:34
#: lib/memex_web/components/user_card.ex:35
#, elixir-autogen, elixir-format
msgid "user registered on%{registered_datetime}"
msgstr ""
#: lib/memex_web/components/invite_card.ex:37
#: lib/memex_web/components/invite_card.ex:38
#, elixir-autogen, elixir-format
msgid "uses left: unlimited"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:41
#: lib/memex_web/live/home_live.html.heex:36
#, elixir-autogen, elixir-format
msgid "read more on how to use memEx"
msgstr ""
#: lib/memex_web/components/invite_card.ex:32
#: lib/memex_web/components/invite_card.ex:33
#, elixir-autogen, elixir-format
msgid "uses left: %{uses_left_count}"
msgstr ""
#: lib/memex_web/components/invite_card.ex:52
#: lib/memex_web/components/invite_card.ex:53
#, elixir-autogen, elixir-format
msgid "uses: %{uses_count}"
msgstr ""
#: lib/memex_web/live/home_live.html.heex:128
#, elixir-autogen, elixir-format
msgid "get involved"
msgstr ""

View File

@ -21,7 +21,7 @@ msgid "Invalid email or password"
msgstr ""
#: lib/memex_web/templates/user_reset_password/edit.html.heex:14
#: lib/memex_web/templates/user_settings/edit.html.heex:67
#: lib/memex_web/templates/user_settings/edit.html.heex:64
#, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""
@ -79,8 +79,8 @@ msgstr ""
msgid "must have the @ sign and no spaces"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:23
#: lib/memex_web/templates/user_settings/edit.html.heex:123
#: lib/memex_web/templates/user_settings/edit.html.heex:22
#: lib/memex_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format
msgid "oops, something went wrong! Please check the errors below"
msgstr ""

View File

@ -60,23 +60,23 @@ msgstr ""
msgid "Saving..."
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:136
#: lib/memex_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format
msgid "are you sure you want to change your language?"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:97
#: lib/memex_web/live/invite_live/index.html.heex:125
#: lib/memex_web/live/invite_live/index.html.heex:101
#: lib/memex_web/live/invite_live/index.html.heex:129
#, elixir-autogen, elixir-format
msgid "are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:47
#: lib/memex_web/live/invite_live/index.html.heex:43
#, elixir-autogen, elixir-format
msgid "are you sure you want to delete the invite for %{invite_name}?"
msgstr ""
#: lib/memex_web/templates/user_settings/edit.html.heex:155
#: lib/memex_web/templates/user_settings/edit.html.heex:149
#, elixir-autogen, elixir-format
msgid "are you sure you want to delete your account?"
msgstr ""
@ -86,7 +86,7 @@ msgstr ""
msgid "are you sure you want to log out?"
msgstr ""
#: lib/memex_web/live/invite_live/index.html.heex:72
#: lib/memex_web/live/invite_live/index.html.heex:68
#, elixir-autogen, elixir-format
msgid "are you sure you want to make %{invite_name} unlimited?"
msgstr ""
@ -112,7 +112,7 @@ msgstr ""
msgid "language updated successfully."
msgstr ""
#: lib/memex_web/live/home_live.html.heex:95
#: lib/memex_web/live/home_live.html.heex:90
#, elixir-autogen, elixir-format
msgid "register to setup memEx"
msgstr ""

View File

@ -10,8 +10,6 @@ defmodule Memex.AccountsTest do
@moduletag :accounts_test
doctest Accounts, import: true
describe "get_user_by_email/1" do
test "does not return the user if the email does not exist" do
refute Accounts.get_user_by_email("unknown@example.com")