Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
98e5fab
Fix search highlighting
baudcode May 28, 2021
6fb4c0f
Add collection models and db tables
baudcode Jun 5, 2021
8897bcc
Disable initial start
baudcode Jun 5, 2021
591be64
Cleanup
baudcode Jun 5, 2021
852d7d8
Change colors
baudcode Jun 8, 2021
8bf30d1
Fix getNote and getNoteById
baudcode Jun 8, 2021
240dec3
Add empty text
baudcode Jun 8, 2021
9825ddc
Add "Add To collection" dialog
baudcode Jun 8, 2021
64d953b
Remove f.e.
baudcode Jun 8, 2021
2005c57
Add AroundText
baudcode Jun 8, 2021
20f75a8
Fix choose simple note dialog
baudcode Jun 8, 2021
9379f8c
Encapsulate themes
baudcode Jun 8, 2021
32bcbe9
Larger radius
baudcode Jun 10, 2021
c58c554
Lower spreadRadius
baudcode Jun 10, 2021
f17ad97
Use box like design
baudcode Jun 10, 2021
fb6aac5
Add flutter_file_dialog
baudcode Jun 10, 2021
4a0c5d0
Backup collections as well
baudcode Jun 10, 2021
e698602
Use active notes
baudcode Jun 14, 2021
b01bd1a
Adding tab view
baudcode Jun 26, 2021
e992beb
Set floating action button color to white
baudcode Jun 26, 2021
46c4ef6
Copy imported file
baudcode Jun 26, 2021
946ad5d
Fix audio export / import
baudcode Jun 26, 2021
3341d82
Add launcher icons
baudcode Jun 27, 2021
4386ba5
Swiping motions for playback / looper
baudcode Jul 10, 2021
493ba25
Multi-Note Viewer
baudcode Jul 10, 2021
1e3d958
Only show indicator when > 1
baudcode Jul 10, 2021
80053c7
Add itemsByFrequency
baudcode Jul 10, 2021
865c5e5
Add focus information from additional info
baudcode Jul 10, 2021
1cd21ec
Fix empty string and not updating edit field bug
baudcode Jul 10, 2021
f66acbf
Use rich text
baudcode Jul 10, 2021
ddaebc1
Fix a-z sorting
baudcode Jul 10, 2021
5d66776
Use TextButton instead of IconButton
baudcode Jul 10, 2021
7132eaa
Fix isSelected
baudcode Jul 10, 2021
ca1909b
selection includes sorting options
baudcode Jul 10, 2021
67819d1
Fix border and decorations for better highlighting
baudcode Jul 10, 2021
81112e8
Working on click for transitions menu
baudcode Jul 10, 2021
3787deb
Fix setting audio format
baudcode Jul 10, 2021
1c23ef2
Don't show already matching suggestions
baudcode Jul 11, 2021
5b60bfe
Add CustomChip
baudcode Jul 11, 2021
466079b
Fix overflow
baudcode Jul 11, 2021
d025647
Don't show audio files by default
baudcode Jul 11, 2021
02db817
Add no audio recorded message
baudcode Jul 11, 2021
32db480
Allowing to directly start a new track
baudcode Jul 11, 2021
58035a7
Start minimized when keyboard is out
baudcode Jul 11, 2021
a0ce3cd
Only show suggestions on info tab
baudcode Jul 11, 2021
b7ac38b
Add insert date for note title
baudcode Jul 11, 2021
8eb322d
Only render bottom and top if found
baudcode Jul 24, 2021
b51de69
correct formatting of function args
baudcode Jul 24, 2021
fe07920
Add onPressed
baudcode Jul 24, 2021
92147e3
Fix only set auto format if not null
baudcode Jul 24, 2021
8c3925a
Renaming
baudcode Jul 24, 2021
9e8a731
Change app bar title font size
baudcode Jul 24, 2021
c73c716
reanme songtext copied
baudcode Jul 24, 2021
1674ec6
Rename title to section title
baudcode Jul 24, 2021
706df67
NoteViewer Set buttons clickable
baudcode Jul 24, 2021
ac10deb
Disable scroll physics when auto scrolling
baudcode Jul 24, 2021
34b5d28
Use tooltip
baudcode Jul 24, 2021
63d18b3
Fixed text export
baudcode Jul 24, 2021
4917b9a
Use icon for up/down
baudcode Jul 24, 2021
0a38972
print sortby
baudcode Jul 24, 2021
fcd3e48
Save createdAt and lastMofidied
baudcode Jul 24, 2021
34c94e2
Fix fromJson and toJson for dates
baudcode Jul 24, 2021
c9ca526
Remove Flushbar, use ScaffoldMessenger
baudcode Jul 24, 2021
c269538
Remove prints, fix delete section
baudcode Jul 24, 2021
0a7118d
Fix Deselect note info does not remove chip
baudcode Jul 24, 2021
33c5229
Update version
baudcode Aug 13, 2021
fa9d1ff
Use suffix
baudcode Aug 13, 2021
db84f31
Remove colors
baudcode Aug 13, 2021
f6c12ad
Expand text to max width
baudcode Sep 5, 2021
843e323
Fixes and delete irrevocably dialogs
baudcode Sep 18, 2021
a438fcf
Add sentry logging
baudcode Sep 18, 2021
401020b
RecorderBottomSheet is exapanding using dialog
baudcode Sep 18, 2021
11a87ae
Fix closing dialog when looping
baudcode Sep 18, 2021
71dcb47
Fix tab view moving
baudcode Sep 18, 2021
6fa8c47
Fix pdf export size and add page number
baudcode Sep 18, 2021
e21f95f
Change padding
baudcode Sep 18, 2021
969a95b
Fix fit content on pages
baudcode Sep 18, 2021
9e50504
Change app bar color
baudcode Sep 19, 2021
fb60be0
Fix floating action button color
baudcode Sep 19, 2021
d29f6a3
Remove import
baudcode Sep 19, 2021
413b78a
Settings init with default
baudcode Sep 19, 2021
82c79f7
permissions denied editor
baudcode Sep 19, 2021
ecb4efb
Change text color
baudcode Sep 19, 2021
cc8efb5
Update App Icon
baudcode Sep 19, 2021
aaab942
Add new icon
baudcode Sep 19, 2021
ca328fa
Fix showing snack
baudcode Sep 19, 2021
c746ca3
Fix closing player
baudcode Sep 19, 2021
3ef2ee5
Change end of file when looping
baudcode Sep 19, 2021
f922b85
Check length null
baudcode Sep 19, 2021
8dd6fcc
Fixes
baudcode Sep 19, 2021
4943cc0
Export collection and notes from list
baudcode Sep 19, 2021
dfbc524
Fix import new notes frpm zip
baudcode Sep 19, 2021
2804333
Fix seeking to start when looper is changed
baudcode Sep 19, 2021
e3d34bc
Update collection ids
baudcode Sep 19, 2021
4da02dd
Remove note from collection when removing note
baudcode Sep 19, 2021
4e2badc
Add permissions to production app
baudcode Sep 19, 2021
d323cfe
Allow changing fontSize of sectionContent
baudcode Sep 19, 2021
5494509
Fix default NoteEditorView
baudcode Sep 19, 2021
0836d5e
Add signing config and updated targetSdk to 30
baudcode Sep 19, 2021
64595cf
Min/Max for Font Size with long press
baudcode Sep 26, 2021
60d1d3f
Does we have anyNote?
baudcode Sep 26, 2021
b98d0a4
Add length to Note
baudcode Sep 26, 2021
fd85da0
Adding bpm and length of note
baudcode Sep 26, 2021
3141e81
Adding proguard and obfuscation
baudcode Sep 26, 2021
ba441e2
Show length of a collection
baudcode Sep 26, 2021
38bc380
Change hidden icons
baudcode Sep 26, 2021
0f524d7
Change padding and show audio files in trash, fix initial start dialog
baudcode Sep 26, 2021
b5fd938
Update jsons and change version to 1.1.1
baudcode Sep 26, 2021
ba1ae79
Add delete note in NoteEditor
baudcode Sep 26, 2021
73d8024
Update lock
baudcode Sep 26, 2021
337e30c
Update Launcher Icon and initial json
baudcode Oct 3, 2021
f0027a9
Fix buggy scrolling
baudcode Oct 3, 2021
f7822cb
Do not create a new note every update
baudcode Oct 3, 2021
46640cb
Set default font size to 10
baudcode Oct 3, 2021
09959ac
Add initial import dialog to dev settings
baudcode Oct 3, 2021
07fbcae
Add title to zip export
baudcode Oct 3, 2021
71fb469
Add share as icon
baudcode Oct 3, 2021
1cd4a10
Add note collection delete/export as popup menu
baudcode Oct 3, 2021
6bd30a6
Fix app bar icon color
baudcode Oct 3, 2021
01ae649
Add .gradle to gitignore
baudcode Oct 3, 2021
10e3a09
Build bundle with prod
baudcode Dec 19, 2021
56fdd52
Update vrsion
baudcode Dec 19, 2021
3689ce8
Add text to audioFile
baudcode Dec 19, 2021
10c5580
Fix always showing import message
baudcode Dec 19, 2021
9ee941f
Add background color to showSnack
baudcode Dec 19, 2021
a4550f0
Add max selectable to search
baudcode Dec 19, 2021
c5f2df5
Add initial audio list draft
baudcode Dec 19, 2021
0576a6a
Add title to player
baudcode Dec 19, 2021
a1531fb
Add skipper with logic
baudcode Dec 19, 2021
a2410a2
Add starring of audio files
baudcode Dec 19, 2021
2ff5ef9
Add looping tracks
baudcode Dec 19, 2021
39a0b0b
Fix not stopping
baudcode Dec 19, 2021
15a4b73
Highlight last played audio file
baudcode Dec 21, 2021
3272020
Repeat one
baudcode Dec 21, 2021
c2358eb
Allow import multiple audio files
baudcode Dec 21, 2021
ed6ead5
Fixes
baudcode Dec 21, 2021
e5c7ee1
Fix audio import
baudcode Dec 21, 2021
16456b5
Use subs
baudcode Dec 23, 2021
9ecf51e
Bootstrap clean modernization from origin/feature-audio-files
baudcode Mar 1, 2026
5a3a3c0
Restore parity for ideas and sets workflows
baudcode Mar 1, 2026
11e569d
Add multi-platform release CI and backend PyInstaller packaging
baudcode Mar 1, 2026
0b07c0a
Fix PyInstaller spec entrypoint path resolution
baudcode Mar 1, 2026
0da985d
Fix Linux CI deps for audioplayers gstreamer build
baudcode Mar 1, 2026
8da394f
Harden backend PyInstaller build with absolute entrypoint
baudcode Mar 1, 2026
b8243f1
Fix Android CI build for prod flavor APK output
baudcode Mar 1, 2026
11f7b71
Add CI caching and concurrency cancellation
baudcode Mar 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
207 changes: 207 additions & 0 deletions .github/workflows/release-main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
name: Build and Release (main)

on:
push:
branches:
- main
- feature/sync-conflict-log
workflow_dispatch:

permissions:
contents: write

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true

jobs:
build_flutter:
name: Flutter ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: android
os: ubuntu-latest
artifact_name: flutter-android-apk
- target: linux
os: ubuntu-latest
artifact_name: flutter-linux
- target: macos
os: macos-latest
artifact_name: flutter-macos
- target: ios
os: macos-latest
artifact_name: flutter-ios

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Java (Android)
if: matrix.target == 'android'
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: gradle

- name: Setup Gradle cache (Android)
if: matrix.target == 'android'
uses: gradle/actions/setup-gradle@v4

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true

- name: Cache pub dependencies
uses: actions/cache@v4
with:
path: |
~/.pub-cache
.dart_tool
key: ${{ runner.os }}-${{ matrix.target }}-pub-${{ hashFiles('pubspec.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.target }}-pub-
${{ runner.os }}-pub-

- name: Flutter pub get
run: flutter pub get

- name: Install Linux desktop build deps
if: matrix.target == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y \
clang \
cmake \
ninja-build \
pkg-config \
libgtk-3-dev \
liblzma-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev

- name: Enable Linux platform
if: matrix.target == 'linux'
run: |
flutter config --enable-linux-desktop
flutter create --platforms=linux .

- name: Build Android APK
if: matrix.target == 'android'
run: flutter build apk --release --flavor prod --no-pub

- name: Build Linux
if: matrix.target == 'linux'
run: flutter build linux --release

- name: Build macOS
if: matrix.target == 'macos'
run: flutter build macos --release

- name: Build iOS (no code signing)
if: matrix.target == 'ios'
run: flutter build ios --release --no-codesign

- name: Prepare artifact bundle
shell: bash
run: |
set -euo pipefail
mkdir -p out
if [ "${{ matrix.target }}" = "android" ]; then
APK_PATH="$(find build/app/outputs/flutter-apk -maxdepth 1 -type f -name '*prod-release.apk' | head -n 1)"
if [ -z "${APK_PATH}" ]; then
echo "Could not find prod release APK in build/app/outputs/flutter-apk" >&2
ls -la build/app/outputs/flutter-apk || true
exit 1
fi
cp "${APK_PATH}" out/sketchord-android-prod-release.apk
elif [ "${{ matrix.target }}" = "linux" ]; then
tar -czf out/sketchord-linux-release.tar.gz -C build/linux/x64/release bundle
elif [ "${{ matrix.target }}" = "macos" ]; then
ditto -c -k --sequesterRsrc --keepParent build/macos/Build/Products/Release/sound.app out/sketchord-macos-release.zip
elif [ "${{ matrix.target }}" = "ios" ]; then
ditto -c -k --sequesterRsrc --keepParent build/ios/iphoneos/Runner.app out/sketchord-ios-runner-app-nosign.zip
fi

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}
path: out/*
if-no-files-found: error

build_backend_pyinstaller:
name: Backend PyInstaller ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: pip
cache-dependency-path: |
backend/requirements.txt

- name: Build backend executable
shell: bash
run: |
set -euo pipefail
chmod +x backend/scripts/build_pyinstaller.sh
backend/scripts/build_pyinstaller.sh

- name: Package backend executable
shell: bash
run: |
set -euo pipefail
mkdir -p out
BIN_NAME="sketchord-sync-backend"
if [ "${{ runner.os }}" = "Windows" ]; then
BIN_NAME="sketchord-sync-backend.exe"
fi
cp "backend/dist/${BIN_NAME}" "out/${BIN_NAME}-${{ runner.os }}"

- name: Upload backend artifact
uses: actions/upload-artifact@v4
with:
name: backend-pyinstaller-${{ runner.os }}
path: out/*
if-no-files-found: error

release:
name: Create Release
runs-on: ubuntu-latest
needs:
- build_flutter
- build_backend_pyinstaller

steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: List artifacts
run: ls -R artifacts

- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: main-build-${{ github.run_number }}
name: Main build #${{ github.run_number }}
generate_release_notes: true
files: artifacts/**/*
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,5 @@ settings.json
backend/data/
backend/data.json

android/app/google-services.json
android/app/google-services.json
.gradle/
24 changes: 22 additions & 2 deletions .metadata
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,27 @@
# This file should be version controlled and should not be manually edited.

version:
revision: bbfbf1770cca2da7c82e887e4e4af910034800b6
channel: stable
revision: "9f455d2486bcb28cad87b062475f42edc959f636"
channel: "stable"

project_type: app

# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: macos
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636

# User provided section

# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
17 changes: 17 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "sketchord dev",
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"dev"
]
}
]
}
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,18 @@ flutter run --flavor prod
flutter run --flavor dev

# flutter run --flavor dev -d chrome --web-renderer html
# flutter packages pub run flutter_launcher_icons:main -f pubspec.yaml
# flutter packages pub run flutter_launcher_icons:main -f pubspec.yaml

# Create Release
1. Change Version
2. Build bundle `flutter build appbundle --flavor prod`

# CI/CD Release

A GitHub Actions workflow is defined at `.github/workflows/release-main.yml`.

On every push to `main`, it:

1. Builds Flutter artifacts for Android, Linux, macOS, and iOS (`--no-codesign` for iOS).
2. Builds standalone backend binaries with PyInstaller for Linux and macOS.
3. Publishes a GitHub Release named `Main build #<run_number>` and uploads all artifacts.
13 changes: 13 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
analyzer:
exclude:
- build/**
- lib/audio_list.dart
- lib/audio_list_store.dart
- lib/collection_editor_store.dart
- lib/collections.dart
- lib/collections_store.dart
- lib/menu_store.dart
- lib/note_search_view.dart
- lib/dialogs/add_to_collection_dialog.dart
- lib/dialogs/change_number_dialog.dart
- lib/dialogs/choose_note_dialog.dart
51 changes: 18 additions & 33 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'dev.flutter.flutter-gradle-plugin'
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
Expand All @@ -6,48 +12,33 @@ if (localPropertiesFile.exists()) {
}
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def flutterVersionCode = localProperties.getProperty('flutter.versionCode') ?: '1'
def flutterVersionName = localProperties.getProperty('flutter.versionName') ?: '1.0'

android {
compileSdkVersion 28
namespace 'com.example.sound'
compileSdk flutter.compileSdkVersion
ndkVersion flutter.ndkVersion

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}

lintOptions {
disable 'InvalidPackage'
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "de.onenightproductions.sketchord"
minSdkVersion 16
targetSdkVersion 28
minSdk flutter.minSdkVersion
targetSdk flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

flavorDimensions "app"
productFlavors {

dev {
dimension "app"
resValue "string", "app_name", "SketChord Dev"
Expand All @@ -64,8 +55,6 @@ android {

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
Expand All @@ -74,7 +63,3 @@ android {
flutter {
source '../..'
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
Loading