From dcfd4849df101106eb727b775f83fb57730b4428 Mon Sep 17 00:00:00 2001
From: Sari
Date: Wed, 4 Oct 2023 04:33:58 +0000
Subject: [PATCH 01/13] - [fix] Remove double naming on crud side sheets
(Spaces, Events, Pins). - [fix] Text overflow fixes on pins card. - [fix]
Text overflow fixes on event card. - [fix] Text overflow fixes on found
spaces card when searched (Join space section). - [fix] Replace `Redact` term
with more known wording .i.e. `Delete/Remove`. - Login/Registration UI and
theme updates.
- Fix: do not render space-chat under space but switch to chat-section
---
docs/content/nightly/2023-10-04.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 docs/content/nightly/2023-10-04.md
diff --git a/docs/content/nightly/2023-10-04.md b/docs/content/nightly/2023-10-04.md
new file mode 100644
index 000000000000..577501aea0bb
--- /dev/null
+++ b/docs/content/nightly/2023-10-04.md
@@ -0,0 +1,15 @@
++++
+title = " Nightly 2023-10-04"
+template = "nightlies/release.html"
+date = 2023-10-04
++++
+
+- [fix] Remove double naming on crud side sheets (Spaces, Events, Pins).
+- [fix] Text overflow fixes on pins card.
+- [fix] Text overflow fixes on event card.
+- [fix] Text overflow fixes on found spaces card when searched (Join space section).
+- [fix] Replace `Redact` term with more known wording .i.e. `Delete/Remove`.
+- Login/Registration UI and theme updates.
+
+- Fix: do not render space-chat under space but switch to chat-section
+
From a841e5d0050d990d6d2f4c0b9183c77703a846d9 Mon Sep 17 00:00:00 2001
From: Benjamin Kampmann
Date: Thu, 5 Oct 2023 15:44:52 +0100
Subject: [PATCH 02/13] publish releases on github [skip ci]
---
.github/workflows/publish.yml | 51 +++++++++++++++++++++--------------
1 file changed, 31 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 92c1c4c2e3ad..6dfa67e1553d 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -386,27 +386,38 @@ jobs:
with:
name: Changelog
- # - name: "Generate docs"
- # run: |
- # echo "+++" > docs/content/releases/${{ needs.tags.outputs.tag }}.md
- # echo "title = \" Nightly ${{ needs.tags.outputs.tag }}\"" >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
- # echo "template = \"nightlies/release.html\"" >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
- # echo "date = ${{ needs.tags.outputs.tag }}" >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
- # echo "+++" >>docs/content/releases/${{ needs.tags.outputs.tag }}.md
- # echo "" >>docs/content/releases/${{ needs.tags.outputs.tag }}.md
- # cat CHANGELOG.md >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
-
- # - name: Tag for release
- # run: |
- # git config --global user.name 'Sari'
- # git config --global user.email 'acter-sari@users.noreply.github.com'
- # git add "docs/content/releases/${{ needs.tags.outputs.tag }}.md"
- # echo "Add release ${{ needs.tags.outputs.tag }}"
- # git commit -m
- # git tag v${{ needs.tags.outputs.tag }}
- # git tag -f release-latest
- # git push -f origin main v${{ needs.tags.outputs.tag }} release-latest
+ - name: "Generate docs"
+ run: |
+ echo "+++" > docs/content/releases/${{ needs.tags.outputs.tag }}.md
+ echo "title = \" Nightly ${{ needs.tags.outputs.tag }}\"" >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
+ echo "template = \"nightlies/release.html\"" >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
+ echo "date = ${{ needs.tags.outputs.tag }}" >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
+ echo "+++" >>docs/content/releases/${{ needs.tags.outputs.tag }}.md
+ echo "" >>docs/content/releases/${{ needs.tags.outputs.tag }}.md
+ cat CHANGELOG.md >> docs/content/releases/${{ needs.tags.outputs.tag }}.md
+
+ - name: Tag for release
+ run: |
+ git config --global user.name 'Sari'
+ git config --global user.email 'acter-sari@users.noreply.github.com'
+ git add "docs/content/releases/${{ needs.tags.outputs.tag }}.md"
+ echo "Add release ${{ needs.tags.outputs.tag }}"
+ git commit -m "Releasing v${{ needs.tags.outputs.tag }}"
+ git tag v${{ needs.tags.outputs.tag }}
+ git tag -f release-latest
+ git push -f origin main v${{ needs.tags.outputs.tag }} release-latest
+ - name: Release
+ id: create_release
+ uses: softprops/action-gh-release@v1
+ with:
+ # publish this nightly release now
+ draft: true
+ generate_release_notes: false
+ name: Acter ${{ needs.tags.outputs.tag }}
+ tag_name: v${{ needs.tags.outputs.tag }}
+ body_path: CHANGELOG.md
+ prerelease: true
# publish this full release now
- uses: eregon/publish-release@v1
env:
From c4e6a7bd76c1a05c1d3ad41643e5dd6a4abce5fb Mon Sep 17 00:00:00 2001
From: Benjamin Kampmann
Date: Thu, 5 Oct 2023 15:49:39 +0100
Subject: [PATCH 03/13] activate automatic releasing [skip ci]
---
.github/workflows/publish.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 6dfa67e1553d..67cd63cc0b2d 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -15,8 +15,8 @@ on:
description: 'The tag to compare the changelog to'
type: string
- # schedule:
- # - cron: 0 3 * * *
+ schedule:
+ - cron: 0 3 * * 4
jobs:
run_checker:
@@ -32,7 +32,7 @@ jobs:
id: check-new-commits
shell: bash
run: |
- if [ `git diff --name-only ${{ inputs.prev_tag || 'latest-release' }} -- app native .changes | wc -l` -ne 0 ]; then
+ if [ `git diff --name-only ${{ inputs.prev_tag || 'release-latest' }} -- app native .changes | wc -l` -ne 0 ]; then
echo "has-new-commits=true" >> $GITHUB_OUTPUT ;
else
echo "has-new-commits=false" >> $GITHUB_OUTPUT ;
@@ -44,7 +44,7 @@ jobs:
outputs:
tag: ${{ inputs.new_tag || steps.version.outputs.version }}
build_num: ${{ steps.build_num.outputs.build_num }}
- prev_tag: ${{ inputs.prev_tag || 'latest-release' }}
+ prev_tag: ${{ inputs.prev_tag || 'release-latest' }}
steps:
- id: version
run: echo "version=`date +1.%y.%-m%d`" >> $GITHUB_OUTPUT
From e77faa931cf15644e26fb7fa113846c802e87305 Mon Sep 17 00:00:00 2001
From: Benjamin Kampmann
Date: Thu, 5 Oct 2023 19:24:58 +0100
Subject: [PATCH 04/13] clean up unbuntu cache [skip ci]
---
.github/workflows/publish.yml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 67cd63cc0b2d..0645d2908422 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -138,6 +138,14 @@ jobs:
with:
toolchain: stable
+ - uses: jlumbroso/free-disk-space@main
+ name: Free Disk Space (Ubuntu)
+ if: matrix.os == 'ubuntu-latest'
+ with:
+ # this might remove tools that are actually needed,
+ # when set to "true" but frees about 6 GB
+ tool-cache: true
+
- name: Cache Cargo
id: cache-cargo
uses: actions/cache@v2
From 0476d25fc1c82711df418aac3b3f0b2d13d9b964 Mon Sep 17 00:00:00 2001
From: Benjamin Kampmann
Date: Thu, 5 Oct 2023 20:35:11 +0100
Subject: [PATCH 05/13] publishing jobs needs android to stick around [skip ci]
---
.github/workflows/publish.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 0645d2908422..9b9b81f726fb 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -145,6 +145,7 @@ jobs:
# this might remove tools that are actually needed,
# when set to "true" but frees about 6 GB
tool-cache: true
+ android: false
- name: Cache Cargo
id: cache-cargo
From 2126b053cfc5367edec7c074474ebb1af689a069 Mon Sep 17 00:00:00 2001
From: Sari
Date: Fri, 6 Oct 2023 04:39:05 +0000
Subject: [PATCH 06/13] - [fix] Remove double naming on crud side sheets
(Spaces, Events, Pins). - [fix] Text overflow fixes on pins card. - [fix]
Text overflow fixes on event card. - [fix] Text overflow fixes on found
spaces card when searched (Join space section). - [fix] Replace `Redact` term
with more known wording .i.e. `Delete/Remove`. - Login/Registration UI and
theme updates.
- move spaces invite functionality to `About` section of overview as a button. The current limit of invitations is 100 people and button will not be visible exceeding that.
- Fix: Parent space in Chat is shown.
- Fix: Invite flow for chat reactivated
- Fix: Joining related chats from a space
- Fix: Setting the power level of members in a space
- UX: Show content of Registration Token
- Removed: Acter welcome screen when the user has no spaces
- Fix: When redacting content, move back to the type index for that space
- Updated look on room profile section. On desktop and larger screens, supports split view opening.
- corrected acter background gradient pattern.
- updated theme on component cards and overall system design to be intuitive.
- fix for avatars not getting fallback properly.
- fix overflow of content in pins, events and spaces cards.
- fix: chat input sends message as a part of reply even if its not meant to be reply (after closing reply UI). This is fixed now.
- CRUD Sidesheets (Spaces, Pins, Events, Chat)
- [fix] Sidesheets will now properly scroll on smaller screens, enabling to view submit buttons. The buttons will remain stick to bottom.
- Sidesheet input validation fixes.
- Fix: do not render space-chat under space but switch to chat-section
- Dashboard/Overview:
- Spaces listing is now prioritized to be shown on top.
- Fewer joined spaces will now show 'create space' and 'join space' buttons below for easier accessibility. If more than 5 joined spaces, this'll be replaced with 'show all spaces' button.
- Calendar widget is now removed and will be added when its properly functional.
- Update theme of UI cards.
- Pins:
- Remove non functional button (pins filtering).
- Update theme of section.
- Calendar Events:
- Calendar events can now be accessed from quick jump actions, showing all events, user is part of.
- Update theme of section.
- Some layout improvements in card component views.
- You can now directly invite anyone in the invite screen all you need is type their full user-id
---
docs/content/nightly/2023-10-06.md | 52 ++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 docs/content/nightly/2023-10-06.md
diff --git a/docs/content/nightly/2023-10-06.md b/docs/content/nightly/2023-10-06.md
new file mode 100644
index 000000000000..60276ef80c35
--- /dev/null
+++ b/docs/content/nightly/2023-10-06.md
@@ -0,0 +1,52 @@
++++
+title = " Nightly 2023-10-06"
+template = "nightlies/release.html"
+date = 2023-10-06
++++
+
+- [fix] Remove double naming on crud side sheets (Spaces, Events, Pins).
+- [fix] Text overflow fixes on pins card.
+- [fix] Text overflow fixes on event card.
+- [fix] Text overflow fixes on found spaces card when searched (Join space section).
+- [fix] Replace `Redact` term with more known wording .i.e. `Delete/Remove`.
+- Login/Registration UI and theme updates.
+
+- move spaces invite functionality to `About` section of overview as a button. The current limit of invitations is 100 people and button will not be visible exceeding that.
+
+- Fix: Parent space in Chat is shown.
+- Fix: Invite flow for chat reactivated
+- Fix: Joining related chats from a space
+- Fix: Setting the power level of members in a space
+- UX: Show content of Registration Token
+- Removed: Acter welcome screen when the user has no spaces
+- Fix: When redacting content, move back to the type index for that space
+
+- Updated look on room profile section. On desktop and larger screens, supports split view opening.
+- corrected acter background gradient pattern.
+- updated theme on component cards and overall system design to be intuitive.
+- fix for avatars not getting fallback properly.
+- fix overflow of content in pins, events and spaces cards.
+
+- fix: chat input sends message as a part of reply even if its not meant to be reply (after closing reply UI). This is fixed now.
+
+- CRUD Sidesheets (Spaces, Pins, Events, Chat)
+ - [fix] Sidesheets will now properly scroll on smaller screens, enabling to view submit buttons. The buttons will remain stick to bottom.
+ - Sidesheet input validation fixes.
+
+- Fix: do not render space-chat under space but switch to chat-section
+
+- Dashboard/Overview:
+ - Spaces listing is now prioritized to be shown on top.
+ - Fewer joined spaces will now show 'create space' and 'join space' buttons below for easier accessibility. If more than 5 joined spaces, this'll be replaced with 'show all spaces' button.
+ - Calendar widget is now removed and will be added when its properly functional.
+ - Update theme of UI cards.
+- Pins:
+ - Remove non functional button (pins filtering).
+ - Update theme of section.
+- Calendar Events:
+ - Calendar events can now be accessed from quick jump actions, showing all events, user is part of.
+ - Update theme of section.
+- Some layout improvements in card component views.
+
+- You can now directly invite anyone in the invite screen all you need is type their full user-id
+
From 6b33c17a8ed08b4a622cc4a8dcf3f1b213d9ec26 Mon Sep 17 00:00:00 2001
From: Benjamin Kampmann
Date: Fri, 6 Oct 2023 14:59:57 +0100
Subject: [PATCH 07/13] Link App Store in Readme and Docs
---
Readme.md | 12 ++++--
.../user/getting-started/setting-up.md | 38 +++++++++++++++++--
docs/templates/acter_index.html | 18 +++++++++
3 files changed, 62 insertions(+), 6 deletions(-)
diff --git a/Readme.md b/Readme.md
index de57ec10f1f5..6fa878a3da6f 100644
--- a/Readme.md
+++ b/Readme.md
@@ -4,14 +4,21 @@
Your social organizing app build on [matrix](https://matrix.org): think WhatsApp, but with proper task lists, structured discussion, etc.
+## Try now
+
+
+
+
+
+
+## More info
+
[![Homepage ](https://img.shields.io/badge/HOMEPAGE-gray?style=for-the-badge)](https://acter.global)
[![Docs ](https://img.shields.io/badge/DOCS-blue?style=for-the-badge)](https://docs.acter.global)
[![Matrix ](https://img.shields.io/badge/News-yellow?style=for-the-badge)](https://matrix.to/#/#news:acter.global)
-
[![Nightly Build](https://img.shields.io/badge/Nightly_Build-available-gree?style=for-the-badge)](https://github.com/acterglobal/a3/tags)
-
## Contact:
[![Matrix: #News](https://img.shields.io/badge/News-deeppink?style=for-the-badge)](https://matrix.to/#/#news:acter.global)
@@ -26,7 +33,6 @@ Your social organizing app build on [matrix](https://matrix.org): think WhatsApp
![App Build](https://img.shields.io/github/actions/workflow/status/acterglobal/a3/deploy.yml?branch=main&label=App&style=for-the-badge)
![Docs](https://img.shields.io/github/actions/workflow/status/acterglobal/a3/docs.yml?branch=main&label=Docs&style=for-the-badge)
-
## License
[![Acter Public Source License](https://img.shields.io/badge/License-Acter%20Public%20Source%20License-blue?style=for-the-badge)](./LICENSE.txt)
diff --git a/docs/content/user/getting-started/setting-up.md b/docs/content/user/getting-started/setting-up.md
index 66d0859066c3..29b827dffa04 100644
--- a/docs/content/user/getting-started/setting-up.md
+++ b/docs/content/user/getting-started/setting-up.md
@@ -6,9 +6,41 @@ weight = 1
template = "docs/page.html"
+++
-## Installing latest
+## Installing Acter
-To install the latest built, head over to [the nightly build section](/nightly/) and download the corresponding package for your platform. Once the download finished unpack it and run the `Acter` executable. Be sure to note the following for your platform:
+Acter is published on the various app stores on a weekly basis. Just head on over to the app store of your platform and install acter:
+
+### Apple iOS AppStore
+
+
+
+
+
+### Android Google Play Store
+
+
+
+
+
+_FDroid is not yet supported_ [tracking issue here](https://github.com/acterglobal/a3/issues/1016) . But you can just the latest [nightly build](/nightly).
+
+### Windows Microsoft Store
+
+
+
+
+
+### Apple Desktop App AppStore
+
+_not yet supported_ [tracking issue here](https://github.com/acterglobal/a3/issues/1016) . But you can just the latest [nightly build](/nightly)
+
+### Snapcraft Linux Store
+
+_not yet supported_ [tracking issue here](https://github.com/acterglobal/a3/issues/1016) . But you can just the latest [nightly build](/nightly).
+
+## Installing latest nightly
+
+To install the nightly latest built, head over to [the nightly build section](/nightly/) and download the corresponding package for your platform. Once the download finished unpack it and run the `Acter` executable. Be sure to note the following for your platform:
Running on MacOS
@@ -23,7 +55,7 @@ We are running this in a limited so called Ad-Hoc built at the moment, which req
-## Nightly Platform support
+## Platform support
### Mobile
diff --git a/docs/templates/acter_index.html b/docs/templates/acter_index.html
index 0a1abb7dccf1..a5bcdb331eb8 100644
--- a/docs/templates/acter_index.html
+++ b/docs/templates/acter_index.html
@@ -35,7 +35,25 @@ {{ section.title | default(value="Modern Documentation Theme")
Acter the mobile-first community communication and casual organizing platform. The palm-pilot for your social groups.'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nightly builds Getting started
+
{{ section.extra.repo_license | default(value="MIT")}} Github Sources
From b99dae4ccb985f1d95ccc39edcb64e37f7824be0 Mon Sep 17 00:00:00 2001
From: Benjamin Kampmann
Date: Fri, 6 Oct 2023 15:19:15 +0100
Subject: [PATCH 08/13] Update style guide. fixes #611
---
docs/content/docs/dev/style-guide.md | 65 ++++--------------
.../styles/Effektio-MVP-Design-Style.pdf | Bin 1126692 -> 0 bytes
2 files changed, 13 insertions(+), 52 deletions(-)
delete mode 100644 docs/static/styles/Effektio-MVP-Design-Style.pdf
diff --git a/docs/content/docs/dev/style-guide.md b/docs/content/docs/dev/style-guide.md
index 5a11866d75b7..b24a4def6d3e 100644
--- a/docs/content/docs/dev/style-guide.md
+++ b/docs/content/docs/dev/style-guide.md
@@ -20,67 +20,28 @@ top = false
#### Colors
-- Primary Brand Color: #EC2758
-- Secondary Brand Color: #23AFC2
-- Tertiary Brand Color: #5C2A80
-- Background Color: #979797
-- Dark Shade: #333540
-- Secondary Dark Shade: #2F313E
-- Divider: #4A4A4A
-- Text Color: #FFFFFF
-- Text Shade: #FEFEFE
-- Text Shade 2: #F8F8F8
-- Text Shade 3: #C2C1C0
+Colors can be found in [`app/lib/common/themes/app_theme.dart`](https://github.com/acterglobal/a3/blob/main/app/lib/common/themes/app_theme.dart). Whenever possible the `AppTheme.brandColorScheme` should be used in the code base rather than any specific color. New color sets like gradients or changes to existing colors shall be added to that class (for easier customization later).
+
+- Primary Brand Color: #9CCAFF
+- Secondary Brand Color: #9ACBFF
+- Tertiary Brand Color: #FFB77B
+- Background Color: #001B3D
+- Neutral: #121212
+- Success: #67A24A
#### Typeface
-- App-Wide Font: Roboto
-- Headlines: Roboto Semi-Bold
-- Regular Text: Robot Light
-- Font-Sizes:
- - H1: 18/20
- - H2: 16/Auto
- - H3 subject: 15/20
- - Body Text: 10/15
- - H4 substitles: 10/15
- - H5 Big Word: 20/25
- - H6 legal: 10/auto
+- App-Wide Font: Inter
+- Emoji: System provided fond; on Linux: notoEmoji
#### Icons
-We use clean, clear but slightly playful even childish Icons, to get away from a too steril style and keep things fun and social. Whenever possible we pick of [the vast library of existing icons](https://oblador.github.io/react-native-vector-icons/) that's already embedded in the app (via `flutter_icons_null_safety`, usage as in [flutter icons](https://pub.dev/packages/flutter_icons)).
+We use clean, clear but slightly playful even childish Icons, to get away from a too steril style and keep things fun and social. Whenever possible we use the closest matching [Atlas Icon](https://atlasicons.vectopus.com/) that's already embedded in the app (via `package:atlas_icons/atlas_icons.dart`).
```dart
// Import package
-import 'package:flutter_icons_null_safety/flutter_icons_null_safety.dart';
+import 'package:atlas_icons/atlas_icons.dart';
import 'package:flutter/material.dart';
-// After 1.1.0, the FlutterIcons class is provided to access all Icons
-// Icon name in the original basis added icon set abbreviation name as suffix
-// Hereinafter referred to as the following
-//Ant Design Icons -> ant,
-//Entypo Icons -> ent,
-//Evil Icons -> evi,
-//Feather Icons -> fea,
-//Font Awesome Icons -> faw,
-//Foundation Icons -> fou,
-//Ionicons Icons -> ion,
-//Material Community Icons -> mco,
-//Material Icons -> mdi,
-//Octicons Icons -> oct,
-//Simple Line Icons -> sli,
-//Zocial Icons -> zoc,
-//Weather Icons -> wea
-Icon(FlutterIcons.stepforward_ant)
-Icon(FlutterIcons.html5_faw)
+Icon(Atlas.audio_album, size: 24.0, )
```
-
-### [Brandguide as PDF](/styles/Acter-MVP-Design-Style.pdf)
-
-## Implementation Guide
-
-TBD
-
-## Themeing / Customisastion
-
-TBD
diff --git a/docs/static/styles/Effektio-MVP-Design-Style.pdf b/docs/static/styles/Effektio-MVP-Design-Style.pdf
deleted file mode 100644
index bd1c5cbda77f76b798bc294e316041d4a326292e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1126692
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