GithubHelp home page GithubHelp logo

athlon007 / leomard Goto Github PK

View Code? Open in Web Editor NEW
65.0 1.0 3.0 19.81 MB

A Lemmy client for macOS

License: GNU General Public License v3.0

Swift 96.38% Rich Text Format 1.08% Shell 2.54%
client lemmy macos swift lemmy-client swiftui

leomard's Introduction

Leomard

icon

Leomard is a Lemmy client for macOS, written in Swift using SwiftUI. Leomard allows you to browse Lemmy instances, view posts and comments, and create new posts and comments, read replies, and more.

Visit our community on Lemmy!

I made this app, because I do not like Lemmy's web interface, and I wanted to learn Swift. Besides, I like using native apps more than web apps.

This app is free and open source, is not affiliated with Lemmy or its developers, and it is developed in my free time. Please note that this app is still in early development, so bugs and issues are to be expected.

Why the name?

  • Leopard, but with an M, because it's a Lemmy client (the app icon is a leopard)
  • Leopards are larger than lemmings
  • Cats are cool

Requirements

  • macOS 13.0 Ventura or later

Installation

Download the .dmg file from the releases page, and drag the app to your Applications folder.

Start the app, you can login by clicking "Profile" in the bottom left corner.

Note: You may be prompted to allow the app to access your Keychain. This is required to store your authorization token. It's recommended to press "Always Allow" to avoid having to enter your password every time you start the app.

Note: macOS may warn you that the app is from an unidentified developer. This is because I don't have an Apple Developer account, and the app has not been notarized. You can still run the app by going into System Settings > Privacy & Security > Scroll to Security section > Click "Open Anyway"

Screenshots

Screenshot 1 Screenshot 6 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

Contributing

If you want to contribute to this project, you can do so by forking the repository, and then creating a pull request. You can also create an issue if you find a bug or have a feature request. Please see CONTRIBUTING for more information.

Support

You can support me through here:

License

This project is licensed under GPL-3.0. See LICENSE for more information.

Credits

leomard's People

Contributors

athlon007 avatar boscojwho avatar vintprox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

leomard's Issues

[FEATURE] New Community preview for search

Is your feature request related to a problem? Please describe.
Current way communities are displayed in the view uses a lot of space, and is a bit wasteful. It would be cool to have community banners in the view too.

Describe the solution you'd like
A new representation of communities based on following design:
Screenshot 2023-07-22 at 20 34 19

[BUG] Feed List reloads to top when switching between tabs

Describe the bug
Scroll down main Feed list, then switch to another tab (e.g. Inbox), then switch back to Feed. Feed will do a fresh reload and start from the top.

To Reproduce
Steps to reproduce the behavior:

  1. Load main Feed and scroll down a few pages.
  2. Switch to another tab (e.g. Inbox).
  3. Switch back to Feed.
  4. Feed reloads to top.

Expected behavior

  • Feed should stay where it was without loading.

Information:

  • Version 0.1 (1)

[FEATURE] UI changes

Hey, is there a way that you can put the option to always show the whole username with the instance on it, instead of just the plain username?

For instance, mine would show as [email protected] instead of just Confidant6298

It would also be great if you added a way to resize texts. Right now the texts on posts are too small for me to read comfortably ๐Ÿ˜…. Also, if it is not too much to ask, an ultra dark mode would be great, in which the entire app is as black as possible and not have a dark grey background as it has now. Dark mode lovers like me would love an all black mode ๐Ÿ˜Ž

[FEATURE] Compact View

Rather than have all images automatically opened and visible, a compact mode whose layout is similar to old.reddit.com would be most welcome. Much higher information density on a page. Images would be thumbnails which can be expanded. Thanks for a promising app!

[BUG] Cannot upvote or downvote

Describe the bug
Upvote/downvote buttons do not work

To Reproduce
Steps to reproduce the behavior:

  1. Click on the up or down arrows at the bottom of a post.

Expected behavior
Expect the buttons to light up blue or orange to indicate it has upvoted/downvoted.

Information:

  • OS Version: Ventura 13.4.1 (c)

[BUG] Duplicate posts in GetPostResponse.posts

Describe the bug
There are duplicate PostView.post instances in GetPostResponse.posts array. This is causing SwiftUI List to emit warning in console, and might(?) be causing some weird scrolling behaviour.

  • Not sure if Lemmy API is returning duplicate posts with the same post.id or something else.

To Reproduce
Steps to reproduce the behavior:

  1. Open Feed or Community list view.
  2. Scroll down until you see SwiftUI warning about Post occurring multiple times in collection.

Expected behavior

  • List should not contain duplicate posts (uniqued by post.id).

Information:

  • Version 0.1 (1)

[BUG] Improve feed view scrolling performance and behaviour

Describe the bug
In feed view:

  • Scrolling frame rate is low
  • Scrolling is at times blocked (This literally also happens in macOS System Settings, too, lol)
  • Scroll position is lost when new posts load(?)
  • Scroll position shifts when post images load
  • Overall, feed view could feel better.

Expected behavior
A clear and concise description of what you expected to happen.

Information:

  • version 0.1

[BUG] Duplicate call to updateUnreadMessagesCount() in ContentView

Describe the bug
We're calling into updateUnreadMessagesCount() twice, inside .success and at the end of loadUserData(). Not sure if this is intentional or a duplicate call. This is causing us to hit the unread count API twice on app launch.
(see lines 259/267)

Screenshots
Screenshot 2023-07-23 at 3 46 06 PM

[BUG] Post images reload when cell reappears after scrolled off-screen

Describe the bug
After a post view loads an image, and user scrolls it out of view, the post view will reload that image when that post view's cell reappears.

  • Not sure if post view is simply redrawing its state from loading to loaded (i.e. not actually redownloading the image).
  • When this happens post view's height will shrink (and show a loading indicator), then expand, which is not ideal.

To Reproduce
Steps to reproduce the behavior:

  1. Launch app to Feed list view.
  2. Wait for First post image to load.
  3. Scroll down so first post is just out of view.
  4. Scroll back to top.
  5. First post's image will reload.

Expected behavior

  • Image should stay loaded, unless app receives memory warning, in which case post view still shouldn't be recalculating its height.

Information:
Version 0.1 (1)

[BUG] Unable to log in to accounts with 2FA enabled

Describe the bug
When attempting to log in to any Lemmy account with 2FA enabled, the app gives an error that states "Unable to login. Check your login info and try again."

To Reproduce
Steps to reproduce the behavior:

  1. Enable 2FA on any Lemmy account
  2. Attempt to log in using app
  3. Attempted with multiple accounts
  4. Verified ability to log in to accounts via the web

Expected behavior
App should request a 2 factor code from the user.

Screenshots
leomard

Information:

  • OS Version: 14.0

Additional context
Add any other context about the problem here.

[FEATURE] Increase PostUIView padding/corner radius

Is your feature request related to a problem? Please describe.
PostUIView currently has a very tight appearance that doesn't seem to fit with system appearance.

Describe the solution you'd like
We can get a quick win by simply increasing the padding on PostUIView, and (optionally) slightly increasing its cornerRadius.

Additional context
Before:
PostUIView-before
After:
PostUIView-after

[BUG] Post Creation popup window never gets cleared, after sending the post.

Describe the bug
After sending a post, if you try to open post creation window again, the contents of last sent post is still there

To Reproduce
Steps to reproduce the behavior:

  1. Send a post to any community
  2. Open post creation again
  3. See the contents of previously sent post

Expected behavior
Post creation window should be empty.

Information:

  • OS Version: 13.4.1

[DEV] Refactor View body into separate @ViewBuilder var/func

Will limit the scope of this issue to these top-level views:

  • ContentView
  • NavbarView
  • FeedView
  • LoginView
  • ProfileView
  • CommunityUIView
  • SearchView
  • PreferenceView
  • InboxView

Currently, many views have complicated subview trees (multiple nested views, complex if/else statements, difficult to read what view a view modifier is modifying, etc.)

We can get some quick wins for current/future contributors by refactoring subviews into separate, private view builders.

Doing so would improve readability and allow for more rapid iteration in the future.

[FEATURE] Multi-Account Support

Is your feature request related to a problem? Please describe.
A multiple-account support is a must-have for a decentralised network such as Lemmy. It is expected that a single user will have many accounts.

[BUG] Inbox: When showing all replies, after replying back, the message disappears

Describe the bug
In Inbox, if you have "Unread only" deselected and you reply back, the message form other person disappears. That should only be the case when "Unread only" is selected.

To Reproduce

  1. Go to inbox and uncheck "Unread Only"
  2. Reply back to any message
  3. See message disappear

Expected behavior
The message should only disappear, if you have "Urnead Only" checked.

Information:

  • OS Version: 13.4.1 (c)
  • App Version: 0.2
  • Lemmy Instance: lemm.ee

[BUG] Notification indicator eventually stops updating automatically

Describe the bug
After a while of using the app, the notifications counter stops updating automatically. The only way it gets updated after that is by closing and reopening the app.

To Reproduce
Steps to reproduce the behavior:

  1. Let the app run for few minutes
  2. Receive a notification when an app is open
  3. Indicator never gets updated.

Expected behavior
The indicator should update when you receive a notification, or mark one as read.

Information:

  • OS Version: 13.4.1

[FEATURE] Cross-post

Quite a common feature in Lemmy web interface (and outside) - cross-posting. What it basically does is clone the contents of a post, including:

  • URL
  • title
  • description

Then, all this data is inserted in "Create Post" view. There, user can choose a community to which they wish to publish. What it essentially does is duplicate the contents of the post, to maybe slightly change the title or description or retain all the same.

The most common implementation (lemmy-ui) does exactly that, except that it prepends Markdown quote to each line of the original description. I did not research as to how useful it is, but it doesn't really help when you try cross-post your own content. As such, I think it is necessary to make it a default implementation to avoid mangling the description by simply copying it "as is".

An option to surround description in quote and add an inscription cross-posted from https://original/post/url should go into a separate issue. This one would be the most preferential for post made by another author, unlike your own where copyright is already assumed.

[BUG] Inserting images does not insert them at cursor position

Describe the bug
When attempting to insert an image into the post editor, the image is always inserted at the end, instead of at the cursor's position.

To Reproduce
Steps to reproduce the behavior:

  1. Open post creation (or any text editor in app with image insertion).
  2. Add some text and place the cursor at the start.
  3. Click to add image.
  4. Add image.
  5. See image inserted at the end, instead of where the cursor is.

Expected behavior
Images should be inserted where the cursor is located.

Information:

  • OS Version: 13.4.1 (c)
  • App Version: 0.6
  • Lemmy Instance: lemm.ee

[BUG] Sending post has no status indication

Describe the bug
Upon pressing "Send" button when sending a post, there is no indication of its status. Additionally, you can send the post twice.

To Reproduce

  1. Press "Send" when creating post

Expected behavior
"Send" button should be greyed-out. The app should not let you press "Send" again, until either sending fails, or the post is sent successfully.

Information:

  • OS Version: 13.4.1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.