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

Prep release 1.0

See merge request mysocialportal/fediverse-archiving-tools!7
This commit is contained in:
HankG 2022-04-08 17:24:51 +00:00
commit a8f78f6242
48 changed files with 95 additions and 65 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

View file

@ -10,14 +10,14 @@ import 'src/settings/settings_controller.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final logPath = await setupLogging();
Logger.root.info('Starting Friendica Archive Browser');
Logger.root.info('Starting Fediverse Archive Browser');
final settingsController = SettingsController(logPath: logPath);
await settingsController.loadSettings();
runApp(FriendicaArchiveBrowser(settingsController: settingsController));
runApp(FediverseArchiveBrowser(settingsController: settingsController));
}
Future<String> setupLogging() async {
final logFilePath = await getTempFile('friendica_archive_browser_', '.log');
final logFilePath = await getTempFile('fediverse_archive_browser', '.log');
final logFile = File(logFilePath);
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen((event) {

View file

@ -11,10 +11,10 @@ import 'home.dart';
import 'settings/settings_controller.dart';
/// The Widget that configures your application.
class FriendicaArchiveBrowser extends StatelessWidget {
class FediverseArchiveBrowser extends StatelessWidget {
static const minAppSize = Size(915, 700);
const FriendicaArchiveBrowser({
const FediverseArchiveBrowser({
Key? key,
required this.settingsController,
}) : super(key: key);
@ -44,8 +44,8 @@ class FriendicaArchiveBrowser extends StatelessWidget {
],
onGenerateTitle: (BuildContext context) =>
AppLocalizations.of(context)!.appTitle,
theme: FriendicaArchiveBrowserTheme.light,
darkTheme: FriendicaArchiveBrowserTheme.dark,
theme: FediverseArchiveBrowserTheme.light,
darkTheme: FediverseArchiveBrowserTheme.dark,
themeMode: settingsController.themeMode,
scrollBehavior: AppScrollingBehavior(),
home: MultiProvider(

View file

@ -44,7 +44,7 @@ class MediaWrapperComponent extends StatelessWidget {
if (mediaAttachment.explicitType == AttachmentMediaType.video) {
final title = "Video (click to play): " + mediaAttachment.title;
final thumbnailImageResult = _uriToImage(
mediaAttachment.thumbnailUri, archiveService.pathMappingService,
mediaAttachment.thumbnailUri.toString(), archiveService.pathMappingService,
imageTypeName: 'thumbnail image');
if (thumbnailImageResult.image != null) {
return _createFinalWidget(
@ -110,13 +110,13 @@ class MediaWrapperComponent extends StatelessWidget {
}
}
_ImageAndPathResult _uriToImage(Uri uri, PathMappingService mapper,
_ImageAndPathResult _uriToImage(String uri, PathMappingService mapper,
{String imageTypeName = 'image'}) {
if (uri.toString().startsWith('https://interncache')) {
if (uri.startsWith('https://interncache')) {
return _ImageAndPathResult.none();
}
if (uri.scheme.startsWith('http')) {
if (uri.startsWith('http')) {
final networkUrl = uri.toString();
try {
return _ImageAndPathResult(Image.network(networkUrl), networkUrl);
@ -127,7 +127,7 @@ class MediaWrapperComponent extends StatelessWidget {
return _ImageAndPathResult.none();
}
if (uri.path.endsWith('mp4')) {
if (uri.endsWith('mp4')) {
return _ImageAndPathResult.none();
}
@ -171,13 +171,13 @@ class MediaWrapperComponent extends StatelessWidget {
return InkWell(onTap: onTap, child: imageWidget);
}
Uri _calculatePath(ArchiveServiceProvider archiveService) {
String _calculatePath(ArchiveServiceProvider archiveService) {
final url = mediaAttachment.uri.toString();
String basePath = '';
if (url.startsWith('http')) {
final localCacheFile = archiveService.getImageByUrl(url);
if (localCacheFile.isFailure) {
return mediaAttachment.uri;
return mediaAttachment.uri.toString();
}
basePath = localCacheFile.value.localFilename;
@ -185,7 +185,7 @@ class MediaWrapperComponent extends StatelessWidget {
basePath = mediaAttachment.uri.path;
}
return Uri.parse(basePath);
return basePath;
}
}

View file

@ -1,6 +1,6 @@
{
"appTitle": "Friendica Archive Browser",
"appTitle": "Fediverse Archive Browser",
"@appTitle": {
"description": "A browser of Friendica Archive Folders"
"description": "A browser of Fediverse Archive Sets"
}
}

View file

@ -1,10 +1,10 @@
import 'dart:io';
import 'package:fediverse_archive_browser/src/services/archive_service_provider.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:fediverse_archive_browser/src/components/media_wrapper_component.dart';
import 'package:fediverse_archive_browser/src/friendica/services/friendica_path_mapping_service.dart';
import 'package:fediverse_archive_browser/src/models/media_attachment.dart';
import 'package:fediverse_archive_browser/src/settings/settings_controller.dart';
import 'package:fediverse_archive_browser/src/themes.dart';
@ -71,7 +71,7 @@ class _MediaSlideShowScreenState extends State<MediaSlideShowScreen> {
final height = MediaQuery.of(context).size.height - toolBarHeight;
return Theme(
data: FriendicaArchiveBrowserTheme.darkroom,
data: FediverseArchiveBrowserTheme.darkroom,
child: KeyboardListener(
focusNode: FocusNode(),
autofocus: true,
@ -155,11 +155,16 @@ class _MediaSlideShowScreenState extends State<MediaSlideShowScreen> {
}
Future<void> _saveFile(BuildContext context) async {
final pathMapper =
Provider.of<FriendicaPathMappingService>(context, listen: false);
final archiveService =
Provider.of<ArchiveServiceProvider>(context, listen: false);
final filename = media.uri.pathSegments.last;
final initialPath = pathMapper.toFullPath(media.uri.toFilePath());
final localPath = archiveService.getImageByUrl(media.uri.toString());
if (localPath.isFailure) {
SnackBarStatusBuilder.buildSnackbar(context, 'Unable to find original source file for: ${media.uri}');
return;
}
final initialPath = archiveService.pathMappingService.toFullPath(localPath.value.localFilename);
final newPath = await FilePicker.platform.saveFile(
dialogTitle: 'Export Image',
fileName: filename,

View file

@ -24,10 +24,7 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
_archiveService.connectionsManager;
ArchiveServiceProvider(this.settings) {
_diasporaArchiveService = DiasporaArchiveService(
pathMappingService: DiasporaPathMappingService(settings));
_friendicaArchiveService = FriendicaArchiveService(
pathMappingService: FriendicaPathMappingService(settings));
_buildArchiveServices();
}
String get ownersName => _archiveService.ownersName;
@ -35,6 +32,7 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
void clearCaches() {
_friendicaArchiveService.clearCaches();
_diasporaArchiveService.clearCaches();
_buildArchiveServices();
}
FutureResult<List<EntryTreeItem>, ExecError> getPosts() async {
@ -53,6 +51,10 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
return _archiveService.getImageByUrl(url);
}
@override
PathMappingService get pathMappingService =>
_archiveService.pathMappingService;
ArchiveService get _archiveService {
switch (settings.archiveType) {
case ArchiveType.diaspora:
@ -64,7 +66,12 @@ class ArchiveServiceProvider extends ChangeNotifier implements ArchiveService {
}
}
@override
PathMappingService get pathMappingService =>
_archiveService.pathMappingService;
void _buildArchiveServices() {
_diasporaArchiveService = DiasporaArchiveService(
pathMappingService: DiasporaPathMappingService(settings));
_friendicaArchiveService = FriendicaArchiveService(
pathMappingService: FriendicaPathMappingService(settings));
}
}

View file

@ -178,7 +178,7 @@ class _SettingsViewState extends State<SettingsView> {
controller: _folderPathController,
decoration: InputDecoration(
hintText:
'Root folder of the unzipped Friendica archive file',
'Root folder of the unzipped archive folder',
errorText: _invalidFolderString,
))),
const SizedBox(width: 15),

View file

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
class FriendicaArchiveBrowserTheme {
class FediverseArchiveBrowserTheme {
static ThemeData dark = ThemeData.dark().copyWith(
primaryColor: Colors.white,
);

View file

@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 3.10)
project(runner LANGUAGES CXX)
set(BINARY_NAME "friendica_archive_browser")
set(APPLICATION_ID "social.myportal.friendica_archive_browser")
set(BINARY_NAME "fediverse_archive_browser")
set(APPLICATION_ID "social.myportal.fediverse_archive_browser")
cmake_policy(SET CMP0063 NEW)

View file

@ -55,7 +55,7 @@
/* Begin PBXFileReference section */
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* FriendicaArchiveBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Friendica Archive Browser.app"; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10ED2044A3C60003C045 /* fediverse_archive_browser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fediverse_archive_browser.app; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
@ -123,7 +123,7 @@
33CC10EE2044A3C60003C045 /* Products */ = {
isa = PBXGroup;
children = (
33CC10ED2044A3C60003C045 /* FriendicaArchiveBrowser.app */,
33CC10ED2044A3C60003C045 /* fediverse_archive_browser.app */,
);
name = Products;
sourceTree = "<group>";
@ -194,7 +194,7 @@
);
name = Runner;
productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* FriendicaArchiveBrowser.app */;
productReference = 33CC10ED2044A3C60003C045 /* fediverse_archive_browser.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
@ -422,11 +422,13 @@
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = T69YZGT58U;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = fediversearchivebrowser.myportal.social;
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
};
@ -548,11 +550,13 @@
CODE_SIGN_ENTITLEMENTS = Runner/RunnerDebug.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = T69YZGT58U;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = fediversearchivebrowser.myportal.social;
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@ -568,11 +572,13 @@
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = T69YZGT58U;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = fediversearchivebrowser.myportal.social;
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
};

View file

@ -15,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "FriendicaArchiveBrowser.app"
BuildableName = "fediverse_archive_browser.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
@ -31,7 +31,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "FriendicaArchiveBrowser.app"
BuildableName = "fediverse_archive_browser.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
@ -54,7 +54,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "FriendicaArchiveBrowser.app"
BuildableName = "fediverse_archive_browser.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
@ -71,7 +71,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "FriendicaArchiveBrowser.app"
BuildableName = "fediverse_archive_browser.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>

View file

@ -3,61 +3,61 @@
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "fba_app_icon_16.png",
"filename" : "fediverse_archive_reader_icon_16.png",
"scale" : "1x"
},
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "fba_app_icon_32.png",
"filename" : "fediverse_archive_reader_icon_32.png",
"scale" : "2x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "fba_app_icon_32.png",
"filename" : "fediverse_archive_reader_icon_32.png",
"scale" : "1x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "fba_app_icon_64.png",
"filename" : "fediverse_archive_reader_icon_64.png",
"scale" : "2x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "fba_app_icon_128.png",
"filename" : "fediverse_archive_reader_icon_128.png",
"scale" : "1x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "fba_app_icon_256.png",
"filename" : "fediverse_archive_reader_icon_256.png",
"scale" : "2x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "fba_app_icon_256.png",
"filename" : "fediverse_archive_reader_icon_256.png",
"scale" : "1x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "fba_app_icon_512.png",
"filename" : "fediverse_archive_reader_icon_512.png",
"scale" : "2x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "fba_app_icon_512.png",
"filename" : "fediverse_archive_reader_icon_512.png",
"scale" : "1x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "fba_app_icon_1024.png",
"filename" : "fediverse_archive_reader_icon_1024.png",
"scale" : "2x"
}
],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -13,7 +13,7 @@
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="friendica_archive_browser" customModuleProvider="target">
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="fediverse_archive_browser" customModuleProvider="target">
<connections>
<outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/>
<outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
@ -326,7 +326,7 @@
</items>
<point key="canvasLocation" x="142" y="-258"/>
</menu>
<window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="friendica_archive_browser" customModuleProvider="target">
<window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="fediverse_archive_browser" customModuleProvider="target">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="0.0" y="175" width="915" height="700"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="875"/>

View file

@ -5,10 +5,10 @@
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = friendica_archive_browser
PRODUCT_NAME = fediverse_archive_browser
// The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = social.myportal.friendica_archive_browser
PRODUCT_BUNDLE_IDENTIFIER = fediversearchivebrowser.myportal.social
// The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2021 Hank G. All rights reserved.
PRODUCT_COPYRIGHT = Copyright © 2022 My Social Portal All rights reserved.

View file

@ -20,6 +20,12 @@
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>INIntentsSupported</key>
<array>
<string>Intent</string>
</array>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>

View file

@ -4,7 +4,7 @@ description: An Archive Browser for various fediverse projects (Friendica, Diasp
# Prevent accidental publishing to pub.dev.
publish_to: 'none'
version: 0.1.3+1
version: 1.0.0
environment:
sdk: ">=2.14.0 <3.0.0"

View file

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.15)
project(friendica_archive_browser LANGUAGES CXX)
project(fediverse_archive_browser LANGUAGES CXX)
set(BINARY_NAME "friendica_archive_browser")
set(BINARY_NAME "fediverse_archive_browser")
cmake_policy(SET CMP0063 NEW)

View file

@ -52,7 +52,7 @@ END
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_APP_ICON ICON "resources\\fba_app_icon.ico"
IDI_APP_ICON ICON "resources\\fediverse_archive_reader_icon_256.ico"
/////////////////////////////////////////////////////////////////////////////
@ -90,7 +90,7 @@ BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "My Social Portal" "\0"
VALUE "FileDescription", "Fediverse ArchiveB rowser" "\0"
VALUE "FileDescription", "Fediverse Archive Browser" "\0"
VALUE "FileVersion", VERSION_AS_STRING "\0"
VALUE "InternalName", "fediverse_archive_browser" "\0"
VALUE "LegalCopyright", "Copyright (C) 2022 My Social Portal All rights reserved." "\0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

View file

@ -1,5 +1,9 @@
# Friendica Archive Browser Changelog
## Version 1.2.0
Minor version update to fix a broken REST service call for pulling the timeline.
## Version 1.1.0
Minor version update to increase reporting during run

View file

@ -6,9 +6,11 @@ A simple command line tool for archiving your Friendica profile via the Friendic
There are pre-compiled binaries for the tools for Linux, Mac, and Windows below. You can download
those and use them. Simply download for your respective platform, unzip, and then run.
* [Windows x64](https://mysocialportal-friendica-archiving.sfo3.digitaloceanspaces.com/archiver/releases/1.1.0/friendica_archiver_v1.1.0_win_x64.zip)
* [macOS x64](https://mysocialportal-friendica-archiving.sfo3.digitaloceanspaces.com/archiver/releases/1.1.0/friendica_archiver_v1.1.0_macos_x64.zip)
* [Linux x64](https://mysocialportal-friendica-archiving.sfo3.digitaloceanspaces.com/archiver/releases/1.1.0/friendica_archiver_v1.1.0_linux_x64.zip)
* [Windows x64](https://mysocialportal-fediverse-archiving.sfo3.digitaloceanspaces.com/friendica_archiver/1.2.0/friendica_archiver_v1.2.0_win_x64.zip)
* [macOS x64](https://mysocialportal-fediverse-archiving.sfo3.digitaloceanspaces.com/friendica_archiver/1.2.0/friendica_archiver_v1.2.0_macos_x64.zip)
* [Linux x64](https://mysocialportal-fediverse-archiving.sfo3.digitaloceanspaces.com/friendica_archiver/1.2.0/friendica_archiver_v1.2.0_linux_x64.zip)
**Note: The binaries have a .exe extension on all platforms even though it is only significant on Windows.**
Or you can run it directly from this directory using standard Dart commands:

View file

@ -1,6 +1,6 @@
name: friendica_archiver
description: A simple command-line application.
version: 1.1.0
version: 1.2.0
# homepage: https://www.example.com
environment: