Compare commits
16 Commits
Author | SHA1 | Date |
---|---|---|
shibao | 48f7c8d18e | |
shibao | 571e0b65b6 | |
shibao | 7dc2047e97 | |
shibao | f769e710d8 | |
shibao | d09f698b71 | |
shibao | 8666f663ba | |
shibao | 22ccea893c | |
shibao | 362c406471 | |
shibao | 2a87037f06 | |
shibao | 53d0dcfb15 | |
shibao | c892b5449b | |
shibao | 7cd9dca958 | |
shibao | 0e8ddc22c5 | |
shibao | 3671ad6199 | |
shibao | 7189c955c3 | |
shibao | f56ecc0ba3 |
|
@ -17,7 +17,7 @@ steps:
|
|||
- .mix
|
||||
|
||||
- name: test
|
||||
image: elixir:1.15.6-alpine
|
||||
image: elixir:1.16.1-alpine
|
||||
environment:
|
||||
TEST_DATABASE_URL: ecto://postgres:postgres@database/memex_test
|
||||
HOST: testing.example.tld
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
elixir 1.15.6-otp-26
|
||||
erlang 26.1.2
|
||||
nodejs 20.6.0
|
||||
elixir 1.16.1-otp-26
|
||||
erlang 26.2.2
|
||||
nodejs 21.6.2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM elixir:1.15.6-alpine AS build
|
||||
FROM elixir:1.16.1-alpine AS build
|
||||
|
||||
# install build dependencies
|
||||
RUN apk add --no-cache build-base npm git python3
|
||||
|
@ -37,7 +37,7 @@ RUN mix do compile, release
|
|||
FROM alpine:latest AS app
|
||||
|
||||
RUN apk upgrade --no-cache && \
|
||||
apk add --no-cache bash openssl libssl1.1 libcrypto1.1 libgcc libstdc++ ncurses-libs
|
||||
apk add --no-cache bash openssl libssl3 libcrypto3 libgcc libstdc++ ncurses-libs
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
|
|
@ -30,13 +30,15 @@ import topbar from 'topbar'
|
|||
import CtrlEnter from './ctrlenter'
|
||||
import Date from './date'
|
||||
import DateTime from './datetime'
|
||||
import SanitizeTags from './sanitizetags'
|
||||
import SanitizeTitles from './sanitizetitles'
|
||||
|
||||
const csrfTokenElement = document.querySelector("meta[name='csrf-token']")
|
||||
let csrfToken
|
||||
if (csrfTokenElement) { csrfToken = csrfTokenElement.getAttribute('content') }
|
||||
const liveSocket = new LiveSocket('/live', Socket, {
|
||||
params: { _csrf_token: csrfToken },
|
||||
hooks: { CtrlEnter, Date, DateTime }
|
||||
hooks: { CtrlEnter, Date, DateTime, SanitizeTags, SanitizeTitles }
|
||||
})
|
||||
|
||||
// Show progress bar on live navigation and form submits
|
||||
|
|
|
@ -7,6 +7,5 @@ export default {
|
|||
}
|
||||
})
|
||||
},
|
||||
mounted () { this.addFormSubmit(this) },
|
||||
updated () { this.addFormSubmit(this) }
|
||||
mounted () { this.addFormSubmit(this) }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
export default {
|
||||
SanitizeTags (context) {
|
||||
context.el.addEventListener('keyup', (e) => {
|
||||
e.target.value = e.target.value
|
||||
.replace(' ', ',')
|
||||
.replace(',,', ',')
|
||||
.replace(/[^a-zA-Z0-9,]/, '')
|
||||
})
|
||||
},
|
||||
mounted () { this.SanitizeTags(this) }
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
export default {
|
||||
SanitizeTitles (context) {
|
||||
context.el.addEventListener('keyup', (e) => {
|
||||
e.target.value = e.target.value
|
||||
.replace(' ', '-')
|
||||
.replace(/[^a-zA-Z0-9-]/, '')
|
||||
})
|
||||
},
|
||||
mounted () { this.SanitizeTitles(this) }
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -3,8 +3,8 @@
|
|||
"description": " ",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "v20.6.0",
|
||||
"npm": "9.8.1"
|
||||
"node": "v21.6.2",
|
||||
"npm": "10.2.4"
|
||||
},
|
||||
"scripts": {
|
||||
"deploy": "NODE_ENV=production webpack --mode production",
|
||||
|
@ -14,34 +14,34 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@fontsource/nunito-sans": "^5.0.8",
|
||||
"@fortawesome/fontawesome-free": "^6.4.2",
|
||||
"@fortawesome/fontawesome-free": "^6.5.1",
|
||||
"phoenix": "file:../deps/phoenix",
|
||||
"phoenix_html": "file:../deps/phoenix_html",
|
||||
"phoenix_live_view": "file:../deps/phoenix_live_view",
|
||||
"topbar": "^2.0.1"
|
||||
"topbar": "^2.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.2",
|
||||
"@babel/preset-env": "^7.23.2",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"@babel/core": "^7.23.9",
|
||||
"@babel/preset-env": "^7.23.9",
|
||||
"autoprefixer": "^10.4.17",
|
||||
"babel-loader": "^9.1.3",
|
||||
"copy-webpack-plugin": "^11.0.0",
|
||||
"css-loader": "^6.8.1",
|
||||
"css-minimizer-webpack-plugin": "^5.0.1",
|
||||
"copy-webpack-plugin": "^12.0.2",
|
||||
"css-loader": "^6.10.0",
|
||||
"css-minimizer-webpack-plugin": "^6.0.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"mini-css-extract-plugin": "^2.7.6",
|
||||
"npm-check-updates": "^16.14.6",
|
||||
"postcss": "^8.4.31",
|
||||
"postcss-import": "^15.1.0",
|
||||
"postcss-loader": "^7.3.3",
|
||||
"postcss-preset-env": "^9.3.0",
|
||||
"sass": "^1.69.5",
|
||||
"sass-loader": "^13.3.2",
|
||||
"mini-css-extract-plugin": "^2.8.0",
|
||||
"npm-check-updates": "^16.14.15",
|
||||
"postcss": "^8.4.35",
|
||||
"postcss-import": "^16.0.1",
|
||||
"postcss-loader": "^8.1.0",
|
||||
"postcss-preset-env": "^9.4.0",
|
||||
"sass": "^1.71.1",
|
||||
"sass-loader": "^14.1.1",
|
||||
"standard": "^17.1.0",
|
||||
"tailwindcss": "^3.3.5",
|
||||
"terser-webpack-plugin": "^5.3.9",
|
||||
"webpack": "^5.89.0",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"webpack": "^5.90.3",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"webpack-dev-server": "^4.15.1"
|
||||
"webpack-dev-server": "^5.0.2"
|
||||
}
|
||||
}
|
||||
|
|
11
changelog.md
11
changelog.md
|
@ -1,3 +1,14 @@
|
|||
# v0.1.16
|
||||
- Fix empty invite index page
|
||||
- Fix faq copy
|
||||
|
||||
# v0.1.15
|
||||
- Sanitize titles while they are being typed
|
||||
- Sanitize tags while they are being typed
|
||||
- Remove requirement for note and content to have content
|
||||
- Prevent possible additional submissions
|
||||
- Fix content being displayed when blank
|
||||
|
||||
# v0.1.14
|
||||
- Fix issue with item content not able to be displayed sometimes
|
||||
|
||||
|
|
|
@ -405,15 +405,15 @@ defmodule Memex.Accounts do
|
|||
|
||||
## Examples
|
||||
|
||||
iex> is_admin?(%User{role: :admin})
|
||||
iex> admin?(%User{role: :admin})
|
||||
true
|
||||
|
||||
iex> is_admin?(%User{})
|
||||
iex> admin?(%User{})
|
||||
false
|
||||
|
||||
"""
|
||||
@spec is_admin?(User.t()) :: boolean()
|
||||
def is_admin?(%User{id: user_id}) do
|
||||
@spec admin?(User.t()) :: boolean()
|
||||
def admin?(%User{id: user_id}) do
|
||||
Repo.exists?(from u in User, where: u.id == ^user_id, where: u.role == :admin)
|
||||
end
|
||||
|
||||
|
@ -422,16 +422,16 @@ defmodule Memex.Accounts do
|
|||
|
||||
## Examples
|
||||
|
||||
iex> is_already_admin?(%User{role: :admin})
|
||||
iex> already_admin?(%User{role: :admin})
|
||||
true
|
||||
|
||||
iex> is_already_admin?(%User{})
|
||||
iex> already_admin?(%User{})
|
||||
false
|
||||
|
||||
"""
|
||||
@spec is_already_admin?(User.t() | nil) :: boolean()
|
||||
def is_already_admin?(%User{role: :admin}), do: true
|
||||
def is_already_admin?(_invalid_user), do: false
|
||||
@spec already_admin?(User.t() | nil) :: boolean()
|
||||
def already_admin?(%User{role: :admin}), do: true
|
||||
def already_admin?(_invalid_user), do: false
|
||||
|
||||
## Confirmation
|
||||
|
||||
|
|
|
@ -229,12 +229,12 @@ defmodule Memex.Contexts do
|
|||
context |> Context.update_changeset(attrs, user)
|
||||
end
|
||||
|
||||
@spec is_owner_or_admin?(Context.t(), User.t()) :: boolean()
|
||||
def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def is_owner_or_admin?(_context, _other_user), do: false
|
||||
@spec owner_or_admin?(Context.t(), User.t()) :: boolean()
|
||||
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def owner_or_admin?(_context, _other_user), do: false
|
||||
|
||||
@spec is_owner?(Context.t(), User.t()) :: boolean()
|
||||
def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner?(_context, _other_user), do: false
|
||||
@spec owner?(Context.t(), User.t()) :: boolean()
|
||||
def owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner?(_context, _other_user), do: false
|
||||
end
|
||||
|
|
|
@ -57,7 +57,7 @@ defmodule Memex.Contexts.Context do
|
|||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :user_id, :visibility])
|
||||
|> validate_required([:slug, :user_id, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
|
@ -70,7 +70,7 @@ defmodule Memex.Contexts.Context do
|
|||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :visibility])
|
||||
|> validate_required([:slug, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
|
|
|
@ -229,12 +229,12 @@ defmodule Memex.Notes do
|
|||
note |> Note.update_changeset(attrs, user)
|
||||
end
|
||||
|
||||
@spec is_owner_or_admin?(Note.t(), User.t()) :: boolean()
|
||||
def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def is_owner_or_admin?(_context, _other_user), do: false
|
||||
@spec owner_or_admin?(Note.t(), User.t()) :: boolean()
|
||||
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def owner_or_admin?(_context, _other_user), do: false
|
||||
|
||||
@spec is_owner?(Note.t(), User.t()) :: boolean()
|
||||
def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner?(_context, _other_user), do: false
|
||||
@spec owner?(Note.t(), User.t()) :: boolean()
|
||||
def owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner?(_context, _other_user), do: false
|
||||
end
|
||||
|
|
|
@ -56,7 +56,7 @@ defmodule Memex.Notes.Note do
|
|||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :user_id, :visibility])
|
||||
|> validate_required([:slug, :user_id, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
|
@ -69,7 +69,7 @@ defmodule Memex.Notes.Note do
|
|||
|> validate_format(:slug, ~r/^[\p{L}\p{N}\-]+$/,
|
||||
message: dgettext("errors", "invalid format: only numbers, letters and hyphen are accepted")
|
||||
)
|
||||
|> validate_required([:slug, :content, :visibility])
|
||||
|> validate_required([:slug, :visibility])
|
||||
|> unique_constraint(:slug)
|
||||
|> unsafe_validate_unique(:slug, Repo)
|
||||
end
|
||||
|
|
|
@ -231,12 +231,12 @@ defmodule Memex.Pipelines do
|
|||
pipeline |> Pipeline.update_changeset(attrs, user)
|
||||
end
|
||||
|
||||
@spec is_owner_or_admin?(Pipeline.t(), User.t()) :: boolean()
|
||||
def is_owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def is_owner_or_admin?(_context, _other_user), do: false
|
||||
@spec owner_or_admin?(Pipeline.t(), User.t()) :: boolean()
|
||||
def owner_or_admin?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner_or_admin?(_context, %{role: :admin}), do: true
|
||||
def owner_or_admin?(_context, _other_user), do: false
|
||||
|
||||
@spec is_owner?(Pipeline.t(), User.t()) :: boolean()
|
||||
def is_owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def is_owner?(_context, _other_user), do: false
|
||||
@spec owner?(Pipeline.t(), User.t()) :: boolean()
|
||||
def owner?(%{user_id: user_id}, %{id: user_id}), do: true
|
||||
def owner?(_context, _other_user), do: false
|
||||
end
|
||||
|
|
|
@ -69,6 +69,7 @@ defmodule MemexWeb do
|
|||
|
||||
def html do
|
||||
quote do
|
||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||
use Phoenix.Component
|
||||
|
||||
# Import convenience functions from controllers
|
||||
|
@ -82,11 +83,8 @@ defmodule MemexWeb do
|
|||
|
||||
defp html_helpers do
|
||||
quote do
|
||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||
use Phoenix.HTML
|
||||
|
||||
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
|
||||
import Phoenix.Component
|
||||
use PhoenixHTMLHelpers
|
||||
import Phoenix.{Component, HTML, HTML.Form}
|
||||
import MemexWeb.{ErrorHelpers, Gettext, CoreComponents, HTMLHelpers}
|
||||
|
||||
# Shortcut for generating JS commands
|
||||
|
|
|
@ -2,6 +2,7 @@ defmodule MemexWeb.CoreComponents do
|
|||
@moduledoc """
|
||||
Provides core UI components.
|
||||
"""
|
||||
use PhoenixHTMLHelpers
|
||||
use Phoenix.Component
|
||||
use MemexWeb, :verified_routes
|
||||
import MemexWeb.{Gettext, HTMLHelpers}
|
||||
|
@ -163,7 +164,7 @@ defmodule MemexWeb.CoreComponents do
|
|||
content,
|
||||
fn _whole_match, link ->
|
||||
link =
|
||||
HTML.Link.link(
|
||||
link(
|
||||
link,
|
||||
to: link,
|
||||
class: "link inline",
|
||||
|
@ -185,7 +186,7 @@ defmodule MemexWeb.CoreComponents do
|
|||
content,
|
||||
fn _whole_match, prefix, slug, suffix ->
|
||||
link =
|
||||
HTML.Link.link(
|
||||
link(
|
||||
"[[[#{slug}]]]",
|
||||
to: ~p"/note/#{slug}",
|
||||
class: "link inline"
|
||||
|
@ -212,7 +213,7 @@ defmodule MemexWeb.CoreComponents do
|
|||
end
|
||||
|
||||
link =
|
||||
HTML.Link.link(
|
||||
link(
|
||||
"[[#{slug}]]",
|
||||
to: target,
|
||||
class: "link inline"
|
||||
|
@ -240,7 +241,7 @@ defmodule MemexWeb.CoreComponents do
|
|||
end
|
||||
|
||||
link =
|
||||
HTML.Link.link(
|
||||
link(
|
||||
"[#{slug}]",
|
||||
to: target,
|
||||
class: "link inline"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<div
|
||||
:if={@context.content}
|
||||
id={"show-context-content-#{@context.id}"}
|
||||
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<div
|
||||
:if={@note.content}
|
||||
id={"show-note-content-#{@note.id}"}
|
||||
class="input input-primary h-128 min-h-128 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<div
|
||||
:if={@pipeline.description}
|
||||
id={"show-pipeline-description-#{@pipeline.id}"}
|
||||
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<div
|
||||
:if={@step.content}
|
||||
id={"show-step-content-#{@step.id}"}
|
||||
class="input input-primary h-32 min-h-32 inline-block whitespace-pre-wrap overflow-x-hidden overflow-y-auto resize-y"
|
||||
phx-update="ignore"
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<li class="mx-2 my-1 border-left border border-primary-700"></li>
|
||||
|
||||
<%= if @current_user do %>
|
||||
<li :if={@current_user |> Accounts.is_already_admin?()} class="mx-2 my-1">
|
||||
<li :if={@current_user |> Accounts.already_admin?()} class="mx-2 my-1">
|
||||
<.link navigate={~p"/invites"} class="text-primary-400 hover:underline">
|
||||
<%= gettext("invites") %>
|
||||
</.link>
|
||||
|
|
|
@ -3,8 +3,8 @@ defmodule MemexWeb.ErrorHelpers do
|
|||
Conveniences for translating and building error messages.
|
||||
"""
|
||||
|
||||
use Phoenix.HTML
|
||||
import Phoenix.Component
|
||||
use PhoenixHTMLHelpers
|
||||
import Phoenix.{Component, HTML.Form}
|
||||
alias Ecto.Changeset
|
||||
alias Phoenix.{HTML.Form, LiveView.Rendered}
|
||||
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :slug,
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("slug"),
|
||||
aria_label: gettext("slug"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("slug")
|
||||
) %>
|
||||
<%= error_tag(f, :slug) %>
|
||||
|
||||
|
@ -30,11 +31,12 @@
|
|||
<%= error_tag(f, :content) %>
|
||||
|
||||
<%= text_input(f, :tags_string,
|
||||
id: "tags-input",
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("tag1,tag2"),
|
||||
aria_label: gettext("tag1,tag2"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
id: "tags-input",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTags",
|
||||
placeholder: gettext("tag1,tag2")
|
||||
) %>
|
||||
<%= error_tag(f, :tags_string) %>
|
||||
|
||||
|
|
|
@ -33,14 +33,14 @@
|
|||
>
|
||||
<:actions :let={context}>
|
||||
<.link
|
||||
:if={Contexts.is_owner?(context, @current_user)}
|
||||
:if={Contexts.owner?(context, @current_user)}
|
||||
patch={~p"/contexts/#{context}/edit"}
|
||||
aria-label={dgettext("actions", "edit %{context_slug}", context_slug: context.slug)}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<.link
|
||||
:if={Contexts.is_owner_or_admin?(context, @current_user)}
|
||||
:if={Contexts.owner_or_admin?(context, @current_user)}
|
||||
href="#"
|
||||
phx-click="delete"
|
||||
phx-value-id={context.id}
|
||||
|
|
|
@ -17,14 +17,14 @@
|
|||
|
||||
<div class="self-end flex space-x-4">
|
||||
<.link
|
||||
:if={Contexts.is_owner?(@context, @current_user)}
|
||||
:if={Contexts.owner?(@context, @current_user)}
|
||||
class="btn btn-primary"
|
||||
patch={~p"/context/#{@context}/edit"}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<button
|
||||
:if={Contexts.is_owner_or_admin?(@context, @current_user)}
|
||||
:if={Contexts.owner_or_admin?(@context, @current_user)}
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
phx-click="delete"
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
<p>
|
||||
<%= gettext("in my opinion, contexts should be like single-topic blog posts.") %>
|
||||
<%= 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."
|
||||
"for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could link to the spoon note as an example of how it fits nicely into your hand."
|
||||
) %>
|
||||
</p>
|
||||
</li>
|
||||
|
@ -100,10 +100,10 @@
|
|||
</b>
|
||||
<p>
|
||||
<%= gettext(
|
||||
"in my opinion, pipelines should be pretty lightweight, and just backlink to contexts to provide most of the heavy lifting."
|
||||
"in my opinion, pipelines should be pretty lightweight, and just link to contexts to provide most of the heavy lifting."
|
||||
) %>
|
||||
<%= 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."
|
||||
"for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could link to the physical designs context, maybe with some notes about how it applies in this case."
|
||||
) %>
|
||||
</p>
|
||||
</li>
|
||||
|
@ -117,7 +117,7 @@
|
|||
"while memEx fully supports multiple users, each memEx instance should be treated as a single cohesive and collaborative document."
|
||||
) %>
|
||||
<%= gettext(
|
||||
"note, context and pipeline slugs must be unique, and you are free to backlink to notes not written by you."
|
||||
"note, context and pipeline slugs must be unique, and you are free to link to notes not written by you."
|
||||
) %>
|
||||
<%= 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 :)"
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
</h1>
|
||||
|
||||
<%= if @invites |> Enum.empty?() do %>
|
||||
<h1 class="title text-xl text-primary-400">
|
||||
<h1 class="title text-xl text-primary-400 text-center">
|
||||
<%= gettext("no invites 😔") %>
|
||||
</h1>
|
||||
|
||||
<.link patch={~p"/invites"} class="btn btn-primary">
|
||||
<%= dgettext("actions", "invite someone new!") %>
|
||||
<.link patch={~p"/invites"} class="ml-auto btn btn-primary">
|
||||
<%= dgettext("actions", "new invite") %>
|
||||
</.link>
|
||||
<% end %>
|
||||
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :slug,
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("slug"),
|
||||
aria_label: gettext("slug"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("slug")
|
||||
) %>
|
||||
<%= error_tag(f, :slug) %>
|
||||
|
||||
|
@ -28,11 +29,12 @@
|
|||
<%= error_tag(f, :content) %>
|
||||
|
||||
<%= text_input(f, :tags_string,
|
||||
id: "tags-input",
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("tag1,tag2"),
|
||||
aria_label: gettext("tag1,tag2"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
id: "tags-input",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTags",
|
||||
placeholder: gettext("tag1,tag2")
|
||||
) %>
|
||||
<%= error_tag(f, :tags_string) %>
|
||||
|
||||
|
|
|
@ -33,14 +33,14 @@
|
|||
>
|
||||
<:actions :let={note}>
|
||||
<.link
|
||||
:if={Notes.is_owner?(note, @current_user)}
|
||||
:if={Notes.owner?(note, @current_user)}
|
||||
patch={~p"/notes/#{note}/edit"}
|
||||
aria-label={dgettext("actions", "edit %{note_slug}", note_slug: note.slug)}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<.link
|
||||
:if={Notes.is_owner_or_admin?(note, @current_user)}
|
||||
:if={Notes.owner_or_admin?(note, @current_user)}
|
||||
href="#"
|
||||
phx-click="delete"
|
||||
phx-value-id={note.id}
|
||||
|
|
|
@ -17,14 +17,14 @@
|
|||
|
||||
<div class="self-end flex space-x-4">
|
||||
<.link
|
||||
:if={Notes.is_owner?(@note, @current_user)}
|
||||
:if={Notes.owner?(@note, @current_user)}
|
||||
class="btn btn-primary"
|
||||
patch={~p"/note/#{@note}/edit"}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<button
|
||||
:if={Notes.is_owner_or_admin?(@note, @current_user)}
|
||||
:if={Notes.owner_or_admin?(@note, @current_user)}
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
phx-click="delete"
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :slug,
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("slug"),
|
||||
aria_label: gettext("slug"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("slug")
|
||||
) %>
|
||||
<%= error_tag(f, :slug) %>
|
||||
|
||||
|
@ -34,11 +35,12 @@
|
|||
<%= error_tag(f, :description) %>
|
||||
|
||||
<%= text_input(f, :tags_string,
|
||||
id: "tags-input",
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("tag1,tag2"),
|
||||
aria_label: gettext("tag1,tag2"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
id: "tags-input",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTags",
|
||||
placeholder: gettext("tag1,tag2")
|
||||
) %>
|
||||
<%= error_tag(f, :tags_string) %>
|
||||
|
||||
|
|
|
@ -33,14 +33,14 @@
|
|||
>
|
||||
<:actions :let={pipeline}>
|
||||
<.link
|
||||
:if={Pipelines.is_owner?(pipeline, @current_user)}
|
||||
:if={Pipelines.owner?(pipeline, @current_user)}
|
||||
patch={~p"/pipelines/#{pipeline}/edit"}
|
||||
aria-label={dgettext("actions", "edit %{pipeline_slug}", pipeline_slug: pipeline.slug)}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<.link
|
||||
:if={Pipelines.is_owner_or_admin?(pipeline, @current_user)}
|
||||
:if={Pipelines.owner_or_admin?(pipeline, @current_user)}
|
||||
href="#"
|
||||
phx-click="delete"
|
||||
phx-value-id={pipeline.id}
|
||||
|
|
|
@ -17,14 +17,14 @@
|
|||
|
||||
<div class="pb-4 self-end flex space-x-4">
|
||||
<.link
|
||||
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
||||
:if={Pipelines.owner?(@pipeline, @current_user)}
|
||||
class="btn btn-primary"
|
||||
patch={~p"/pipeline/#{@pipeline}/edit"}
|
||||
>
|
||||
<%= dgettext("actions", "edit") %>
|
||||
</.link>
|
||||
<button
|
||||
:if={Pipelines.is_owner_or_admin?(@pipeline, @current_user)}
|
||||
:if={Pipelines.owner_or_admin?(@pipeline, @current_user)}
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
phx-click="delete"
|
||||
|
@ -52,7 +52,7 @@
|
|||
<%= gettext("%{position}. %{title}", position: position + 1, title: title) %>
|
||||
</h3>
|
||||
|
||||
<%= if Pipelines.is_owner?(@pipeline, @current_user) do %>
|
||||
<%= if Pipelines.owner?(@pipeline, @current_user) do %>
|
||||
<div class="flex justify-between items-center space-x-4">
|
||||
<%= if position <= 0 do %>
|
||||
<i class="fas text-xl fa-chevron-up cursor-not-allowed opacity-25"></i>
|
||||
|
@ -113,7 +113,7 @@
|
|||
<% end %>
|
||||
|
||||
<.link
|
||||
:if={Pipelines.is_owner?(@pipeline, @current_user)}
|
||||
:if={Pipelines.owner?(@pipeline, @current_user)}
|
||||
class="self-end btn btn-primary"
|
||||
patch={~p"/pipeline/#{@pipeline}/add_step"}
|
||||
>
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
class="flex flex-col justify-start items-stretch space-y-4"
|
||||
>
|
||||
<%= text_input(f, :title,
|
||||
class: "input input-primary",
|
||||
placeholder: gettext("title"),
|
||||
aria_label: gettext("title"),
|
||||
phx_debounce: 300
|
||||
class: "input input-primary",
|
||||
phx_debounce: 300,
|
||||
phx_hook: "SanitizeTitles",
|
||||
placeholder: gettext("title")
|
||||
) %>
|
||||
<%= error_tag(f, :title) %>
|
||||
|
||||
|
|
39
mix.exs
39
mix.exs
|
@ -4,8 +4,8 @@ defmodule Memex.MixProject do
|
|||
def project do
|
||||
[
|
||||
app: :memex,
|
||||
version: "0.1.14",
|
||||
elixir: "1.15.6",
|
||||
version: "0.1.16",
|
||||
elixir: "1.16.1",
|
||||
elixirc_paths: elixirc_paths(Mix.env()),
|
||||
start_permanent: Mix.env() == :prod,
|
||||
aliases: aliases(),
|
||||
|
@ -47,29 +47,30 @@ defmodule Memex.MixProject do
|
|||
defp deps do
|
||||
[
|
||||
{:bcrypt_elixir, "~> 3.0"},
|
||||
{:phoenix, "~> 1.7.0"},
|
||||
{:phoenix_ecto, "~> 4.4"},
|
||||
{:phoenix_html, "~> 3.0"},
|
||||
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
||||
{:phoenix_live_view, "~> 0.20.0"},
|
||||
{:phoenix_live_dashboard, "~> 0.8"},
|
||||
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
|
||||
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
|
||||
{:ecto_psql_extras, "~> 0.6"},
|
||||
{:ecto_sql, "~> 3.6"},
|
||||
{:postgrex, ">= 0.0.0"},
|
||||
{:floki, ">= 0.30.0", only: :test},
|
||||
{:eqrcode, "~> 0.1.10"},
|
||||
# {:esbuild, "~> 0.3", runtime: Mix.env() == :dev},
|
||||
{:ex_doc, "~> 0.27", only: :dev, runtime: false},
|
||||
{:swoosh, "~> 1.6"},
|
||||
{:floki, ">= 0.30.0", only: :test},
|
||||
{:gen_smtp, "~> 1.0"},
|
||||
{:oban, "~> 2.10"},
|
||||
{:telemetry_metrics, "~> 0.6"},
|
||||
{:telemetry_poller, "~> 1.0"},
|
||||
{:gettext, "~> 0.18"},
|
||||
{:jason, "~> 1.2"},
|
||||
{:plug_cowboy, "~> 2.5"},
|
||||
{:ecto_psql_extras, "~> 0.6"},
|
||||
{:eqrcode, "~> 0.1.10"},
|
||||
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
|
||||
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}
|
||||
{:oban, "~> 2.10"},
|
||||
{:phoenix_ecto, "~> 4.4"},
|
||||
{:phoenix_html_helpers, "~> 1.0"},
|
||||
{:phoenix_html, "~> 4.0"},
|
||||
{:phoenix_live_dashboard, "~> 0.8"},
|
||||
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
||||
{:phoenix_live_view, "~> 0.20.0"},
|
||||
{:phoenix, "~> 1.7.11"},
|
||||
{:plug_cowboy, "~> 2.7.0"},
|
||||
{:postgrex, ">= 0.0.0"},
|
||||
{:swoosh, "~> 1.6"},
|
||||
{:telemetry_metrics, "~> 0.6"},
|
||||
{:telemetry_poller, "~> 1.0"}
|
||||
]
|
||||
end
|
||||
|
||||
|
|
56
mix.lock
56
mix.lock
|
@ -1,53 +1,53 @@
|
|||
%{
|
||||
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.1.0", "0b110a9a6c619b19a7f73fa3004aa11d6e719a67e672d1633dc36b6b2290a0f7", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2ad2acb5a8bc049e8d5aa267802631912bb80d5f4110a178ae7999e69dca1bf7"},
|
||||
"bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"},
|
||||
"castore": {:hex, :castore, "1.0.4", "ff4d0fb2e6411c0479b1d965a814ea6d00e51eb2f58697446e9c41a97d940b28", [:mix], [], "hexpm", "9418c1b8144e11656f0be99943db4caf04612e3eaecefb5dae9a2a87565584f8"},
|
||||
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
|
||||
"castore": {:hex, :castore, "1.0.5", "9eeebb394cc9a0f3ae56b813459f990abb0a3dedee1be6b27fdb50301930502f", [:mix], [], "hexpm", "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578"},
|
||||
"comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"},
|
||||
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
|
||||
"cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
|
||||
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
|
||||
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
|
||||
"credo": {:hex, :credo, "1.7.1", "6e26bbcc9e22eefbff7e43188e69924e78818e2fe6282487d0703652bc20fd62", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2"},
|
||||
"credo": {:hex, :credo, "1.7.5", "643213503b1c766ec0496d828c90c424471ea54da77c8a168c725686377b9545", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "f799e9b5cd1891577d8c773d245668aa74a2fcd15eb277f51a0131690ebfb3fd"},
|
||||
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
|
||||
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
|
||||
"dialyxir": {:hex, :dialyxir, "1.4.2", "764a6e8e7a354f0ba95d58418178d486065ead1f69ad89782817c296d0d746a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "516603d8067b2fd585319e4b13d3674ad4f314a5902ba8130cd97dc902ce6bbd"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.37", "2ad73550e27c8946648b06905a57e4d454e4d7229c2dafa72a0348c99d8be5f7", [:mix], [], "hexpm", "6b19783f2802f039806f375610faa22da130b8edc21209d0bff47918bb48360e"},
|
||||
"ecto": {:hex, :ecto, "3.10.3", "eb2ae2eecd210b4eb8bece1217b297ad4ff824b4384c0e3fdd28aaf96edd6135", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "44bec74e2364d491d70f7e42cd0d690922659d329f6465e89feb8a34e8cd3433"},
|
||||
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.14", "7a20cfe913b0476542b43870e67386461258734896035e3f284039fd18bd4c4c", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "22f5f98592dd597db9416fcef00effae0787669fdcb6faf447e982b553798e98"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.10.2", "6b98b46534b5c2f8b8b5f03f126e75e2a73c64f3c071149d32987a5378b0fdbd", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "68c018debca57cb9235e3889affdaec7a10616a4e3a80c99fa1d01fdafaa9007"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.7.7", "7128c60c2476019ed978210c245badf08b03dbec4f24d05790ef791da11aa17c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c"},
|
||||
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
|
||||
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
|
||||
"ecto": {:hex, :ecto, "3.11.1", "4b4972b717e7ca83d30121b12998f5fcdc62ba0ed4f20fd390f16f3270d85c3e", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ebd3d3772cd0dfcd8d772659e41ed527c28b2a8bde4b00fe03e0463da0f1983b"},
|
||||
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.15", "0fc29dbae0e444a29bd6abeee4cf3c4c037e692a272478a234a1cc765077dbb1", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1 or ~> 4.0.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "b6127f3a5c6fc3d84895e4768cc7c199f22b48b67d6c99b13fbf4a374e73f039"},
|
||||
"ecto_sql": {:hex, :ecto_sql, "3.11.1", "e9abf28ae27ef3916b43545f9578b4750956ccea444853606472089e7d169470", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ce14063ab3514424276e7e360108ad6c2308f6d88164a076aac8a387e1fea634"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.7.8", "505026f266552ee5aabca0b9f9c229cbb496c689537c9f922f3eb5431157efc7", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.0", [hex: :certifi, repo: "hexpm", optional: true]}], "hexpm", "7a71945b913d37ea89b06966e1342c85cfe549b15e6d6d081e8081c493062c07"},
|
||||
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"},
|
||||
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.30.9", "d691453495c47434c0f2052b08dd91cc32bc4e1a218f86884563448ee2502dd2", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "d7aaaf21e95dc5cddabf89063327e96867d00013963eadf2c6ad135506a8bc10"},
|
||||
"expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.31.1", "8a2355ac42b1cc7b2379da9e40243f2670143721dd50748bf6c3b1184dae2089", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"},
|
||||
"expo": {:hex, :expo, "0.5.2", "beba786aab8e3c5431813d7a44b828e7b922bfa431d6bfbada0904535342efe2", [:mix], [], "hexpm", "8c9bfa06ca017c9cb4020fabe980bc7fdb1aaec059fd004c2ab3bff03b1c599c"},
|
||||
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
|
||||
"floki": {:hex, :floki, "0.35.2", "87f8c75ed8654b9635b311774308b2760b47e9a579dabf2e4d5f1e1d42c39e0b", [:mix], [], "hexpm", "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9"},
|
||||
"floki": {:hex, :floki, "0.35.4", "cc947b446024732c07274ac656600c5c4dc014caa1f8fb2dfff93d275b83890d", [:mix], [], "hexpm", "27fa185d3469bd8fc5947ef0f8d5c4e47f0af02eb6b070b63c868f69e3af0204"},
|
||||
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
|
||||
"gettext": {:hex, :gettext, "0.23.1", "821e619a240e6000db2fc16a574ef68b3bd7fe0167ccc264a81563cc93e67a31", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "19d744a36b809d810d610b57c27b934425859d158ebd56561bc41f7eeb8795db"},
|
||||
"gettext": {:hex, :gettext, "0.24.0", "6f4d90ac5f3111673cbefc4ebee96fe5f37a114861ab8c7b7d5b30a1108ce6d8", [:mix], [{:expo, "~> 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"},
|
||||
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
|
||||
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
|
||||
"makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"},
|
||||
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
|
||||
"makeup_erlang": {:hex, :makeup_erlang, "0.1.2", "ad87296a092a46e03b7e9b0be7631ddcf64c790fa68a9ef5323b6cbb36affc72", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108"},
|
||||
"makeup_erlang": {:hex, :makeup_erlang, "0.1.4", "29563475afa9b8a2add1b7a9c8fb68d06ca7737648f28398e04461f008b69521", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f4ed47ecda66de70dd817698a703f8816daa91272e7e45812469498614ae8b29"},
|
||||
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
|
||||
"oban": {:hex, :oban, "2.16.3", "33ebe7da637cce4da5438c1636bc25448a8628994a0c064ac6078bbe6dc97bd6", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4d8a7fb62f63cf2f2080c78954425f5fd8916ef57196b7f79b5bc657abb2ac5f"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.10", "02189140a61b2ce85bb633a9b6fd02dff705a5f1596869547aeb2b2b95edd729", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
|
||||
"oban": {:hex, :oban, "2.17.4", "3ebe79dc0cad16f23e5feea418f9bc5b07d453b8fb7caf376d812be96157a5c5", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "71a804abea3bb7e104782a5b5337cbab76c1a56b9689a6d5159a3873c93898b6"},
|
||||
"phoenix": {:hex, :phoenix, "1.7.11", "1d88fc6b05ab0c735b250932c4e6e33bfa1c186f76dcf623d8dd52f07d6379c7", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a"},
|
||||
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "3.3.3", "380b8fb45912b5638d2f1d925a3771b4516b9a78587249cabe394e0a5d579dc9", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c"},
|
||||
"phoenix_html": {:hex, :phoenix_html, "4.0.0", "4857ec2edaccd0934a923c2b0ba526c44a173c86b847e8db725172e9e51d11d6", [:mix], [], "hexpm", "cee794a052f243291d92fa3ccabcb4c29bb8d236f655fb03bcbdc3a8214b8d13"},
|
||||
"phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"},
|
||||
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.3", "7ff51c9b6609470f681fbea20578dede0e548302b0c8bdf338b5a753a4f045bf", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"},
|
||||
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
|
||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.1", "92a37acf07afca67ac98bd326532ba8f44ad7d4bdf3e4361b03f7f02594e5ae9", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "be494fd1215052729298b0e97d5c2ce8e719c00854b82cd8cf15c1cd7fcf6294"},
|
||||
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.9", "46d5d436d3f8ff97f066b6c45528fd842a711fd3875b2d3f706b2e769ea07c51", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "694388615ece21b70c523910cba1c633132b08a270caaf60100dd4eaf331885d"},
|
||||
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"},
|
||||
"plug": {:hex, :plug, "1.15.1", "b7efd81c1a1286f13efb3f769de343236bd8b7d23b4a9f40d3002fc39ad8f74c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "459497bd94d041d98d948054ec6c0b76feacd28eec38b219ca04c0de13c79d30"},
|
||||
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
|
||||
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
|
||||
"plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"},
|
||||
"plug_cowboy": {:hex, :plug_cowboy, "2.7.0", "3ae9369c60641084363b08fe90267cbdd316df57e3557ea522114b30b63256ea", [:mix], [{:cowboy, "~> 2.7.0 or ~> 2.8.0 or ~> 2.9.0 or ~> 2.10.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d85444fb8aa1f2fc62eabe83bbe387d81510d773886774ebdcb429b3da3c1a4a"},
|
||||
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
|
||||
"postgrex": {:hex, :postgrex, "0.17.3", "c92cda8de2033a7585dae8c61b1d420a1a1322421df84da9a82a6764580c503d", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "946cf46935a4fdca7a81448be76ba3503cff082df42c6ec1ff16a4bdfbfb098d"},
|
||||
"postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"},
|
||||
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
|
||||
"swoosh": {:hex, :swoosh, "1.14.0", "710e363e114dedb4080b737e0307f5410887ffc9a239f818231e5618b6b84e1b", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dccfc986ac99c18345ab3e1a8b934b2d817fd6d59a2494f0af78502184c71025"},
|
||||
"table_rex": {:hex, :table_rex, "3.1.1", "0c67164d1714b5e806d5067c1e96ff098ba7ae79413cc075973e17c38a587caa", [:mix], [], "hexpm", "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490"},
|
||||
"swoosh": {:hex, :swoosh, "1.15.2", "490ea85a98e8fb5178c07039e0d8519839e38127724a58947a668c00db7574ee", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.4 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9f7739c02f6c7c0ca82ee397f3bfe0465dbe4c8a65372ac2a5584bf147dd5831"},
|
||||
"table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"},
|
||||
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
|
||||
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
|
||||
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.2", "2caabe9344ec17eafe5403304771c3539f3b6e2f7fb6a6f602558c825d0d0bfb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9b43db0dc33863930b9ef9d27137e78974756f5f198cae18409970ed6fa5b561"},
|
||||
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
|
||||
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
|
||||
"websock_adapter": {:hex, :websock_adapter, "0.5.5", "9dfeee8269b27e958a65b3e235b7e447769f66b5b5925385f5a569269164a210", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9"},
|
||||
|
|
|
@ -66,11 +66,6 @@ msgstr ""
|
|||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "invite someone new!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/core_components/topbar.html.heex:85
|
||||
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:28
|
||||
#: lib/memex_web/controllers/user_registration_html/new.html.heex:44
|
||||
|
@ -108,11 +103,11 @@ msgstr ""
|
|||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:51
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:53
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
@ -217,3 +212,8 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format
|
||||
msgid "reset password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "new invite"
|
||||
msgstr ""
|
||||
|
|
|
@ -66,11 +66,6 @@ msgstr ""
|
|||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "invite someone new!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/core_components/topbar.html.heex:85
|
||||
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:28
|
||||
#: lib/memex_web/controllers/user_registration_html/new.html.heex:44
|
||||
|
@ -108,11 +103,11 @@ msgstr ""
|
|||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:51
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:53
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
@ -217,3 +212,8 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "reset password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "new invite"
|
||||
msgstr ""
|
||||
|
|
|
@ -237,20 +237,20 @@ msgstr ""
|
|||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:54
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:52
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:42
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:46
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "select privacy"
|
||||
msgstr ""
|
||||
|
@ -266,12 +266,12 @@ msgstr ""
|
|||
msgid "settings"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:35
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:36
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:33
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "tag1,tag2"
|
||||
msgstr ""
|
||||
|
@ -379,12 +379,12 @@ msgstr ""
|
|||
#: lib/memex_web/components/contexts_table_component.ex:47
|
||||
#: lib/memex_web/components/notes_table_component.ex:47
|
||||
#: lib/memex_web/components/pipelines_table_component.ex:47
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
@ -457,8 +457,8 @@ msgstr ""
|
|||
msgid "steps:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
@ -468,16 +468,6 @@ msgstr ""
|
|||
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: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: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: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."
|
||||
|
@ -498,11 +488,6 @@ msgstr ""
|
|||
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: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:28
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "memex"
|
||||
|
@ -568,11 +553,6 @@ msgstr ""
|
|||
msgid "how many people should i invite?"
|
||||
msgstr ""
|
||||
|
||||
#: 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: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 :)"
|
||||
|
@ -692,22 +672,42 @@ msgstr ""
|
|||
msgid "reset your password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:27
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:28
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:24
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:26
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [note-slug] to link to a note"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/faq_live.html.heex:91
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could link to the spoon note as an example of how it fits nicely into your hand."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/faq_live.html.heex:105
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could link 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:102
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "in my opinion, pipelines should be pretty lightweight, and just link to contexts to provide most of the heavy lifting."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/faq_live.html.heex:119
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "note, context and pipeline slugs must be unique, and you are free to link to notes not written by you."
|
||||
msgstr ""
|
||||
|
|
|
@ -235,20 +235,20 @@ msgstr ""
|
|||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:54
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:52
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:42
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:46
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "select privacy"
|
||||
msgstr ""
|
||||
|
@ -264,12 +264,12 @@ msgstr ""
|
|||
msgid "settings"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:35
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:36
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:33
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "tag1,tag2"
|
||||
msgstr ""
|
||||
|
@ -377,12 +377,12 @@ msgstr ""
|
|||
#: lib/memex_web/components/contexts_table_component.ex:47
|
||||
#: lib/memex_web/components/notes_table_component.ex:47
|
||||
#: lib/memex_web/components/pipelines_table_component.ex:47
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
@ -455,8 +455,8 @@ msgstr ""
|
|||
msgid "steps:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
@ -466,16 +466,6 @@ msgstr ""
|
|||
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: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: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: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."
|
||||
|
@ -496,11 +486,6 @@ msgstr ""
|
|||
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: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:28
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "memex"
|
||||
|
@ -566,11 +551,6 @@ msgstr ""
|
|||
msgid "how many people should i invite?"
|
||||
msgstr ""
|
||||
|
||||
#: 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: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 :)"
|
||||
|
@ -690,22 +670,42 @@ msgstr ""
|
|||
msgid "reset your password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:27
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:28
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:24
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:26
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [note-slug] to link to a note"
|
||||
msgstr ""
|
||||
|
||||
#: 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 link to the spoon note as an example of how it fits nicely into your hand."
|
||||
msgstr ""
|
||||
|
||||
#: 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 link 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:102
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "in my opinion, pipelines should be pretty lightweight, and just link to contexts to provide most of the heavy lifting."
|
||||
msgstr ""
|
||||
|
||||
#: 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 link to notes not written by you."
|
||||
msgstr ""
|
||||
|
|
|
@ -67,11 +67,6 @@ msgstr ""
|
|||
msgid "edit"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "invite someone new!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/components/core_components/topbar.html.heex:85
|
||||
#: lib/memex_web/controllers/user_confirmation_html/new.html.heex:28
|
||||
#: lib/memex_web/controllers/user_registration_html/new.html.heex:44
|
||||
|
@ -109,11 +104,11 @@ msgstr ""
|
|||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:51
|
||||
#: lib/memex_web/live/invite_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:53
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:55
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
|
@ -218,3 +213,8 @@ msgstr ""
|
|||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "reset password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/invite_live/index.html.heex:12
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "new invite"
|
||||
msgstr ""
|
||||
|
|
|
@ -236,20 +236,20 @@ msgstr ""
|
|||
msgid "report bugs or request features"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:54
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:52
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:56
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:39
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "saving..."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:42
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:43
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:48
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:49
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:46
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:47
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:44
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:45
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:50
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:51
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "select privacy"
|
||||
msgstr ""
|
||||
|
@ -265,12 +265,12 @@ msgstr ""
|
|||
msgid "settings"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:35
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:36
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:33
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:40
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:34
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:39
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:32
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:37
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:38
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:43
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "tag1,tag2"
|
||||
msgstr ""
|
||||
|
@ -378,12 +378,12 @@ msgstr ""
|
|||
#: lib/memex_web/components/contexts_table_component.ex:47
|
||||
#: lib/memex_web/components/notes_table_component.ex:47
|
||||
#: lib/memex_web/components/pipelines_table_component.ex:47
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:17
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
|
@ -456,8 +456,8 @@ msgstr ""
|
|||
msgid "steps:"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:14
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:15
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:13
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:17
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
@ -467,16 +467,6 @@ msgstr ""
|
|||
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: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: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: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."
|
||||
|
@ -497,11 +487,6 @@ msgstr ""
|
|||
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: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:28
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "memex"
|
||||
|
@ -567,11 +552,6 @@ msgstr ""
|
|||
msgid "how many people should i invite?"
|
||||
msgstr ""
|
||||
|
||||
#: 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: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 :)"
|
||||
|
@ -691,22 +671,42 @@ msgstr ""
|
|||
msgid "reset your password"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:29
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/pipeline_live/form_component.html.heex:30
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/step_live/form_component.html.heex:30
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "use [[[note-slug]]] to link to a note or use [[context-slug]] to link to a context or [pipeline-slug] to link to a pipeline"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:27
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:26
|
||||
#: lib/memex_web/live/context_live/form_component.html.heex:28
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [[note-slug]] to link to a note or [context-slug] to link to a context"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:24
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:25
|
||||
#: lib/memex_web/live/note_live/form_component.html.heex:26
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "use [note-slug] to link to a note"
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/faq_live.html.heex:91
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "for instance, a good context could be what makes some physical designs spark joy for you, and in that context you could link to the spoon note as an example of how it fits nicely into your hand."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/faq_live.html.heex:105
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "for instance, a pipeline for buying an object could have a step where you consider how much it sparks joy, and it could link 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:102
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "in my opinion, pipelines should be pretty lightweight, and just link to contexts to provide most of the heavy lifting."
|
||||
msgstr ""
|
||||
|
||||
#: lib/memex_web/live/faq_live.html.heex:119
|
||||
#, elixir-autogen, elixir-format, fuzzy
|
||||
msgid "note, context and pipeline slugs must be unique, and you are free to link to notes not written by you."
|
||||
msgstr ""
|
||||
|
|
Loading…
Reference in New Issue