commits
Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>
knotservers do not respond with the compare link when pushing a tag.
Signed-off-by: oppiliappan <me@oppi.li>
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>
- DrawLucideIcon & DrawDollySilhouette to simplify the svg drawing logic
- DrawDollySilhouette now depends on the html template itself, instead
of a bespoke svg
this changes lets us remove dolly.svg from the fragments.
Signed-off-by: oppiliappan <me@oppi.li>
Removed description edit UI / endpoints and put unified base settings
form in repository settings page.
This form is restricted to `repo:owner` permission same as before.
The internal model of topics is an array but they are stored/edited as
single string where each topics are joined with whitespaces.
Having a dedicated topics table with M:M relationship to the repo seems
a bit overkill considering we will have external search indexer anyway.
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
in sync with Issue.AtUri.
Signed-off-by: oppiliappan <me@oppi.li>
spindles can now give us detailed logs for start and end of steps. the
appview can ingest these logs to indicate live durations for steps. it
is implemented like so:
- the logs handler keeps track of start and end times for each step
- whenever we recieve a start or end time, we update the html to add a
`data-start` or `data-end` attribute
- using some javascript, we print a live updating timer for each step:
* if only `data-start` is present: then use Now - Start and update
each second
* if both `data-start` and `data-end` are present, then use End -
Start
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
old URLs that refer to users with the `@` are redirected to the version
without `@`. the leading motivation for this change is that valid
atproto handles do not contain the prefix. it is purely stylistic.
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: Evan Jarrett <evan@evanjarrett.com>
Signed-off-by: Evan Jarrett <evan@evanjarrett.com>
Signed-off-by: Evan Jarrett <evan@evanjarrett.com>
Signed-off-by: Evan Jarrett <evan@evanjarrett.com>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: Evan Jarrett <evan@evanjarrett.com>
Signed-off-by: Akshay Oppiliappan <me@oppi.li>
Co-authored-by: Evan Jarrett <evan@evanjarrett.com>
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: Shalabh Agarwal <me@serendipty01.dev>
fixes: https://tangled.org/@tangled.org/core/issues/224
Signed-off-by: oppiliappan <me@oppi.li>
we no longer resolve handles from DIDs at the handlers, we do this
dynamically when rendering the templates. EmailToDidOrHandle did not
follow this pattern.
there were a few negative side effects from this: the `tinyAvatar`
helper requires that the input be a DID; and not a handle. when a handle
is passed, it results in a different default color for users without
profile pictures; resulting in different colors in repo-log versus, say,
the topbar.
Signed-off-by: oppiliappan <me@oppi.li>
Close: #277
Signed-off-by: Seongmin Lee <git@boltless.me>
empty slice/array with 0 length can not be nil, check with length
instead
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: @nekomimi.pet <ana@nekoimimi.pet>
Signed-off-by: @nekomimi.pet <ana@nekoimimi.pet>
there was slightly more padding above the new-button dropdown vs the
profile dropdown in the topbar.
Signed-off-by: oppiliappan <me@oppi.li>
Labels and Pipeline routers do not use middleware, this has been removed
from their respective routers.
Signed-off-by: oppiliappan <me@oppi.li>
this will bump `treeblood` version to `v0.1.16` which doesn't have
invalid checksum issue
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Evan Jarrett <evan@evanjarrett.com>
same to `NewIssueState`, we can determine the detailed event type from
latest pull state
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
both issue close and reopen are handled by `NewIssueState` handler.
this works because passed `issue` obj is already holding the newest
issue state.
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Doesn't suport issue reopen yet
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
Signed-off-by: Seongmin Lee <boltlessengineer@proton.me>
Signed-off-by: Seongmin Lee <boltlessengineer@proton.me>
- Heavily inspired by gitea
- add `GetAllIssues` which only receives a paginator and gathers all
issues ignoring `repoAt` field
Signed-off-by: Seongmin Lee <boltlessengineer@proton.me>
Signed-off-by: Seongmin Lee <git@boltless.me>
the final addition to my collection of oauth fixes: the session cookie
is not a sufficient indication of a logged-in-ness of a user, we
additionally validate this cookie against the session on redis using
ResumeSession and kick users out if their session is invalid.
previously, a user may have appeared to be logged in (via the profile
picture on the top right), but creating an auth'd request would have
login-prompted them.
Signed-off-by: oppiliappan <me@oppi.li>
if sessions are inactive for too long, tokens will not be refreshed, and
calling authorized xrpc methods will error out with invalid_grant. this
changeset does two things:
- tracks the last time a session was active using a new redis pair:
`oauth:session_meta:<did>:<session>`, this is updated every time
`SaveSession` is called
- checks for session inactivity every time `GetSession` is called, and
deletes the session if so
this way, `GetSession` will never return a session with expired tokens.
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
this change makes our tangled appview a "confidential" client.
this change includes breaking changes to the appview service, it now
requires two different environment variables:
- TANGLED_OAUTH_CLIENT_SECRET: the secret component of the old JWKs
object
- TANGLED_OAUTH_CLIENT_KID: the key ID the old JWKs object
both of these can be extracted from the old JWKs object: `obj.d` and
`obj.kid` respectively.
Signed-off-by: oppiliappan <me@oppi.li>
Signed-off-by: oppiliappan <me@oppi.li>
we invalidate resolutions in our ingester, but the oauth SDK seems to
bring its own directory! this changeset shares them instead.
thanks to nel.pet <did:plc:h5wsnqetncv6lu2weom35lg2> for the hint.
Signed-off-by: oppiliappan <me@oppi.li>
Each methods will check if `page.limit` is higher than 0, and only
applies pagination when limit is higher than 0
Signed-off-by: Seongmin Lee <git@boltless.me>
Removed description edit UI / endpoints and put unified base settings
form in repository settings page.
This form is restricted to `repo:owner` permission same as before.
The internal model of topics is an array but they are stored/edited as
single string where each topics are joined with whitespaces.
Having a dedicated topics table with M:M relationship to the repo seems
a bit overkill considering we will have external search indexer anyway.
Signed-off-by: Seongmin Lee <git@boltless.me>
spindles can now give us detailed logs for start and end of steps. the
appview can ingest these logs to indicate live durations for steps. it
is implemented like so:
- the logs handler keeps track of start and end times for each step
- whenever we recieve a start or end time, we update the html to add a
`data-start` or `data-end` attribute
- using some javascript, we print a live updating timer for each step:
* if only `data-start` is present: then use Now - Start and update
each second
* if both `data-start` and `data-end` are present, then use End -
Start
Signed-off-by: oppiliappan <me@oppi.li>
we no longer resolve handles from DIDs at the handlers, we do this
dynamically when rendering the templates. EmailToDidOrHandle did not
follow this pattern.
there were a few negative side effects from this: the `tinyAvatar`
helper requires that the input be a DID; and not a handle. when a handle
is passed, it results in a different default color for users without
profile pictures; resulting in different colors in repo-log versus, say,
the topbar.
Signed-off-by: oppiliappan <me@oppi.li>
the final addition to my collection of oauth fixes: the session cookie
is not a sufficient indication of a logged-in-ness of a user, we
additionally validate this cookie against the session on redis using
ResumeSession and kick users out if their session is invalid.
previously, a user may have appeared to be logged in (via the profile
picture on the top right), but creating an auth'd request would have
login-prompted them.
Signed-off-by: oppiliappan <me@oppi.li>
if sessions are inactive for too long, tokens will not be refreshed, and
calling authorized xrpc methods will error out with invalid_grant. this
changeset does two things:
- tracks the last time a session was active using a new redis pair:
`oauth:session_meta:<did>:<session>`, this is updated every time
`SaveSession` is called
- checks for session inactivity every time `GetSession` is called, and
deletes the session if so
this way, `GetSession` will never return a session with expired tokens.
Signed-off-by: oppiliappan <me@oppi.li>
this change makes our tangled appview a "confidential" client.
this change includes breaking changes to the appview service, it now
requires two different environment variables:
- TANGLED_OAUTH_CLIENT_SECRET: the secret component of the old JWKs
object
- TANGLED_OAUTH_CLIENT_KID: the key ID the old JWKs object
both of these can be extracted from the old JWKs object: `obj.d` and
`obj.kid` respectively.
Signed-off-by: oppiliappan <me@oppi.li>