Commits
Signed-off-by: Seongmin Lee <git@boltless.me>
still use `#comment-{rkey}` for UI, but internal identifier should
always use full at-uri.
Signed-off-by: Seongmin Lee <git@boltless.me>
New renderer that is more pure and receive ownerDid to generate blob
URLs including the user DID.
Issue: PDS doesn't serve pre-uploaded blobs, so preview fails. We need
extra blobCache just for pre-uploaded blobs or just do markdown
rendering on client side.
NOTE: considering we can't implement markdown normalizer with goldmark,
maybe it's better to split this as separate, embedable service
Signed-off-by: Seongmin Lee <git@boltless.me>
This commit doesn't include blob rendering
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
db schema is still using single file for non-blob file contents.
Signed-off-by: Seongmin Lee <git@boltless.me>
the `cid` column is nullable for now, missing ones will be filled later.
Signed-off-by: Seongmin Lee <git@boltless.me>
multiple `defer rows.Close()` call in same scope can be dangerous as
underlying value will change.
avoid that by splitting reverse-mapping queries into scoped blocks.
Signed-off-by: Seongmin Lee <git@boltless.me>
This can catch `pages.Notice` responses which is not a successful
request. We refresh the page on successful case, so it's fine to not
refresh the form.
Signed-off-by: Seongmin Lee <git@boltless.me>
Introduce aturi->url maker in `pages.Pages`. This can be used throughout
the codebase later.
Signed-off-by: Seongmin Lee <git@boltless.me>
the target URL for a notif was previously calculated in the template, we
now have this in models.NotificationWithEntity.
Signed-off-by: oppiliappan <me@oppi.li>
- /focus/begin: begin focus mode
- /focus/end: end focus mode
- /focus/next: mark read & move to next focus item
Signed-off-by: oppiliappan <me@oppi.li>
notifications are marked as read when the underlying URL is visited.
this now happens only when *outside* focus mode. when inside focus mode,
the notif is only marked as read on hitting the `next` button on the
focus pill.
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
down the line, BaseParams will include a bit more data, such as focus
status.
Signed-off-by: oppiliappan <me@oppi.li>
the popover showed on mouseover over the parent div, but the hx request
was fired on the <a> tag inside the div. if you managed to move the
mouse into an area where the div was present but the <a> was not
present, you could trigger a popover but not an hx request, causing the
loader to spin indefinitely.
we now do all events on the same element to prevent this bug.
Signed-off-by: oppiliappan <me@oppi.li>
we already have the profile popover.
Signed-off-by: oppiliappan <me@oppi.li>
when hitting mark-all-read, due to full page refresh, any page title
would be replaced with "notifications". this patch fixes that by
avoiding full page redirect.
Signed-off-by: oppiliappan <me@oppi.li>
safari on ios zooms on inputs if the font size is set to a value smaller
than 16px. setting the font size of <input> elements when the viewport
is smaller than `md` prevents that behavior
a broader fix would be to patch all inputs to behave that way. this
would require more manual work, this could be a point of focus when
transitioning to a better frontend framework.
resolves
[TAN-506](https://linear.app/tangled/issue/TAN-506/stop-safari-from-zooming-on-text-inputs)
Signed-off-by: eti <eti@eti.tf>
use the blessed logotype
Signed-off-by: oppiliappan <me@oppi.li>
the behavior is like so now:
- comments no longer have a reaction button below them
- like linear/discord/slack: the reaction button shows up on hover in
the comment header to the right
- when existing reactions are present, a reaction button can be seen in
the bottom, *in addition* to the one in the header (just like linear's
comment threads)
Signed-off-by: oppiliappan <me@oppi.li>
unifies button styles in putIssue, new comment, edit comment, reply
comment etc.
Signed-off-by: oppiliappan <me@oppi.li>
the thread collapse behavior should only show up when hovering over the
hit-area or the collapse button.
Signed-off-by: oppiliappan <me@oppi.li>
the new header includes the correct timestamp, removes the hover buttons
etc.
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
- errors are printed to the right of the button
- any existing error messages are dismissed before a new request is
fired
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
this will fix the verified mark bug
Signed-off-by: Seongmin Lee <git@boltless.me>
switch home/mission control to fractional columns with per-column
max-widths and a 1920px outer cap.
resolves [TAN-505](https://linear.app/tangled/issue/TAN-505)
Signed-off-by: eti <eti@eti.tf>
types.Commit already extracts the change-id commit header (written by
jj) on both the log and diff paths; this exposes it in the ui:
- commit lists (repo log, repo index): hovering the commit hash shows
the full change id as a tooltip
- commit page: full commit and parent hashes on their own line below
the commit meta, with the full change id underneath in
jj-conventional purple
Card felt flat — radial gradient added noise without depth.
Replaced with a clean linear gradient (dark mode inverted),
brighter text contrast, and a CSS-masked gradient shield icon.
Refs: [TAN-486](https://linear.app/tangled/issue/TAN-486)
Signed-off-by: eti <eti@eti.tf>
anonymous text nodes don't receive gap from the parent flex container;
wrapping "authored by" and "and committed by" in explicit span elements
fixes the missing space between user link and label text
Signed-off-by: eti <eti@eti.tf>
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
fixes duplications in our DB from an unfortunate spindle deploy. on the
offchance that there are other spindle instances out there that deployed
master, this should fix all ingested statuses.
Signed-off-by: oppiliappan <me@oppi.li>
when selecting fork sources, we were selecting by at_uri, which was
causing the queries to sliently fail. switching to repoDids here fixes
fork sources, and as a result, fixes the templates to render the right
repo card text: `<user> forked <repo> to <repo>`.
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: eti <eti@eti.tf>
Lewis: May this revision serve well! <lewis@tangled.org>
benchmarked on a synthetic db (10k users, 500k follows, 500k stars,
50k repos), the per-source queries behind the following timeline were
slow because of missing indexes and a poor query shape:
- stars filtered by did had no usable index; sqlite picked
idx_stars_subject_type which matches nearly every row (~312ms)
- follower/following counts group by subject_did, which had no
index, forcing a full scan (~229ms)
- follows ordered by followed_at with no index sorted every matched
row in a temp b-tree (~157ms)
fixes:
- new indexes: stars(did, subject_type, created),
follows(subject_did), follows(followed_at), repos(created); the
latter two also let the global timeline read newest-first straight
off an index instead of sorting
- push the following-set membership check into sql with a subquery
(orm.FilterInSubquery) instead of materializing all followed dids
in go and binding them as hundreds of placeholders in three
separate queries
all benchmarked queries now run in ~1ms.
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Useful during local testing.
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Signed-off-by: Seongmin Lee <git@boltless.me>
New renderer that is more pure and receive ownerDid to generate blob
URLs including the user DID.
Issue: PDS doesn't serve pre-uploaded blobs, so preview fails. We need
extra blobCache just for pre-uploaded blobs or just do markdown
rendering on client side.
NOTE: considering we can't implement markdown normalizer with goldmark,
maybe it's better to split this as separate, embedable service
Signed-off-by: Seongmin Lee <git@boltless.me>
the popover showed on mouseover over the parent div, but the hx request
was fired on the <a> tag inside the div. if you managed to move the
mouse into an area where the div was present but the <a> was not
present, you could trigger a popover but not an hx request, causing the
loader to spin indefinitely.
we now do all events on the same element to prevent this bug.
Signed-off-by: oppiliappan <me@oppi.li>
safari on ios zooms on inputs if the font size is set to a value smaller
than 16px. setting the font size of <input> elements when the viewport
is smaller than `md` prevents that behavior
a broader fix would be to patch all inputs to behave that way. this
would require more manual work, this could be a point of focus when
transitioning to a better frontend framework.
resolves
[TAN-506](https://linear.app/tangled/issue/TAN-506/stop-safari-from-zooming-on-text-inputs)
Signed-off-by: eti <eti@eti.tf>
the behavior is like so now:
- comments no longer have a reaction button below them
- like linear/discord/slack: the reaction button shows up on hover in
the comment header to the right
- when existing reactions are present, a reaction button can be seen in
the bottom, *in addition* to the one in the header (just like linear's
comment threads)
Signed-off-by: oppiliappan <me@oppi.li>
types.Commit already extracts the change-id commit header (written by
jj) on both the log and diff paths; this exposes it in the ui:
- commit lists (repo log, repo index): hovering the commit hash shows
the full change id as a tooltip
- commit page: full commit and parent hashes on their own line below
the commit meta, with the full change id underneath in
jj-conventional purple
benchmarked on a synthetic db (10k users, 500k follows, 500k stars,
50k repos), the per-source queries behind the following timeline were
slow because of missing indexes and a poor query shape:
- stars filtered by did had no usable index; sqlite picked
idx_stars_subject_type which matches nearly every row (~312ms)
- follower/following counts group by subject_did, which had no
index, forcing a full scan (~229ms)
- follows ordered by followed_at with no index sorted every matched
row in a temp b-tree (~157ms)
fixes:
- new indexes: stars(did, subject_type, created),
follows(subject_did), follows(followed_at), repos(created); the
latter two also let the global timeline read newest-first straight
off an index instead of sorting
- push the following-set membership check into sql with a subquery
(orm.FilterInSubquery) instead of materializing all followed dids
in go and binding them as hundreds of placeholders in three
separate queries
all benchmarked queries now run in ~1ms.
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>