Commits
Signed-off-by: oppiliappan <me@oppi.li>
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: Anirudh Oppiliappan <anirudh@tangled.org>
this is a temporary change to remove the copy-to-clipboard button in
readmes and blob views. to reintroduce this:
- understand if we need this at all (you can view raw, ctrl+a, ctrl+c)
- dedup code with existing copy-to-clipboard buttons
- figure out a good design for this in blob views, it is a bit cluttered
at the moment
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Also set etag for any small contents.
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Directly embedding xrpc response to page parameter makes super hard to
track which value is used where.
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>
Serving raw SVG from same origin can cause XSS attack.
Using octet-stream for SVG file will break the README rendering.
Thus, assuming knotmirror is hosted on different origin, appview will
just redirect to knotmirror for all `/raw/` blob paths.
Signed-off-by: Seongmin Lee <git@boltless.me>
the trending widget used a stretched link (absolute inset-0) inside a
position:relative table row. safari does not support positioned table
rows as containing blocks, so each row link stretched to a distant
ancestor and swallowed taps far outside the widget, e.g. the
global/following toggle on mobile. replace the table with real anchor
rows laid out on a grid.
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
Sorry for not catching this the first time!
Signed-off-by: Smit Patil <smit@smit.codes>
Signed-off-by: smit.codes <smit@smit.codes>
Signed-off-by: Smit Patil <smit@smit.codes>
Signed-off-by: smit.codes <smit@smit.codes>
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
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>
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>
this is a temporary change to remove the copy-to-clipboard button in
readmes and blob views. to reintroduce this:
- understand if we need this at all (you can view raw, ctrl+a, ctrl+c)
- dedup code with existing copy-to-clipboard buttons
- figure out a good design for this in blob views, it is a bit cluttered
at the moment
Signed-off-by: oppiliappan <me@oppi.li>
the trending widget used a stretched link (absolute inset-0) inside a
position:relative table row. safari does not support positioned table
rows as containing blocks, so each row link stretched to a distant
ancestor and swallowed taps far outside the widget, e.g. the
global/following toggle on mobile. replace the table with real anchor
rows laid out on a grid.
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>