Merge branch 'prep-for-1.0' into 'main'

Prep for 1.0

See merge request mysocialportal/relatica!68
merge-requests/69/merge
HankG 2025-03-16 23:54:27 +00:00
commit a5fd4a0c84
12 zmienionych plików z 75 dodań i 244 usunięć

Wyświetl plik

@ -10,15 +10,17 @@ A Flutter application for interfacing with the Friendica social network.
* Have a native app client on mobile (Apple and Android) and desktop (Linux, Mac, and Windows)
* Providing a simpler UX for people to interact with Friendica
* Providing a better low-bandwidth environment experience than the web-app version running in a browser
* Reduce server side loading in the new fediverse era by doing techniques like leveraging paging of comments, local
* Providing a better low-bandwidth environment experience than the web-app version running in a
browser
* Reduce server side loading in the new fediverse era by doing techniques like leveraging paging of
comments, local
caching, and lazy loading.
* Provide more intuitive mechanisms for adding things like Content Warning/Spoiler text and image ALT-text
* Provide more intuitive mechanisms for adding things like Content Warning/Spoiler text and image
ALT-text
## Current Status
The project is currently in an early-beta state. If you'd like to use it at this time please
see the notes at [Relatica Beta Testing Program](beta-program.md).
The project has now been released but is still in active development.
It is possible to install it now by following the [install instructions](install.md).
@ -26,6 +28,8 @@ If you would like to contribute please see [this Developers Notes](developers.md
## Community and Support
[Support email](mailto:support@myportal.social)
[Relatica Community Matrix Discussion Room](https://matrix.to/#/#relatica-community:myportal.social)
[Issue Tracker](https://gitlab.com/mysocialportal/relatica/-/issues)
@ -34,7 +38,8 @@ If you would like to contribute please see [this Developers Notes](developers.md
* More coders and testers are always welcome
* CI/CD
* Packaging for Linux operating systems using Flatpak, Snap, etc. (or individual packages per operating system)
* Packaging for Linux operating systems using Flatpak, Snap, etc. (or individual packages per
operating system)
* UI/UX cleaning up
* Graphics design for logo, website art
* Documentation

Wyświetl plik

@ -1,174 +0,0 @@
# Relatica Beta Testing Program Notes
These are notes for the Relatica beta testers. Very import sections of this page
to check are:
* ["Things that work"](#things-that-work) to see what is working well
* ["Things that are broken"](#broken-and-hopefully-fixed-in-the-very-near-future) so
you know how to avoid problems using the application in its current state,
don't report duplicate bugs, etc.
* ["Cumbersome things"](#cumbersome-and-hopefully-improved-in-the-very-near-future)
for the same reason as the above "broken" things.
* [The CHANGELOG](CHANGELOG.md) to see what has changed with each recent version
* [Install Instructions](install.md) to see how to install the application
* [Community Communications](README.md#community-and-support) to know how to
get in touch with other members of the community, developers, etc.
## Introduction
At the present time it is possible to use Relatica as your daily driver for
functions that have already been implemented. I've been using it as my
primary Friendica interactions for over a month as of writing this in
January 2023. However, usable doesn't mean feature complete, even for the
subset of features I want to implement. Usable also doesn't mean bug free
experience. It can still be useful to people which is why I'm opening up
access to it right now. Having said that, this is an early beta program.
Since not everyone that is considering using the software at this point may
be familiar with that aspect of the software development process I
wanted to lay out some expectations before getting into the small details
### Expectations For Early Beta Testers
* Things that look like they are finished are not
* A lot of things look very not finished
* Download regular updates to get the latest and greatest features and fixes and feedback
* Check in on the CHANGELOG, Issue tracker, etc. for updates
* Some things that look finished may end up changing to improve overall user experience (the "Who
moved the gas pedal?" problem)
* Don't suffer in silence with problems. The beta program is about getting the feedback to what
works, what doesn't, etc.
Provide feedback via the Matrix room, for interactive discussions, or the GitLab issue tracker for
larger bug tracking.
* Feedback should be productive and specific while being as light a load on the beta tester as
possible:
* BAD: "This thing is crap!"
* BAD: "It crashed!!!!"
* Good: "When I click on a notification box it didn't seem to do anything until I clicked in a
very specific area"
* Good: "The app seemed to freeze up when I kept scrolling down my timeline for a long time (
like half an hour)"
* Good: "I'm finding X feature hard to use because Y is confusing"
* Good: "I am trying to do X with Friendica but I don't see a way to do it. Could that be
implemented in the app?"
## Application Status and Roadmap
### Things that work
* Logging in with username/password and OAuth. These are stored using the OS specific key vaults
* Having multiple accounts logged in at the same time and switching between them
* Writing public and private posts
* For private posts have to select one of the Groups you have users setup for or all followers.
* Typing @ brings up a list of all known fediverse accounts that the app has ever seen as you
type (but not all that your server has seen)
* Typing # brings up a list of all known hashtags that the app has ever seen as you type (but
not all that your server has seen)
* Very basic markdown (wrapping in stars for bold/italics, bulletted list)
* Explicit link preview builder
* Adding new images to posts
* Image posting with easy means of adding ALT text
* Attaching existing images to posts
* Editing posts and comments
* Resharing posts
* Direct (private) messaging
* Group creation, deletion, renaming
* Server-side searching tied into profiles, posts, hashtags
* Browsing timelines including from groups you've created. In this app "Home" is the same as the "
Network" (grid) button in Frio and "Yours" is the equivalent of the Home button in the app.
* Browsing notifications and marking individual ones read or all read
* Browsing and editing image galleries and the images within it.
* Browsing your contacts or searching contacts that are known by your app
* Adjudicating follow requests
* Going to individual profiles to see their posts, follow/unfollow, add/remove from groups
* A "low bandwidth" mode that defers loading of images until you click on them, unless the app
already has that image cached locally.
* Light/dark mode selection
* Opening posts, comments, and profiles in the "external" browser
* Copying posts, comments, image descriptions, direct messages, urls, etc.
* Playing videos within the app on iOS and Android.
* Refresh timelines, galleries, and posts but loading newer or older posts has
specific buttons (this will probably change in the near future)
* Refresh notifications and contacts gets updates to that respective data (this may
change in the near future)
* Show list of who liked and reshared posts/comments
* Detailed information about users, such as description fields
* Notifications browsing and dismissing
* Search through server using freeform text or "%" wild card for: accounts, statuses, hashtags
* Direct Load links to Fediverse posts and accounts within the app
* Responsive design (limited for now)
* Opening accounts, tags, etc within posts within the app itself through user's home server
* User configurable Server blocking
* Smarter hashtag and user account storage/searching
### Big things I want to have working in the near future:
* More timeline types like Comments, "By Activity", etc.
* Fix below identified issues
* Real paging across the board
* Comments
* Offline caching of older content
* Dynamic search of locally known posts and hashtags.
* Make forum posts
* Internationalization
* Better screen reader interactions
### Further out things I want to have working:
* Profile editor
* Being able to ignore/unignore users
* Events
### Things I don't envision implementing in the foreseeable future:
* Account creation through the application
* Creating new forums through the application
* Site administration
* Adding videos or files to posts
## General behaviors/problems to be aware of:
### Broken and hopefully fixed in the very near future:
* Paging for some of the endpoints either isn't wired in yet or is not working as needed server
side. That includes things like:
* Friend requests
* Comments on posts
* Tags
* Blocked user list
### Fixed in prior releases but may be issues on older Friendica servers:
* Sending direct messages only works if you are logged in with username/password due to limitations
of the existing DM (Fixed in Friendica 2023.04)
API. (Fixed in Friendica 2023.04)
* Resharing of Diaspora federated posts is currently broken server side. All other posts should be
reshareable. (Fixed in Friendica 2023.04)
* Content Warnings/Spoiler Text on *posts* aren't federating over to Mastodon well so only use it on
Comments for now (fixed on servers running Friendica 2023.04)
* ALT text on images should not have any quotation marks as it breaks when federating over to
Diaspora for the time being (fixed on servers running Friendica 2023.04)
* Blocked/ignored user's content is still returned by the API (Fixed in Friendica 2023.04)
### Cumbersome and hopefully improved in the very near future:
* On Linux you will need to login to the key manager and unlock it before opening the app. Some
Linux versions do this
automatically while others do not.
* The "in fill" problem: Timelines fill only at the ends with at most 20 posts per call. So let's
say you logged in at 09:00 and the initial pulls went from 07:00 to 09:00:
```
07:00=====9:00
```
While browsing you asked for older posts that pulled posts back to 06:00 and up to the time you
asked for more, say 09:30 so the timeline looks like:
```
06:00=========09:30
```
Now at lunch time you come back and ask for newer posts. It will pull the last 20 posts from 12:00
which say took you back to 11:00.
The timeline looks contiguous but it really is:
```
06:00=========09:30 11:00=====12:00
```
There may be posts in the 09:30 to 11:00 gap or may not. Right now there is no way to fill

Wyświetl plik

@ -1,9 +1,5 @@
# Relatica Installation Instructions
**NOTE: Relatica is in an early beta status. Use at own risk.**
For more information about the current beta testing program
[see the program's notes page](beta-program.md).
# Latest Binaries:
* Android v0.15.0 Is available by invitation through Play Store beta (please see me for access)

Wyświetl plik

@ -188,4 +188,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 1df1bb3ed89ef4be6115286519e24a9fad12e640
COCOAPODS: 1.15.2
COCOAPODS: 1.16.2

Wyświetl plik

@ -48,6 +48,7 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">

Wyświetl plik

@ -48,10 +48,10 @@
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Required for taking photos and recording videos.</string>
<string>Required for taking photos and recording videos to attach to posts/comments.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Required for recording videos</string>
<string>Required for recording videos to attach to posts/comments</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Required for loading existing pictures.</string>
<string>Required for loading existing pictures to attach to posts/comments or to save images from posts/comments to the local device.</string>
</dict>
</plist>

Wyświetl plik

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:logging/logging.dart';
import 'package:relatica/globals.dart';
import 'package:result_monad/result_monad.dart';
import '../../models/exec_error.dart';
@ -51,22 +52,23 @@ class _MediaUploadsControlState extends ConsumerState<MediaUploadsControl> {
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
IconButton(
onPressed: () async {
await MediaUploadAttachmentHelper
.getNewImagesFromCamera()
.match(
onSuccess: (newEntries) => setState(() =>
widget.entryMediaItems.attachments
.addAll(newEntries)),
onError: (error) {
buildSnackbar(context,
'Error selecting attachments: $error');
logError(error, _logger);
});
},
icon: const Icon(Icons.camera_alt),
),
if (platformHasCamera)
IconButton(
onPressed: () async {
await MediaUploadAttachmentHelper
.getNewImagesFromCamera()
.match(
onSuccess: (newEntries) => setState(() =>
widget.entryMediaItems.attachments
.addAll(newEntries)),
onError: (error) {
buildSnackbar(context,
'Error selecting attachments: $error');
logError(error, _logger);
});
},
icon: const Icon(Icons.camera_alt),
),
IconButton(
onPressed: () async {
await MediaUploadAttachmentHelper

Wyświetl plik

@ -131,7 +131,7 @@ class _NetworkCapabilitiesWidget extends ConsumerWidget {
Text('Network Capabilities'),
ElevatedButton(
onPressed: null,
child: Text('Reset to Defaults'),
child: Text('Reset'),
),
],
),

Wyświetl plik

@ -132,4 +132,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 137ddf7b4dbe5a83427ebf04ae8dea674cfd87fa
COCOAPODS: 1.15.2
COCOAPODS: 1.16.2

Wyświetl plik

@ -48,6 +48,7 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">

Wyświetl plik

@ -50,18 +50,18 @@ packages:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev"
source: hosted
version: "2.11.0"
version: "2.12.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
build:
dependency: transitive
description:
@ -162,10 +162,10 @@ packages:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.0"
checked_yaml:
dependency: transitive
description:
@ -194,10 +194,10 @@ packages:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
code_builder:
dependency: transitive
description:
@ -210,10 +210,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.0"
version: "1.19.1"
color_blindness:
dependency: "direct main"
description:
@ -338,10 +338,10 @@ packages:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
version: "1.3.2"
ffi:
dependency: transitive
description:
@ -769,18 +769,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev"
source: hosted
version: "10.0.7"
version: "10.0.8"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
version: "3.0.8"
version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@ -825,10 +825,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
@ -913,10 +913,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.15.0"
version: "1.16.0"
mime:
dependency: transitive
description:
@ -1001,10 +1001,10 @@ packages:
dependency: "direct main"
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
path_parsing:
dependency: transitive
description:
@ -1334,10 +1334,10 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.10.1"
sprintf:
dependency: transitive
description:
@ -1398,10 +1398,10 @@ packages:
dependency: "direct main"
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.1"
state_notifier:
dependency: transitive
description:
@ -1414,10 +1414,10 @@ packages:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
stream_transform:
dependency: transitive
description:
@ -1430,10 +1430,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
version: "1.4.1"
string_validator:
dependency: "direct main"
description:
@ -1454,18 +1454,18 @@ packages:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
version: "0.7.3"
version: "0.7.4"
time_machine:
dependency: "direct main"
description:
@ -1654,10 +1654,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev"
source: hosted
version: "14.3.0"
version: "14.3.1"
volume_controller:
dependency: transitive
description:
@ -1771,5 +1771,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.6.0 <4.0.0"
dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.24.0"

Wyświetl plik

@ -2,7 +2,7 @@ name: relatica
description: A mobile and desktop client for interacting with the Friendica social network
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 0.16.0+13
version: 1.0.0+15
environment:
sdk: '>=3.2.0 <4.0.0'