Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

general TO DO list #387

Open
47 tasks
CampelloManuel opened this issue Oct 25, 2022 · 3 comments
Open
47 tasks

general TO DO list #387

CampelloManuel opened this issue Oct 25, 2022 · 3 comments

Comments

@CampelloManuel
Copy link
Collaborator

CampelloManuel commented Oct 25, 2022

This list tracks all important tasks related to this project. This helps @CampelloManuel schedule work.
Bigger, more complex tasks, mainly those that require collaboration, will get their own github issue.
There is another list for less important tasks in #480

For each release:

  • on the weblate project: check comments, approve suggestions, sync data with the github repo
  • test the app as much as possible
  • run ./release.sh. this creates a tag
  • in a few days the new release will appear automatically on f-droid and the play store

Up next, for 7.2.0:

  • work on the issues in this view starting from the newest
  • work on the items of the list below

Important ideas:

  • list of reminders: make a view, maybe accessible through the overflow menu on the main activity, where a list of reminders is sorted by date, possibly also with the text of the note they belong to. This is to quickly see what kind of reminders are set and what is scheduled next. I think many users care more about reminders than the due date they set on the notes
  • I don't like how the time picker looks like on my samsung. try different styles for the TimePickerDialog, and try MaterialTimePickerDialog of the google library, see which is better. Try also the date picker dialog, but that one is fine I think
  • show markdown effects in the UI, see Show Markdown effects on text in the UI #511
  • the shortcut widget has stopped working. it should launch the activity on the selected list, but it doesn't happen when you pause the app with the home screen
  • on the tutorial .md file, at the beginning, add a flowchart with mermaid to explain how to navigate the app. If you can, add links to photos or other sections in that tutorial
  • https://github.com/SimpleMobileTools/Simple-Calendar integrates dynamic material colors. see how they do it and replicate
  • update the theme.xml to use the new material design, "material YOU". It's easy: <style name="Example" parent="Theme.Material3.DynamicColors.Dark"></style> is enough. but you have to remove the colorPrimary. So maybe adding it as a new theme choice is a good idea. try using daynight as a base. this site generates themes https://m3.material.io/theme-builder#/custom and this link https://codelabs.developers.google.com/codelabs/apply-dynamic-color#5 explains how to use them, but these don't use the dynamic colors, which is what I'm trying to do
  • remove the "androidannotations" library. It is obsolete, abandoned and gradle updates keep breaking it

New functionality & less important changes:

  • https://github.com/SimpleMobileTools/Simple-Calendar has a splash screen that shows black instead of white. see how they do and replicate
  • the backup and restore functions use an hardcoded filename. Instead, the backup function should let the user pick a directory, and save a .json file there, with the date on the filename, thus also allowing for multiple files. The restore function should open a filepicker to let the user choose a .json file to restore. The code to pick a predefined folder is a bad design choice and should be deleted. How to restore? #510 shows that the backup and restore functionality is not clear to users.
  • enable predictive back gestures and replace the deprecated onBackPressed() functions
  • test the app on RTL (right-to-left) layouts (such as arab locale on emulator) and fix the UI bugs
  • edit the widget settings as requested in Bigger Text and better description for the Widget #497 , change the label to something like "Rows of notes to display. Move slider to max to show 99 rows". Then: Raise the widget note font size by 150 percent. But is there a way you could have the widget font match up with the font sizes we choose in the app? Useful when you set the font size to large in the appearance settings of the app.
  • add support for android Wear OS for smart watches. Test with the emulator available in the SDK.
  • reorganize namespaces to exploit the package-private feature. Take a big java file ( > 600 lines ) and create a package for it. then split it and keep only 1 class public. if a class has inner classes, split them into their own file and keep them as package private, with only the "main" class as visible. do it at least for activitymain and the task*fragment(s)
  • make a "widgets" namespace. move the shortcut class there. make a sub-namespace for the list widget, move all list widget classes there. make a new sub-namespace for the third widget of a third widget: "favorite note" #482 and add new code there
  • refactor all classes so that no file has more than, say, 500 lines of code. This means moving some methods out of ActivityMain and TaskDetailFragment on some static methods into their own helper classes
  • if the user tries to make a backup with password-locked notes, ask for the password before showing the backup dialog. do this both for creating and restoring the backup
  • the light & dark themes are not tied to the system's theme settings: we should have a default theme option that follows the day/night theme setting of the OS
  • remove all the commented out code and unused functions, classes, xml layouts, files and libraries
  • Use AndroidStudio's analyze feature (code analysis, default IDE profile) to get some ideas on what to refactor. Like use of deprecated classes, and so on. will be VERY long
  • remove org.androidannotations:androidannotations:4.8.0, which is deprecated. See Refactor package structure and remove AA #369 difficult, and not really worth it: the last version supports androidx just fine. and it's from 2020, so it's still usable. TEST CAREFULLY, especially the navigation from widgets. See Drop android annotations, use view bindings instead #465 a failed attempt
  • the code is full of TODOs, some are related to the issues in this list. Check and solve them
  • the animations files in app/src/main/res/anim are useless. consider deleting them
  • change the locale configuration: instead of a list in arrays.xml, do it like this https://gitlab.com/spacecowboy/Feeder/-/blob/master/app/src/main/res/xml/locales_config.xml
  • replace, when possibile, Toast with Snackbar, possibly with undo actions. especially in the backup preferences page this should be possible
  • the "shortcut" widget simply shows the app icon. It would be cool if it showed something different, like a custom "add note" icon. See ShortcutConfig.onOK()
  • use our custom NnnLogger instead of Log.d() and Log.e() in all calls in the codebase
  • check the commits on the OpenTracks repo in 2019, there could be some good changes to copy
  • find all references of R.string.feature_is_WIP and work on those features
  • big widget: more color options. the only options right now are between "light" and "dark", and they don't even affect the widget header. try to use the material YOU colors in android 13
  • run gradlew lint and fix the reported warnings. See TODO in build.gradle
  • Replace all images with vector graphics: since we target a minimum SDK > 22, there should be no png icons, they can all be vectors (except the "main" app icon)
  • add a setting to hide the "Next 5 days" page on the left. as of now the user can replace it with something else in the drawer
  • update featureGraphic, promographic and icon for fastlane
  • use as much as you can the "compat" features as opposed to the non-androidx classes
  • check and remove all .py files, which should be useless
  • version 6.0.0 had a button on the actionbar to quickly change the list ordering. In our version, the user has to long-click the list name in the drawer, which may be counter intuitive. maybe we should add a gear next to the list name so that it's clearer how the list settings are edited. as of now there is a folder icon. put a gear there ?
  • to reduce the apk size, we may delete the following useless folders: drawable-mdpi, drawable-xhdpi, assuming that we are only going to use XML drawables
  • attach photos to notes. If it's too hard, limit it to 1 photo per note. how should they be saved on the database: the entire photo or just its filepath ? alternative: try to fetch and show a photo if its uri or file path is in the note text. alternative: add an import button to TaskDetailFragment to add the file's path to the note as text, and retain the permissions to open the file.
  • add new espresso tests, if possibile
  • make better app icon(s). See https://icon.kitchen/
  • i found this https://developer.android.com/studio/debug/apk-analyzer so you should build a release APK, then check the "final" manifest and the proguard mappings
  • the SwipeRefreshLayout is useless: remove all references in the code
  • Shortcutconfig: use a + icon for "create note" and a "list" icon for "open list" actions
  • methods like Cursor.getContentResolver().query() are being used outside the designated com.nononsenseapps.notepad.database namespace. You should make an Helper class that calls these methods, closes the cursor and returns java objects. This way, Cursor and the database logic are enclosed in that namespace only
  • take a look at the google dev. console. Does the data suggest something ? In particular see which versions/devices crash more
@CampelloManuel
Copy link
Collaborator Author

CampelloManuel commented Nov 26, 2022

The following is a list tasks I finished. Those that ended up on their own github issue may not be here. This is meant to be a quick reference for things I did, in chronological order. It does not replace github issues.

  • increase minSDK to 23 (Android 6.0)
  • update Android Gradle plugin to version 7
  • remove code involving Dropbox and billing on the google play store
  • delete all code related to dropbox and playstore, there are still some empty code files left
  • fix the notifications so that they work on android API >= 26
  • upgrade to AndroidX to avoid varying issues with different Android behavior. For AndroidX: basically only namespace changes.
  • Upgrade to Java 11
  • Deploy desugar, see https://github.com/spacecowboy/NotePad/blob/master/app/build.gradle
  • remove proguard as it makes stracktraces unreadable and obfuscation is not really helping anyhow.
  • format code consistently, using Android Studio's default profile, with tabs instead of spaces
  • update target SDK to 32
  • remove all unused proprietary libraries, check also the sub-projects
  • work on the metadata for f-droid, like pictures in the store page. See: https://f-droid.org/docs/All_About_Descriptions_Graphics_and_Screenshots/#fastlane-structure and https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/com.nononsenseapps.notepad.yml For fdroid metadata: the directory layout of OpenTracks works, go see that
  • the tests use an old library. they have to be updated to androidx, and some have to be rewritten
  • the tests work only if you assign the permissions to the app beforehand. the problem is Spoon.screenshot(...). That library was removed, now we take screenshots with androidx
  • make an anydpi icon for new android versions
  • https://github.com/ericzolf/SpaceTasker has 38 new commits. I checked and added the most important changes
  • the app needed useLibrary 'org.apache.http.legacy' to compile. we may need to remove this
  • http://www.nononsenseapps.com/ is dead, all links now point to this github repository
  • add tests from https://github.com/Domuska/NotePad see here
    9abf1fc...Domuska:NotePad:master
  • add all new content of all 155 forks (as of november 2022)
  • removed the filepicker library 'com.nononsenseapps:filepicker:3.1.0' since new android versions have a built-in equivalent feature
  • the 164 commits from (tag 5.7.1) to 9abf1fc (the last one before the project restarted in 2022) have been analyzed to see what we could re-integrate into the app
  • remove all folders and code that target old android versions, such as values-v17: since we target API 23 ad higher, those are 100% useless
  • update the badges of the github actions on the README.md
  • the showcaseview lost its blue background. edit the styles to bring it back
  • add a dialog to ask for permissions. we need them only for saving files & google tasks, so the dialog should appear when using the preferences page
  • remove actionbar-pulltorefresh, replace with the equivalent androidx library
  • edit the "changelog" and "about" pages in the app's settings, update the information
  • "datetimepicker" was copied from android source code. I replaced it with built-in SDK classes
  • when you "pull to refresh" (on the notes list) without a synchronization option selected, the loading animation does not stop. If you have SD synchronization enabled, it works correctly. Try the pull-to-refresh with 2 lists: if the 1° works, in the 2° list the animation hangs indefinitely
  • the local dependency drag-sort-listview is VERY outdated, but it's very simple, so it doesn't NEED updates. Since it still works, we will keep the local source copy and edit it when needed
  • our local dependency drag-sort-listview is from https://github.com/bauerca/drag-sort-listview so I checked that repo and its main forks, integrating new changes into our local copy. There weren't any noteworthy updates from 2013 to 2022, by the way
  • ShowcaseViews from the library should be replaced with something mode "material-looking", like https://github.com/deano2390/MaterialShowcaseView or https://github.com/KeepSafe/TapTargetView
  • upload 'org.cowboyprogrammer:orgparser:1.3.1' to mavencentral, see what to to with orgparser #395
  • the new styles don't edit the toolbar color, so: 1 - it needs to be blacker in the "full black" amoled theme; and 2 - it shows black icons on black backgrounds when using the light theme. FIX ASAP.
  • the title of a notelist gets cut if the font is too big, maybe something needs height=wrap_content
  • fix the warnings in gradle that don't allow to upgrade to gradle 8 => now we are compatible!
  • in the archive (history) activity the notes themselves appear too small: fix the layout. It did this way back in the original version 5.7.1
  • each clicked link is opened in the same tab in Chrome. This is counterintuitive. Fixed: now each link opens in a new tab
  • disable all functionality related to google tasks. Just remove the interactions in the preferences page
  • comment out all network related permissions, and we can remove the permissions for "phone" and "contact"
  • the directory chosen by the user for SD synchronization is currently ignored. Fix: disable the file picker and let the user choose to use an hardcoded folder in the Documents directory
  • the json backup file can only be saved in the app's dedicated directory (in Android/data/..) but it would be better to let the user choose a directory and honor that. Add the necessary preferences
  • let the user pick a directory to save the json backup file. as of now it's hardcoded in an inconvenient location
  • closing the app (from the recents page) prevents notifications from showing up. Fixed: I got it to work once on the emulator, so future problems with this will be dealt with as they appear
  • the TapTargetView throws an exception (NullpointerException in dispatchDetachedFromWindow() ) when closing the app with the taptargetview still showing. See onTargetDismissed() in ShowcaseHelper
  • our custom notification settings (ringtone, vibration) don't work with API 32 devices. Fixed: users can edit the notification channel settings in a page linked in NotificationPrefs
  • PrefsActivity inherits from appcompatactivity, and themes were changed accordingly
  • the bigger widget has an icon to open its settings, but it's simply the app icon. Change it to a gear or something more relevant
  • the library TextDrawable was imported into the project. Use it somewhere, or delete it
  • add a button to disable battery optimizations. See NotificationPrefs.java
  • let the user show more than 50 rows of a note in the list
  • add a v7.0.0 tag for f-droid once a version is ready for publication
  • check the branch "version6" in this repository: it may have useful stuff, but it's obsolete. Eventually it needs to be deleted
  • host translations on weblate. This replaces https://crowdin.com/project/nononsensenotes
  • prepare for kotlin: it can be enabled in the build.gradle by uncommenting a few lines, but for now there's no reason to use it, everything is written in java
  • enable updates on f-droid #410
  • remove all mentions of Google Tasks from the fastlane files
  • delete the crowdin page, see Removing crowdin translations #432
  • import translations from crowdin, see Removing crowdin translations #432
  • changelog preferences activity: there is a "help translate the app" title but i forgot to add the textview with the link
  • bug: in the settings activity, long titles don't wrap ("altezza massima della nota, i..."). set italian locale and correct the layout. can also be seen in the description for the old notification options category
  • on phones with big font settings, the search result list doesn't resize properly, so the results get cut. maybe some layout needs height=wrap_content somewhere
  • instead of using 2 attrs for each icon, use iconTint and remove half of the xml icon files
  • remove "note" string from toolbar in main activity
  • target API 33, fix bugs and ensure compatibility
  • fix problems related to Filesystem access #454 fix is in Better filesystem access #455
  • setting a white theme still leaves a black settings page. this was intentional, but can be improved
  • do a monochrome icon
  • the datepicker and timepicker (for configuring a reminder in a note detail page) have a teme. the teme setting code is a hack. check it, and move the logic to a ThemeHelper class
  • fix The "ghost reminder widgets" glitch #412
  • remove WRITE_EXTERNAL_STORAGE permission. use DocumentFile and the folder picker for json backups, and save org files in Android/data/packagename. See Filesystem access #454 and Better filesystem access #455
  • prettier dialogs: declare a style for dialogs like DialogEditList and others, in themes.xml
  • in the note detail page, the "week view" shows a selected day in a brigher text, but the blue line below is too small. make it use "colorAccent", like the line below the editText when you open the keyboard
  • remove the changelog preference page, link to the github releases page instead
  • remove the "control vibration" permission.
  • the namespace com.nononsenseapps.notepad.android.*
  • fix: settings => synchronization => info preference: the description is too long, android cuts it
  • remove useless attrs values from styles, try to keep as few as possible. from styles.xml and themes.xml
  • bug: the shortcut widget icon is invisible in android 11, simple launcher 5 from f-droid. in the stock launcher it works
  • replace uses of @ViewById() with viewbindings, except in activitymain.java and /fragments/task*fragment.java, where it does not work
  • fix this: the week days view is still enabled when the note is password-locked
  • remove shareactionprovider and use the system's intent chooser panel
  • sharing content from an app to this app, in api 23, does not work: the text does not appear on the edittext. but it works on api 33. it was due to androidannotations.uithread.propagation.enqueue
  • sharing a note opens a panel to choose an app. this removes all notifications from taskdetailfragment, but they don't reappear when the user closes the chooser panel. moved code to onstop() to fix this
  • when notes are ordered by due date, they are grouped by time period. as of now we have only 2 to 4 days. add "next week" and month and year. see Task.java, the code is all there
  • show accent color in alert dialogs
  • in the task detail page, the "due date" view should show also the year if the due day is in the next year. Fixed by adding more date formats to choose from. See arrays.xml and the appearance prefs.
  • see the closed pull requests in this repository. All the useful one were already merged
  • take a look at android backups, see what to do. Outcome: enabled android auto backups
  • see the previous issues on this repository, some have been closed without adressing the bugs
  • a menù item for the task archive activity to delete all archived tasks immediately. as of now, you have to manually select all tasks to delete them. show a popup & ask for confirmation
  • remove all references to the donate version, which does not exist anymore
  • test the app in split-screen mode, both horizontal and vertical, both phones and tablets. there were no bugs
  • add a settings category to the "main" settings fragment: "tutorial (online)". It's a link to ./documents/TUTORIAL.md
  • remove all taptargetviews except one, point it to the online tutorial preference
  • completely remove all code related to google tasks sync, if nobody showed up to work on it
  • when the user first opens the app, show a new note, which explains how the app works and links to the online tutorial page. brief, 7 lines at most. make it a translatable string resource
  • Test org files SD sync MANUALLY in API 33. Yes it works.
  • in the task list, if you order by date, tasks are grouped by "this wednesday" and "later". add another group for "next month" and "next year"
  • in the notification, if the list shows "simple notes", there should not be a "complete" button, or you can complete a note but not un-complete it! See How to un-complete a note? #312
  • use the snooze button also in repeating reminders. See Notifications have no "snooze" or "completed" options  #478
  • make a new flavor with ".play" on the package name, for the play store. see publish the app on google play store #411
  • I considered https://issuehunt.io/ for bug bounties, but it's overkill for this project
  • run android tests on an API 23 tablet, ensure that they still work.
  • big widget: add an option to show completed tasks
  • add a line in the "about" prefs to tell users that we accept donations
  • finish work on the funding button to the repository, see https://github.com/OpenTracksApp/OpenTracks/blob/main/.github/FUNDING.yml and https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository see the github sponsor feature #486
  • a preference setting to disable auto-highlighting of phone numbers, similar to what we have for web links. Personally I just want to write numbers without the risk of opening the phone app when touching them
  • when you confirm a time on the "time picker dialog" and close it, the keyboard reappears. But for example I set the reminders when I'm done writing the note, so the keyboard is just a distraction. maybe you should send a signal to close it when returning from a "time picker dialog"
  • remove those 2 custom permissions com.nononsenseapps.notepad.permissions.* ? it's not clear why they're there & I doubt anyone is using them ?? And they cause conflicts when installing from both app stores
  • update donations on f-droid to show the links in the github repository

@vector65536
Copy link

this is a good app with some room for improvements in the UI.

please check this app out. it has a crisp UI. can you guys implement something similar? Thanks again.

https://play.google.com/store/apps/details?id=com.gcteam.tonote

@CampelloManuel
Copy link
Collaborator Author

@jeevan786
I have tried that app. It uses the modern android material theme. We are planning to update our app theme to look like that, but it is not a priority for us at the moment. Given that functionality is more or less the same in the 2 apps, you can use that one for now. Google Keep is also a possible alternative.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants