Giter VIP home page Giter VIP logo

owl's Introduction

Owl

Build Status Build Status Qt

Description

Owl is a "message board client". It offers a simplified user interface to browse message boards.

Owl Client Screenshot

Building

Currently the conan repos support:

  • macOS - apple-clang 10
  • Windows - Visual Studio 15 2017

Website

Twitter

Follow us on Twitter: https://twitter.com/owlclient

Releases

  • v0.7.6 released - 2018-04-30
  • v0.7.5 released - 2016-05-01
  • v0.7.4 released - 2016-04-26
  • v0.7.3 released - 2016-02-18 (first Mac Appstore release)
  • v0.7.2 released - 2015-01-22 (Based on Qt 5.x)
  • v0.7.1 released - 2014-10-13
  • v0.7.0 released - 2014-09-27
  • v0.5.0 initial release - 2014-09-22

owl's People

Contributors

zethon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

owl's Issues

New Post Notification

  1. Click on a thread that has no unread posts
  2. Wait for a new post
  3. Auto refresh displays the forum as green (unread) but the thread list view gives no indication

EXPECTED: there should be a notification similar to when a new email comes in in Sparrow while viewing the email thread

Board structure should automatically refresh in client

Currently when you add a board and forums are later removed/added, these changes are not reflected.

  • Tapatalk board should do this refresh after a successful login
  • Other parsers that have to crawl the forum should ask the user if they want to do refresh.
  • Users should have ability to trigger a structure refresh

Crash on exit in sandbox mode only

Crashes on Mac when exiting the application but only in sandbox mode. Have tried doing some debugging and isolated the problem to the ThreadListWidget and the way the ThreadObject's are allocated and stored (damn Qt's confusing memory management!)

Make everything translantable

Currently all the text generated from Owl is hardcoded in English. The process of making the entire app translatable needs to be investigated and implemented.

Proxy settings do not work

When Owl moved from the Qt Network libraries to libcurl, the proxy implementation was never ported.

For 0.7.7 I am hiding the proxy configuration page and Owl will not support proxy connections for the time being.

Hidden Sticky message should be more informative

Hide the sticky threads and the message says

"Sticky threads are hidden. Click here to view".

When there are unread threads the message should read something like:

"Sticky threads are hidden. There are X unread threads. Click here to view."

Bring Owl (back) to one repo and publish on GitHub

The original plan was to keep the Owl UI code private and release OwlConsole and the shared components on GitHub. However that plan is being abandoned and instead all of Owl will be open source and therefore there is no need to have the projects separated.

  • move everything into one repo
  • refactor CMake system to use installed libs

Separate projects

There will three repositories

  • OwlLibrary - contains common functionality such as Lua/C++ parser implementation and common types

    • Will require external libraries in order to use
    • Unit Tests will be optionally built and run (and require the linkage)
  • OwlConsole - OwlConsole app, will use OwlLibrary

  • Owl - Owl GUI app, will use OwlLibrary

Boards with failed-to-load parsers should still show up in the board list

  • add a board with a Lua parser
  • confirm the board was added successfully and shows in the board list
  • remove the Lua parser and restart Owl
  • the board "disappears" from the board list

This is because MainWindow::loadBoards() will catch any "Fail to create parser of type" errors. Ideally the board would still show in the board list with some kind of visual indicator that it failed to load.

Remove all QNetwork* code

ParserBase uses Qt's QNetworkAccessManager to get the favorite icon of a board. The reliance on QNetwork* should be removed and this should instead be replaced with WebClient.

This will require that WebClient implement some kind of response headers.

Continuous integration support

Owl, OwlShared and OwlConsole should have CI support.

  • Refactor CMake files to work properly
  • Add Travis CI support for Owl
  • Add AppVeyor support for Owl

Internal Links in PostView should open in Owl

When clicking a link in a post that points to a link on the same board Owl should load the link in its interface instead of in an external browser.

  • add a board
  • browse to a post with an external link
  • click on the link

ACTUAL: link is loaded in an external browser
EXPECTED: Owl's UI should load the link

"Hide Stickies" should be saved

If a user hides stickies, this selection is forgotten after a restart. The option should be saved.

Note: This shouldn't be fixed until #8 is resolved.

Draft Post Support

Allow users to save "Drafts" of posts. Saved Drafts should also remember which board and forum and thread they were being drafted for.

Add board specific date/time strings that users can specify

Board are able to customize their date/time strings and Owl cannot always automatically deduce this. There should be a per-board setting where users can specify this id needed. Some parsers will also have to disable this customization (for example, Tapatalk uses an epoch time).

Behavior when opening a thread

If there are new posts in the thread then USER OPTIONS should be:

  • "Go to new post" - users should be taken to the first new post
  • "Go to first post" - users are taken to the first post in the thread
  • "Go to last post" - users are taken to the last post in the thread
  • "Collapse Unread Posts" - unread posts will be either collapsed or expanded

If there are NO new posts then USER OPTIONS should be:

  • "Go to first post" - users are taken to the first post in the thread
  • "Go to last post" - users are taken to the last post in the thread

Board loading error in BoardIconView

When a board loads and there's an error icon on the board's icon, the error should have a viewable description, perhaps in a rich-text tooltip. An error can easily be reproduced by #68.

Random crashes when exiting

Some times there will be a crash in the ThreadListView destructor when exiting the app. I do not have a call stack or any other info as I write this, but am leaving this bug here to put said information when I have it.

As of right now, there are no reliable steps to reproduce, which leads me to believe it is a race condition. Also, it may be a problem with Qt's QWeakPtr::deleteChildren(), or something like that (this is being written from memory).

I will update this bug when I see the crash happen again which could be in a couple hours, a couple days or a couple weeks.

Filter what the user sees in the BoardTree

Boards with many categories, forums and sub-forums can look very crowded and difficult to navigate (see attached). As a user, I would like the option to hide certain forum 'types'. This would ideally be implemented in the board's context menu, with a submenu. Something like...

View

  • Forums
  • Categories
  • Links

And each option is a checkbox indicating the view preferences.

Need a way to specify class-specific logging

For debugging purposes, it would be nice to be able to create class-specific log levels. This can be done in code, for example, like such:

Log4Qt::Logger::logger("owl::WebClient")->setLevel(Level::OFF_INT);

Currently the one setting is global for all classes.

(Soft) deleted thread support

With the Taptalk parser the threads show up as normal, but things like quoting a post from the thread and posting in the thread don't work.

Need to investigate the behavior with other parses.

BoardManager should emit signals

BoardManager should emit signals when a board is created, deleted or updated. This would help a lot with other controls updating the the board data.

Refactor of Board class

Issue #28 brought to light some of the issues with the current design of the Board/Forum/Thread/Post class. For example, the Board class is defined in the Owl subproject and it is this class that is persisted. But, by design, the Forum/Thread/Post classes exists in a different subproject, which Owl depends upon. As a result, those classes do not have access to all of the board's info.

Ideally, the Board class should exist in the same subproject as Forum/Thread/Post and another mechanism should be used to persist the required ata.

Implement custom user agent strings with new libcurl functionality

Thew new implementation of network does not yet include support for the custom user agent settings. This needs to be implemented.

This should include a complete refactoring of the User Agent functionality.

  • Newly added boards should use the App's UserAgent. When the App is upgraded or the App's UserAgent changes, then those boards should use the new UserAgent value.

  • Boards should still have an option for a custom UserAgent. If a custom UserAgent is set for a board then an App's upgrade or changing of the App's UserAgent should NOT affect the board's UserAgent.

Deselecting "Show Images" in board settings doesn't work

Images still show in posts even if the user has "Show Images" deselected.

If the user has images disabled for a board, when viewing a thread that has images, there should be some indicator that allows the user to view images for that thread without changing the setting for the whole board.

Allow user to lock the pane seperator

Currently in the UI users can resize the three panes individually, but this also means that the panes resize with the window is resized. It would be nice if users could lock the pane sizes so that resizing the window does not result in the panes being resized.

Optionally store passwords

As a user, I want the option to NOT store my password for certain boards. Right now the user has no option but to have the passwords persisted. Each board should have a "Save Credentials" checkbox and if this is not checked, the user should be prompted for a password when logging onto a board.

"Guest" Access

Owl should suppose browsing and reading boards as a Guest and without login information.

Board panel looks weird when adding new board (Windows only)

The board panel shows no text and the icon is misaligned when you add a new board. If you change the text color (Preferences->Interface->Board List->Text Color) the text appears and looks normal.

image

Edit: If you quit Owl and restart, the panel is broken again.

Linux Builds on Travis CI

Owl currently builds on Ubuntu 18.04 but Travis CI only has support for Ubuntu 14.04 (and 12.04). This causes problems with the C++11 ABI issue.

There are notes in the .travis.yml file to describe the issue. It would be nice to get CI working with Linux, perhaps once I have time to rebuild Hunspell making sure that it uses the libstdc++ library (and not libstdc++11) so that it will properly link, or when there is time to learn how to use Docker to do the builds on Travis.

Per the notes in the .travis.yml file:

# NOTE: Where we left off with Linux -- the -D_GLIBCXX_USE_CXX11_ABI=[0|1] does nothing
# on the older version of Ubuntu (14.04) that Travis CI uses. Hence when I tried to link 
# everything against the C++11 system libraries, I still got linker errors about 
# "undefined reference to `std::__cxx11::basic_string...". When I tried to build against the
# old libs, I get the same linker errors. These all seem related to hunspell. One possible
# solution would be to re-build Hunspell and link against the old system libraries, but I'm
# (1) not entirely that will work on 18.04, which is the Ubuntu version I'm using and (2)
# I seem to remember something about static libraries not linking until they're linked with
# an executable but maybe that depends on the implementation? I had to explicitly link the 
# Conan libraries with the Owl libraries in order to avoid linking errors. ANOTHER possible
# solution would be to use Docker, but that's an entire learning curve and pain in the ass 
# that I don't want to deal with right now.
# 
# I'm going to put this to rest for a little bit so I can move on and work on other areas I want 
# to work on. Hopefully Travis will support Ubuntu 16.04 (or possibly 18.04) soon and this will
# "just work". In the meantime I leave the Linux build info here for future reference.

Error Reporting in Lua

=== error.throw ===
This will throw an exception in the Owl client causing the request to stop. The error text will be reported in the status bar and in a pop-up dialog.

TODO: add functionality to that allows specification per error.throw 'event'.

TODO: error.throw, error.warn, etc should be configurable

Visual indication of refreshing

The green icon under a board icon should be replaced. There should be some visual indication of what's happening on the board. For example, when the user selects "Refresh" there should be an animated icon indicating that the board is refreshing.

Resource Audit

The resources in Owl.qrc need to be scrubbed and any unused resources should be removed.

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.