Jiratui – A Textual UI for interacting with Atlassian Jira from your shell

303 pointsposted 5 months ago
by gjvc

84 Comments

psanchez

5 months ago

Wow. Really cool. I wasn't expecting something so polished.

JIRA speed drives me crazy sometimes, so a couple of months ago I decided to build myself a tool to do instant searches/filters on multiple projects right from the browser just to scratch my own itch.

I just wanted to see if I could have near-instant filtering. I think I got a pretty decent performance by using some JS tricks. I'm sure there might be ways to make it even faster.

Page is around 70kb (HTML+CSS+JS). Everything is manually crafted. I know the design won't win a beauty contest, but it does feel instant and works for my personal use-case. I had a lot of fun building this side-project.

There is a public URL, feel free to try it out [1]. Already mentioned in a previous comment in HN a while ago [2].

[1] https://jetboard.pausanchez.com [2] https://news.ycombinator.com/item?id=44740472

For the record, it uses a proxy because of CORS. Proxy is in few lines of golang. No NPM or any other framework used to make the project. In any case, if anybody is interested in the source code to run it yourself I'm happy to make the project public. Trusting a proxy on some random's guy on internet is probably a bad idea, given all NPM shit that happened yesterday, in any case, if you want to try, feel free, but use at your own risk :P

benbristow

5 months ago

Looks cool, but definitely a security team's nightmare. Putting an API key into some random HN'ers hobby project is a bad, bad idea, whoever you are (not saying you're a bad actor, but a zero-trust policy would agree with me).

psanchez

5 months ago

Indeed. That's why I was transparent from the start. As I mentioned, using an API key this way is generally a bad idea. Even if I'm not a bad actor (which I'm not, but you shouldn't trust me), if someone compromises my server and forges requests, they could potentially access your projects.

JIRA's OAuth implementation requires apps to be registered, involves public/private key pairs, and changes the auth flow. That adds complexity and makes setup harder, which is why I opted for a simpler API key setup, you get the API key, you write it down, you can make requests. It is just simpler and does not require JIRA admin rights.

For comparison, JiraTUI also uses the user's API token. The difference, I guess, is that it runs locally on your machine, but they could also send it somewhere else. At the end of the day, it comes down to whether you trust what you're downloading versus trusting what runs on a remote server. It is true that locally you could potentially inspect all HTTPS or even TCP requests whereas in the remote server you don't have a clue.

The thing is, OAuth in JIRA demands app registration and certificate management, so I guess many developers end up defaulting to user API keys as the path of least resistance, even if they encourage OAuth as well.

psanchez

5 months ago

BTW, just to make it clear, in the case of jiratui you can also download from github repo directly and inspect the code if you wish :D

nine_k

5 months ago

> they could also send it somewhere

Run JiraTui in a container / bubblewrap, and only allow it to connect to the Jira API host:port.

gabeio

5 months ago

Wouldn’t that mean they could still exfiltrate it to another jira site they control?

conception

5 months ago

Yeah, oauth would be better.

rtpg

5 months ago

I desparately want something like this for Github.

I appreciate the value of the web browser providing the universal "quick" GUI (as in "I can open it on most devices and instantly interact"), but for power users I really wish more people were shipping things that helped out people not afraid to learn a bunch of keyboard commands

nine_k

5 months ago

Nothing prevents a Web app from having good keyboard shortcuts; Gmail and Linear are great examples.

GitHub becomes much more comfortable with the Refined GitHub extension. It adds a bunch of keyboard shortcuts, among a ton of other small improvements.

troyvit

5 months ago

> Nothing prevents a Web app from having good keyboard shortcuts; Gmail and Linear are great examples.

I think nothing prevents a web app from having keyboard shortcuts, but more often than not what I see is web apps having bad keyboard shortcuts that hijack the browser's natural behavior (taking over <ctrl>-f is a good example). I think often people go at this as if it's an Electron app and not a browser that has literally a hundred other interfaces loaded into it, leading the user to have certain expectations.

All that aside your Gmail example is spot on, and I'm one of those google-hatin' dudes.

nine_k

5 months ago

Yes, the unfortunate tradition of hijacking Ctrl+F is annoying. OTOH the forming tradition to use Ctrl+K to show a command palette / command line is commendable.

toomuchtodo

5 months ago

rtpg

5 months ago

The presented TUI is a full UI for simply browing Github, the Github CLI is not that.

Notice how I can list with `gh pr list` but then will need to run a full new command to actually inspect the contents of those PRs. I think an interactive interface would be nice!

redserk

5 months ago

I think you could probably whip something very basic and crude up with fzf and the “—-preview” flag

Banditoz

5 months ago

Github's UI used to be usable, at least.

prmoustache

5 months ago

Not satisfied with your IDE integration? There are some github plugins for nearly every IDE I can think of.

tcoff91

5 months ago

For reviewing PRs I use Octo.nvim

user

5 months ago

[deleted]

Apreche

5 months ago

I am absolutely going to try this.

One question. Is there any way that if I click a JIRA link somewhere, like email or Slack, that it could open in the TUI instead of in the browser? I just can’t imagine that being possible.

turtlebits

5 months ago

Its possible- you'd have to register a new uri handler to call the TUI (it'll need to take cli args to load the link/issue), then rewrite Jira links (tampermonkey script/browser extension) to use the new uri.

IshKebab

5 months ago

This is cool. I'm not a fan of TUIs at all (poor man's GUI if you ask me) but anything beats the Jira website trash.

I will definitely be curious to see how much of Jira's abysmal performance is due to the website design (got to be a fair bit given how badly things like drag and drop perform) and how much is due to the server.

zffr

5 months ago

What I like about TUIs are that they are forced to be simple, and are forced to load all data at once. I don’t prefer interacting with an app in a terminal window, but I do prefer the kinds of apps that are built with these constraints in mind.

There’s nothing preventing web apps from being built this way, but they just often are not.

willmartian

5 months ago

Could you expand on "and are forced to load all data at once"?

troyvit

5 months ago

I consider it the frugal man's GUI. Right now looking at top, any time I load a browser tab with Jira content chromium spikes to the top of the list. I'm not even doing anything with it.

IshKebab

5 months ago

Sure but that's just because the Jira website is awful. There's no reason you couldn't design a more frugal version, or a native GUI that was faster.

mwcz

5 months ago

The way drag and drop and most other updates block all UI interaction until the network response is infuriating.

dumpsterdiver

5 months ago

[flagged]

totallykvothe

5 months ago

Why the snark? It's a valid preference and he wasn't demanding anything.

_flux

5 months ago

I do have some complaints about the Jira web ui (in particular it seems finding correct issues can be difficult), though maybe nothing too severe.

For me the most useful thing would be a cli tool (not tui) to just add stories. This way I could just write a bunch of stories in a text file (..or an .org file..) with the conveniences of my editor and upload them. Seems jiratui actually comes with some cli tools as well, but it doesn't seem this is yet included, or it's not just documented yet. I'll give a shot to this..

Now I'm doing that by copypasting the entries from the file, one by one, to the fields in the web ui, and not all of the fields can be copy pasted, and then updating also the file to have the correct issue ids so I can use them for finding issues with e.g. grep. Naturally this will only work for my stories, and won't synchronize with changes made in Jira.

0x008

5 months ago

You can write your stories in csv (or vibe code a tool to do that) and then batch import the CSV.

ako

5 months ago

Yes, back to Oracle Forms 3.0. Fastest and best versions of Oracle Forms, as long as you know the keyboard shortcuts.

svl7

5 months ago

I'd love to work with this. The normal web view is annoyingly slow. Too bad it is not compatible with Api v2 used by on-prem Jira instances.

fru654

5 months ago

Sadly, the author indicated it's unlikely to support v2

danielvaughn

5 months ago

I want this but for Linear

dimarco

5 months ago

https://github.com/markmarkoh/lt

I wrote lt as a TUI for navigating/searching Linear issues. It is read-only right now.

danielvaughn

5 months ago

Very cool! Thanks for sharing. I've never written Rust but I've heard of ratatui - how do you like it?

dimarco

5 months ago

Rust is a joy to work with 85% of the time. Ratatui was a fun and easy way to get a TUI up and running.

snthpy

5 months ago

Looks great. How tied is it to Jira? How hard would it be to make it usable for Linear and Github Projects as well?

__fst__

5 months ago

Brilliant. Really nice looking TUI. One thing I noticed is that I still find myself using the mouse to click the form fields. The keyboard navigation seems to sometimes get stuck on fields and I then can't move around anymore. Is there an easy trick for jumping between the fields?

Biganon

5 months ago

Tried it; pretty cool, but I spent a long time crafting the perfect JQL query, just to lose it as soon as I closed the software. It might be nice to automatically save the search parameters as they are being submitted.

aeve890

5 months ago

Looks amazing! Does anyone know of TUI libraries for Rust or Go that achieve this level of polish? I've tried bubblegum, ratatui, tview but none of these seem to match the sleek, polished look of Textual.

sghiassy

5 months ago

I’m just commenting for the algorithm gods to promote this post - this is cool!!

viraptor

5 months ago

You're potentially doing the opposite. Upvote the post if you like it, but increasing the comment/vote ratio can cause a "controversial post" penalty.

tiomat

5 months ago

It’s awesome! I wrote a TUI for Jira for my own use, with extra stats like average time spent on tasks and counts of issues or bugs per epic. But yours looks so nice and polished—thanks for sharing your work!

numbers

5 months ago

is there something like this for Asana, I hate their UI and UX. Their keyboard shortcuts are based off `Tab` key being a "modifier" which makes absolutely no sense.

jdlyga

5 months ago

Looks promising, but there's some limitations. It cuts off the list of assignees after a few hundred or so. JQL works though.

9dev

5 months ago

You have issues with hundreds of assignees?

mwcz

5 months ago

At least on our instance there can only be one assignee, so I assume they are referring to the selection list of possible assignees.

jvanderbot

5 months ago

Tangential: I feel that CLI is in vogue again. Does anyone else sense that pendulum swinging again? Is it just me?

I've sensed for years from colleagues or blog posts etc a drive to go deeper and lower in the stack. I attributed this to the huge amount of front end devs who feel detached from the "real" stuff because of layers of frameworks. Not derisively, I think it's great. Even coworkers will express this to me.

This is what I suspect helped Rust skyrocket in the zeitgeist, too. It's got a lot of modern conveniences but it targets the more difficult areas like embedded, drivers, kernel, or performance critical code. And you can justifiably rewrite things (debatable but whatever). A way in!

I wonder if this is related?

Could be wrong on all this, of course.

nurettin

5 months ago

I remember using bitbucket API to open and close taskwarrior issues. Good times.

dbacar

5 months ago

Looks cool and unnecessary :)

Biganon

5 months ago

Looks absolutely necessary given how terrible Jira's UX is

johntash

5 months ago

Very cool, thanks! I'll give it a shot in the near future

troupo

5 months ago

I think the only thing it's missing is the board view.

theappsecguy

5 months ago

This is so fantastic. I want something like this for slack...

rtpg

5 months ago

https://cancel.fm/ripcord/ Ripcord isn't exactly this but it's fairly close. Hasn't been updated in 4 years though... when I messed with it in the past it felt nice!

bvvgpc

5 months ago

Simply lovely, will try this out, thanks for sharing!

outlore

5 months ago

very cool! is there a jira gui for efficient bulk management? does this TUI do it?

gjvc

5 months ago

we need a TUI version of the AWS console :-)

awinter-py

5 months ago

why, is something wrong with the jira web ui?

abrookewood

5 months ago

It's incredibly slow and they keep shovelling crap at users: - You highlight text and up pops an icon to "Use AI to summarise this?" - You use a short-cut only to find that it has changed - And it is just generally really slow

viraptor

5 months ago

You can also see how badly the state changes are handled. Some elements flicker on every new letter typed. (They broke it twice at least)

sdovan1

5 months ago

JIRA web eats all my memory on Firefox, so laggy that pressing a button takes 3 or 5 seconds, not to mention page transitions. It only becomes usable when I add the uBlock Origin rule[1]:

  yourcomany.atlassian.net##+js(aeld, /^(?:mousemove|pointermove|pointerout|pointerover|touchmove)$/)
[1] https://community.atlassian.com/forums/Jira-questions/Re-Re-...

mr_mitm

5 months ago

I hate how Atlassian products hijack regular browser features and re-implement them in JS. When I open our Confluence page, it runs a bloated mess of 10MB of JavaScript. All of their WYSIWYG editors are terrible and I'm constantly fighting the formatting. Just let me input regular markdown already.

TUIs are usually the most snappy interfaces you can have. Pure bliss in comparison. To their credit, at least Atlassian provides usable APIs.

frumplestlatz

5 months ago

Unfortunately, Textual, the TUI framework this uses, hijacks the mouse and regular terminal and GUI features and reimplements them poorly in Python.

It breaks everything from text selection to copy and paste.

It’s not your usual TUI framework. I tried using it yesterday to implement a simple console app — the damn thing even uses CSS for styling.

joshdavham

5 months ago

This is a really cool project! I'd be curious if maybe a poweruser could become more productive using this as opposed to using vanilla Jira.

...I also wonder if Atlassian might try acquire this for 600M? /s

giancarlostoro

5 months ago

I still dont understand why there is no unified UI for a lof of ticketing systems, I'm so tired of popping into different teams and its a night and day difference between how things are configured.Just give me a kanban board.

loloquwowndueo

5 months ago

Get your Jira admin to configure it as Kanban :)

giancarlostoro

5 months ago

Sometimes the org is so big, nobody wants to put any effort into knowing who the admin even is.

Nowadays I'm in ADO, I still want a unified UI for any and all ticketing systems that allows me a consistent UI regardless of JIRA or even ADO. I'm tired of so many different workflows that make no sense.

But they all claim to be scrum / agile.